Linux tsuru-no-tsurugi 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
Apache/2.4.52 (Ubuntu)
Server IP : 192.168.0.18 & Your IP : 216.73.216.68
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.04
KB
-rw-r--r--
2024-07-09 00:04
adduser.js
1.29
KB
-rw-r--r--
2024-05-09 19:00
audit.js
3.15
KB
-rw-r--r--
2024-07-09 00:04
bugs.js
847
B
-rw-r--r--
2023-10-14 15:00
cache.js
7.12
KB
-rw-r--r--
2025-03-27 09:29
ci.js
4.22
KB
-rw-r--r--
2024-07-09 00:04
completion.js
8.9
KB
-rw-r--r--
2024-07-09 00:04
config.js
11.18
KB
-rw-r--r--
2025-03-27 09:29
dedupe.js
1.41
KB
-rw-r--r--
2024-05-09 19:00
deprecate.js
2.13
KB
-rw-r--r--
2025-03-27 09:29
diff.js
8.14
KB
-rw-r--r--
2025-03-27 09:29
dist-tag.js
5.52
KB
-rw-r--r--
2025-03-27 09:29
docs.js
449
B
-rw-r--r--
2024-05-09 19:00
doctor.js
10.1
KB
-rw-r--r--
2025-03-27 09:29
edit.js
1.76
KB
-rw-r--r--
2024-07-09 00:04
exec.js
3.42
KB
-rw-r--r--
2024-07-09 00:04
explain.js
3.58
KB
-rw-r--r--
2025-03-27 09:29
explore.js
2.16
KB
-rw-r--r--
2024-07-09 00:04
find-dupes.js
634
B
-rw-r--r--
2024-05-09 19:00
fund.js
6.46
KB
-rw-r--r--
2024-07-09 00:04
get.js
577
B
-rw-r--r--
2024-05-09 19:00
help-search.js
5.52
KB
-rw-r--r--
2024-05-09 19:00
help.js
3.66
KB
-rw-r--r--
2024-07-09 00:04
hook.js
3.37
KB
-rw-r--r--
2025-03-27 09:29
init.js
6.85
KB
-rw-r--r--
2025-03-27 09:29
install-ci-test.js
373
B
-rw-r--r--
2024-05-09 19:00
install-test.js
370
B
-rw-r--r--
2024-05-09 19:00
install.js
5.15
KB
-rw-r--r--
2025-03-27 09:29
link.js
5.3
KB
-rw-r--r--
2025-03-27 09:29
ll.js
234
B
-rw-r--r--
2022-10-11 19:59
login.js
1.29
KB
-rw-r--r--
2024-05-09 19:00
logout.js
1.42
KB
-rw-r--r--
2024-05-09 19:00
ls.js
16.81
KB
-rw-r--r--
2025-03-27 09:29
org.js
4.02
KB
-rw-r--r--
2025-03-27 09:29
outdated.js
7.7
KB
-rw-r--r--
2024-07-13 15:00
owner.js
5.85
KB
-rw-r--r--
2024-07-09 00:04
pack.js
2.6
KB
-rw-r--r--
2025-03-27 09:29
ping.js
873
B
-rw-r--r--
2024-07-09 00:04
pkg.js
3.56
KB
-rw-r--r--
2025-03-27 09:29
prefix.js
335
B
-rw-r--r--
2025-03-27 09:29
profile.js
10.57
KB
-rw-r--r--
2024-07-09 00:04
prune.js
799
B
-rw-r--r--
2024-05-09 19:00
publish.js
7.19
KB
-rw-r--r--
2025-03-27 09:29
query.js
3.51
KB
-rw-r--r--
2024-07-09 00:04
rebuild.js
2.19
KB
-rw-r--r--
2024-07-09 00:04
repo.js
1.25
KB
-rw-r--r--
2025-03-27 09:29
restart.js
310
B
-rw-r--r--
2023-01-17 19:00
root.js
295
B
-rw-r--r--
2024-05-09 19:00
run-script.js
6.04
KB
-rw-r--r--
2025-03-27 09:29
sbom.js
4.51
KB
-rw-r--r--
2025-03-27 09:29
search.js
1.83
KB
-rw-r--r--
2024-05-09 19:00
set.js
671
B
-rw-r--r--
2024-05-09 19:00
shrinkwrap.js
2.65
KB
-rw-r--r--
2024-07-09 00:04
star.js
1.87
KB
-rw-r--r--
2025-03-27 09:29
stars.js
1.03
KB
-rw-r--r--
2025-03-27 09:29
start.js
300
B
-rw-r--r--
2023-01-17 19:00
stop.js
295
B
-rw-r--r--
2023-01-17 19:00
team.js
4.36
KB
-rw-r--r--
2024-07-09 00:04
test.js
295
B
-rw-r--r--
2023-01-17 19:00
token.js
6.02
KB
-rw-r--r--
2025-03-27 09:29
uninstall.js
1.52
KB
-rw-r--r--
2024-07-09 00:04
unpublish.js
5.27
KB
-rw-r--r--
2025-03-27 09:29
unstar.js
183
B
-rw-r--r--
2024-05-09 19:00
update.js
1.72
KB
-rw-r--r--
2024-07-09 00:04
version.js
3.54
KB
-rw-r--r--
2025-03-27 09:29
view.js
12.8
KB
-rw-r--r--
2025-03-27 09:29
whoami.js
527
B
-rw-r--r--
2024-07-09 00:04
Save
Rename
const { resolve } = require('node:path') const semver = require('semver') const libnpmdiff = require('libnpmdiff') const npa = require('npm-package-arg') const pacote = require('pacote') const pickManifest = require('npm-pick-manifest') const { log, output } = require('proc-log') const pkgJson = require('@npmcli/package-json') const BaseCommand = require('../base-cmd.js') class Diff extends BaseCommand { static description = 'The registry diff command' static name = 'diff' static usage = [ '[...<paths>]', ] static params = [ 'diff', 'diff-name-only', 'diff-unified', 'diff-ignore-all-space', 'diff-no-prefix', 'diff-src-prefix', 'diff-dst-prefix', 'diff-text', 'global', 'tag', 'workspace', 'workspaces', 'include-workspace-root', ] static workspaces = true static ignoreImplicitWorkspace = false async exec (args) { const specs = this.npm.config.get('diff').filter(d => d) if (specs.length > 2) { throw this.usageError(`Can't use more than two --diff arguments.`) } // execWorkspaces may have set this already if (!this.prefix) { this.prefix = this.npm.prefix } // this is the "top" directory, one up from node_modules // in global mode we have to walk one up from globalDir because our // node_modules is sometimes under ./lib, and in global mode we're only ever // walking through node_modules (because we will have been given a package // name already) if (this.npm.global) { this.top = resolve(this.npm.globalDir, '..') } else { this.top = this.prefix } const [a, b] = await this.retrieveSpecs(specs) log.info('diff', { src: a, dst: b }) const res = await libnpmdiff([a, b], { ...this.npm.flatOptions, diffFiles: args, where: this.top, }) return output.standard(res) } async execWorkspaces (args) { await this.setWorkspaces() for (const workspacePath of this.workspacePaths) { this.top = workspacePath this.prefix = workspacePath await this.exec(args) } } // get the package name from the packument at `path` // throws if no packument is present OR if it does not have `name` attribute async packageName () { let name try { const { content: pkg } = await pkgJson.normalize(this.prefix) name = pkg.name } catch (e) { log.verbose('diff', 'could not read project dir package.json') } if (!name) { throw this.usageError('Needs multiple arguments to compare or run from a project dir.') } return name } async retrieveSpecs ([a, b]) { if (a && b) { const specs = await this.convertVersionsToSpecs([a, b]) return this.findVersionsByPackageName(specs) } // no arguments, defaults to comparing cwd // to its latest published registry version if (!a) { const pkgName = await this.packageName() return [ `${pkgName}@${this.npm.config.get('tag')}`, `file:${this.prefix.replace(/#/g, '%23')}`, ] } // single argument, used to compare wanted versions of an // installed dependency or to compare the cwd to a published version let noPackageJson let pkgName try { const { content: pkg } = await pkgJson.normalize(this.prefix) pkgName = pkg.name } catch (e) { log.verbose('diff', 'could not read project dir package.json') noPackageJson = true } const missingPackageJson = this.usageError('Needs multiple arguments to compare or run from a project dir.') // using a valid semver range, that means it should just diff // the cwd against a published version to the registry using the // same project name and the provided semver range if (semver.validRange(a)) { if (!pkgName) { throw missingPackageJson } return [ `${pkgName}@${a}`, `file:${this.prefix.replace(/#/g, '%23')}`, ] } // when using a single package name as arg and it's part of the current // install tree, then retrieve the current installed version and compare // it against the same value `npm outdated` would suggest you to update to const spec = npa(a) if (spec.registry) { let actualTree let node const Arborist = require('@npmcli/arborist') try { const opts = { ...this.npm.flatOptions, path: this.top, } const arb = new Arborist(opts) actualTree = await arb.loadActual(opts) node = actualTree && actualTree.inventory.query('name', spec.name) .values().next().value } catch (e) { log.verbose('diff', 'failed to load actual install tree') } if (!node || !node.name || !node.package || !node.package.version) { if (noPackageJson) { throw missingPackageJson } return [ `${spec.name}@${spec.fetchSpec}`, `file:${this.prefix.replace(/#/g, '%23')}`, ] } const tryRootNodeSpec = () => (actualTree && actualTree.edgesOut.get(spec.name) || {}).spec const tryAnySpec = () => { for (const edge of node.edgesIn) { return edge.spec } } const aSpec = `file:${node.realpath.replace(/#/g, '%23')}` // finds what version of the package to compare against, if a exact // version or tag was passed than it should use that, otherwise // work from the top of the arborist tree to find the original semver // range declared in the package that depends on the package. let bSpec if (spec.rawSpec !== '*') { bSpec = spec.rawSpec } else { const bTargetVersion = tryRootNodeSpec() || tryAnySpec() // figure out what to compare against, // follows same logic to npm outdated "Wanted" results const packument = await pacote.packument(spec, { ...this.npm.flatOptions, preferOnline: true, }) bSpec = pickManifest( packument, bTargetVersion, { ...this.npm.flatOptions } ).version } return [ `${spec.name}@${aSpec}`, `${spec.name}@${bSpec}`, ] } else if (spec.type === 'directory') { return [ `file:${spec.fetchSpec.replace(/#/g, '%23')}`, `file:${this.prefix.replace(/#/g, '%23')}`, ] } else { throw this.usageError(`Spec type ${spec.type} not supported.`) } } async convertVersionsToSpecs ([a, b]) { const semverA = semver.validRange(a) const semverB = semver.validRange(b) // both specs are semver versions, assume current project dir name if (semverA && semverB) { let pkgName try { const { content: pkg } = await pkgJson.normalize(this.prefix) pkgName = pkg.name } catch (e) { log.verbose('diff', 'could not read project dir package.json') } if (!pkgName) { throw this.usageError('Needs to be run from a project dir in order to diff two versions.') } return [`${pkgName}@${a}`, `${pkgName}@${b}`] } // otherwise uses the name from the other arg to // figure out the spec.name of what to compare if (!semverA && semverB) { return [a, `${npa(a).name}@${b}`] } if (semverA && !semverB) { return [`${npa(b).name}@${a}`, b] } // no valid semver ranges used return [a, b] } async findVersionsByPackageName (specs) { let actualTree const Arborist = require('@npmcli/arborist') try { const opts = { ...this.npm.flatOptions, path: this.top, } const arb = new Arborist(opts) actualTree = await arb.loadActual(opts) } catch (e) { log.verbose('diff', 'failed to load actual install tree') } return specs.map(i => { const spec = npa(i) if (spec.rawSpec !== '*') { return i } const node = actualTree && actualTree.inventory.query('name', spec.name) .values().next().value const res = !node || !node.package || !node.package.version ? spec.fetchSpec : `file:${node.realpath.replace(/#/g, '%23')}` return `${spec.name}@${res}` }) } } module.exports = Diff