Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
share /
nodejs /
npm /
lib /
commands /
[ HOME SHELL ]
Name
Size
Permission
Action
access.js
5.16
KB
-rw-r--r--
adduser.js
1.85
KB
-rw-r--r--
audit.js
1.5
KB
-rw-r--r--
bin.js
491
B
-rw-r--r--
birthday.js
262
B
-rw-r--r--
bugs.js
1.49
KB
-rw-r--r--
cache.js
7.04
KB
-rw-r--r--
ci.js
3.7
KB
-rw-r--r--
completion.js
8.89
KB
-rw-r--r--
config.js
7.94
KB
-rw-r--r--
dedupe.js
1.35
KB
-rw-r--r--
deprecate.js
2.07
KB
-rw-r--r--
diff.js
7.82
KB
-rw-r--r--
dist-tag.js
5.29
KB
-rw-r--r--
docs.js
1.34
KB
-rw-r--r--
doctor.js
9.39
KB
-rw-r--r--
edit.js
1.39
KB
-rw-r--r--
exec.js
2.56
KB
-rw-r--r--
explain.js
3.47
KB
-rw-r--r--
explore.js
2.29
KB
-rw-r--r--
find-dupes.js
602
B
-rw-r--r--
fund.js
6.44
KB
-rw-r--r--
get.js
483
B
-rw-r--r--
help-search.js
5.51
KB
-rw-r--r--
help.js
3.84
KB
-rw-r--r--
hook.js
4.04
KB
-rw-r--r--
init.js
6.21
KB
-rw-r--r--
install-ci-test.js
377
B
-rw-r--r--
install-test.js
374
B
-rw-r--r--
install.js
5.36
KB
-rw-r--r--
link.js
5.13
KB
-rw-r--r--
ll.js
234
B
-rw-r--r--
logout.js
1.32
KB
-rw-r--r--
ls.js
17.06
KB
-rw-r--r--
org.js
4.5
KB
-rw-r--r--
outdated.js
8.89
KB
-rw-r--r--
owner.js
6.04
KB
-rw-r--r--
pack.js
2.23
KB
-rw-r--r--
ping.js
839
B
-rw-r--r--
pkg.js
3.44
KB
-rw-r--r--
prefix.js
303
B
-rw-r--r--
profile.js
11.24
KB
-rw-r--r--
prune.js
764
B
-rw-r--r--
publish.js
6.13
KB
-rw-r--r--
rebuild.js
2.16
KB
-rw-r--r--
repo.js
2.17
KB
-rw-r--r--
restart.js
309
B
-rw-r--r--
root.js
258
B
-rw-r--r--
run-script.js
6.83
KB
-rw-r--r--
search.js
2.48
KB
-rw-r--r--
set-script.js
2.47
KB
-rw-r--r--
set.js
531
B
-rw-r--r--
shrinkwrap.js
2.62
KB
-rw-r--r--
star.js
1.99
KB
-rw-r--r--
stars.js
1011
B
-rw-r--r--
start.js
299
B
-rw-r--r--
stop.js
294
B
-rw-r--r--
team.js
4.59
KB
-rw-r--r--
test.js
294
B
-rw-r--r--
token.js
6.88
KB
-rw-r--r--
uninstall.js
1.56
KB
-rw-r--r--
unpublish.js
4.59
KB
-rw-r--r--
unstar.js
348
B
-rw-r--r--
update.js
1.7
KB
-rw-r--r--
version.js
3.12
KB
-rw-r--r--
view.js
14.1
KB
-rw-r--r--
whoami.js
523
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : outdated.js
const os = require('os') const path = require('path') const pacote = require('pacote') const table = require('text-table') const color = require('chalk') const styles = require('ansistyles') const npa = require('npm-package-arg') const pickManifest = require('npm-pick-manifest') const localeCompare = require('@isaacs/string-locale-compare')('en') const Arborist = require('@npmcli/arborist') const ansiTrim = require('../utils/ansi-trim.js') const ArboristWorkspaceCmd = require('../arborist-cmd.js') class Outdated extends ArboristWorkspaceCmd { static description = 'Check for outdated packages' static name = 'outdated' static usage = ['[[<@scope>/]<pkg> ...]'] static params = [ 'all', 'json', 'long', 'parseable', 'global', 'workspace', ] async exec (args) { const global = path.resolve(this.npm.globalDir, '..') const where = this.npm.config.get('global') ? global : this.npm.prefix const arb = new Arborist({ ...this.npm.flatOptions, path: where, }) this.edges = new Set() this.list = [] this.tree = await arb.loadActual() if (this.workspaceNames && this.workspaceNames.length) { this.filterSet = arb.workspaceDependencySet( this.tree, this.workspaceNames, this.npm.flatOptions.includeWorkspaceRoot ) } else if (!this.npm.flatOptions.workspacesEnabled) { this.filterSet = arb.excludeWorkspacesDependencySet(this.tree) } if (args.length !== 0) { // specific deps for (let i = 0; i < args.length; i++) { const nodes = this.tree.inventory.query('name', args[i]) this.getEdges(nodes, 'edgesIn') } } else { if (this.npm.config.get('all')) { // all deps in tree const nodes = this.tree.inventory.values() this.getEdges(nodes, 'edgesOut') } // top-level deps this.getEdges() } await Promise.all(Array.from(this.edges).map((edge) => { return this.getOutdatedInfo(edge) })) // sorts list alphabetically const outdated = this.list.sort((a, b) => localeCompare(a.name, b.name)) if (outdated.length > 0) { process.exitCode = 1 } // return if no outdated packages if (outdated.length === 0 && !this.npm.config.get('json')) { return } // display results if (this.npm.config.get('json')) { this.npm.output(this.makeJSON(outdated)) } else if (this.npm.config.get('parseable')) { this.npm.output(this.makeParseable(outdated)) } else { const outList = outdated.map(x => this.makePretty(x)) const outHead = ['Package', 'Current', 'Wanted', 'Latest', 'Location', 'Depended by', ] if (this.npm.config.get('long')) { outHead.push('Package Type', 'Homepage') } const outTable = [outHead].concat(outList) if (this.npm.color) { outTable[0] = outTable[0].map(heading => styles.underline(heading)) } const tableOpts = { align: ['l', 'r', 'r', 'r', 'l'], stringLength: s => ansiTrim(s).length, } this.npm.output(table(outTable, tableOpts)) } } getEdges (nodes, type) { // when no nodes are provided then it should only read direct deps // from the root node and its workspaces direct dependencies if (!nodes) { this.getEdgesOut(this.tree) this.getWorkspacesEdges() return } for (const node of nodes) { type === 'edgesOut' ? this.getEdgesOut(node) : this.getEdgesIn(node) } } getEdgesIn (node) { for (const edge of node.edgesIn) { this.trackEdge(edge) } } getEdgesOut (node) { // TODO: normalize usage of edges and avoid looping through nodes here if (this.npm.config.get('global')) { for (const child of node.children.values()) { this.trackEdge(child) } } else { for (const edge of node.edgesOut.values()) { this.trackEdge(edge) } } } trackEdge (edge) { const filteredOut = edge.from && this.filterSet && this.filterSet.size > 0 && !this.filterSet.has(edge.from.target) if (filteredOut) { return } this.edges.add(edge) } getWorkspacesEdges (node) { if (this.npm.config.get('global')) { return } for (const edge of this.tree.edgesOut.values()) { const workspace = edge && edge.to && edge.to.target && edge.to.target.isWorkspace if (workspace) { this.getEdgesOut(edge.to.target) } } } async getPackument (spec) { const packument = await pacote.packument(spec, { ...this.npm.flatOptions, fullMetadata: this.npm.config.get('long'), preferOnline: true, }) return packument } async getOutdatedInfo (edge) { let alias = false try { alias = npa(edge.spec).subSpec } catch (err) { } const spec = npa(alias ? alias.name : edge.name) const node = edge.to || edge const { path, location } = node const { version: current } = node.package || {} const type = edge.optional ? 'optionalDependencies' : edge.peer ? 'peerDependencies' : edge.dev ? 'devDependencies' : 'dependencies' for (const omitType of this.npm.config.get('omit')) { if (node[omitType]) { return } } // deps different from prod not currently // on disk are not included in the output if (edge.error === 'MISSING' && type !== 'dependencies') { return } try { const packument = await this.getPackument(spec) const expected = alias ? alias.fetchSpec : edge.spec // if it's not a range, version, or tag, skip it try { if (!npa(`${edge.name}@${edge.spec}`).registry) { return null } } catch (err) { return null } const wanted = pickManifest(packument, expected, this.npm.flatOptions) const latest = pickManifest(packument, '*', this.npm.flatOptions) if ( !current || current !== wanted.version || wanted.version !== latest.version ) { const dependent = edge.from ? this.maybeWorkspaceName(edge.from) : 'global' this.list.push({ name: alias ? edge.spec.replace('npm', edge.name) : edge.name, path, type, current, location, wanted: wanted.version, latest: latest.version, dependent, homepage: packument.homepage, }) } } catch (err) { // silently catch and ignore ETARGET, E403 & // E404 errors, deps are just skipped if (!( err.code === 'ETARGET' || err.code === 'E403' || err.code === 'E404') ) { throw err } } } maybeWorkspaceName (node) { if (!node.isWorkspace) { return node.name } const humanOutput = !this.npm.config.get('json') && !this.npm.config.get('parseable') const workspaceName = humanOutput ? node.pkgid : node.name return this.npm.color && humanOutput ? color.green(workspaceName) : workspaceName } // formatting functions makePretty (dep) { const { current = 'MISSING', location = '-', homepage = '', name, wanted, latest, type, dependent, } = dep const columns = [name, current, wanted, latest, location, dependent] if (this.npm.config.get('long')) { columns[6] = type columns[7] = homepage } if (this.npm.color) { columns[0] = color[current === wanted ? 'yellow' : 'red'](columns[0]) // current columns[2] = color.green(columns[2]) // wanted columns[3] = color.magenta(columns[3]) // latest } return columns } // --parseable creates output like this: // <fullpath>:<name@wanted>:<name@installed>:<name@latest>:<dependedby> makeParseable (list) { return list.map(dep => { const { name, current, wanted, latest, path, dependent, type, homepage, } = dep const out = [ path, name + '@' + wanted, current ? (name + '@' + current) : 'MISSING', name + '@' + latest, dependent, ] if (this.npm.config.get('long')) { out.push(type, homepage) } return out.join(':') }).join(os.EOL) } makeJSON (list) { const out = {} list.forEach(dep => { const { name, current, wanted, latest, path, type, dependent, homepage, } = dep out[name] = { current, wanted, latest, dependent, location: path, } if (this.npm.config.get('long')) { out[name].type = type out[name].homepage = homepage } }) return JSON.stringify(out, null, 2) } } module.exports = Outdated
Close