Example #1
0
Manager.prototype._areCompatible = function (candidate, resolved) {
    var resolvedVersion;
    var highestCandidate;
    var highestResolved;

    // Check if targets are equal
    if (candidate.target === resolved.target) {
        return true;
    }

    resolvedVersion = resolved.pkgMeta && resolved.pkgMeta.version;
    if (!resolvedVersion) {
        return false;
    }

    // If target is a version, compare against the resolved version
    if (semver.valid(candidate.target)) {
        return semver.eq(candidate.target, resolvedVersion);
    }

    // If target is a range, check if the max versions of the range are the same
    // and if the resolved version satisfies the candidate target
    if (semver.validRange(candidate.target)) {
        highestCandidate = this._getCap(semver.toComparators(candidate.target), 'highest');
        highestResolved = this._getCap(semver.toComparators(resolved.target), 'highest');

        return highestCandidate.version && highestResolved.version &&
               semver.eq(highestCandidate.version, highestResolved.version) &&
               highestCandidate.comparator === highestResolved.comparator &&
               semver.satisfies(resolvedVersion, candidate.target);
    }

    return false;
};
Example #2
0
  var pendingUpdates = function(code, database) {
    // Check the validity of the the code and database version numbers.
    if (
      (!code || typeof code !== 'string' || !semver.valid(code))
      || (!database || typeof database !== 'string' || !semver.valid(database))
    ) {
      return unlock(function() {
        throw new Error('The provided versions given for comparison, do not match the semantic versioning format; ' +
          'code: ' + code + ', database: ' + database);
      });
    }

    // Versions are the same, skip updates.
    if (semver.eq(code, database)) {
      debug('Current database (' + database + ') and Pending code sversions (' + code + ') are the same.');
      return false;
    }
    else if (semver.gt(database, code)) {
      unlock(function() {
        throw new Error(
          'The provided codebase version is more recent than the database schema version. Update the codebase and ' +
          'restart.'
        );
      });
    }
    else {
      // The code has a higher version than the database, lock the database and update the schemas.
      return true;
    }
  };
