(path, parsed, cacheKeys)
| 12 | const BaseCommand = require('../base-cmd.js') |
| 13 | |
| 14 | const searchCachePackage = async (path, parsed, cacheKeys) => { |
| 15 | const searchMFH = new RegExp(`^make-fetch-happen:request-cache:.*(?<!/[@a-zA-Z]+)/${parsed.name}/-/(${parsed.name}[^/]+.tgz)$`) |
| 16 | const searchPack = new RegExp(`^make-fetch-happen:request-cache:.*/${parsed.escapedName}$`) |
| 17 | const results = new Set() |
| 18 | cacheKeys = new Set(cacheKeys) |
| 19 | for (const key of cacheKeys) { |
| 20 | // match on the public key registry url format |
| 21 | if (searchMFH.test(key)) { |
| 22 | // extract the version from the filename |
| 23 | const filename = key.match(searchMFH)[1] |
| 24 | const noExt = filename.slice(0, -4) |
| 25 | const noScope = `${parsed.name.split('/').pop()}-` |
| 26 | const ver = noExt.slice(noScope.length) |
| 27 | if (semver.satisfies(ver, parsed.rawSpec)) { |
| 28 | results.add(key) |
| 29 | } |
| 30 | continue |
| 31 | } |
| 32 | // is this key a packument? |
| 33 | if (!searchPack.test(key)) { |
| 34 | continue |
| 35 | } |
| 36 | |
| 37 | results.add(key) |
| 38 | let packument, details |
| 39 | try { |
| 40 | details = await cacache.get(path, key) |
| 41 | packument = jsonParse(details.data) |
| 42 | } catch { |
| 43 | // if we couldn't parse the packument, abort |
| 44 | continue |
| 45 | } |
| 46 | if (!packument.versions || typeof packument.versions !== 'object') { |
| 47 | continue |
| 48 | } |
| 49 | |
| 50 | // assuming this is a packument |
| 51 | for (const ver of Object.keys(packument.versions)) { |
| 52 | if (semver.satisfies(ver, parsed.rawSpec)) { |
| 53 | if (packument.versions[ver].dist && |
| 54 | typeof packument.versions[ver].dist === 'object' && |
| 55 | packument.versions[ver].dist.tarball !== undefined && |
| 56 | cacheKeys.has(`make-fetch-happen:request-cache:${packument.versions[ver].dist.tarball}`) |
| 57 | ) { |
| 58 | results.add(`make-fetch-happen:request-cache:${packument.versions[ver].dist.tarball}`) |
| 59 | } |
| 60 | } |
| 61 | } |
| 62 | } |
| 63 | return results |
| 64 | } |
| 65 | |
| 66 | class Cache extends BaseCommand { |
| 67 | static description = 'Manipulates packages and npx cache' |
no test coverage detected
searching dependent graphs…