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/DMSold/node_modules/snyk/cli/commands/monitor.js
module.exports = monitor;

var _ = require('lodash');
var fs = require('then-fs');
var apiTokenExists = require('../../lib/api-token').exists;
var snyk = require('../../lib/');
var config = require('../../lib/config');
var url = require('url');
var chalk = require('chalk');
var pathUtil = require('path');
var spinner = require('../../lib/spinner');

var detect = require('../../lib/detect');
var plugins = require('../../lib/plugins');
var ModuleInfo = require('../../lib/module-info');

function monitor() {
  var args = [].slice.call(arguments, 0);
  var options = {};
  var results = [];
  if (typeof args[args.length - 1] === 'object') {
    options = args.pop();
  }

  args = args.filter(Boolean);

  // populate with default path (cwd) if no path given
  if (args.length ===  0) {
    args.unshift(process.cwd());
  }

  if (options.id) {
    snyk.id = options.id;
  }

  return apiTokenExists('snyk monitor')
  .then(function () {
    return args.reduce(function (acc, path) {
      return acc.then(function () {
        return fs.exists(path).then(function (exists) {
          if (!exists) {
            throw new Error(
              'snyk monitor should be pointed at an existing project');
          }
          var packageManager = detect.detectPackageManager(path, options);
          var targetFile = options.file || detect.detectPackageFile(path);
          var meta = {
            method: 'cli',
            packageManager: packageManager,
            'policy-path': options['policy-path'],
            'project-name': options['project-name'] || config['PROJECT_NAME'],
          };
          var plugin = plugins.loadPlugin(packageManager);
          var moduleInfo = ModuleInfo(plugin, options.policy);

          var relativeTargetPath =
            pathUtil.relative('.', pathUtil.join(path, targetFile));
          var analyzingDepsSpinnerLabel =
            'Analyzing ' + packageManager + ' dependencies for ' +
            relativeTargetPath;
          var postingMonitorSpinnerLabel =
            'Posting monitor snapshot for ' + relativeTargetPath + ' ...';

          return spinner(analyzingDepsSpinnerLabel)
            .then(function () {
              return moduleInfo.inspect(path, targetFile, options)
            })
            .then(spinner.clear(analyzingDepsSpinnerLabel))
            .then(function (info) {
              return spinner(postingMonitorSpinnerLabel)
              .then(function () { return info });
            })
            .then(function (info) {
              return snyk.monitor(path, meta, info);
            })
            .then(spinner.clear(postingMonitorSpinnerLabel))
            .then(function (res) {
              res.path = path;
              var endpoint = url.parse(config.API);
              var leader = '';
              if (res.org) {
                leader = '/org/' + res.org;
              }
              endpoint.pathname = leader + '/manage';
              var manageUrl = url.format(endpoint);

              endpoint.pathname = leader + '/monitor/' + res.id;
              var output = formatMonitorOutput(
                packageManager, res,
                manageUrl, options.json
              );
              // push a good result
              results.push({ok: true, data: output, path: path});
            });
        }).catch(function (err) {
          // push this error so the promise chain continues
          results.push({ok: false, data: err, path: path});
        });
      });
    }, Promise.resolve())
    .then(function () {
      if (options.json) {
        var dataToSend = results.map(function (result) {
          if (result.ok) {
            return JSON.parse(result.data)
          }
          return {ok: false, error: result.data.message, path: result.path}
        });
        // backwards compat - strip array if only one result
        dataToSend = dataToSend.length === 1 ? dataToSend[0] : dataToSend;
        var json = JSON.stringify(dataToSend, null, 2);

        if (results.every(function (res) { return res.ok; })) {
          return json
        }

        throw new Error(json);
      }

      return results.map(function (res) {
        if (res.ok) {
          return res.data;
        }
        return 'For path `' + res.path + '`, ' + res.data.message;
      }).join('\n');
    });
  });
}

function formatMonitorOutput(packageManager, res, manageUrl, isJson) {
  var issues = res.licensesPolicy ? 'issues' : 'vulnerabilities';
  var strOutput = (packageManager === 'yarn' ?
    'A yarn.lock file was detected - continuing as a Yarn project.\n\n' : '') +
    '\n\nProject path: ' + res.path +
    '\nCaptured a snapshot of this project\'s dependencies.\n' +
    'Explore this snapshot at ' + res.uri + '\n\n' +
    (res.isMonitored ?
      'Notifications about newly disclosed ' + issues + ' related\n' +
      'to these dependencies will be emailed to you.' :
      chalk.bold.red('Project is inactive, so notifications are turned ' +
        'off.\nActivate this project here: ' + manageUrl + '\n\n')) +
    (res.trialStarted ?
      chalk.yellow('You\'re over the free plan usage limit, \n' +
        'and are now on a free 14-day premium trial.\n' +
        'View plans here: ' + manageUrl + '\n\n') :
      '');

  return isJson ?
    JSON.stringify(_.assign({}, res, {
      manageUrl: manageUrl,
      packageManager: packageManager,
    })) : strOutput;
}
;;