snowyu/promise-sequence.js

View on GitHub

Showing 10 of 10 total issues

Function default has a Cognitive Complexity of 32 (exceeds 5 allowed). Consider refactoring.
Open

module.exports.default = (function () {
  var toStr = Object.prototype.toString;
  var isCallable = function (fn) {
    return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
  };
Severity: Minor
Found in src/array-from.js - About 4 hrs to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Function default has 46 lines of code (exceeds 25 allowed). Consider refactoring.
Open

module.exports.default = (function () {
  var toStr = Object.prototype.toString;
  var isCallable = function (fn) {
    return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
  };
Severity: Minor
Found in src/array-from.js - About 1 hr to fix

    Function arrFrom has 30 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

      return function arrFrom(arrayLike/*, mapFn, thisArg */) {
        // 1. Let C be the this value.
        var C = this;
    
        // 2. Let items be ToObject(arrayLike).
    Severity: Minor
    Found in src/array-from.js - About 1 hr to fix

      Function isIterable has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
      Open

      function isIterable(v) {
        var result = v != null;
        if (result) {
          result = Array.isArray(v);
          if (!result) {
      Severity: Minor
      Found in src/is-iterable.js - About 25 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Empty block statement.
      Open

            } catch (e) {}
      Severity: Minor
      Found in src/is-iterable.js by eslint

      disallow empty block statements (no-empty)

      Empty block statements, while not technically errors, usually occur due to refactoring that wasn't completed. They can cause confusion when reading code.

      Rule Details

      This rule disallows empty block statements. This rule ignores block statements which contain a comment (for example, in an empty catch or finally block of a try statement to indicate that execution should continue regardless of errors).

      Examples of incorrect code for this rule:

      /*eslint no-empty: "error"*/
      
      if (foo) {
      }
      
      while (foo) {
      }
      
      switch(foo) {
      }
      
      try {
          doSomething();
      } catch(ex) {
      
      } finally {
      
      }

      Examples of correct code for this rule:

      /*eslint no-empty: "error"*/
      
      if (foo) {
          // empty
      }
      
      while (foo) {
          /* empty */
      }
      
      try {
          doSomething();
      } catch (ex) {
          // continue regardless of error
      }
      
      try {
          doSomething();
      } finally {
          /* continue regardless of error */
      }

      Options

      This rule has an object option for exceptions:

      • "allowEmptyCatch": true allows empty catch clauses (that is, which do not contain a comment)

      allowEmptyCatch

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

      /* eslint no-empty: ["error", { "allowEmptyCatch": true }] */
      try {
          doSomething();
      } catch (ex) {}
      
      try {
          doSomething();
      }
      catch (ex) {}
      finally {
          /* continue regardless of error */
      }

      When Not To Use It

      If you intentionally use empty block statements then you can disable this rule.

      Related Rules

      'item' is already declared in the upper scope.
      Open

              previous = fn ? Promise.resolve(item).then(function(item){return fn(item)}) : item;
      Severity: Minor
      Found in src/any.js by eslint

      disallow variable declarations from shadowing variables declared in the outer scope (no-shadow)

      Shadowing is the process by which a local variable shares the same name as a variable in its containing scope. For example:

      var a = 3;
      function b() {
          var a = 10;
      }

      In this case, the variable a inside of b() is shadowing the variable a in the global scope. This can cause confusion while reading the code and it's impossible to access the global variable.

      Rule Details

      This rule aims to eliminate shadowed variable declarations.

      Examples of incorrect code for this rule:

      /*eslint no-shadow: "error"*/
      /*eslint-env es6*/
      
      var a = 3;
      function b() {
          var a = 10;
      }
      
      var b = function () {
          var a = 10;
      }
      
      function b(a) {
          a = 10;
      }
      b(a);
      
      if (true) {
          let a = 5;
      }

      Options

      This rule takes one option, an object, with properties "builtinGlobals", "hoist" and "allow".

      {
          "no-shadow": ["error", { "builtinGlobals": false, "hoist": "functions", "allow": [] }]
      }

      builtinGlobals

      The builtinGlobals option is false by default. If it is true, the rule prevents shadowing of built-in global variables: Object, Array, Number, and so on.

      Examples of incorrect code for the { "builtinGlobals": true } option:

      /*eslint no-shadow: ["error", { "builtinGlobals": true }]*/
      
      function foo() {
          var Object = 0;
      }

      hoist

      The hoist option has three settings:

      • functions (by default) - reports shadowing before the outer functions are defined.
      • all - reports all shadowing before the outer variables/functions are defined.
      • never - never report shadowing before the outer variables/functions are defined.

      hoist: functions

      Examples of incorrect code for the default { "hoist": "functions" } option:

      /*eslint no-shadow: ["error", { "hoist": "functions" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let b = 6;
      }
      
      function b() {}

      Although let b in the if statement is before the function declaration in the outer scope, it is incorrect.

      Examples of correct code for the default { "hoist": "functions" } option:

      /*eslint no-shadow: ["error", { "hoist": "functions" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let a = 3;
      }
      
      let a = 5;

      Because let a in the if statement is before the variable declaration in the outer scope, it is correct.

      hoist: all

      Examples of incorrect code for the { "hoist": "all" } option:

      /*eslint no-shadow: ["error", { "hoist": "all" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let a = 3;
          let b = 6;
      }
      
      let a = 5;
      function b() {}

      hoist: never

      Examples of correct code for the { "hoist": "never" } option:

      /*eslint no-shadow: ["error", { "hoist": "never" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let a = 3;
          let b = 6;
      }
      
      let a = 5;
      function b() {}

      Because let a and let b in the if statement are before the declarations in the outer scope, they are correct.

      allow

      The allow option is an array of identifier names for which shadowing is allowed. For example, "resolve", "reject", "done", "cb".

      Examples of correct code for the { "allow": ["done"] } option:

      /*eslint no-shadow: ["error", { "allow": ["done"] }]*/
      /*eslint-env es6*/
      
      import async from 'async';
      
      function foo(done) {
        async.map([1, 2], function (e, done) {
          done(null, e * 2)
        }, done);
      }
      
      foo(function (err, result) {
        console.log({ err, result });
      });

      Further Reading

      Related Rules

      Parsing error: The keyword 'const' is reserved
      Open

        const onFinally = function(value) {return Promise.resolve(fn()).then(function() {return value})};
      Severity: Minor
      Found in src/finally.js by eslint

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

      Parsing error: The keyword 'const' is reserved
      Open

          const length = val.length;
      Severity: Minor
      Found in src/reduce.js by eslint

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

      'item' is already declared in the upper scope.
      Open

              previous = Promise.all(previous.concat(fn ? Promise.resolve(item).then(function(item){return fn(item)}) : item)).then(function (result) {
      Severity: Minor
      Found in src/some.js by eslint

      disallow variable declarations from shadowing variables declared in the outer scope (no-shadow)

      Shadowing is the process by which a local variable shares the same name as a variable in its containing scope. For example:

      var a = 3;
      function b() {
          var a = 10;
      }

      In this case, the variable a inside of b() is shadowing the variable a in the global scope. This can cause confusion while reading the code and it's impossible to access the global variable.

      Rule Details

      This rule aims to eliminate shadowed variable declarations.

      Examples of incorrect code for this rule:

      /*eslint no-shadow: "error"*/
      /*eslint-env es6*/
      
      var a = 3;
      function b() {
          var a = 10;
      }
      
      var b = function () {
          var a = 10;
      }
      
      function b(a) {
          a = 10;
      }
      b(a);
      
      if (true) {
          let a = 5;
      }

      Options

      This rule takes one option, an object, with properties "builtinGlobals", "hoist" and "allow".

      {
          "no-shadow": ["error", { "builtinGlobals": false, "hoist": "functions", "allow": [] }]
      }

      builtinGlobals

      The builtinGlobals option is false by default. If it is true, the rule prevents shadowing of built-in global variables: Object, Array, Number, and so on.

      Examples of incorrect code for the { "builtinGlobals": true } option:

      /*eslint no-shadow: ["error", { "builtinGlobals": true }]*/
      
      function foo() {
          var Object = 0;
      }

      hoist

      The hoist option has three settings:

      • functions (by default) - reports shadowing before the outer functions are defined.
      • all - reports all shadowing before the outer variables/functions are defined.
      • never - never report shadowing before the outer variables/functions are defined.

      hoist: functions

      Examples of incorrect code for the default { "hoist": "functions" } option:

      /*eslint no-shadow: ["error", { "hoist": "functions" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let b = 6;
      }
      
      function b() {}

      Although let b in the if statement is before the function declaration in the outer scope, it is incorrect.

      Examples of correct code for the default { "hoist": "functions" } option:

      /*eslint no-shadow: ["error", { "hoist": "functions" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let a = 3;
      }
      
      let a = 5;

      Because let a in the if statement is before the variable declaration in the outer scope, it is correct.

      hoist: all

      Examples of incorrect code for the { "hoist": "all" } option:

      /*eslint no-shadow: ["error", { "hoist": "all" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let a = 3;
          let b = 6;
      }
      
      let a = 5;
      function b() {}

      hoist: never

      Examples of correct code for the { "hoist": "never" } option:

      /*eslint no-shadow: ["error", { "hoist": "never" }]*/
      /*eslint-env es6*/
      
      if (true) {
          let a = 3;
          let b = 6;
      }
      
      let a = 5;
      function b() {}

      Because let a and let b in the if statement are before the declarations in the outer scope, they are correct.

      allow

      The allow option is an array of identifier names for which shadowing is allowed. For example, "resolve", "reject", "done", "cb".

      Examples of correct code for the { "allow": ["done"] } option:

      /*eslint no-shadow: ["error", { "allow": ["done"] }]*/
      /*eslint-env es6*/
      
      import async from 'async';
      
      function foo(done) {
        async.map([1, 2], function (e, done) {
          done(null, e * 2)
        }, done);
      }
      
      foo(function (err, result) {
        console.log({ err, result });
      });

      Further Reading

      Related Rules

      Strings must use singlequote.
      Open

            throw new TypeError("Array.from requires an array-like object - not null or undefined");
      Severity: Minor
      Found in src/array-from.js by eslint

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

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

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

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

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

      Rule Details

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

      Options

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

      String option:

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

      Object option:

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

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

      double

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

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

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

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

      single

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

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

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

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

      backticks

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

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

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

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

      avoidEscape

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

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

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

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

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

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

      allowTemplateLiterals

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

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

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

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

      When Not To Use It

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

      Severity
      Category
      Status
      Source
      Language