Files
shields/services/package-json-helpers.js
chris48s 504015c0ba migrate hapi/joi to joi (#5624)
* update joi + joi-extension-semver

* @hapi/joi --> joi

Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
2020-09-30 17:51:02 +00:00

53 lines
1.1 KiB
JavaScript

'use strict'
const Joi = require('joi')
const { InvalidParameter } = require('.')
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,
}).required()
function getDependencyVersion({
kind = 'prod',
wantedDependency,
dependencies,
devDependencies,
peerDependencies,
}) {
let dependenciesOfKind
if (kind === 'peer') {
dependenciesOfKind = peerDependencies
} else if (kind === 'dev') {
dependenciesOfKind = devDependencies
} else if (kind === 'prod') {
dependenciesOfKind = dependencies
} else {
throw Error(`Not very kind: ${kind}`)
}
const range = dependenciesOfKind[wantedDependency]
if (range === undefined) {
throw new InvalidParameter({
prettyMessage: `${kind} dependency not found`,
})
}
return { range }
}
module.exports = {
isDependencyMap,
isPackageJsonWithDependencies,
getDependencyVersion,
}