export function isConfigVersionUpgradeable(savedVersion, kibanaVersion) {
  if (
    typeof savedVersion !== 'string' ||
    typeof kibanaVersion !== 'string' ||
    savedVersion === kibanaVersion ||
    /alpha|beta|snapshot/i.test(savedVersion)
  ) {
    return false;
  }

  const [savedReleaseVersion, savedRcNumber] = extractRcNumber(savedVersion);
  const [kibanaReleaseVersion, kibanaRcNumber] = extractRcNumber(kibanaVersion);

  // ensure that both release versions are valid, if not then abort
  if (!semver.valid(savedReleaseVersion) || !semver.valid(kibanaReleaseVersion)) {
    return false;
  }

  // ultimately if the saved config is from a previous kibana version
  // or from an earlier rc of the same version, then we can upgrade
  const savedIsLessThanKibana = semver.lt(savedReleaseVersion, kibanaReleaseVersion);
  const savedIsSameAsKibana = semver.eq(savedReleaseVersion, kibanaReleaseVersion);
  const savedRcIsLessThanKibana = savedRcNumber < kibanaRcNumber;
  return savedIsLessThanKibana || (savedIsSameAsKibana && savedRcIsLessThanKibana);
}
exports.load = function (service, accessKeyId, secretAccessKey, sessionToken, httpOptions) {
	if (service === 's3') {
		if (semver.eq(process.version, 'v0.6.9')) {
			throw new Error('FATAL: The S3 client is NOT supported under node.js v0.6.9.');
		}
	}
	
	if (semver.lt(process.version, 'v0.8.5')) {
		console.error('Warning: aws2js under node.js v0.8.4 and below is deprecated. Only node.js v0.8.5+ will be supported.');
	}
	
	var clientTemplate = cfg.clients[service], key;
	if ( ! clientTemplate) {
		throw new Error('Invalid AWS client');
	}
	
	if (service !== 's3') {
		clientTemplate.path = '/';
	}
	
	var clientConfig = lodash.clone(clientTemplate, true);
	var result = client(clientConfig, httpOptions || {});
	if (accessKeyId && secretAccessKey) {
		result.setCredentials(accessKeyId, secretAccessKey, sessionToken);
	}
	
	return result;
};
Example #5
0
      async.eachSeries(versions, (upgradingVersion, nextVersion) => {
        if (semver.eq(upgradingVersion, versionAim) || (semver.gt(upgradingVersion, versionStart) && semver.lt(upgradingVersion, versionAim))) {
          console.log(`upgrading to version ${upgradingVersion}`);
          var sqlFiles = this.getFiles(upgradingVersion);
          console.debug(`all files for ${upgradingVersion}`, sqlFiles);

          async.eachSeries(sqlFiles,(file, nextFile) => {
            var sqlFileContent = fs.readFileSync(path.resolve(__dirname, `${upgradingVersion}/${file}`), 'utf8');
            console.debug("Executing: ", sqlFileContent);

            models.sequelize.query(sqlFileContent, {
              raw: true
            }).then( () => {
              console.log("** query success ** ");
              nextFile();
            }).catch ( (error) => {
              nextFile({
                msg: `error upgrading to version ${upgradingVersion}`,
                details: error
              });
            });
          }, (error) => {
            if (error) {
              console.error(error);
              return nextVersion(error);
            }

            console.log(`upgraded to version ${upgradingVersion}`, error);
            nextVersion();

          });
        } else {
          nextVersion();
        }
      }, (error) => {
Example #6
0
function shouldPublish(options, localVersion, remoteVersion) {
  options = options || {};

  log.info('Local version: ' + localVersion);
  log.info('Published version: ' + remoteVersion);

  if (semver.eq(remoteVersion, localVersion)) {
    log.info('Your local version is the same as your published version: publish will do nothing');
    return false;
  }

  if (semver.gt(remoteVersion, localVersion)) {
    log.warn('Your local version is smaller than your published version: publish will do nothing');
    return false;
  }

  if (containsOnVersion(options)) {
    var diff = semver.diff(remoteVersion, localVersion);
    if (!options['on-' + diff]) {
      log.info('Your local version does not satisfy your --on-[major|minor|patch|build] options; publish will do nothing');
      return false;
    }
  }

  log.info('Defined criteria met; publish will release a new version');
  return true;
}
Example #7
0
 versions.forEach(function (version) {
   if (semver.eq(version, newVersion)) {
     throw createError('Version exists: ' + newVersion, 'EVERSIONEXISTS', {
       versions: versions,
       newVersion: newVersion
     });
   }
 });
Example #8
0
	setImmediate(function() {
		if(!that._version || !semver.eq(that._version, packageJson.version)) {
			return that.emit('error', new Error('Specified version does not match current system version'));
		}
		if(!that._update) {
			return that.emit('error', new Error('Update missing'));
		}

		update();
	});
Example #9
0
  config.storeVersion(function (err, version) {
    if (err)
      return callback(err);

    var configVersion = config.get('version') || '0.0.0';
    if (version) {
      //we have an existing config
      if (semver.gt(configVersion, version)) {
        //we need to replace the existing version
        joola.logger.warn('Found an out-dated central configuration store with version [' + version + '], updating to version [' + configVersion + '].');

        config.storePopulate(config._config, function (err) {
          if (err)
            return callback(err);
          //store is now populated with local copy

          joola.events.emit('config:done');
          return callback(null);
        });
      }
      else if (semver.eq(version, configVersion)) {
        joola.logger.info('Found a valid configuration store with version [' + version + '].');
        config.localApply(version, function (err) {
          if (err)
            return callback(err);

          joola.events.emit('config:done');
          return callback(null);
        });
      }
      else {
        joola.logger.info('Found an out-dated local configuration with version [' + version + '].');
        //we need to override local configuration with central
        config.localApply(version, function (err) {
          if (err)
            return callback(err);

          joola.events.emit('config:done');
          return callback(null);
        });
      }
    }
    else {
      //we have an empty store, let's populate it
      config.overrideWithEnvironment();

      config.storePopulate(config._config, function (err) {
        if (err)
          return callback(err);
        //store is now populated with local copy
        joola.events.emit('config:done');
        return callback(null);
      });
    }
  });
Example #10
0
 moveStateFromLegacyPlace() {
     // read state from legacy place
     const state = this.getStateLegacy();
     // state not found in legacy place
     if (semver_1.eq(state.version, SettingsManager.defaultState.version)) {
         return Promise.resolve();
     }
     // store in new place: 'globalState'
     return this.setState(state).then(() => 
     // delete state from legacy place
     this.deleteStateLegacy());
 }
function single_vs_range(a,b,bValidRange) {
	if (semver.gtr(a, b)) {
		return 1;
	} else if (semver.ltr(a, b)) {
		return -1
	}

	var brange = bValidRange.replace(/[<>=]/g,'').split(' ');
	var bmin = brange[0];
	if (semver.eq(a,bmin)) {
		return -1;
	}
	return 1;
}
Example #12
0
export function diffWithUnstable(version1: string, version2: string): Release | null {
  if (semver.eq(version1, version2) === false) {
    const v1 = semver.parse(version1);
    const v2 = semver.parse(version2);

    if (v1 != null && v2 != null) {
      const isPreRelease = v1.prerelease.length > 0 || v2.prerelease.length > 0;
      const preMajor = v1.major === 0 || v2.major === 0;
      const preMinor = preMajor && (v1.minor === 0 || v2.minor === 0);

      let diff = null;

      if (v1.major !== v2.major) {
        diff = 'major';
      } else if (v1.minor !== v2.minor) {
        if (preMajor) {
          // If the major version number is zero (0.x.x), treat a change
          // of the minor version number as a major change.
          diff = 'major';
        } else {
          diff = 'minor';
        }
      } else if (v1.patch !== v2.patch) {
        if (preMinor) {
          // If the major & minor version numbers are zero (0.0.x), treat a change
          // of the patch version number as a major change.
          diff = 'major';
        } else if (preMajor) {
          // If the major version number is zero (0.x.x), treat a change
          // of the patch version number as a minor change.
          diff = 'minor';
        } else {
          diff = 'patch';
        }
      }

      if (isPreRelease) {
        if (diff != null) {
          diff = PRE_RELEASES[diff];
        } else {
          diff = 'prerelease';
        }
      }

      return diff;
    }
  }

  return null;
}
Example #13
0
 getCurrentVersion(function (err, current) {
     if (err) {
         cb(err);
     }
     else if (semver.lt(ver, current.ver)) {
         downgrade(current.ver, ver, cb);
     }
     else if (semver.eq(ver, current.ver)) {
         cb(null, 'Version "' + ver + '" is already installed');
     }
     else {
         dl_and_install(ver, cb);
     }
 });
Example #14
0
 .then(tags => {
   var newVersions = []
   for(tag of tags) {
     if (semver.gt(tag.name, update.latest) || (
         semver.eq(tag.name, update.latest) && (semver(tag.name).build[0] || 0) > (semver(update.latest).build[0] || 0)
       )) {
       newVersions.push(tag)
     }
   }
   newVersions.reverse()
   // order versions from lower to greater
   console.log(chalk.blue('New versions available: ' + (newVersions.map(v => v.name).join(', ') || 'none') + '.'))
   return newVersions
 })
Example #15
0
    }).then(function(res) {
      for (var ii = 0; ii < res.length; ++ii) {
        var release = res[ii];
        if (semver.valid(release.name)) {
          console.log("found existing release: " + release.name);
          if (!highestVersion || semver.gt(release.name, highestVersion)) {
            highestVersion = release.name;
          }
        }
      }

      // If we specified a version, make sure it's higher than the highest published version
      if (options.version) {
        if (highestVersion && semver.lte(version, highestVersion)) {
          return Promise.reject(new Error("version '" + version + "' is less than highest released version: " + highestVersion));
        }

        // Make sure this verison is >= package.json
        if (semver.lt(version, info.version)) {
          return Promise.reject(new Error("version '" + version + "' is less than package.json version: " + info.version));
        }
      } else {
        // If there is no published version just use version in package.json
        if (!highestVersion) {
          version = info.version;
          return Promise.resolve();
        }

        version = semver.inc(highestVersion, options.bump);
        if (!version) {
          return Promise.reject(new Error("bad bump type: '" + options.bump + "'"));
        }

        if (semver.lt(version, info.version)) {
          version = info.version;
        }
      }

      // check if version in package.json matches. If not ask
      if (!semver.eq(version, info.version)) {
        return askOrForce('update package.json to version:' + version).then(function() {
          runtimeInfo.info.version = version;
          gameInfo.writeGameInfo(runtimeInfo);
          console.warn("don't forgot to commit the new updated package.json");
          return Promise.resolve();
        });
      }

      return Promise.resolve();
    }).then(function() {
      exec( path.join( binPath, 'clever-downgrade' ) + ' clever-datatables@0.0.1', { cwd: path.join( assetPath, 'my-new-project', 'frontend' ) }, function ( err, stdout, stderr ) {
        expect( stderr ).to.equal( '' );

        expect( fs.existsSync( path.join( assetPath, 'my-new-project', 'frontend', 'app', 'modules', 'cs_datatables', 'bower.json' ) ) ).to.be.true;

        if (require.cache[ path.join( assetPath, 'my-new-project', 'frontend', 'app', 'modules', 'cs_datatables', 'bower.json' ) ]) {
          delete require.cache[ require.resolve( path.join( assetPath, 'my-new-project', 'frontend', 'app', 'modules', 'cs_datatables', 'bower.json' ) ) ];
        }

        var pkg = require( path.join( assetPath, 'my-new-project', 'frontend', 'app', 'modules', 'cs_datatables', 'bower.json' ) );
        expect( pkg.name ).to.equal( 'clever-datatables' );
        expect( semver.eq( pkg.version, '0.0.1' ) ).to.true;

        done( err );
      } );
	return exec('npm info ' + name + ' versions --json --loglevel=info', function (err, json) {
		if (err) {
			if ((/^npm ERR! code E404$/m).test(err)) {
				return callback(null, 'v' + version + ' is the first version published.');
			}
			return callback([
				'Error fetching package versions:',
				err
			]);
		}
		var allVersions;
		try {
			allVersions = [].concat(JSON.parse(json));
		} catch (e) {
			return callback([
				'Error parsing JSON from npm',
				e
			]);
		}

		var versions = allVersions.filter(isNotPrerelease);
		if (versions.length === 0) {
			return callback(null, 'No non-prerelease versions detected.');
		}

		var max = semver.maxSatisfying(versions, '*');
		if (semver.eq(version, max)) {
			return callback([
				'Attempting to publish already-published version v' + version + '.'
			]);
		}

		var greater = semver.gtr(version, versions.join('||'));
		var prerelease = isPrerelease(version);
		if (!greater || prerelease) {
			var msg = prerelease
				? format('Attempting to publish v%s as "latest", but it is a prerelease version.', version)
				: format('Attempting to publish v%s as "latest", but it is not later than v%s.', version, max);
			return callback([
				msg,
				'\nPossible Solutions:',
				'\t1) Provide a dist-tag: `npm publish --tag=backport`, for example',
				'\t2) Use the very dangerous override: `PUBLISH_LATEST_DANGEROUSLY=true npm publish`'
			]);
		}

		return callback(null, format('v%s is later than v%s.', version, max));
	});
      exec( path.join( binPath, 'clever-downgrade' ) + ' clever-background-tasks@0.0.1', { cwd: path.join( assetPath, 'my-new-project', 'backend' ) }, function ( err, stdout, stderr ) {
        expect( stderr ).to.equal( '' );

        expect( fs.existsSync( path.join( assetPath, 'my-new-project', 'backend', 'modules', 'clever-background-tasks', 'package.json' ) ) ).to.be.true;
        expect( fs.existsSync( path.join( assetPath, 'my-new-project', 'backend', 'node_modules', 'memcached' ) ) ).to.be.true;

        if (require.cache[ path.join( assetPath, 'my-new-project', 'backend', 'modules', 'clever-background-tasks', 'package.json' ) ]) {
          delete require.cache[ require.resolve( path.join( assetPath, 'my-new-project', 'backend', 'modules', 'clever-background-tasks', 'package.json' ) ) ];
        }

        var pkg = require( path.join( assetPath, 'my-new-project', 'backend', 'modules', 'clever-background-tasks', 'package.json' ) );
        expect( pkg.name ).to.equal( 'clever-background-tasks' );
        expect( semver.eq( pkg.version, '0.0.1' ) ).to.true;

        done( err );
      } );
Example #19
0
  checkFHCUpToDate: function(cb) {
    var self = this,
      cachedLatest = ini.get('fhclatest');
    try {
      cachedLatest = JSON.parse(cachedLatest)
    } catch (error) {}
    if (!_.isEmpty(cachedLatest)) {
      if(cachedLatest.current && semver.eq(cleanupVersion(cachedLatest.current), cleanupVersion(fhc._version))){
        if (cachedLatest.ts - (new Date().getTime() - (dayInMs * daysToCache)) > 0) {
          self.latest = cachedLatest;
          return cb(cachedLatest.is);
        }
      }
    }

    return this.checkLatestFromServer(cb);
  },
Example #20
0
      versions: npm.view(function (next, viewObj) {
        viewObj.versions = viewObj.versions || {}

        var versions = {}
        ref.private = (!Object.keys(viewObj).length > 1 || !viewObj.versions[v])

        if (!ref.private) {
          var latestVersion = viewObj['dist-tags'].latest
          versions[v] = {
            isDeprecated: (!!viewObj.versions[v].deprecated),
            isOutdated: semver.eq(latestVersion, v),
            dependencies: viewObj.versions[v].dependencies || {}
          }
        }

        return next(null, versions)
      })
Example #21
0
    ], function (err, results) {
      if (err) {
        return fail(err);
      }
      const last = results[0], latest = results[1];
      console.log('  > last: %s, latest: %s', (last || '(none)'), latest);

      if (semver.eq(last, latest)) {
        return fail('  > already have latest jsdoc3 build', 0);
      }

      if (semver.gt(last, latest)) {
        return fail('  > got previous version %s'.replace('%s', latest), 0);
      }

      console.log('  > using working version %s...', latest);
      config.WORKING_VERSION = latest;

      complete();
    });
