HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/bomacon.komma.pro/node_modules/cypress/lib/tasks/install.js
'use strict';

var _templateObject = _taggedTemplateLiteral(['\n      Skipping installation:\n\n        Pass the ', ' option if you\'d like to reinstall anyway.\n    '], ['\n      Skipping installation:\n\n        Pass the ', ' option if you\'d like to reinstall anyway.\n    ']),
    _templateObject2 = _taggedTemplateLiteral(['\n      ', ' Warning: It looks like you\'ve installed Cypress globally.\n\n        This will work, but it\'s not recommended.\n\n        The recommended way to install Cypress is as a devDependency per project.\n\n        You should probably run these commands:\n\n        - ', '\n        - ', '\n    '], ['\n      ', ' Warning: It looks like you\\\'ve installed Cypress globally.\n\n        This will work, but it\'\\s not recommended.\n\n        The recommended way to install Cypress is as a devDependency per project.\n\n        You should probably run these commands:\n\n        - ', '\n        - ', '\n    ']),
    _templateObject3 = _taggedTemplateLiteral(['\n        ', ' Skipping binary installation: Environment variable CYPRESS_INSTALL_BINARY = 0.'], ['\n        ', ' Skipping binary installation: Environment variable CYPRESS_INSTALL_BINARY = 0.']),
    _templateObject4 = _taggedTemplateLiteral(['\n        ', ' Overriding Cypress cache directory to: ', '\n\n              Previous installs of Cypress may not be found.\n      '], ['\n        ', ' Overriding Cypress cache directory to: ', '\n\n              Previous installs of Cypress may not be found.\n      ']),
    _templateObject5 = _taggedTemplateLiteral(['\n    Failed to access ', ':\n\n    ', '\n    '], ['\n    Failed to access ', ':\n\n    ', '\n    ']),
    _templateObject6 = _taggedTemplateLiteral(['\n      Cypress ', ' is installed in ', '\n      '], ['\n      Cypress ', ' is installed in ', '\n      ']),
    _templateObject7 = _taggedTemplateLiteral(['\n          ', ' Warning: Forcing a binary version different than the default.\n\n            The CLI expected to install version: ', '\n\n            Instead we will install version: ', '\n\n            These versions may not work properly together.\n        '], ['\n          ', ' Warning: Forcing a binary version different than the default.\n\n            The CLI expected to install version: ', '\n\n            Instead we will install version: ', '\n\n            These versions may not work properly together.\n        ']);

function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }

var _ = require('lodash');
var os = require('os');
var path = require('path');
var chalk = require('chalk');
var debug = require('debug')('cypress:cli');
var Listr = require('listr');
var verbose = require('@cypress/listr-verbose-renderer');
var Promise = require('bluebird');
var logSymbols = require('log-symbols');

var _require = require('common-tags'),
    stripIndent = _require.stripIndent;

var fs = require('../fs');
var download = require('./download');
var util = require('../util');
var state = require('./state');
var unzip = require('./unzip');
var logger = require('../logger');

var _require2 = require('../errors'),
    throwFormErrorText = _require2.throwFormErrorText,
    errors = _require2.errors;

var alreadyInstalledMsg = function alreadyInstalledMsg() {
  if (!util.isPostInstall()) {
    logger.log(stripIndent(_templateObject, chalk.yellow('--force')));
  }
};

var displayCompletionMsg = function displayCompletionMsg() {
  // check here to see if we are globally installed
  if (util.isInstalledGlobally()) {
    // if we are display a warning
    logger.log();
    logger.warn(stripIndent(_templateObject2, logSymbols.warning, chalk.cyan('npm uninstall -g cypress'), chalk.cyan('npm install --save-dev cypress')));

    return;
  }

  logger.log();
  logger.log('You can now open Cypress by running:', chalk.cyan(path.join('node_modules', '.bin', 'cypress'), 'open'));

  logger.log();
  logger.log(chalk.grey('https://on.cypress.io/installing-cypress'));
  logger.log();
};

