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
'use strict' const { EOL } = require('os') const localeCompare = require('@isaacs/string-locale-compare')('en') const BaseCommand = require('../base-command.js') const log = require('../utils/log-shim.js') const { cyclonedxOutput } = require('../utils/sbom-cyclonedx.js') const { spdxOutput } = require('../utils/sbom-spdx.js') const SBOM_FORMATS = ['cyclonedx', 'spdx'] class SBOM extends BaseCommand { #response = {} // response is the sbom response static description = 'Generate a Software Bill of Materials (SBOM)' static name = 'sbom' static workspaces = true static params = [ 'omit', 'package-lock-only', 'sbom-format', 'sbom-type', 'workspace', 'workspaces', ] get #parsedResponse () { return JSON.stringify(this.#response, null, 2) } async exec () { const sbomFormat = this.npm.config.get('sbom-format') const packageLockOnly = this.npm.config.get('package-lock-only') if (!sbomFormat) { /* eslint-disable-next-line max-len */ throw this.usageError(`Must specify --sbom-format flag with one of: ${SBOM_FORMATS.join(', ')}.`) } const Arborist = require('@npmcli/arborist') const opts = { ...this.npm.flatOptions, path: this.npm.prefix, forceActual: true, } const arb = new Arborist(opts) let tree if (packageLockOnly) { try { tree = await arb.loadVirtual(opts) } catch (err) { /* eslint-disable-next-line max-len */ throw this.usageError('A package lock or shrinkwrap file is required in package-lock-only mode') } } else { tree = await arb.loadActual(opts) } // Collect the list of selected workspaces in the project let wsNodes if (this.workspaceNames && this.workspaceNames.length) { wsNodes = arb.workspaceNodes(tree, this.workspaceNames) } // Build the selector and query the tree for the list of nodes const selector = this.#buildSelector({ wsNodes }) log.info('sbom', `Using dependency selector: ${selector}`) const items = await tree.querySelectorAll(selector) const errors = new Set() for (const node of items) { detectErrors(node).forEach(error => errors.add(error)) } if (errors.size > 0) { throw Object.assign( new Error([...errors].join(EOL)), { code: 'ESBOMPROBLEMS' } ) } // Populate the response with the list of unique nodes (sorted by location) this.#buildResponse( items .sort((a, b) => localeCompare(a.location, b.location)) ) this.npm.output(this.#parsedResponse) } async execWorkspaces (args) { await this.setWorkspaces() return this.exec(args) } // Build the selector from all of the specified filter options #buildSelector ({ wsNodes }) { let selector const omit = this.npm.flatOptions.omit const workspacesEnabled = this.npm.flatOptions.workspacesEnabled // If omit is specified, omit all nodes and their children which match the // specified selectors const omits = omit.reduce((acc, o) => `${acc}:not(.${o})`, '') if (!workspacesEnabled) { // If workspaces are disabled, omit all workspace nodes and their children selector = `:root > :not(.workspace)${omits},:root > :not(.workspace) *${omits},:extraneous` } else if (wsNodes && wsNodes.length > 0) { // If one or more workspaces are selected, select only those workspaces and their children selector = wsNodes.map(ws => `#${ws.name},#${ws.name} *${omits}`).join(',') } else { selector = `:root *${omits},:extraneous` } // Always include the root node return `:root,${selector}` } // builds a normalized inventory #buildResponse (items) { const sbomFormat = this.npm.config.get('sbom-format') const packageType = this.npm.config.get('sbom-type') const packageLockOnly = this.npm.config.get('package-lock-only') this.#response = sbomFormat === 'cyclonedx' ? cyclonedxOutput({ npm: this.npm, nodes: items, packageType, packageLockOnly }) : spdxOutput({ npm: this.npm, nodes: items, packageType }) } } const detectErrors = (node) => { const errors = [] // Look for missing dependencies (that are NOT optional), or invalid dependencies for (const edge of node.edgesOut.values()) { if (edge.missing && !(edge.type === 'optional' || edge.type === 'peerOptional')) { errors.push(`missing: ${edge.name}@${edge.spec}, required by ${edge.from.pkgid}`) } if (edge.invalid) { /* istanbul ignore next */ const spec = edge.spec || '*' const from = edge.from.pkgid errors.push(`invalid: ${edge.to.pkgid}, ${spec} required by ${from}`) } } return errors } module.exports = SBOM