Example #22
0
function mergeBounds(range, bound) {
    if (!bound) {
        return range;
    }

    var _parseRange3 = parseRange(range),
        condition = _parseRange3.condition,
        version = _parseRange3.version;

    var boundingVersion = parseRange(bound).version;
    var comparator = condition.startsWith('<') ? semver.lt : semver.gt;
    var strict = condition === '<' || condition === '>';

    if (comparator(version, boundingVersion)) {
        return range;
    } else if (strict && semver.eq(version, boundingVersion)) {
        return range;
    } else {
        return bound;
    }
}
Example #23
0
function shouldPublish(options, localVersion, remoteVersion) {
    options = options || {};

    log.info('Local version: ' + localVersion);
    log.info('Published version: ' + remoteVersion);
    if (semver.eq(remoteVersion, localVersion)) {
        log.info('Your local version is the same as your published version: publish will do nothing');
        return false;
    } else if (semver.gt(remoteVersion, localVersion)) {
        log.warn('Your local version is smaller than your published version: publish will do nothing');
        return false;
    } else {
        remoteVersion = semver.parse(remoteVersion);
        localVersion = semver.parse(localVersion);

        var shouldPublish = true;

        for (var i = 0; i < onVersions.length; i++) {
            var onVersion = onVersions[i];
            var parsedIndex = parsedIndexLookup[onVersion];

            if (options[onVersion]) {
                if (remoteVersion[parsedIndex] === localVersion[parsedIndex]) {
                    shouldPublish = false;
                } else {
                    shouldPublish = true;
                    break;
                }
            }
        }

        if (!shouldPublish) {
            log.info('Your local version does not satisfy your --on-[major|minor|patch|build] options');
        }

        return shouldPublish;
    }
}
Example #24
0
var mochaDir = path.dirname(require.resolve("mocha"));
function makeMochaCopyFunction(fileName) {
  return function copy(callback) {
    var src = path.join(mochaDir, fileName);
    var dst = path.join(__dirname, fileName);
    fs.unlink(dst, function() {
      fs.symlink(src, dst, callback);
    });
  };
}

