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/state.js
'use strict';

var _ = require('lodash');
var os = require('os');
var path = require('path');
var untildify = require('untildify');
var debug = require('debug')('cypress:cli');

var fs = require('../fs');
var util = require('../util');

var getPlatformExecutable = function getPlatformExecutable() {
  var platform = os.platform();

  switch (platform) {
    case 'darwin':
      return 'Contents/MacOS/Cypress';
    case 'linux':
      return 'Cypress';
    case 'win32':
      return 'Cypress.exe';
    // TODO handle this error using our standard
    default:
      throw new Error('Platform: "' + platform + '" is not supported.');
  }
};

var getPlatFormBinaryFolder = function getPlatFormBinaryFolder() {
  var platform = os.platform();

  switch (platform) {
    case 'darwin':
      return 'Cypress.app';
    case 'linux':
      return 'Cypress';
    case 'win32':
      return 'Cypress';
    // TODO handle this error using our standard
    default:
      throw new Error('Platform: "' + platform + '" is not supported.');
  }
};

var getBinaryPkgPath = function getBinaryPkgPath(binaryDir) {
  var platform = os.platform();

  switch (platform) {
    case 'darwin':
      return path.join(binaryDir, 'Contents', 'Resources', 'app', 'package.json');
    case 'linux':
      return path.join(binaryDir, 'resources', 'app', 'package.json');
    case 'win32':
      return path.join(binaryDir, 'resources', 'app', 'package.json');
    // TODO handle this error using our standard
    default:
      throw new Error('Platform: "' + platform + '" is not supported.');
  }
};

/**
 * Get path to binary directory
*/
var getBinaryDir = function getBinaryDir() {
  var version = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : util.pkgVersion();

  return path.join(getVersionDir(version), getPlatFormBinaryFolder());
};

var getVersionDir = function getVersionDir() {
  var version = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : util.pkgVersion();

  return path.join(getCacheDir(), version);
};

/**
 * When executing "npm postinstall" hook, the working directory is set to
 * "<current folder>/node_modules/cypress", which can be surprising when using relative paths.
 */
var isInstallingFromPostinstallHook = function isInstallingFromPostinstallHook() {
  // individual folders
  var cwdFolders = process.cwd().split(path.sep);
  var length = cwdFolders.length;

  return cwdFolders[length - 2] === 'node_modules' && cwdFolders[length - 1] === 'cypress';
};

var getCacheDir = function getCacheDir() {
  var cache_directory = util.getCacheDir();

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

    debug('using environment variable CYPRESS_CACHE_FOLDER %s', envVarCacheDir);

    if (!path.isAbsolute(envVarCacheDir) && isInstallingFromPostinstallHook()) {
      var packageRootFolder = path.join('..', '..', envVarCacheDir);

      cache_directory = path.resolve(packageRootFolder);
      debug('installing from postinstall hook, original root folder is %s', packageRootFolder);
      debug('and resolved cache directory is %s', cache_directory);
    } else {
      cache_directory = path.resolve(envVarCacheDir);
    }
  }

  return cache_directory;
};

var parseRealPlatformBinaryFolderAsync = function parseRealPlatformBinaryFolderAsync(binaryPath) {
  return fs.realpathAsync(binaryPath).then(function (realPath) {
    debug('CYPRESS_RUN_BINARY has realpath:', realPath);
    if (!realPath.toString().endsWith(getPlatformExecutable())) {
      return false;
    }

    if (os.platform() === 'darwin') {
      return path.resolve(realPath, '..', '..', '..');
    }

    return path.resolve(realPath, '..');
  });
};

var getDistDir = function getDistDir() {
  return path.join(__dirname, '..', '..', 'dist');
};

var getBinaryStatePath = function getBinaryStatePath(binaryDir) {
  return path.join(binaryDir, 'binary_state.json');
};

var getBinaryStateContentsAsync = function getBinaryStateContentsAsync(binaryDir) {
  return fs.readJsonAsync(getBinaryStatePath(binaryDir)).catch({ code: 'ENOENT' }, SyntaxError, function () {
    debug('could not read binary_state.json file');

    return {};
  });
};

var getBinaryVerifiedAsync = function getBinaryVerifiedAsync(binaryDir) {
  return getBinaryStateContentsAsync(binaryDir).tap(debug).get('verified');
};

var clearBinaryStateAsync = function clearBinaryStateAsync(binaryDir) {
  return fs.removeAsync(getBinaryStatePath(binaryDir));
};

/**
 * @param {boolean} verified
 */
var writeBinaryVerifiedAsync = function writeBinaryVerifiedAsync(verified, binaryDir) {
  return getBinaryStateContentsAsync(binaryDir).then(function (contents) {
    return fs.outputJsonAsync(getBinaryStatePath(binaryDir), _.extend(contents, { verified: verified }), { spaces: 2 });
  });
};

var getPathToExecutable = function getPathToExecutable(binaryDir) {
  return path.join(binaryDir, getPlatformExecutable());
};

var getBinaryPkgVersionAsync = function getBinaryPkgVersionAsync(binaryDir) {
  var pathToPackageJson = getBinaryPkgPath(binaryDir);

  debug('Reading binary package.json from:', pathToPackageJson);

  return fs.pathExistsAsync(pathToPackageJson).then(function (exists) {
    if (!exists) {
      return null;
    }

    return fs.readJsonAsync(pathToPackageJson).get('version');
  });
};

module.exports = {
  getPathToExecutable: getPathToExecutable,
  getPlatformExecutable: getPlatformExecutable,
  getBinaryPkgVersionAsync: getBinaryPkgVersionAsync,
  getBinaryVerifiedAsync: getBinaryVerifiedAsync,
  getBinaryPkgPath: getBinaryPkgPath,
  getBinaryDir: getBinaryDir,
  getCacheDir: getCacheDir,
  clearBinaryStateAsync: clearBinaryStateAsync,
  writeBinaryVerifiedAsync: writeBinaryVerifiedAsync,
  parseRealPlatformBinaryFolderAsync: parseRealPlatformBinaryFolderAsync,
  getDistDir: getDistDir,
  getVersionDir: getVersionDir
};