lib/rules/use-promise-all.js
'use strict' /** * @fileoverview Recommend using `protractor.promise.all()` to resolve multiple promises * @author Alexander Afanasyev */ module.exports = { meta: { schema: [] }, Function `create` has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
Function `create` has 31 lines of code (exceeds 25 allowed). Consider refactoring. create: function (context) { function isThenCallBack (node) { var property = node.callee.property var isThen = property && property.name === 'then' && node.arguments if (isThen) { var argument = node.arguments[0] // only function type allowed var isFunction = argument && (argument.type === 'FunctionExpression' || argument.type === 'ArrowFunctionExpression') if (isFunction) { // it has to have at least one argument var hasArguments = argument.params && argument.params.length > 0 return hasArguments } } return false } return { CallExpression: function (node) { if (isThenCallBack(node)) { // find a "then()" callback among the node's ancestors var ancestor var ancestors = context.getAncestors(node) for (var i = 0; i < ancestors.length; i++) { ancestor = ancestors[i] if (ancestor && ancestor.type === 'CallExpression' && isThenCallBack(ancestor)) { context.report({ node: node, message: 'Nested promise resolutions detected. Use "protractor.promise.all()" instead' }) break } } } } } }}