enqueue(makeMochaCopyFunction("mocha.js"));
enqueue(makeMochaCopyFunction("mocha.css"));

// uglify-js does not work properly due to Node 0.11.7 bug.
// (https://github.com/joyent/node/issues/6235)
if (!semver.eq(process.version, "0.11.7")) {
  try {
    require.resolve("browserify"); // Throws if missing.
    enqueue(bundle, [
      "./test/tests.es5.js",
      "./test/tests.browser.js"
    ]);
  } catch (ignored) {
    console.error("browserify not installed; skipping bundle step");
  }
}

flush();
Example #25
0
 return _.find( versions, function (version) {
   return semver.eq(version,pkg.version);
 });
Example #26
0
exports.eq = function (v1, v2) { return semver.eq(exports.format(v1, 3, 3), exports.format(v2, 3, 3)); };
Example #27
0
 info.versions.sort(function(a, b) {
   if (semver.eq(a.version, b.version)) {
     return 0;
   }
   return semver.gt(a.version, b.version) ? 1 : -1;
 });
Example #28
0
 eq: function (v2) {
   return semver.eq(v1, v2);
 }
exports.eq = function eq(v1, v2) {
	return semver.eq(format(v1, 3, 3), format(v2, 3, 3));
};
Example #30
0
  it('should handle the unroutable', function(done){
    var complete = 0;

    if (!semver.gte(zmq.version, '3.2.0')) {
      done();
      return console.warn('Test requires libzmq >= 3.2.0');
    }

    if (semver.eq(zmq.version, '3.2.1')) {
      done();
      return console.warn('ZMQ_ROUTER_MANDATORY is broken in libzmq = 3.2.1');
    }

    var envelope = '12384982398293';

    var errMsgs = require('os').platform() === 'win32' ? ['Unknown error'] : [];
    errMsgs.push('No route to host');
    errMsgs.push('Resource temporarily unavailable');

    function assertRouteError(err) {
      if (errMsgs.indexOf(err.message) === -1) {
        throw new Error('Bad error');
      }
    }

    // should emit an error event on unroutable msgs if mandatory = 1 and error handler is set

    (function(){
      var sock = zmq.socket('router');
      sock.on('error', function (err) {
        sock.close();
        assertRouteError(err);
        if (++complete === 2) done();
      });

      sock.setsockopt(zmq.ZMQ_ROUTER_MANDATORY, 1);

      sock.send([envelope, '']);
    })();

    // should throw an error on unroutable msgs if mandatory = 1 and no error handler is set

    (function(){
      var sock = zmq.socket('router');

      sock.setsockopt(zmq.ZMQ_ROUTER_MANDATORY, 1);

      try {
        sock.send([envelope, '']);
      } catch (err) {
        assertRouteError(err);
      }

      try {
        sock.send([envelope, '']);
      } catch (err) {
        assertRouteError(err);
      }

      try {
        sock.send([envelope, '']);
      } catch (err) {
        assertRouteError(err);
      }

      sock.close();
    })();

    // should silently ignore unroutable msgs if mandatory = 0

    (function(){
      var sock = zmq.socket('router');

      (function(){
        sock.send([envelope, '']);
        sock.close();
      }).should.not.throw;
    })();
    if (++complete === 2) done();
  });