PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/@lerna/bootstrap/lib

Просмотр файла: has-dependency-installed.js

"use strict";

const log = require("npmlog");
const Arborist = require("@npmcli/arborist");
const semver = require("semver");

/** @typedef {Map<string, string>} InstalledDependencies dependency name -> installed version */

// cache installed lookups
/** @type {Map<import("@lerna/package").Package, InstalledDependencies>} */
const cache = new Map();

module.exports.hasDependencyInstalled = hasDependencyInstalled;

/**
 * Determine if a dependency has already been installed for this package
 * @param {import("@lerna/package").Package} pkg The Package instance to check for installed dependency
 * @param {string} depName Name of the dependency
 * @param {string} needVersion version to test with
 */
function hasDependencyInstalled(pkg, depName, needVersion) {
  log.silly("hasDependencyInstalled", pkg.name, depName);

  return getInstalled(pkg).then(
    (versions) => versions.has(depName) && semver.satisfies(versions.get(depName), needVersion)
  );
}

/**
 * @param {import("@lerna/package").Package} pkg
 * @returns {Promise<InstalledDependencies>}
 */
function getInstalled(pkg) {
  if (cache.has(pkg)) {
    return Promise.resolve(cache.get(pkg));
  }
  const arb = new Arborist({
    path: pkg.location,
  });
  return arb.loadActual().then((tree) => {
    /** @type {InstalledDependencies} */
    const deps = new Map();

    for (const [dependencyName, node] of tree.children.entries()) {
      deps.set(dependencyName, node.version);
    }
    cache.set(pkg, deps);
    return deps;
  });
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!