Files
pnpm/packages/lockfile-utils/src/pkgSnapshotToResolution.ts
MCMXC b67d3049b8 refactor: autoremove redundant disabled lint occurrences (#5169)
- add reportUnusedDisableDirectives true to eslint-config
- run 'lint:ts --fix' which autoremoves all redundant disabled lint occurrences
2022-08-06 21:29:44 +03:00

44 lines
1.4 KiB
TypeScript

import url from 'url'
import { PackageSnapshot } from '@pnpm/lockfile-types'
import { Resolution } from '@pnpm/resolver-base'
import { Registries } from '@pnpm/types'
import * as dp from 'dependency-path'
import getNpmTarballUrl from 'get-npm-tarball-url'
import nameVerFromPkgSnapshot from './nameVerFromPkgSnapshot'
export default (
depPath: string,
pkgSnapshot: PackageSnapshot,
registries: Registries
): Resolution => {
if (pkgSnapshot.resolution['type'] || pkgSnapshot.resolution['tarball']?.startsWith('file:')) {
return pkgSnapshot.resolution as Resolution
}
const { name } = nameVerFromPkgSnapshot(depPath, pkgSnapshot)
const registry: string = pkgSnapshot.resolution['registry'] ||
(name[0] === '@' && registries[name.split('/')[0]]) ||
registries.default
let tarball!: string
if (!pkgSnapshot.resolution['tarball']) {
tarball = getTarball(registry)
} else {
tarball = new url.URL(pkgSnapshot.resolution['tarball'],
registry.endsWith('/') ? registry : `${registry}/`
).toString()
}
return {
...pkgSnapshot.resolution,
registry,
tarball,
} as Resolution
function getTarball (registry: string) {
const { name, version } = dp.parse(depPath)
if (!name || !version) {
throw new Error(`Couldn't get tarball URL from dependency path ${depPath}`)
}
return getNpmTarballUrl(name, version, { registry })
}
/* eslint-enable @typescript-eslint/dot-notation */
}