‰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/hook.js (4727B)
'use strict' const BB = require('bluebird') const hookApi = require('libnpm/hook') const npmConfig = require('./config/figgy-config.js') const output = require('./utils/output.js') const otplease = require('./utils/otplease.js') const pudding = require('figgy-pudding') const relativeDate = require('tiny-relative-date') const Table = require('cli-table3') const validate = require('aproba') const npm = require('./npm') hook.usage = [ 'npm hook add [--type=]', 'npm hook ls [pkg]', 'npm hook rm ', 'npm hook update ' ].join('\n') hook.completion = (opts, cb) => { validate('OF', [opts, cb]) return cb(null, []) // fill in this array with completion values } const HookConfig = pudding({ json: {}, loglevel: {}, parseable: {}, silent: {}, unicode: {} }) function UsageError () { throw Object.assign(new Error(hook.usage), {code: 'EUSAGE'}) } module.exports = (args, cb) => BB.try(() => hook(args)).then( val => cb(null, val), err => err.code === 'EUSAGE' ? cb(err.message) : cb(err) ) function hook (args) { if (args.length === 4) { // secret is passed in the args // we have the user secret in the CLI args, we need to redact it from the referer. redactUserSecret() } return otplease(npmConfig(), opts => { opts = HookConfig(opts) switch (args[0]) { case 'add': return add(args[1], args[2], args[3], opts) case 'ls': return ls(args[1], opts) case 'rm': return rm(args[1], opts) case 'update': case 'up': return update(args[1], args[2], args[3], opts) default: UsageError() } }) } function add (pkg, uri, secret, opts) { return hookApi.add(pkg, uri, secret, opts).then(hook => { if (opts.json) { output(JSON.stringify(hook, null, 2)) } else if (opts.parseable) { output(Object.keys(hook).join('\t')) output(Object.keys(hook).map(k => hook[k]).join('\t')) } else if (!opts.silent && opts.loglevel !== 'silent') { output(`+ ${hookName(hook)} ${ opts.unicode ? ' ➜ ' : ' -> ' } ${hook.endpoint}`) } }) } function ls (pkg, opts) { return hookApi.ls(opts.concat({package: pkg})).then(hooks => { if (opts.json) { output(JSON.stringify(hooks, null, 2)) } else if (opts.parseable) { output(Object.keys(hooks[0]).join('\t')) hooks.forEach(hook => { output(Object.keys(hook).map(k => hook[k]).join('\t')) }) } else if (!hooks.length) { output("You don't have any hooks configured yet.") } else if (!opts.silent && opts.loglevel !== 'silent') { if (hooks.length === 1) { output('You have one hook configured.') } else { output(`You have ${hooks.length} hooks configured.`) } const table = new Table({head: ['id', 'target', 'endpoint']}) hooks.forEach((hook) => { table.push([ {rowSpan: 2, content: hook.id}, hookName(hook), hook.endpoint ]) if (hook.last_delivery) { table.push([ { colSpan: 1, content: `triggered ${relativeDate(hook.last_delivery)}` }, hook.response_code ]) } else { table.push([{colSpan: 2, content: 'never triggered'}]) } }) output(table.toString()) } }) } function rm (id, opts) { return hookApi.rm(id, opts).then(hook => { if (opts.json) { output(JSON.stringify(hook, null, 2)) } else if (opts.parseable) { output(Object.keys(hook).join('\t')) output(Object.keys(hook).map(k => hook[k]).join('\t')) } else if (!opts.silent && opts.loglevel !== 'silent') { output(`- ${hookName(hook)} ${ opts.unicode ? ' ✘ ' : ' X ' } ${hook.endpoint}`) } }) } function update (id, uri, secret, opts) { return hookApi.update(id, uri, secret, opts).then(hook => { if (opts.json) { output(JSON.stringify(hook, null, 2)) } else if (opts.parseable) { output(Object.keys(hook).join('\t')) output(Object.keys(hook).map(k => hook[k]).join('\t')) } else if (!opts.silent && opts.loglevel !== 'silent') { output(`+ ${hookName(hook)} ${ opts.unicode ? ' ➜ ' : ' -> ' } ${hook.endpoint}`) } }) } function hookName (hook) { let target = hook.name if (hook.type === 'scope') { target = '@' + target } if (hook.type === 'owner') { target = '~' + target } return target } function redactUserSecret () { const referer = npm.referer if (!referer) return const splittedReferer = referer.split(' ') splittedReferer[4] = '[REDACTED]' npm.referer = splittedReferer.join(' ') }