Acme.BookStore.HttpApi.Host/node_modules/sver-compat/convert-range.js

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

var nodeSemver = require('semver');
var sver = require('./sver');
var Semver = sver.Semver;
var SemverRange = sver.SemverRange;
var forOf = require('es6-iterator/for-of');

module.exports = function nodeRangeToSemverRange (range) {
  var parsed = nodeSemver.validRange(range);

  // tag version
  if (!parsed)
    return new SemverRange(range);

  if (parsed === '*')
    return new SemverRange(parsed);

  try {
    var semverRange = new SemverRange(range);
    if (!semverRange.version.tag)
      return semverRange;
  }
  catch (e) {
    if (e.code !== 'ENOTSEMVER')
      throw e;
  }

  var outRange;
  forOf(parsed.split('||'), function(union) {

    // compute the intersection into a lowest upper bound and a highest lower bound
    var upperBound, lowerBound, upperEq, lowerEq;
    forOf(union.split(' '), function(intersection, doBreak) {
      var lt = intersection[0] === '<';
      var gt = intersection[0] === '>';
      if (!lt && !gt) {
        upperBound = intersection;
        upperEq = true;
        return doBreak();
      }
      var eq = intersection[1] === '=';
      if (!gt) {
        var version = new Semver(intersection.substr(1 + eq));
        if (!upperBound || upperBound.gt(version)) {
          upperBound = version;
          upperEq = eq;
        }
      }
      else if (!lt) {
        var eq = intersection[1] === '=';
        var version = new Semver(intersection.substr(1 + eq));
        if (!lowerBound || lowerBound.lt(version)) {
          lowerBound = version;
          lowerEq = eq;
        }
      }
    });

    // if the lower bound is greater than the upper bound then just return the lower bound exactly
    if (lowerBound && upperBound && lowerBound.gt(upperBound)) {
      var curRange = new SemverRange(lowerBound.toString());
后面还有 72 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。