Files
freeCodeCamp/curriculum/schema/superblock-structure-schema.js
2024-12-13 20:10:33 +01:00

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);