var downloadAndUnzip = function downloadAndUnzip(_ref) {
  var version = _ref.version,
      installDir = _ref.installDir,
      downloadDir = _ref.downloadDir;

  var progress = {
    throttle: 100,
    onProgress: null
  };
  var downloadDestination = path.join(downloadDir, 'cypress.zip');
  var rendererOptions = getRendererOptions();

  // let the user know what version of cypress we're downloading!
  logger.log('Installing Cypress ' + chalk.gray('(version: ' + version + ')'));
  logger.log();

  var tasks = new Listr([{
    title: util.titleize('Downloading Cypress'),
    task: function task(ctx, _task) {
      // as our download progresses indicate the status
      progress.onProgress = progessify(_task, 'Downloading Cypress');

      return download.start({ version: version, downloadDestination: downloadDestination, progress: progress }).then(function (redirectVersion) {
        if (redirectVersion) version = redirectVersion;

        debug('finished downloading file: ' + downloadDestination);
      }).then(function () {
        // save the download destination for unzipping
        util.setTaskTitle(_task, util.titleize(chalk.green('Downloaded Cypress')), rendererOptions.renderer);
      });
    }
  }, unzipTask({
    progress: progress,
    zipFilePath: downloadDestination,
    installDir: installDir,
    rendererOptions: rendererOptions
  }), {
    title: util.titleize('Finishing Installation'),
    task: function task(ctx, _task2) {
      var cleanup = function cleanup() {
        debug('removing zip file %s', downloadDestination);

        return fs.removeAsync(downloadDestination);
      };

      return cleanup().then(function () {
        debug('finished installation in', installDir);

        util.setTaskTitle(_task2, util.titleize(chalk.green('Finished Installation'), chalk.gray(installDir)), rendererOptions.renderer);
      });
    }
  }], rendererOptions);

  // start the tasks!
  return Promise.resolve(tasks.run());
};

