Showing 37 of 77 total issues
File widget.router.js
has 482 lines of code (exceeds 250 allowed). Consider refactoring. Open
const Router = require('koa-router');
const logger = require('logger');
const WidgetService = require('services/widget.service');
const DatasetService = require('services/dataset.service');
const RelationshipsService = require('services/relationships.service');
Function get
has a Cognitive Complexity of 44 (exceeds 5 allowed). Consider refactoring. Open
static async get(ctx) {
const id = ctx.params.widget;
const { query } = ctx;
const { dataset } = ctx.params;
const user = query.loggedUser && query.loggedUser !== 'null' ? JSON.parse(query.loggedUser) : null;
- Read upRead up
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
File widget.service.js
has 432 lines of code (exceeds 250 allowed). Consider refactoring. Open
const logger = require('logger');
const Widget = require('models/widget.model');
const DatasetService = require('services/dataset.service');
const WidgetNotFound = require('errors/widgetNotFound.error');
const WidgetProtected = require('errors/widgetProtected.error');
Function getAll
has a Cognitive Complexity of 31 (exceeds 5 allowed). Consider refactoring. Open
static async getAll(ctx) {
const { query } = ctx;
const dataset = ctx.params.dataset || null;
const user = query.loggedUser && query.loggedUser !== 'null' ? JSON.parse(query.loggedUser) : null;
const userId = user ? user.id : null;
- Read upRead up
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 getAll
has 83 lines of code (exceeds 25 allowed). Consider refactoring. Open
static async getAll(ctx) {
const { query } = ctx;
const dataset = ctx.params.dataset || null;
const user = query.loggedUser && query.loggedUser !== 'null' ? JSON.parse(query.loggedUser) : null;
const userId = user ? user.id : null;
Function authorizationMiddleware
has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring. Open
const authorizationMiddleware = async (ctx, next) => {
logger.debug(`[WidgetRouter] Checking authorization`);
// Get user from query (delete) or body (post-patch)
const newWidgetCreation = ctx.request.path.includes('widget') && ctx.request.method === 'POST' && !(ctx.request.path.includes('find-by-ids'));
const newWidgetUpdate = ctx.request.path.includes('widget') && ctx.request.method === 'PATCH';
- Read upRead up
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 get
has 69 lines of code (exceeds 25 allowed). Consider refactoring. Open
static async get(ctx) {
const id = ctx.params.widget;
const { query } = ctx;
const { dataset } = ctx.params;
const user = query.loggedUser && query.loggedUser !== 'null' ? JSON.parse(query.loggedUser) : null;
Function init
has 69 lines of code (exceeds 25 allowed). Consider refactoring. Open
async function init() {
return new Promise((resolve, reject) => {
async function onDbReady(err) {
if (err) {
if (retries >= 0) {
Function getRelationships
has a Cognitive Complexity of 19 (exceeds 5 allowed). Consider refactoring. Open
static async getRelationships(widgets, includes, user, apiKey, query = {}) {
logger.info(`Getting relationships of widgets: ${widgets}`);
for (let i = 0; i < widgets.length; i++) {
try {
if (includes.indexOf('vocabulary') > -1) {
- Read upRead up
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 getFilteredQuery
has 64 lines of code (exceeds 25 allowed). Consider refactoring. Open
static getFilteredQuery(query, ids = []) {
const { collection, favourite } = query;
if (!query.application && query.app) {
query.application = query.app;
if (favourite) {
Function onDbReady
has 63 lines of code (exceeds 25 allowed). Consider refactoring. Open
async function onDbReady(err) {
if (err) {
if (retries >= 0) {
retries -= 1;
logger.error(`Failed to connect to MongoDB uri ${mongoUri}, retrying...`);
Function validateWidgetCreation
has 61 lines of code (exceeds 25 allowed). Consider refactoring. Open
static async validateWidgetCreation(koaObj) {
logger.info('[WidgetValidator] Validating widget creation');
koaObj.checkBody('name')
.notEmpty()
.notBlank()
Function getRelationships
has 61 lines of code (exceeds 25 allowed). Consider refactoring. Open
static async getRelationships(widgets, includes, user, apiKey, query = {}) {
logger.info(`Getting relationships of widgets: ${widgets}`);
for (let i = 0; i < widgets.length; i++) {
try {
if (includes.indexOf('vocabulary') > -1) {
Function validateWidgetUpdate
has 59 lines of code (exceeds 25 allowed). Consider refactoring. Open
static async validateWidgetUpdate(koaObj) {
logger.info('[WidgetValidator] Validating widget update');
koaObj.checkBody('name')
.optional()
.check((v) => WidgetValidator.isString(v), 'must be a string');
Function exports
has 55 lines of code (exceeds 25 allowed). Consider refactoring. Open
module.exports = (grunt) => {
grunt.file.setBase('..');
// eslint-disable-next-line import/no-extraneous-dependencies
require('load-grunt-tasks')(grunt);
Function update
has 52 lines of code (exceeds 25 allowed). Consider refactoring. Open
static async update(id, widget, apiKey) {
logger.debug(`[WidgetService]: Updating widget with id: ${id}`);
const currentWidget = await Widget.findById(id).exec() || await Widget.findOne({
slug: id
}).exec();
Function update
has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring. Open
static async update(id, widget, apiKey) {
logger.debug(`[WidgetService]: Updating widget with id: ${id}`);
const currentWidget = await Widget.findById(id).exec() || await Widget.findOne({
slug: id
}).exec();
- Read upRead up
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 authorizationMiddleware
has 42 lines of code (exceeds 25 allowed). Consider refactoring. Open
const authorizationMiddleware = async (ctx, next) => {
logger.debug(`[WidgetRouter] Checking authorization`);
// Get user from query (delete) or body (post-patch)
const newWidgetCreation = ctx.request.path.includes('widget') && ctx.request.method === 'POST' && !(ctx.request.path.includes('find-by-ids'));
const newWidgetUpdate = ctx.request.path.includes('widget') && ctx.request.method === 'PATCH';
Function exports
has 42 lines of code (exceeds 25 allowed). Consider refactoring. Open
module.exports = (() => {
const loadAPI = (app, path, pathApi) => {
const routesFiles = fs.readdirSync(path);
let existIndexRouter = false;
Function create
has 35 lines of code (exceeds 25 allowed). Consider refactoring. Open
static async create(widget, datasetId, dataset, userId, apiKey) {
logger.debug(`[WidgetService]: Creating widget with name: ${widget.name}`);
const tempSlug = await WidgetService.getSlug(widget.name);
const newWidget = await new Widget({