‰PNG  IHDRèèÂÁC³×IDATxÚíÖ1 À°ù7 89šTÁ®5<'wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ; wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ»`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸KÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãHÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãHÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜÀ¸Æ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`ÜãÆ0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãw0î€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŒ;wÀ¸€qŒ;`ÜÀ¸Æ0î`Üãw0î€qãwÀ¸€qŒ;`ÜÀ¸ÆŒ;`ÜãÆ0î€qãwÀ¸€qŒ;wÀ¸ÆŒ;`ÜãÆ0î`Üãw0î€qŽºÆá¾d“é­IEND®B`‚ FM / lib
/usr/lib/node_modules/npm/lib
NameSizeModeActions
auth/-0755rm
config/-0755rm
doctor/-0755rm
install/-0755rm
search/-0755rm
utils/-0755rm
access.js56720644editdlrm
adduser.js13370644editdlrm
audit.js108110644editdlrm
bin.js5150644editdlrm
bugs.js8640644editdlrm
build.js45450644editdlrm
cache.js47730644editdlrm
ci.js13410644editdlrm
completion.js72780644editdlrm
config.js76120644editdlrm
dedupe.js49990644editdlrm
deprecate.js21570644editdlrm
dist-tag.js42040644editdlrm
docs.js10630644editdlrm
doctor.js40750644editdlrm
edit.js14070644editdlrm
explore.js17090644editdlrm
fetch-package-metadata.js40640644editdlrm
fetch-package-metadata.md18110644editdlrm
fund.js50260644editdlrm
get.js2350644editdlrm
help-search.js57770644editdlrm
help.js65070644editdlrm
hook.js47270644editdlrm
init.js28050644editdlrm
install-ci-test.js4860644editdlrm
install-test.js5070644editdlrm
install.js373450644editdlrm
link.js57390644editdlrm
logout.js12890644editdlrm
ls.js164800644editdlrm
npm.js147190644editdlrm
org.js42760644editdlrm
outdated.js125720644editdlrm
owner.js67540644editdlrm
pack.js120680644editdlrm
ping.js11410644editdlrm
prefix.js3300644editdlrm
profile.js114010644editdlrm
prune.js22810644editdlrm
publish.js52640644editdlrm
rebuild.js21430644editdlrm
repo.js14710644editdlrm
restart.js640644editdlrm
root.js3200644editdlrm
run-script.js55400644editdlrm
search.js34420644editdlrm
set.js2760644editdlrm
shrinkwrap.js100560644editdlrm
star.js21570644editdlrm
stars.js10540644editdlrm
start.js620644editdlrm
stop.js610644editdlrm
substack.js5090644editdlrm
team.js47240644editdlrm
test.js3740644editdlrm
token.js68180644editdlrm
unbuild.js43740644editdlrm
uninstall.js22610644editdlrm
unpublish.js35940644editdlrm
update.js22130644editdlrm
version.js100290644editdlrm
view.js154730644editdlrm
visnup.js41040644editdlrm
whoami.js18090644editdlrm
xmas.js16630644editdlrm
Edit: /usr/lib/node_modules/npm/lib/version.js (10029B)
'use strict' const BB = require('bluebird') const assert = require('assert') const chain = require('slide').chain const detectIndent = require('detect-indent') const detectNewline = require('detect-newline') const fs = require('graceful-fs') const readFile = BB.promisify(require('graceful-fs').readFile) const git = require('./utils/git.js') const lifecycle = require('./utils/lifecycle.js') const log = require('npmlog') const npm = require('./npm.js') const output = require('./utils/output.js') const parseJSON = require('./utils/parse-json.js') const path = require('path') const semver = require('semver') const stringifyPackage = require('stringify-package') const writeFileAtomic = require('write-file-atomic') version.usage = 'npm version [ | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=] | from-git]' + '\n(run in package dir)\n' + "'npm -v' or 'npm --version' to print npm version " + '(' + npm.version + ')\n' + "'npm view version' to view a package's " + 'published version\n' + "'npm ls' to inspect current package/dependency versions" // npm version module.exports = version function version (args, silent, cb_) { if (typeof cb_ !== 'function') { cb_ = silent silent = false } if (args.length > 1) return cb_(version.usage) readPackage(function (er, data, indent, newline) { if (!args.length) return dump(data, cb_) if (er) { log.error('version', 'No valid package.json found') return cb_(er) } if (args[0] === 'from-git') { retrieveTagVersion(silent, data, cb_) } else { var newVersion = semver.valid(args[0]) if (!newVersion) newVersion = semver.inc(data.version, args[0], npm.config.get('preid')) if (!newVersion) return cb_(version.usage) persistVersion(newVersion, silent, data, cb_) } }) } function retrieveTagVersion (silent, data, cb_) { chain([ verifyGit, parseLastGitTag ], function (er, results) { if (er) return cb_(er) var localData = { hasGit: true, existingTag: true } var version = results[results.length - 1] persistVersion(version, silent, data, localData, cb_) }) } function parseLastGitTag (cb) { var options = { env: process.env } git.whichAndExec(['describe', '--abbrev=0'], options, function (er, stdout) { if (er) { if (er.message.indexOf('No names found') !== -1) return cb(new Error('No tags found')) return cb(er) } var tag = stdout.trim() var prefix = npm.config.get('tag-version-prefix') // Strip the prefix from the start of the tag: if (tag.indexOf(prefix) === 0) tag = tag.slice(prefix.length) var version = semver.valid(tag) if (!version) return cb(new Error(tag + ' is not a valid version')) cb(null, version) }) } function persistVersion (newVersion, silent, data, localData, cb_) { if (typeof localData === 'function') { cb_ = localData localData = {} } if (!npm.config.get('allow-same-version') && data.version === newVersion) { return cb_(new Error('Version not changed, might want --allow-same-version')) } data.version = newVersion var lifecycleData = Object.create(data) lifecycleData._id = data.name + '@' + newVersion var where = npm.prefix chain([ !localData.hasGit && [checkGit, localData], [lifecycle, lifecycleData, 'preversion', where], [updatePackage, newVersion, silent], [lifecycle, lifecycleData, 'version', where], [commit, localData, newVersion], [lifecycle, lifecycleData, 'postversion', where] ], cb_) } function readPackage (cb) { var packagePath = path.join(npm.localPrefix, 'package.json') fs.readFile(packagePath, 'utf8', function (er, data) { if (er) return cb(new Error(er)) var indent var newline try { indent = detectIndent(data).indent newline = detectNewline(data) data = JSON.parse(data) } catch (e) { er = e data = null } cb(er, data, indent, newline) }) } function updatePackage (newVersion, silent, cb_) { function cb (er) { if (!er && !silent) output('v' + newVersion) cb_(er) } readPackage(function (er, data, indent, newline) { if (er) return cb(new Error(er)) data.version = newVersion write(data, 'package.json', indent, newline, cb) }) } function commit (localData, newVersion, cb) { updateShrinkwrap(newVersion, function (er, hasShrinkwrap, hasLock) { if (er || !localData.hasGit) return cb(er) localData.hasShrinkwrap = hasShrinkwrap localData.hasPackageLock = hasLock _commit(newVersion, localData, cb) }) } const SHRINKWRAP = 'npm-shrinkwrap.json' const PKGLOCK = 'package-lock.json' function readLockfile (name) { return readFile( path.join(npm.localPrefix, name), 'utf8' ).catch({code: 'ENOENT'}, () => null) } function updateShrinkwrap (newVersion, cb) { BB.join( readLockfile(SHRINKWRAP), readLockfile(PKGLOCK), (shrinkwrap, lockfile) => { if (!shrinkwrap && !lockfile) { return cb(null, false, false) } const file = shrinkwrap ? SHRINKWRAP : PKGLOCK let data let indent let newline try { data = parseJSON(shrinkwrap || lockfile) indent = detectIndent(shrinkwrap || lockfile).indent newline = detectNewline(shrinkwrap || lockfile) } catch (err) { log.error('version', `Bad ${file} data.`) return cb(err) } data.version = newVersion write(data, file, indent, newline, (err) => { if (err) { log.error('version', `Failed to update version in ${file}`) return cb(err) } else { return cb(null, !!shrinkwrap, !!lockfile) } }) } ) } function dump (data, cb) { var v = {} if (data && data.name && data.version) v[data.name] = data.version v.npm = npm.version Object.keys(process.versions).sort().forEach(function (k) { v[k] = process.versions[k] }) if (npm.config.get('json')) v = JSON.stringify(v, null, 2) output(v) cb() } function statGitFolder (cb) { fs.stat(path.join(npm.localPrefix, '.git'), cb) } function callGitStatus (cb) { git.whichAndExec( [ 'status', '--porcelain' ], { env: process.env }, cb ) } function cleanStatusLines (stdout) { var lines = stdout.trim().split('\n').filter(function (line) { return line.trim() && !line.match(/^\?\? /) }).map(function (line) { return line.trim() }) return lines } function verifyGit (cb) { function checkStatus (er) { if (er) return cb(er) callGitStatus(checkStdout) } function checkStdout (er, stdout) { if (er) return cb(er) var lines = cleanStatusLines(stdout) if (lines.length > 0) { return cb(new Error( 'Git working directory not clean.\n' + lines.join('\n') )) } cb() } statGitFolder(checkStatus) } function checkGit (localData, cb) { statGitFolder(function (er) { var doGit = !er && npm.config.get('git-tag-version') if (!doGit) { if (er && npm.config.get('git-tag-version')) log.verbose('version', 'error checking for .git', er) log.verbose('version', 'not tagging in git') return cb(null, false) } // check for git callGitStatus(function (er, stdout) { if (er && er.code === 'ENOGIT') { log.warn( 'version', 'This is a Git checkout, but the git command was not found.', 'npm could not create a Git tag for this release!' ) return cb(null, false) } var lines = cleanStatusLines(stdout) if (lines.length && !npm.config.get('force')) { return cb(new Error( 'Git working directory not clean.\n' + lines.join('\n') )) } localData.hasGit = true cb(null, true) }) }) } module.exports.buildCommitArgs = buildCommitArgs function buildCommitArgs (args) { const add = [] args = args || [] if (args[0] === 'commit') args.shift() if (!npm.config.get('commit-hooks')) add.push('-n') if (npm.config.get('allow-same-version')) add.push('--allow-empty') return ['commit', ...add, ...args] } module.exports.buildTagFlags = buildTagFlags function buildTagFlags () { return '-'.concat( npm.config.get('sign-git-tag') ? 's' : '', npm.config.get('allow-same-version') ? 'f' : '', 'm' ) } function _commit (version, localData, cb) { const options = { env: process.env } const message = npm.config.get('message').replace(/%s/g, version) const signCommit = npm.config.get('sign-git-commit') const commitArgs = buildCommitArgs([ 'commit', ...(signCommit ? ['-S', '-m'] : ['-m']), message ]) stagePackageFiles(localData, options).then(() => { return git.exec(commitArgs, options) }).then(() => { if (!localData.existingTag) { return git.exec([ 'tag', npm.config.get('tag-version-prefix') + version, buildTagFlags(), message ], options) } }).nodeify(cb) } function stagePackageFiles (localData, options) { return addLocalFile('package.json', options, false).then(() => { if (localData.hasShrinkwrap) { return addLocalFile('npm-shrinkwrap.json', options, true) } else if (localData.hasPackageLock) { return addLocalFile('package-lock.json', options, true) } }) } function addLocalFile (file, options, ignoreFailure) { const p = git.exec(['add', path.join(npm.localPrefix, file)], options) return ignoreFailure ? p.catch(() => {}) : p } function write (data, file, indent, newline, cb) { assert(data && typeof data === 'object', 'must pass data to version write') assert(typeof file === 'string', 'must pass filename to write to version write') log.verbose('version.write', 'data', data, 'to', file) writeFileAtomic( path.join(npm.localPrefix, file), stringifyPackage(data, indent, newline), cb ) }