<commit_before>// Load modules

var Joi = require('joi');


// Declare internals

var internals = {};


// Common shortcuts

var T = Joi.Types;


// Validate route options

exports.route = function (options, config, next) {

    Joi.validate(options, internals.routeOptionsSchema, function (err) {

        if (err) {
            return next(err.annotated());
        }

        Joi.validate(config, internals.routeConfigSchema, function (err) {

            return next(err ? err.annotated() : null);
        });
    });
};


// Validate server options

exports.server = function (options, next) {

    Joi.validate(options, internals.serverSchema, function (err) {

        return next(err ? err.annotated() : null);
    });
};


internals.routeOptionsSchema = {
    method: T.String().invalid('head').required(),
    path: T.String().required(),
    handler: [T.Object().optional(), T.Function().optional(), T.String().valid('notFound').optional()],
    config: T.Object().optional().nullOk()
};


internals.routeConfigSchema = {
    handler: [T.Object(), T.Function(), T.String().valid('notFound')],
    payload: T.String().valid(['stream', 'raw', 'parse']),
    response: T.Object({
        schema: T.Object().nullOk().optional(),
        sample: T.Number().optional(),
        failAction: T.String().optional().valid(['error', 'log', 'ignore'])
    }).optional().nullOk().allow(true).allow(false),
    auth: T.Object({
        mode: T.String().valid(['required', 'optional', 'try', 'none']).optional().nullOk(),
        scope: T.String().optional().nullOk(),
        tos: T.Number().optional().nullOk(),
        entity: T.String().optional().nullOk(),
        strategy: T.String().optional().nullOk(),
        strategies: T.Array().optional().nullOk()
    }).optional().nullOk(),
    validate: T.Object({
        schema: T.Object().optional().nullOk().allow(true).allow(false),
        query: T.Object().optional().nullOk().allow(true).allow(false),
        path: T.Object().optional().nullOk().allow(true).allow(false)
    }).optional().nullOk(),
    cache: T.Object({
        mode: T.String().optional().valid(['server+client', 'client+server', 'client', 'server', 'none']),<commit_msg>Fixing payload schema section<commit_after>// Load modules

var Joi = require('joi');


// Declare internals

var internals = {};


// Common shortcuts

var T = Joi.Types;


// Validate route options

exports.route = function (options, config, next) {

    Joi.validate(options, internals.routeOptionsSchema, function (err) {

        if (err) {
            return next(err.annotated());
        }

        Joi.validate(config, internals.routeConfigSchema, function (err) {

            return next(err ? err.annotated() : null);
        });
    });
};


// Validate server options

exports.server = function (options, next) {

    Joi.validate(options, internals.serverSchema, function (err) {

        return next(err ? err.annotated() : null);
    });
};


internals.routeOptionsSchema = {
    method: T.String().invalid('head').required(),
    path: T.String().required(),
    handler: [T.Object().optional(), T.Function().optional(), T.String().valid('notFound').optional()],
    config: T.Object().optional().nullOk()
};


internals.routeConfigSchema = {
    handler: [T.Object(), T.Function(), T.String().valid('notFound').optional()],
    payload: T.String().valid(['stream', 'raw', 'parse']).optional(),
    response: T.Object({
        schema: T.Object().nullOk().optional(),
        sample: T.Number().optional(),
        failAction: T.String().optional().valid(['error', 'log', 'ignore'])
    }).optional().nullOk().allow(true).allow(false),
    auth: T.Object({
        mode: T.String().valid(['required', 'optional', 'try', 'none']).optional().nullOk(),
        scope: T.String().optional().nullOk(),
        tos: T.Number().optional().nullOk(),
        entity: T.String().optional().nullOk(),
        strategy: T.String().optional().nullOk(),
        strategies: T.Array().optional().nullOk()
    }).optional().nullOk(),
    validate: T.Object({
        schema: T.Object().optional().nullOk().allow(true).allow(false),
        query: T.Object().optional().nullOk().allow(true).allow(false),
        path: T.Object().optional().nullOk().allow(true).allow(false)
    }).optional().nullOk(),
    cache: T.Object({
        mode: T.String().optional().valid(['server+client', 'client+server', 'client', 'server', 'none']),
{'fraction_non_alphanumeric': 0.20741075463172165, 'fraction_numerical': 0.0, 'mean_word_length': 3.306420233463035, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6291395', 'n_tokens_mistral': 1319, 'n_tokens_neox': 1302, 'n_words': 242}