update
This commit is contained in:
45
package/node_modules/@npmcli/arborist/lib/consistent-resolve.js
generated
vendored
Normal file
45
package/node_modules/@npmcli/arborist/lib/consistent-resolve.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
// take a path and a resolved value, and turn it into a resolution from
|
||||
// the given new path. This is used with converting a package.json's
|
||||
// relative file: path into one suitable for a lockfile, or between
|
||||
// lockfiles, and for converting hosted git repos to a consistent url type.
|
||||
const npa = require('npm-package-arg')
|
||||
const relpath = require('./relpath.js')
|
||||
const consistentResolve = (resolved, fromPath, toPath, relPaths = false) => {
|
||||
if (!resolved) {
|
||||
return null
|
||||
}
|
||||
|
||||
try {
|
||||
const hostedOpt = { noCommittish: false }
|
||||
const {
|
||||
fetchSpec,
|
||||
saveSpec,
|
||||
type,
|
||||
hosted,
|
||||
rawSpec,
|
||||
raw,
|
||||
} = npa(resolved, fromPath)
|
||||
if (type === 'file' || type === 'directory') {
|
||||
const cleanFetchSpec = fetchSpec.replace(/#/g, '%23')
|
||||
if (relPaths && toPath) {
|
||||
return `file:${relpath(toPath, cleanFetchSpec)}`
|
||||
}
|
||||
return `file:${cleanFetchSpec}`
|
||||
}
|
||||
if (hosted) {
|
||||
return `git+${hosted.auth ? hosted.https(hostedOpt) : hosted.sshurl(hostedOpt)}`
|
||||
}
|
||||
if (type === 'git') {
|
||||
return saveSpec
|
||||
}
|
||||
if (rawSpec === '*') {
|
||||
return raw
|
||||
}
|
||||
return rawSpec
|
||||
} catch (_) {
|
||||
// whatever we passed in was not acceptable to npa.
|
||||
// leave it 100% untouched.
|
||||
return resolved
|
||||
}
|
||||
}
|
||||
module.exports = consistentResolve
|
Reference in New Issue
Block a user