MOON
Server: Apache
System: Linux 54-179-220-51.cprapid.com 3.10.0-1160.144.1.el7.tuxcare.els4.x86_64 #1 SMP Tue Apr 7 08:40:40 UTC 2026 x86_64
User: thehunarfound (1001)
PHP: 7.4.29
Disabled: NONE
Upload Files
File: /home/thehunarfound/www/DMS/node_modules/snyk-policy/lib/add.js
module.exports = add;

var debug = require('debug')('snyk:policy');
var emailValidator = require('email-validator');

var validReasonTypes = ['not-vulnerable', 'wont-fix', 'temporary-ignore'];

function add(policy, type, options) {
  if (type !== 'ignore' && type !== 'patch') {
    throw new Error('policy.add: unknown type "' + type + '" to add to');
  }

  if (!options || !options.id || !options.path) {
    throw new Error('policy.add: required option props { id, path }');
  }

  var id = options.id;
  var path = options.path;
  var data = Object.keys(options).reduce(function (acc, curr) {
    if (curr === 'id' || curr === 'path') {
      return acc;
    }

    if (curr === 'reasonType' &&
      validReasonTypes.indexOf(options[curr]) === -1) {
      throw new Error('invalid reasonType ' + options[curr]);
    }

    if (curr === 'ignoredBy') {
      if (typeof options[curr] !== 'object') {
        throw new Error('ignoredBy must be an object');
      }

      if (!emailValidator.validate(options[curr].email)) {
        throw new Error('ignoredBy.email must be a valid email address');
      }
    }

    acc[curr] = options[curr];
    return acc;
  }, {});

  if (!policy[type][id]) {
    policy[type][id] = [];
  }

  /* istanbul ignore if */
  if (policy[type][id][path]) {
    debug('policy.add: path already exists', policy[type][id][path]);
  }

  var rule = {};
  rule[path] = data;

  policy[type][id].push(rule);

  return policy;
}
;;