/
snap
/
node
/
11691
/
lib
/
node_modules
/
npm
/
lib
/
commands
/
/snap/node/11691/lib/node_modules/npm/lib/commands
mkdir
upload
Name
Size
Mode
Actions
access.js
6189
0644
edit
dl
rm
adduser.js
1321
0644
edit
dl
rm
audit.js
3221
0644
edit
dl
rm
bugs.js
847
0644
edit
dl
rm
cache.js
7292
0644
edit
dl
rm
ci.js
4325
0644
edit
dl
rm
completion.js
9116
0644
edit
dl
rm
config.js
11444
0644
edit
dl
rm
dedupe.js
1443
0644
edit
dl
rm
deprecate.js
2182
0644
edit
dl
rm
diff.js
8191
0644
edit
dl
rm
dist-tag.js
5654
0644
edit
dl
rm
docs.js
449
0644
edit
dl
rm
doctor.js
10347
0644
edit
dl
rm
edit.js
1804
0644
edit
dl
rm
exec.js
3500
0644
edit
dl
rm
explain.js
3661
0644
edit
dl
rm
explore.js
2211
0644
edit
dl
rm
find-dupes.js
634
0644
edit
dl
rm
fund.js
6610
0644
edit
dl
rm
get.js
577
0644
edit
dl
rm
help-search.js
5650
0644
edit
dl
rm
help.js
3752
0644
edit
dl
rm
hook.js
3453
0644
edit
dl
rm
init.js
7018
0644
edit
dl
rm
install-ci-test.js
373
0644
edit
dl
rm
install-test.js
370
0644
edit
dl
rm
install.js
5277
0644
edit
dl
rm
link.js
5381
0644
edit
dl
rm
ll.js
234
0644
edit
dl
rm
login.js
1318
0644
edit
dl
rm
logout.js
1453
0644
edit
dl
rm
ls.js
18629
0644
edit
dl
rm
org.js
4121
0644
edit
dl
rm
outdated.js
7880
0644
edit
dl
rm
owner.js
5988
0644
edit
dl
rm
pack.js
2665
0644
edit
dl
rm
ping.js
873
0644
edit
dl
rm
pkg.js
3641
0644
edit
dl
rm
prefix.js
335
0644
edit
dl
rm
profile.js
10819
0644
edit
dl
rm
prune.js
799
0644
edit
dl
rm
publish.js
7552
0644
edit
dl
rm
query.js
3595
0644
edit
dl
rm
rebuild.js
2241
0644
edit
dl
rm
repo.js
1278
0644
edit
dl
rm
restart.js
310
0644
edit
dl
rm
root.js
295
0644
edit
dl
rm
run-script.js
6221
0644
edit
dl
rm
sbom.js
4616
0644
edit
dl
rm
search.js
1877
0644
edit
dl
rm
set.js
671
0644
edit
dl
rm
shrinkwrap.js
2712
0644
edit
dl
rm
star.js
1911
0644
edit
dl
rm
stars.js
1052
0644
edit
dl
rm
start.js
300
0644
edit
dl
rm
stop.js
295
0644
edit
dl
rm
team.js
4461
0644
edit
dl
rm
test.js
295
0644
edit
dl
rm
token.js
6160
0644
edit
dl
rm
uninstall.js
1561
0644
edit
dl
rm
unpublish.js
5394
0644
edit
dl
rm
unstar.js
183
0644
edit
dl
rm
update.js
1765
0644
edit
dl
rm
version.js
3628
0644
edit
dl
rm
view.js
13106
0644
edit
dl
rm
whoami.js
527
0644
edit
dl
rm
Edit:
/snap/node/11691/lib/node_modules/npm/lib/commands/cache.js
(7292B)
const cacache = require('cacache') const pacote = require('pacote') const fs = require('node:fs/promises') const { join } = require('node:path') const semver = require('semver') const BaseCommand = require('../base-cmd.js') const npa = require('npm-package-arg') const jsonParse = require('json-parse-even-better-errors') const localeCompare = require('@isaacs/string-locale-compare')('en') const { log, output } = require('proc-log') const searchCachePackage = async (path, parsed, cacheKeys) => { /* eslint-disable-next-line max-len */ const searchMFH = new RegExp(`^make-fetch-happen:request-cache:.*(?<!/[@a-zA-Z]+)/${parsed.name}/-/(${parsed.name}[^/]+.tgz)$`) const searchPack = new RegExp(`^make-fetch-happen:request-cache:.*/${parsed.escapedName}$`) const results = new Set() cacheKeys = new Set(cacheKeys) for (const key of cacheKeys) { // match on the public key registry url format if (searchMFH.test(key)) { // extract the version from the filename const filename = key.match(searchMFH)[1] const noExt = filename.slice(0, -4) const noScope = `${parsed.name.split('/').pop()}-` const ver = noExt.slice(noScope.length) if (semver.satisfies(ver, parsed.rawSpec)) { results.add(key) } continue } // is this key a packument? if (!searchPack.test(key)) { continue } results.add(key) let packument, details try { details = await cacache.get(path, key) packument = jsonParse(details.data) } catch (_) { // if we couldn't parse the packument, abort continue } if (!packument.versions || typeof packument.versions !== 'object') { continue } // assuming this is a packument for (const ver of Object.keys(packument.versions)) { if (semver.satisfies(ver, parsed.rawSpec)) { if (packument.versions[ver].dist && typeof packument.versions[ver].dist === 'object' && packument.versions[ver].dist.tarball !== undefined && cacheKeys.has(`make-fetch-happen:request-cache:${packument.versions[ver].dist.tarball}`) ) { results.add(`make-fetch-happen:request-cache:${packument.versions[ver].dist.tarball}`) } } } } return results } class Cache extends BaseCommand { static description = 'Manipulates packages cache' static name = 'cache' static params = ['cache'] static usage = [ 'add <package-spec>', 'clean [<key>]', 'ls [<name>@<version>]', 'verify', ] static async completion (opts) { const argv = opts.conf.argv.remain if (argv.length === 2) { return ['add', 'clean', 'verify', 'ls'] } // TODO - eventually... switch (argv[2]) { case 'verify': case 'clean': case 'add': case 'ls': return [] } } async exec (args) { const cmd = args.shift() switch (cmd) { case 'rm': case 'clear': case 'clean': return await this.clean(args) case 'add': return await this.add(args) case 'verify': case 'check': return await this.verify() case 'ls': return await this.ls(args) default: throw this.usageError() } } // npm cache clean [pkg]* async clean (args) { const cachePath = join(this.npm.cache, '_cacache') if (args.length === 0) { if (!this.npm.config.get('force')) { throw new Error(`As of npm@5, the npm cache self-heals from corruption issues by treating integrity mismatches as cache misses. As a result, data extracted from the cache is guaranteed to be valid. If you want to make sure everything is consistent, use \`npm cache verify\` instead. Deleting the cache can only make npm go slower, and is not likely to correct any problems you may be encountering! On the other hand, if you're debugging an issue with the installer, or race conditions that depend on the timing of writing to an empty cache, you can use \`npm install --cache /tmp/empty-cache\` to use a temporary cache instead of nuking the actual one. If you're sure you want to delete the entire cache, rerun this command with --force.`) } return fs.rm(cachePath, { recursive: true, force: true }) } for (const key of args) { let entry try { entry = await cacache.get(cachePath, key) } catch (err) { log.warn('cache', `Not Found: ${key}`) break } output.standard(`Deleted: ${key}`) await cacache.rm.entry(cachePath, key) // XXX this could leave other entries without content! await cacache.rm.content(cachePath, entry.integrity) } } // npm cache add <tarball-url>... // npm cache add <pkg> <ver>... // npm cache add <tarball>... // npm cache add <folder>... async add (args) { log.silly('cache add', 'args', args) if (args.length === 0) { throw this.usageError('First argument to `add` is required') } await Promise.all(args.map(async spec => { log.silly('cache add', 'spec', spec) // we ask pacote for the thing, and then just throw the data // away so that it tee-pipes it into the cache like it does // for a normal request. await pacote.tarball.stream(spec, stream => { stream.resume() return stream.promise() }, { ...this.npm.flatOptions }) await pacote.manifest(spec, { ...this.npm.flatOptions, fullMetadata: true, }) })) } async verify () { const cache = join(this.npm.cache, '_cacache') const prefix = cache.indexOf(process.env.HOME) === 0 ? `~${cache.slice(process.env.HOME.length)}` : cache const stats = await cacache.verify(cache) output.standard(`Cache verified and compressed (${prefix})`) output.standard(`Content verified: ${stats.verifiedContent} (${stats.keptSize} bytes)`) if (stats.badContentCount) { output.standard(`Corrupted content removed: ${stats.badContentCount}`) } if (stats.reclaimedCount) { /* eslint-disable-next-line max-len */ output.standard(`Content garbage-collected: ${stats.reclaimedCount} (${stats.reclaimedSize} bytes)`) } if (stats.missingContent) { output.standard(`Missing content: ${stats.missingContent}`) } output.standard(`Index entries: ${stats.totalEntries}`) output.standard(`Finished in ${stats.runTime.total / 1000}s`) } // npm cache ls [--package <spec> ...] async ls (specs) { const cachePath = join(this.npm.cache, '_cacache') const cacheKeys = Object.keys(await cacache.ls(cachePath)) if (specs.length > 0) { // get results for each package spec specified const results = new Set() for (const spec of specs) { const parsed = npa(spec) if (parsed.rawSpec !== '' && parsed.type === 'tag') { throw this.usageError('Cannot list cache keys for a tagged package.') } const keySet = await searchCachePackage(cachePath, parsed, cacheKeys) for (const key of keySet) { results.add(key) } } [...results].sort(localeCompare).forEach(key => output.standard(key)) return } cacheKeys.sort(localeCompare).forEach(key => output.standard(key)) } } module.exports = Cache
Save
cmd:
run