@json-express/core
Version:
Zero-config JSON server with REST API, JWT authentication, HTTPS support, schema validation & search. Perfect for rapid prototyping, API mocking, and development.
30 lines (21 loc) • 749 B
JavaScript
import Joi from 'joi'
import { getConfig } from '../db/config-store.js'
const createJoiSchema = (jsonSchema = {}) => {
const joiFields = {}
for (const [fieldName, fieldConfig] of Object.entries(jsonSchema)) {
const { type, required } = fieldConfig
let joiValidator
if (type.toLowerCase() === 'string') {
joiValidator = Joi.string()
} else {
joiValidator = Joi.any()
}
if (required === true) {
joiValidator = joiValidator.required()
}
joiFields[fieldName] = joiValidator
}
const allowUnknown = getConfig('schema.validation')
return Joi.object(joiFields).unknown(allowUnknown !== 'strict')
}
export default createJoiSchema