Files
shields/services/package-json-helpers.js
Paul Melnikow 37e83641ab Support optionalDependencies in [GithubPackageJson] (#6749)
Closes #6044

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2021-08-03 17:25:09 -05:00

48 lines
1.1 KiB
JavaScript

import Joi from 'joi'
import { InvalidParameter } from './index.js'
const isDependencyMap = Joi.object()
.pattern(
/./,
// This accepts a semver range, a URL, and many other possible values.
Joi.string().min(1).required()
)
.default({})
const isPackageJsonWithDependencies = Joi.object({
dependencies: isDependencyMap,
devDependencies: isDependencyMap,
peerDependencies: isDependencyMap,
optionalDependencies: isDependencyMap,
}).required()
function getDependencyVersion({
kind = 'prod',
wantedDependency,
dependencies,
devDependencies,
peerDependencies,
optionalDependencies,
}) {
const dependencyMaps = {
peer: peerDependencies,
optional: optionalDependencies,
dev: devDependencies,
prod: dependencies,
}
if (!(kind in dependencyMaps)) {
throw Error(`Not very kind: ${kind}`)
}
const range = dependencyMaps[kind][wantedDependency]
if (range === undefined) {
throw new InvalidParameter({
prettyMessage: `${kind} dependency not found`,
})
}
return { range }
}
export { isDependencyMap, isPackageJsonWithDependencies, getDependencyVersion }