tenon-io/tenon-cli

View on GitHub
testIndex.js

Summary

Maintainability
A
2 hrs
Test Coverage

Function parseCommand has 68 lines of code (exceeds 25 allowed). Consider refactoring.
Open

export const parseCommand = function(passedArguments) {
  decache('commander');
  const program = require('commander');

  program
Severity: Major
Found in testIndex.js - About 2 hrs to fix

    Missing trailing comma.
    Open

        /^(A|AA|AAA)$/i
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'Tenode API key'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'Tenon API endpoint'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'Output file'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        /^(0|20|40|60|80|100)$/i
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'Input file'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'A string of text used to identify the page being tested'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'Should Tenode store the results or not?'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        parseFloat
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        parseFloat
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'Tenode configuration file'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        /^(0|20|40|60|80|100)$/i
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'A string you can supply to identify the tested document as part of a specific system'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        /^(json|html|xunit|csv)$/i
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        parseFloat
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'An optional value'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Missing trailing comma.
    Open

        'A user-agent to be supplied during Tenode tests'
    Severity: Minor
    Found in testIndex.js by eslint

    require or disallow trailing commas (comma-dangle)

    Trailing commas in object literals are valid according to the ECMAScript 5 (and ECMAScript 3!) spec. However, IE8 (when not in IE8 document mode) and below will throw an error when it encounters trailing commas in JavaScript.

    var foo = {
        bar: "baz",
        qux: "quux",
    };

    Trailing commas simplify adding and removing items to objects and arrays, since only the lines you are modifying must be touched. Another argument in favor of trailing commas is that it improves the clarity of diffs when an item is added or removed from an object or array:

    Less clear:

    var foo = {
    -    bar: "baz",
    -    qux: "quux"
    +    bar: "baz"
     };

    More clear:

    var foo = {
         bar: "baz",
    -    qux: "quux",
     };

    Rule Details

    This rule enforces consistent use of trailing commas in object and array literals.

    Options

    This rule has a string option or an object option:

    {
        "comma-dangle": ["error", "never"],
        // or
        "comma-dangle": ["error", {
            "arrays": "never",
            "objects": "never",
            "imports": "never",
            "exports": "never",
            "functions": "ignore",
        }]
    }
    • "never" (default) disallows trailing commas
    • "always" requires trailing commas
    • "always-multiline" requires trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }
    • "only-multiline" allows (but does not require) trailing commas when the last element or property is in a different line than the closing ] or } and disallows trailing commas when the last element or property is on the same line as the closing ] or }

    Trailing commas in function declarations and function calls are valid syntax since ECMAScript 2017; however, the string option does not check these situations for backwards compatibility.

    You can also use an object option to configure this rule for each type of syntax. Each of the following options can be set to "never", "always", "always-multiline", "only-multiline", or "ignore". The default for each option is "never" unless otherwise specified.

    • arrays is for array literals and array patterns of destructuring. (e.g. let [a,] = [1,];)
    • objects is for object literals and object patterns of destructuring. (e.g. let {a,} = {a: 1};)
    • imports is for import declarations of ES Modules. (e.g. import {a,} from "foo";)
    • exports is for export declarations of ES Modules. (e.g. export {a,};)
    • functions is for function declarations and function calls. (e.g. (function(a,){ })(b,);)
      functions is set to "ignore" by default for consistency with the string option.

    never

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

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

    /*eslint comma-dangle: ["error", "never"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    always

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var arr = [1,2];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var arr = [1,2,];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    always-multiline

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux"
    });

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

    /*eslint comma-dangle: ["error", "always-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });

    only-multiline

    Examples of incorrect code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = { bar: "baz", qux: "quux", };
    
    var arr = [1,2,];
    
    var arr = [1,
        2,];

    Examples of correct code for this rule with the "only-multiline" option:

    /*eslint comma-dangle: ["error", "only-multiline"]*/
    
    var foo = {
        bar: "baz",
        qux: "quux",
    };
    
    var foo = {
        bar: "baz",
        qux: "quux"
    };
    
    var foo = {bar: "baz", qux: "quux"};
    var arr = [1,2];
    
    var arr = [1,
        2];
    
    var arr = [
        1,
        2,
    ];
    
    var arr = [
        1,
        2
    ];
    
    foo({
      bar: "baz",
      qux: "quux",
    });
    
    foo({
      bar: "baz",
      qux: "quux"
    });

    functions

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

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

    /*eslint comma-dangle: ["error", {"functions": "never"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b) {
    }
    
    foo(a, b);
    new foo(a, b);

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

    /*eslint comma-dangle: ["error", {"functions": "always"}]*/
    
    function foo(a, b,) {
    }
    
    foo(a, b,);
    new foo(a, b,);

    When Not To Use It

    You can turn this rule off if you are not concerned with dangling commas. Source: http://eslint.org/docs/rules/

    Unexpected unnamed function.
    Open

    export const filteredOptions = function(program) {
    Severity: Minor
    Found in testIndex.js by eslint

    Require or disallow named function expressions (func-names)

    A pattern that's becoming more common is to give function expressions names to aid in debugging. For example:

    Foo.prototype.bar = function bar() {};

    Adding the second bar in the above example is optional. If you leave off the function name then when the function throws an exception you are likely to get something similar to anonymous function in the stack trace. If you provide the optional name for a function expression then you will get the name of the function expression in the stack trace.

    Rule Details

    This rule can enforce or disallow the use of named function expressions.

    Options

    This rule has a string option:

    • "always" (default) requires function expressions to have a name
    • "as-needed" requires function expressions to have a name, if the name cannot be assigned automatically in an ES6 environment
    • "never" disallows named function expressions, except in recursive functions, where a name is needed

    always

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

    /*eslint func-names: ["error", "always"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

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

    /*eslint func-names: ["error", "always"]*/
    
    Foo.prototype.bar = function bar() {};
    
    (function bar() {
        // ...
    }())

    as-needed

    ECMAScript 6 introduced a name property on all functions. The value of name is determined by evaluating the code around the function to see if a name can be inferred. For example, a function assigned to a variable will automatically have a name property equal to the name of the variable. The value of name is then used in stack traces for easier debugging.

    Examples of incorrect code for this rule with the default "as-needed" option:

    /*eslint func-names: ["error", "as-needed"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

    Examples of correct code for this rule with the default "as-needed" option:

    /*eslint func-names: ["error", "as-needed"]*/
    
    var bar = function() {};
    
    (function bar() {
        // ...
    }())

    never

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

    /*eslint func-names: ["error", "never"]*/
    
    Foo.prototype.bar = function bar() {};
    
    (function bar() {
        // ...
    }())

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

    /*eslint func-names: ["error", "never"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

    Further Reading

    Compatibility

    Missing space before function parentheses.
    Open

    export const filteredOptions = function(program) {
    Severity: Minor
    Found in testIndex.js by eslint

    Require or disallow a space before function parenthesis (space-before-function-paren)

    When formatting a function, whitespace is allowed between the function name or function keyword and the opening paren. Named functions also require a space between the function keyword and the function name, but anonymous functions require no whitespace. For example:

    function withoutSpace(x) {
        // ...
    }
    
    function withSpace (x) {
        // ...
    }
    
    var anonymousWithoutSpace = function() {};
    
    var anonymousWithSpace = function () {};

    Style guides may require a space after the function keyword for anonymous functions, while others specify no whitespace. Similarly, the space after a function name may or may not be required.

    Rule Details

    This rule aims to enforce consistent spacing before function parentheses and as such, will warn whenever whitespace doesn't match the preferences specified.

    Options

    This rule has a string option or an object option:

    {
        "space-before-function-paren": ["error", "always"],
        // or
        "space-before-function-paren": ["error", {
            "anonymous": "always",
            "named": "always",
            "asyncArrow": "ignore"
        }],
    }
    • always (default) requires a space followed by the ( of arguments.
    • never disallows any space followed by the ( of arguments.

    The string option does not check async arrow function expressions for backward compatibility.

    You can also use a separate option for each type of function. Each of the following options can be set to "always", "never", or "ignore". Default is "always" basically.

    • anonymous is for anonymous function expressions (e.g. function () {}).
    • named is for named function expressions (e.g. function foo () {}).
    • asyncArrow is for async arrow function expressions (e.g. async () => {}). asyncArrow is set to "ignore" by default for backwards compatibility.

    "always"

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

    /*eslint space-before-function-paren: "error"*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    var bar = function foo() {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

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

    /*eslint space-before-function-paren: "error"*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    var bar = function foo () {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };
    
    // async arrow function expressions are ignored by default.
    var foo = async () => 1
    var foo = async() => 1

    "never"

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

    /*eslint space-before-function-paren: ["error", "never"]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    var bar = function foo () {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

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

    /*eslint space-before-function-paren: ["error", "never"]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    var bar = function foo() {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };
    
    // async arrow function expressions are ignored by default.
    var foo = async () => 1
    var foo = async() => 1

    {"anonymous": "always", "named": "never", "asyncArrow": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:

    /*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };
    
    var foo = async(a) => await a

    Examples of correct code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:

    /*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };
    
    var foo = async (a) => await a

    {"anonymous": "never", "named": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "never", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

    Examples of correct code for this rule with the {"anonymous": "never", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

    {"anonymous": "ignore", "named": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "ignore", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

    Examples of correct code for this rule with the {"anonymous": "ignore", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
    /*eslint-env es6*/
    
    var bar = function() {
        // ...
    };
    
    var bar = function () {
        // ...
    };
    
    function foo () {
        // ...
    }
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

    When Not To Use It

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

    Related Rules

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .parse.
    Open

      ).parse(passedArguments);
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Missing space before function parentheses.
    Open

      return Object.keys(program).filter(function(opt) {
    Severity: Minor
    Found in testIndex.js by eslint

    Require or disallow a space before function parenthesis (space-before-function-paren)

    When formatting a function, whitespace is allowed between the function name or function keyword and the opening paren. Named functions also require a space between the function keyword and the function name, but anonymous functions require no whitespace. For example:

    function withoutSpace(x) {
        // ...
    }
    
    function withSpace (x) {
        // ...
    }
    
    var anonymousWithoutSpace = function() {};
    
    var anonymousWithSpace = function () {};

    Style guides may require a space after the function keyword for anonymous functions, while others specify no whitespace. Similarly, the space after a function name may or may not be required.

    Rule Details

    This rule aims to enforce consistent spacing before function parentheses and as such, will warn whenever whitespace doesn't match the preferences specified.

    Options

    This rule has a string option or an object option:

    {
        "space-before-function-paren": ["error", "always"],
        // or
        "space-before-function-paren": ["error", {
            "anonymous": "always",
            "named": "always",
            "asyncArrow": "ignore"
        }],
    }
    • always (default) requires a space followed by the ( of arguments.
    • never disallows any space followed by the ( of arguments.

    The string option does not check async arrow function expressions for backward compatibility.

    You can also use a separate option for each type of function. Each of the following options can be set to "always", "never", or "ignore". Default is "always" basically.

    • anonymous is for anonymous function expressions (e.g. function () {}).
    • named is for named function expressions (e.g. function foo () {}).
    • asyncArrow is for async arrow function expressions (e.g. async () => {}). asyncArrow is set to "ignore" by default for backwards compatibility.

    "always"

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

    /*eslint space-before-function-paren: "error"*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    var bar = function foo() {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

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

    /*eslint space-before-function-paren: "error"*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    var bar = function foo () {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };
    
    // async arrow function expressions are ignored by default.
    var foo = async () => 1
    var foo = async() => 1

    "never"

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

    /*eslint space-before-function-paren: ["error", "never"]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    var bar = function foo () {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

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

    /*eslint space-before-function-paren: ["error", "never"]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    var bar = function foo() {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };
    
    // async arrow function expressions are ignored by default.
    var foo = async () => 1
    var foo = async() => 1

    {"anonymous": "always", "named": "never", "asyncArrow": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:

    /*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };
    
    var foo = async(a) => await a

    Examples of correct code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:

    /*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };
    
    var foo = async (a) => await a

    {"anonymous": "never", "named": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "never", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

    Examples of correct code for this rule with the {"anonymous": "never", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

    {"anonymous": "ignore", "named": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "ignore", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

    Examples of correct code for this rule with the {"anonymous": "ignore", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
    /*eslint-env es6*/
    
    var bar = function() {
        // ...
    };
    
    var bar = function () {
        // ...
    };
    
    function foo () {
        // ...
    }
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

    When Not To Use It

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

    Related Rules

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Block must not be padded by blank lines.
    Open

    };
    Severity: Minor
    Found in testIndex.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/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Unexpected function expression.
    Open

      return Object.keys(program).filter(function(opt) {
    Severity: Minor
    Found in testIndex.js by eslint

    Suggest using arrow functions as callbacks. (prefer-arrow-callback)

    Arrow functions are suited to callbacks, because:

    • this keywords in arrow functions bind to the upper scope's.
    • The notation of the arrow function is shorter than function expression's.

    Rule Details

    This rule is aimed to flag usage of function expressions in an argument list.

    The following patterns are considered problems:

    /*eslint prefer-arrow-callback: "error"*/
    
    foo(function(a) { return a; });
    foo(function() { return this.a; }.bind(this));

    The following patterns are not considered problems:

    /*eslint prefer-arrow-callback: "error"*/
    /*eslint-env es6*/
    
    foo(a => a);
    foo(function*() { yield; });
    
    // this is not a callback.
    var foo = function foo(a) { return a; };
    
    // using `this` without `.bind(this)`.
    foo(function() { return this.a; });
    
    // recursively.
    foo(function bar(n) { return n && n + bar(n - 1); });

    Options

    This rule takes one optional argument, an object which is an options object.

    allowNamedFunctions

    This is a boolean option and it is false by default. When set to true, the rule doesn't warn on named functions used as callbacks.

    Examples of correct code for the { "allowNamedFunctions": true } option:

    /*eslint prefer-arrow-callback: ["error", { "allowNamedFunctions": true }]*/
    
    foo(function bar() {});

    allowUnboundThis

    This is a boolean option and it is true by default. When set to false, this option allows the use of this without restriction and checks for dynamically assigned this values such as when using Array.prototype.map with a context argument. Normally, the rule will flag the use of this whenever a function does not use bind() to specify the value of this constantly.

    Examples of incorrect code for the { "allowUnboundThis": false } option:

    /*eslint prefer-arrow-callback: ["error", { "allowUnboundThis": false }]*/
    /*eslint-env es6*/
    
    foo(function() { this.a; });
    
    foo(function() { (() => this); });
    
    someArray.map(function (itm) { return this.doSomething(itm); }, someObject);

    When Not To Use It

    This rule should not be used in ES3/5 environments.

    In ES2015 (ES6) or later, if you don't want to be notified about function expressions in an argument list, you can safely disable this rule. Source: http://eslint.org/docs/rules/

    Unexpected require().
    Open

      const program = require('commander');
    Severity: Minor
    Found in testIndex.js by eslint

    Enforce require() on the top-level module scope (global-require)

    In Node.js, module dependencies are included using the require() function, such as:

    var fs = require("fs");

    While require() may be called anywhere in code, some style guides prescribe that it should be called only in the top level of a module to make it easier to identify dependencies. For instance, it's arguably harder to identify dependencies when they are deeply nested inside of functions and other statements:

    function foo() {
    
        if (condition) {
            var fs = require("fs");
        }
    }

    Since require() does a synchronous load, it can cause performance problems when used in other locations.

    Further, ES6 modules mandate that import and export statements can only occur in the top level of the module's body.

    Rule Details

    This rule requires all calls to require() to be at the top level of the module, similar to ES6 import and export statements, which also can occur only at the top level.

    Examples of incorrect code for this rule:

    /*eslint global-require: "error"*/
    /*eslint-env es6*/
    
    // calling require() inside of a function is not allowed
    function readFile(filename, callback) {
        var fs = require('fs');
        fs.readFile(filename, callback)
    }
    
    // conditional requires like this are also not allowed
    if (DEBUG) { require('debug'); }
    
    // a require() in a switch statement is also flagged
    switch(x) { case '1': require('1'); break; }
    
    // you may not require() inside an arrow function body
    var getModule = (name) => require(name);
    
    // you may not require() inside of a function body as well
    function getModule(name) { return require(name); }
    
    // you may not require() inside of a try/catch block
    try {
        require(unsafeModule);
    } catch(e) {
        console.log(e);
    }

    Examples of correct code for this rule:

    /*eslint global-require: "error"*/
    
    // all these variations of require() are ok
    require('x');
    var y = require('y');
    var z;
    z = require('z').initialize();
    
    // requiring a module and using it in a function is ok
    var fs = require('fs');
    function readFile(filename, callback) {
        fs.readFile(filename, callback)
    }
    
    // you can use a ternary to determine which module to require
    var logger = DEBUG ? require('dev-logger') : require('logger');
    
    // if you want you can require() at the end of your module
    function doSomethingA() {}
    function doSomethingB() {}
    var x = require("x"),
        z = require("z");

    When Not To Use It

    If you have a module that must be initialized with information that comes from the file-system or if a module is only used in very rare situations and will cause significant overhead to load it may make sense to disable the rule. If you need to require() an optional dependency inside of a try/catch, you can disable this rule for just that dependency using the // eslint-disable-line global-require comment. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    There should be no space after '['.
    Open

        return [ 'commands',
    Severity: Minor
    Found in testIndex.js by eslint

    Disallow or enforce spaces inside of brackets (array-bracket-spacing)

    A number of style guides require or disallow spaces between array brackets and other tokens. This rule applies to both array literals and destructuring assignments (ECMAScript 6).

    /*eslint-env es6*/
    
    var arr = [ 'foo', 'bar' ];
    var [ x, y ] = z;
    
    var arr = ['foo', 'bar'];
    var [x,y] = z;

    Rule Details

    This rule enforces consistent spacing inside array brackets.

    Options

    This rule has a string option:

    • "never" (default) disallows spaces inside array brackets
    • "always" requires one or more spaces or newlines inside array brackets

    This rule has an object option for exceptions to the "never" option:

    • "singleValue": true requires one or more spaces or newlines inside brackets of array literals that contain a single element
    • "objectsInArrays": true requires one or more spaces or newlines between brackets of array literals and braces of their object literal elements [ { or } ]
    • "arraysInArrays": true requires one or more spaces or newlines between brackets of array literals and brackets of their array literal elements [ [ or ] ]

    This rule has an object option for exceptions to the "always" option:

    • "singleValue": false disallows spaces inside brackets of array literals that contain a single element
    • "objectsInArrays": false disallows spaces between brackets of array literals and braces of their object literal elements [{ or }]
    • "arraysInArrays": false disallows spaces between brackets of array literals and brackets of their array literal elements [[ or ]]

    This rule has built-in exceptions:

    • "never" (and also the exceptions to the "always" option) allows newlines inside array brackets, because this is a common pattern
    • "always" does not require spaces or newlines in empty array literals []

    never

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

    /*eslint array-bracket-spacing: ["error", "never"]*/
    /*eslint-env es6*/
    
    var arr = [ 'foo', 'bar' ];
    var arr = ['foo', 'bar' ];
    var arr = [ ['foo'], 'bar'];
    var arr = [[ 'foo' ], 'bar'];
    var arr = [ 'foo',
      'bar'
    ];
    var [ x, y ] = z;
    var [ x,y ] = z;
    var [ x, ...y ] = z;
    var [ ,,x, ] = z;

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

    /*eslint array-bracket-spacing: ["error", "never"]*/
    /*eslint-env es6*/
    
    var arr = [];
    var arr = ['foo', 'bar', 'baz'];
    var arr = [['foo'], 'bar', 'baz'];
    var arr = [
      'foo',
      'bar',
      'baz'
    ];
    var arr = ['foo',
      'bar'
    ];
    var arr = [
      'foo',
      'bar'];
    
    var [x, y] = z;
    var [x,y] = z;
    var [x, ...y] = z;
    var [,,x,] = z;

    always

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

    /*eslint array-bracket-spacing: ["error", "always"]*/
    /*eslint-env es6*/
    
    var arr = ['foo', 'bar'];
    var arr = ['foo', 'bar' ];
    var arr = [ ['foo'], 'bar' ];
    var arr = ['foo',
      'bar'
    ];
    var arr = [
      'foo',
      'bar'];
    
    var [x, y] = z;
    var [x,y] = z;
    var [x, ...y] = z;
    var [,,x,] = z;

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

    /*eslint array-bracket-spacing: ["error", "always"]*/
    /*eslint-env es6*/
    
    var arr = [];
    var arr = [ 'foo', 'bar', 'baz' ];
    var arr = [ [ 'foo' ], 'bar', 'baz' ];
    var arr = [ 'foo',
      'bar'
    ];
    var arr = [
      'foo',
      'bar' ];
    var arr = [
      'foo',
      'bar',
      'baz'
    ];
    
    var [ x, y ] = z;
    var [ x,y ] = z;
    var [ x, ...y ] = z;
    var [ ,,x, ] = z;

    singleValue

    Examples of incorrect code for this rule with the "always", { "singleValue": false } options:

    /*eslint array-bracket-spacing: ["error", "always", { "singleValue": false }]*/
    
    var foo = [ 'foo' ];
    var foo = [ 'foo'];
    var foo = ['foo' ];
    var foo = [ 1 ];
    var foo = [ 1];
    var foo = [1 ];
    var foo = [ [ 1, 2 ] ];
    var foo = [ { 'foo': 'bar' } ];

    Examples of correct code for this rule with the "always", { "singleValue": false } options:

    /*eslint array-bracket-spacing: ["error", "always", { "singleValue": false }]*/
    
    var foo = ['foo'];
    var foo = [1];
    var foo = [[ 1, 1 ]];
    var foo = [{ 'foo': 'bar' }];

    objectsInArrays

    Examples of incorrect code for this rule with the "always", { "objectsInArrays": false } options:

    /*eslint array-bracket-spacing: ["error", "always", { "objectsInArrays": false }]*/
    
    var arr = [ { 'foo': 'bar' } ];
    var arr = [ {
      'foo': 'bar'
    } ]

    Examples of correct code for this rule with the "always", { "objectsInArrays": false } options:

    /*eslint array-bracket-spacing: ["error", "always", { "objectsInArrays": false }]*/
    
    var arr = [{ 'foo': 'bar' }];
    var arr = [{
      'foo': 'bar'
    }];

    arraysInArrays

    Examples of incorrect code for this rule with the "always", { "arraysInArrays": false } options:

    /*eslint array-bracket-spacing: ["error", "always", { "arraysInArrays": false }]*/
    
    var arr = [ [ 1, 2 ], 2, 3, 4 ];
    var arr = [ [ 1, 2 ], 2, [ 3, 4 ] ];

    Examples of correct code for this rule with the "always", { "arraysInArrays": false } options:

    /*eslint array-bracket-spacing: ["error", "always", { "arraysInArrays": false }]*/
    
    var arr = [[ 1, 2 ], 2, 3, 4 ];
    var arr = [[ 1, 2 ], 2, [ 3, 4 ]];

    When Not To Use It

    You can turn this rule off if you are not concerned with the consistency of spacing between array brackets.

    Related Rules

    • [space-in-parens](space-in-parens.md)
    • [object-curly-spacing](object-curly-spacing.md)
    • [computed-property-spacing](computed-property-spacing.md) Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Missing space before function parentheses.
    Open

    export const parseCommand = function(passedArguments) {
    Severity: Minor
    Found in testIndex.js by eslint

    Require or disallow a space before function parenthesis (space-before-function-paren)

    When formatting a function, whitespace is allowed between the function name or function keyword and the opening paren. Named functions also require a space between the function keyword and the function name, but anonymous functions require no whitespace. For example:

    function withoutSpace(x) {
        // ...
    }
    
    function withSpace (x) {
        // ...
    }
    
    var anonymousWithoutSpace = function() {};
    
    var anonymousWithSpace = function () {};

    Style guides may require a space after the function keyword for anonymous functions, while others specify no whitespace. Similarly, the space after a function name may or may not be required.

    Rule Details

    This rule aims to enforce consistent spacing before function parentheses and as such, will warn whenever whitespace doesn't match the preferences specified.

    Options

    This rule has a string option or an object option:

    {
        "space-before-function-paren": ["error", "always"],
        // or
        "space-before-function-paren": ["error", {
            "anonymous": "always",
            "named": "always",
            "asyncArrow": "ignore"
        }],
    }
    • always (default) requires a space followed by the ( of arguments.
    • never disallows any space followed by the ( of arguments.

    The string option does not check async arrow function expressions for backward compatibility.

    You can also use a separate option for each type of function. Each of the following options can be set to "always", "never", or "ignore". Default is "always" basically.

    • anonymous is for anonymous function expressions (e.g. function () {}).
    • named is for named function expressions (e.g. function foo () {}).
    • asyncArrow is for async arrow function expressions (e.g. async () => {}). asyncArrow is set to "ignore" by default for backwards compatibility.

    "always"

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

    /*eslint space-before-function-paren: "error"*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    var bar = function foo() {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

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

    /*eslint space-before-function-paren: "error"*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    var bar = function foo () {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };
    
    // async arrow function expressions are ignored by default.
    var foo = async () => 1
    var foo = async() => 1

    "never"

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

    /*eslint space-before-function-paren: ["error", "never"]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    var bar = function foo () {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

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

    /*eslint space-before-function-paren: ["error", "never"]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    var bar = function foo() {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };
    
    // async arrow function expressions are ignored by default.
    var foo = async () => 1
    var foo = async() => 1

    {"anonymous": "always", "named": "never", "asyncArrow": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:

    /*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };
    
    var foo = async(a) => await a

    Examples of correct code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:

    /*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };
    
    var foo = async (a) => await a

    {"anonymous": "never", "named": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "never", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    var bar = function () {
        // ...
    };
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

    Examples of correct code for this rule with the {"anonymous": "never", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo () {
        // ...
    }
    
    var bar = function() {
        // ...
    };
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

    {"anonymous": "ignore", "named": "always"}

    Examples of incorrect code for this rule with the {"anonymous": "ignore", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
    /*eslint-env es6*/
    
    function foo() {
        // ...
    }
    
    class Foo {
        constructor() {
            // ...
        }
    }
    
    var foo = {
        bar() {
            // ...
        }
    };

    Examples of correct code for this rule with the {"anonymous": "ignore", "named": "always"} option:

    /*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
    /*eslint-env es6*/
    
    var bar = function() {
        // ...
    };
    
    var bar = function () {
        // ...
    };
    
    function foo () {
        // ...
    }
    
    class Foo {
        constructor () {
            // ...
        }
    }
    
    var foo = {
        bar () {
            // ...
        }
    };

    When Not To Use It

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

    Related Rules

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Expected line break before .option.
    Open

      ).option(
    Severity: Minor
    Found in testIndex.js by eslint

    require a newline after each call in a method chain (newline-per-chained-call)

    Chained method calls on a single line without line breaks are harder to read, so some developers place a newline character after each method call in the chain to make it more readable and easy to maintain.

    Let's look at the following perfectly valid (but single line) code.

    d3.select("body").selectAll("p").data([4, 8, 15, 16, 23, 42 ]).enter().append("p").text(function(d) { return "I'm number " + d + "!"; });

    However, with appropriate new lines, it becomes easy to read and understand. Look at the same code written below with line breaks after each call.

    d3
        .select("body")
        .selectAll("p")
        .data([
            4,
            8,
            15,
            16,
            23,
            42
        ])
        .enter()
        .append("p")
        .text(function (d) {
            return "I'm number " + d + "!";
        });

    Another argument in favor of this style is that it improves the clarity of diffs when something in the method chain is changed:

    Less clear:

    -d3.select("body").selectAll("p").style("color", "white");
    +d3.select("body").selectAll("p").style("color", "blue");

    More clear:

    d3
        .select("body")
        .selectAll("p")
    -    .style("color", "white");
    +    .style("color", "blue");

    Rule Details

    This rule requires a newline after each call in a method chain or deep member access. Computed property accesses such as instance[something] are excluded.

    Options

    This rule has an object option:

    • "ignoreChainWithDepth" (default: 2) allows chains up to a specified depth.

    ignoreChainWithDepth

    Examples of incorrect code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _.chain({}).map(foo).filter(bar).value();
    
    // Or
    _.chain({}).map(foo).filter(bar);
    
    // Or
    _
      .chain({}).map(foo)
      .filter(bar);
    
    // Or
    obj.method().method2().method3();

    Examples of correct code for this rule with the default { "ignoreChainWithDepth": 2 } option:

    /*eslint newline-per-chained-call: ["error", { "ignoreChainWithDepth": 2 }]*/
    
    _
      .chain({})
      .map(foo)
      .filter(bar)
      .value();
    
    // Or
    _
      .chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    _.chain({})
      .map(foo)
      .filter(bar);
    
    // Or
    obj
      .prop
      .method().prop;
    
    // Or
    obj
      .prop.method()
      .method2()
      .method3().prop;

    When Not To Use It

    If you have conflicting rules or when you are fine with chained calls on one line, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

    Unexpected unnamed function.
    Open

      return Object.keys(program).filter(function(opt) {
    Severity: Minor
    Found in testIndex.js by eslint

    Require or disallow named function expressions (func-names)

    A pattern that's becoming more common is to give function expressions names to aid in debugging. For example:

    Foo.prototype.bar = function bar() {};

    Adding the second bar in the above example is optional. If you leave off the function name then when the function throws an exception you are likely to get something similar to anonymous function in the stack trace. If you provide the optional name for a function expression then you will get the name of the function expression in the stack trace.

    Rule Details

    This rule can enforce or disallow the use of named function expressions.

    Options

    This rule has a string option:

    • "always" (default) requires function expressions to have a name
    • "as-needed" requires function expressions to have a name, if the name cannot be assigned automatically in an ES6 environment
    • "never" disallows named function expressions, except in recursive functions, where a name is needed

    always

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

    /*eslint func-names: ["error", "always"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

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

    /*eslint func-names: ["error", "always"]*/
    
    Foo.prototype.bar = function bar() {};
    
    (function bar() {
        // ...
    }())

    as-needed

    ECMAScript 6 introduced a name property on all functions. The value of name is determined by evaluating the code around the function to see if a name can be inferred. For example, a function assigned to a variable will automatically have a name property equal to the name of the variable. The value of name is then used in stack traces for easier debugging.

    Examples of incorrect code for this rule with the default "as-needed" option:

    /*eslint func-names: ["error", "as-needed"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

    Examples of correct code for this rule with the default "as-needed" option:

    /*eslint func-names: ["error", "as-needed"]*/
    
    var bar = function() {};
    
    (function bar() {
        // ...
    }())

    never

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

    /*eslint func-names: ["error", "never"]*/
    
    Foo.prototype.bar = function bar() {};
    
    (function bar() {
        // ...
    }())

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

    /*eslint func-names: ["error", "never"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

    Further Reading

    Compatibility

    Unexpected unnamed function.
    Open

    export const parseCommand = function(passedArguments) {
    Severity: Minor
    Found in testIndex.js by eslint

    Require or disallow named function expressions (func-names)

    A pattern that's becoming more common is to give function expressions names to aid in debugging. For example:

    Foo.prototype.bar = function bar() {};

    Adding the second bar in the above example is optional. If you leave off the function name then when the function throws an exception you are likely to get something similar to anonymous function in the stack trace. If you provide the optional name for a function expression then you will get the name of the function expression in the stack trace.

    Rule Details

    This rule can enforce or disallow the use of named function expressions.

    Options

    This rule has a string option:

    • "always" (default) requires function expressions to have a name
    • "as-needed" requires function expressions to have a name, if the name cannot be assigned automatically in an ES6 environment
    • "never" disallows named function expressions, except in recursive functions, where a name is needed

    always

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

    /*eslint func-names: ["error", "always"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

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

    /*eslint func-names: ["error", "always"]*/
    
    Foo.prototype.bar = function bar() {};
    
    (function bar() {
        // ...
    }())

    as-needed

    ECMAScript 6 introduced a name property on all functions. The value of name is determined by evaluating the code around the function to see if a name can be inferred. For example, a function assigned to a variable will automatically have a name property equal to the name of the variable. The value of name is then used in stack traces for easier debugging.

    Examples of incorrect code for this rule with the default "as-needed" option:

    /*eslint func-names: ["error", "as-needed"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

    Examples of correct code for this rule with the default "as-needed" option:

    /*eslint func-names: ["error", "as-needed"]*/
    
    var bar = function() {};
    
    (function bar() {
        // ...
    }())

    never

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

    /*eslint func-names: ["error", "never"]*/
    
    Foo.prototype.bar = function bar() {};
    
    (function bar() {
        // ...
    }())

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

    /*eslint func-names: ["error", "never"]*/
    
    Foo.prototype.bar = function() {};
    
    (function() {
        // ...
    }())

    Further Reading

    Compatibility

    Import and Export Declarations are not supported yet on Node v4.
    Open

    export const filteredOptions = function(program) {
    Severity: Minor
    Found in testIndex.js by eslint

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

    Import and Export Declarations are not supported yet on Node v4.
    Open

    export const parseCommand = function(passedArguments) {
    Severity: Minor
    Found in testIndex.js by eslint

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

    Trailing Commas in Function Syntax are not supported yet on Node v4.
    Open

      program
    Severity: Minor
    Found in testIndex.js by eslint

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

    There are no issues that match your filters.

    Category
    Status