Files
shields/services/dynamic-common.js
chris48s 8621fe42d7 Upgrade Joi (#3505)
* upgrade joi
* find & replace ALL THE THINGS
* update related deps
2019-06-02 21:59:55 +01:00

59 lines
1.3 KiB
JavaScript

'use strict'
const Joi = require('@hapi/joi')
const toArray = require('../core/base-service/to-array')
const validate = require('../core/base-service/validate')
const { InvalidResponse } = require('.')
const errorMessages = {
404: 'resource not found',
}
const individualValueSchema = Joi.alternatives()
.try(Joi.string(), Joi.number())
.required()
const compoundValueSchema = Joi.alternatives().try(
individualValueSchema,
Joi.array()
.items(individualValueSchema)
.required(),
Joi.array().length(0)
)
function transformAndValidate({ data, key }) {
return validate(
{
ErrorClass: InvalidResponse,
prettyErrorMessage: 'invalid key value',
traceErrorMessage: 'Key value not valid for dynamic badge',
traceSuccessMessage: 'Key value after validation',
},
data[key],
compoundValueSchema
)
}
function renderDynamicBadge({
defaultLabel,
tag,
value,
prefix = '',
suffix = '',
}) {
const renderedValue =
value === undefined ? 'not specified' : toArray(value).join(', ')
return {
label: tag ? `${defaultLabel}@${tag}` : defaultLabel,
message: `${prefix}${renderedValue}${suffix}`,
color: 'blue',
}
}
module.exports = {
errorMessages,
individualValueSchema,
transformAndValidate,
renderDynamicBadge,
}