Comparing version 0.0.2 to 0.0.3
@@ -103,2 +103,3 @@ 'use strict'; | ||
// ported from: https://github.com/raineorshine/npm-check-updates/blob/master/lib/package-managers/npm.js | ||
// needed until pacote supports full npm config compatibility | ||
@@ -114,4 +115,5 @@ // See: https://github.com/zkat/pacote/issues/156 | ||
npmConfig.cache = false; | ||
const versionCache = {}; | ||
function getLatestVersion(name) { | ||
function getLatestVersions(name) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
@@ -121,19 +123,37 @@ if (versionCache[name]) | ||
const data = yield pacote.packument(name, Object.assign({}, npmConfig)); | ||
versionCache[name] = data['dist-tags'].latest; | ||
versionCache[name] = Object.keys(data.versions || {}); | ||
return versionCache[name]; | ||
}); | ||
} | ||
function checkUpdates(deps) { | ||
function resetRange(version, mode) { | ||
if (mode === 'any') | ||
return '*'; | ||
if (!semver.validRange(version)) | ||
return null; | ||
if (mode === 'range') | ||
return version; | ||
const min = semver.minVersion(version); | ||
if (!min) | ||
return null; | ||
return { | ||
major: '>=', | ||
minor: '^', | ||
patch: '~', | ||
}[mode] + min; | ||
} | ||
function checkUpdates(deps, mode) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return Promise.all(deps.map((dep) => __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
// TODO: range should based on user override or current version range | ||
dep.latestVersion = `^${yield getLatestVersion(dep.name)}`; | ||
const versions = yield getLatestVersions(dep.name); | ||
const range = resetRange(dep.currentVersion, mode); | ||
if (range) { | ||
const max = semver.maxSatisfying(versions, range); | ||
// TODO: align the range | ||
dep.latestVersion = max ? `^${max}` : dep.currentVersion; | ||
dep.diff = semver.diff(semver.minVersion(dep.currentVersion), semver.minVersion(dep.latestVersion)); | ||
dep.update = dep.diff !== null; | ||
} | ||
catch (e) { | ||
console.error(e); | ||
dep.latestVersion = dep.currentVersion || 'error'; | ||
dep.diff = dep.diff || 'error'; | ||
else { | ||
dep.latestVersion = dep.currentVersion; | ||
dep.diff = 'error'; | ||
dep.update = false; | ||
@@ -259,10 +279,2 @@ } | ||
function rangeFilter(deps, range) { | ||
var _a; | ||
const target = (_a = DiffMap[range || '']) !== null && _a !== void 0 ? _a : 1000; | ||
return deps.forEach((dep) => { | ||
dep.update = dep.update && DiffMap[dep.diff || ''] >= target; | ||
}); | ||
} | ||
function check(options) { | ||
@@ -278,3 +290,3 @@ return __awaiter(this, void 0, void 0, function* () { | ||
], | ||
cwd: options.path, | ||
cwd: options.cwd, | ||
onlyFiles: true, | ||
@@ -291,5 +303,5 @@ }); | ||
}); | ||
logger.log(); | ||
for (const file of packages) | ||
yield checkSinglePackage(file, options, logger); | ||
logger.log(); | ||
logger.output(); | ||
@@ -300,11 +312,11 @@ }); | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const filepath = path.resolve(options.path, relative); | ||
const filepath = path.resolve(options.cwd, relative); | ||
const { pkg, deps } = yield loadDependencies(filepath); | ||
const resolved = yield checkUpdates(deps); | ||
rangeFilter(resolved, options.range); | ||
const resolved = yield checkUpdates(deps, options.mode); | ||
diffSorter(resolved); | ||
logPackagesChanges(pkg, resolved.filter(i => i.update), relative, logger); | ||
if (options.write) { | ||
const changes = resolved.filter(i => i.update); | ||
logPackagesChanges(pkg, changes, relative, logger); | ||
if (options.write && changes.length) { | ||
yield writeDependencies(filepath, resolved); | ||
logger.log(chalk.yellow('changes written to package.json')); | ||
logger.log(chalk.yellow('changes wrote to package.json')); | ||
logger.log(); | ||
@@ -328,4 +340,4 @@ } | ||
.command('*', 'check npm version update', { | ||
path: { | ||
alias: 'p', | ||
cwd: { | ||
alias: 'C', | ||
default: path.resolve('.'), | ||
@@ -339,4 +351,5 @@ coerce: (p) => path.resolve(p), | ||
}, | ||
range: { | ||
default: 'major', | ||
mode: { | ||
alias: 'm', | ||
default: 'range', | ||
string: true, | ||
@@ -349,6 +362,4 @@ }, | ||
}, | ||
}, (args) => __awaiter(void 0, void 0, void 0, function* () { | ||
return yield check(args); | ||
})) | ||
}, check) | ||
.help() | ||
.argv; |
{ | ||
"name": "taze", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "scripts": { |
13811
343