var start = function start() {
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

  // handle deprecated / removed
  if (util.getEnv('CYPRESS_BINARY_VERSION')) {
    return throwFormErrorText(errors.removed.CYPRESS_BINARY_VERSION)();
  }

  if (util.getEnv('CYPRESS_SKIP_BINARY_INSTALL')) {
    return throwFormErrorText(errors.removed.CYPRESS_SKIP_BINARY_INSTALL)();
  }

  debug('installing with options %j', options);

  _.defaults(options, {
    force: false
  });

  var pkgVersion = util.pkgVersion();
  var needVersion = pkgVersion;

  debug('version in package.json is', needVersion);

  // let this environment variable reset the binary version we need
  if (util.getEnv('CYPRESS_INSTALL_BINARY')) {
    // because passed file paths are often double quoted
    // and might have extra whitespace around, be robust and trim the string
    var trimAndRemoveDoubleQuotes = true;
    var envVarVersion = util.getEnv('CYPRESS_INSTALL_BINARY', trimAndRemoveDoubleQuotes);

    debug('using environment variable CYPRESS_INSTALL_BINARY "%s"', envVarVersion);

    if (envVarVersion === '0') {
      debug('environment variable CYPRESS_INSTALL_BINARY = 0, skipping install');
      logger.log(stripIndent(_templateObject3, chalk.yellow('Note:')));

      logger.log();

      return Promise.resolve();
    }

    // if this doesn't match the expected version
    // then print warning to the user
    if (envVarVersion !== needVersion) {
      // reset the version to the env var version
      needVersion = envVarVersion;
    }
  }

  if (util.getEnv('CYPRESS_CACHE_FOLDER')) {
    var envCache = util.getEnv('CYPRESS_CACHE_FOLDER');

    logger.log(stripIndent(_templateObject4, chalk.yellow('Note:'), chalk.cyan(envCache)));

    logger.log();
  }

  var installDir = state.getVersionDir(pkgVersion);
  var cacheDir = state.getCacheDir();
  var binaryDir = state.getBinaryDir(pkgVersion);

  return fs.ensureDirAsync(cacheDir).catch({ code: 'EACCES' }, function (err) {
    return throwFormErrorText(errors.invalidCacheDirectory)(stripIndent(_templateObject5, chalk.cyan(cacheDir), err.message));
  }).then(function () {
    return state.getBinaryPkgVersionAsync(binaryDir);
  }).then(function (binaryVersion) {
    if (!binaryVersion) {
      debug('no binary installed under cli version');

      return true;
    }

    debug('installed version is', binaryVersion, 'version needed is', needVersion);

    logger.log();
    logger.log(stripIndent(_templateObject6, chalk.green(binaryVersion), chalk.cyan(installDir)));

    logger.log();

    if (options.force) {
      debug('performing force install over existing binary');

      return true;
    }

    if (binaryVersion === needVersion || !util.isSemver(needVersion)) {
      // our version matches, tell the user this is a noop
      alreadyInstalledMsg();

      return false;
    }

    return true;
  }).then(function (shouldInstall) {
    // noop if we've been told not to download
    if (!shouldInstall) {
      debug('Not downloading or installing binary');

      return;
    }

    if (needVersion !== pkgVersion) {
      logger.log(chalk.yellow(stripIndent(_templateObject7, logSymbols.warning, chalk.green(pkgVersion), chalk.green(needVersion))));

      logger.log();
    }

    // see if version supplied is a path to a binary
    return fs.pathExistsAsync(needVersion).then(function (exists) {
      if (exists) {
        return path.extname(needVersion) === '.zip' ? needVersion : false;
      }

      var possibleFile = util.formAbsolutePath(needVersion);

      debug('checking local file', possibleFile, 'cwd', process.cwd());

      return fs.pathExistsAsync(possibleFile).then(function (exists) {
        // if this exists return the path to it
        // else false
        if (exists && path.extname(possibleFile) === '.zip') {
          return possibleFile;
        }

        return false;
      });
    }).then(function (pathToLocalFile) {
      if (pathToLocalFile) {
        var absolutePath = path.resolve(needVersion);

        debug('found local file at', absolutePath);
        debug('skipping download');

        var rendererOptions = getRendererOptions();

        return new Listr([unzipTask({
          progress: {
            throttle: 100,
            onProgress: null
          },
          zipFilePath: absolutePath,
          installDir: installDir,
          rendererOptions: rendererOptions
        })], rendererOptions).run();
      }

      if (options.force) {
        debug('Cypress already installed at', installDir);
        debug('but the installation was forced');
      }

      debug('preparing to download and unzip version ', needVersion, 'to path', installDir);

      var downloadDir = os.tmpdir();

      return downloadAndUnzip({ version: needVersion, installDir: installDir, downloadDir: downloadDir });
    })
    // delay 1 sec for UX, unless we are testing
    .then(function () {
      return Promise.delay(1000);
    }).then(displayCompletionMsg);
  });
};

module.exports = {
  start: start
};

var unzipTask = function unzipTask(_ref2) {
  var zipFilePath = _ref2.zipFilePath,
      installDir = _ref2.installDir,
      progress = _ref2.progress,
      rendererOptions = _ref2.rendererOptions;

  return {
    title: util.titleize('Unzipping Cypress'),
    task: function task(ctx, _task3) {
      // as our unzip progresses indicate the status
      progress.onProgress = progessify(_task3, 'Unzipping Cypress');

      return unzip.start({ zipFilePath: zipFilePath, installDir: installDir, progress: progress }).then(function () {
        util.setTaskTitle(_task3, util.titleize(chalk.green('Unzipped Cypress')), rendererOptions.renderer);
      });
    }
  };
};

var progessify = function progessify(task, title) {
  // return higher order function
  return function (percentComplete, remaining) {
    percentComplete = chalk.white(' ' + percentComplete + '%');

    // pluralize seconds remaining
    remaining = chalk.gray(remaining + 's');

    util.setTaskTitle(task, util.titleize(title, percentComplete, remaining), getRendererOptions().renderer);
  };
};

// if we are running in CI then use
// the verbose renderer else use
// the default
var getRendererOptions = function getRendererOptions() {
  var renderer = util.isCi() ? verbose : 'default';

  if (logger.logLevel() === 'silent') {
    renderer = 'silent';
  }

  return {
    renderer: renderer
  };
};