HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/elite/node_modules/undertaker/lib/helpers/normalizeArgs.js
'use strict';

var assert = require('assert');

var map = require('arr-map');
var flatten = require('arr-flatten');
var levenshtein = require('fast-levenshtein');

function normalizeArgs(registry, args) {
  function getFunction(task) {
    if (typeof task === 'function') {
      return task;
    }

    var fn = registry.get(task);
    if (!fn) {
      var similar = similarTasks(registry, task);
      if (similar.length > 0) {
        assert(false, 'Task never defined: ' + task + ' - did you mean? ' + similar.join(', '));
      } else {
        assert(false, 'Task never defined: ' + task);
      }
    }
    return fn;
  }

  var flattenArgs = flatten(args);
  assert(flattenArgs.length, 'One or more tasks should be combined using series or parallel');

  return map(flattenArgs, getFunction);
}

function similarTasks(registry, queryTask) {
  if (typeof queryTask !== 'string') {
    return [];
  }

  var tasks = registry.tasks();
  var similarTasks = [];
  for (var task in tasks) {
    if (tasks.hasOwnProperty(task)) {
      var distance = levenshtein.get(task, queryTask);
      var allowedDistance = Math.floor(0.4 * task.length) + 1;
      if (distance < allowedDistance) {
        similarTasks.push(task);
      }
    }
  }
  return similarTasks;
}

module.exports = normalizeArgs;