Linux vmi2545633.contaboserver.net 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64
Apache/2.4.62 (Debian)
Server IP : 127.0.0.1 & Your IP : 127.0.0.1
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
lib /
node_modules /
npm /
lib /
commands /
Delete
Unzip
Name
Size
Permission
Date
Action
access.js
6.03
KB
-rw-r--r--
2023-08-09 13:29
adduser.js
1.32
KB
-rw-r--r--
2024-04-10 09:40
audit.js
15.11
KB
-rw-r--r--
2023-11-05 06:00
bugs.js
847
B
-rw-r--r--
2023-10-24 06:00
cache.js
7
KB
-rw-r--r--
2023-08-09 13:29
ci.js
3.77
KB
-rw-r--r--
2024-04-10 09:40
completion.js
8.87
KB
-rw-r--r--
2023-08-09 13:29
config.js
10.11
KB
-rw-r--r--
2023-08-09 13:29
dedupe.js
1.41
KB
-rw-r--r--
2023-10-24 06:00
deprecate.js
2.03
KB
-rw-r--r--
2023-10-24 06:00
diff.js
8.15
KB
-rw-r--r--
2023-08-09 13:29
dist-tag.js
5.52
KB
-rw-r--r--
2024-03-03 10:00
docs.js
447
B
-rw-r--r--
2022-10-11 10:59
doctor.js
11.8
KB
-rw-r--r--
2023-10-24 06:00
edit.js
2
KB
-rw-r--r--
2023-08-09 13:29
exec.js
3.12
KB
-rw-r--r--
2023-11-30 06:00
explain.js
3.57
KB
-rw-r--r--
2023-08-09 13:29
explore.js
2.31
KB
-rw-r--r--
2023-08-09 13:29
find-dupes.js
637
B
-rw-r--r--
2023-10-24 06:00
fund.js
6.54
KB
-rw-r--r--
2023-08-09 13:29
get.js
580
B
-rw-r--r--
2023-08-09 13:29
help-search.js
5.5
KB
-rw-r--r--
2023-06-20 17:20
help.js
3.58
KB
-rw-r--r--
2023-08-09 13:29
hook.js
3.77
KB
-rw-r--r--
2023-01-17 06:00
init.js
6.95
KB
-rw-r--r--
2023-10-24 06:00
install-ci-test.js
373
B
-rw-r--r--
2023-01-17 06:00
install-test.js
370
B
-rw-r--r--
2023-01-17 06:00
install.js
5.27
KB
-rw-r--r--
2024-02-19 06:00
link.js
5.34
KB
-rw-r--r--
2023-11-05 06:00
ll.js
234
B
-rw-r--r--
2022-10-11 10:59
login.js
1.32
KB
-rw-r--r--
2024-04-10 09:40
logout.js
1.43
KB
-rw-r--r--
2023-11-05 06:00
ls.js
16.76
KB
-rw-r--r--
2023-10-24 06:00
org.js
4.15
KB
-rw-r--r--
2023-08-09 13:29
outdated.js
8.8
KB
-rw-r--r--
2024-03-03 10:00
owner.js
5.82
KB
-rw-r--r--
2023-08-09 13:29
pack.js
2.52
KB
-rw-r--r--
2024-03-03 10:00
ping.js
917
B
-rw-r--r--
2023-01-17 06:00
pkg.js
3.56
KB
-rw-r--r--
2023-11-30 06:00
prefix.js
303
B
-rw-r--r--
2023-01-17 06:00
profile.js
11.19
KB
-rw-r--r--
2023-08-09 13:29
prune.js
798
B
-rw-r--r--
2023-10-24 06:00
publish.js
6.91
KB
-rw-r--r--
2024-04-10 09:40
query.js
3.48
KB
-rw-r--r--
2024-04-10 09:40
rebuild.js
2.16
KB
-rw-r--r--
2023-08-09 13:29
repo.js
1.24
KB
-rw-r--r--
2022-10-11 10:59
restart.js
310
B
-rw-r--r--
2023-01-17 06:00
root.js
258
B
-rw-r--r--
2023-01-17 06:00
run-script.js
6.41
KB
-rw-r--r--
2023-10-14 10:00
sbom.js
4.66
KB
-rw-r--r--
2023-10-24 06:00
search.js
2.75
KB
-rw-r--r--
2024-04-10 09:40
set.js
674
B
-rw-r--r--
2023-08-09 13:29
shrinkwrap.js
2.65
KB
-rw-r--r--
2023-06-20 17:20
star.js
1.87
KB
-rw-r--r--
2022-10-11 10:59
stars.js
1.03
KB
-rw-r--r--
2022-10-11 10:59
start.js
300
B
-rw-r--r--
2023-01-17 06:00
stop.js
295
B
-rw-r--r--
2023-01-17 06:00
team.js
4.45
KB
-rw-r--r--
2023-08-09 13:29
test.js
295
B
-rw-r--r--
2023-01-17 06:00
token.js
6.67
KB
-rw-r--r--
2023-11-30 06:00
uninstall.js
1.53
KB
-rw-r--r--
2023-08-09 13:29
unpublish.js
4.96
KB
-rw-r--r--
2024-02-19 06:00
unstar.js
182
B
-rw-r--r--
2022-10-11 10:59
update.js
1.74
KB
-rw-r--r--
2023-10-24 06:00
version.js
3.58
KB
-rw-r--r--
2023-08-09 13:29
view.js
14.54
KB
-rw-r--r--
2024-03-03 10:00
whoami.js
474
B
-rw-r--r--
2023-01-17 06:00
Save
Rename
const os = require('node:os') const { resolve } = require('node:path') const { stripVTControlCharacters } = require('node:util') const pacote = require('pacote') const table = require('text-table') const npa = require('npm-package-arg') const pickManifest = require('npm-pick-manifest') const localeCompare = require('@isaacs/string-locale-compare')('en') const ArboristWorkspaceCmd = require('../arborist-cmd.js') class Outdated extends ArboristWorkspaceCmd { static description = 'Check for outdated packages' static name = 'outdated' static usage = ['[<package-spec> ...]'] static params = [ 'all', 'json', 'long', 'parseable', 'global', 'workspace', ] async exec (args) { const global = resolve(this.npm.globalDir, '..') const where = this.npm.global ? global : this.npm.prefix const Arborist = require('@npmcli/arborist') 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) outTable[0] = outTable[0].map(heading => this.npm.chalk.underline(heading)) const tableOpts = { align: ['l', 'r', 'r', 'r', 'l'], stringLength: s => stripVTControlCharacters(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.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.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) { // ignore errors, no alias } 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.flatOptions.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 humanOutput ? this.npm.chalk.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 } columns[0] = this.npm.chalk[current === wanted ? 'yellow' : 'red'](columns[0]) // current columns[2] = this.npm.chalk.green(columns[2]) // wanted columns[3] = this.npm.chalk.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