mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2025-12-19 18:18:27 -05:00
33 lines
996 B
JavaScript
33 lines
996 B
JavaScript
const Joi = require('joi');
|
|
|
|
const slugRE = new RegExp('^[a-z0-9-]+$');
|
|
|
|
const schema = Joi.object()
|
|
.keys({
|
|
chapters: Joi.array().items(
|
|
Joi.object().keys({
|
|
dashedName: Joi.string().regex(slugRE).required(),
|
|
comingSoon: Joi.boolean().optional(),
|
|
chapterType: Joi.valid('exam').optional(),
|
|
modules: Joi.array()
|
|
.items(
|
|
Joi.object().keys({
|
|
moduleType: Joi.valid('review', 'exam').optional(),
|
|
comingSoon: Joi.boolean().optional(),
|
|
dashedName: Joi.string().regex(slugRE).required(),
|
|
blocks: Joi.array().items(
|
|
Joi.object().keys({
|
|
dashedName: Joi.string().regex(slugRE).required()
|
|
})
|
|
)
|
|
})
|
|
)
|
|
.required()
|
|
})
|
|
)
|
|
})
|
|
// this makes sure there is no unknown key in the object
|
|
.unknown(false);
|
|
|
|
exports.assertSuperBlockStructure = structure => Joi.assert(structure, schema);
|