function satisfy(registry, name, desired, current, exists, callback) {
var url = registry + '/' + name
got(url, {json:true}, function (err, data) {
if(err) return callback(err)
var versions = data.versions
var available;
Object.getOwnPropertyNames(data.versions).forEach(function (v) {
if(semver.satisfies(v, desired) && (!available || semver.gt(v, available))) {
available = v
}
})
if(available && (!exists || semver.gt(available, current))) {
return callback(null, {
name: name,
desired: desired,
current: current,
available: available
})
}
// We already have the most up-to-date version
callback()
})
}
when there is an greater available version, it will tell the app to update as there is a dependency package need to be updated.
Here is what I captured in my log.
![image](https://cloud.githubusercontent.com/assets/7552623/9751630/a1ff9e80-56d9-11e5-991c-4f93af8a6985.png)
My current equals my desired, but smaller than available. This will trigger an update.
Looks like "var desired" is not used? Sometimes user may just want to keep a stable version for some pkgs for a stable app.