compileSchemasForValidation() — fastify Function Reference
Architecture documentation for the compileSchemasForValidation() function in validation.js from the fastify codebase.
Entity Profile
Dependency Diagram
graph TD 525262f2_81f8_89a7_4374_f34d8751ee0d["compileSchemasForValidation()"] 7c105413_01f0_7169_1c95_0f84d089bea5["validation.js"] 525262f2_81f8_89a7_4374_f34d8751ee0d -->|defined in| 7c105413_01f0_7169_1c95_0f84d089bea5 style 525262f2_81f8_89a7_4374_f34d8751ee0d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
lib/validation.js lines 57–116
function compileSchemasForValidation (context, compile, isCustom) {
const { schema } = context
if (!schema) {
return
}
const { method, url } = context.config || {}
const headers = schema.headers
// the or part is used for backward compatibility
if (headers && (isCustom || Object.getPrototypeOf(headers) !== Object.prototype)) {
// do not mess with schema when custom validator applied, e.g. Joi, Typebox
context[headersSchema] = compile({ schema: headers, method, url, httpPart: 'headers' })
} else if (headers) {
// The header keys are case insensitive
// https://datatracker.ietf.org/doc/html/rfc2616#section-4.2
const headersSchemaLowerCase = {}
Object.keys(headers).forEach(k => { headersSchemaLowerCase[k] = headers[k] })
if (headersSchemaLowerCase.required instanceof Array) {
headersSchemaLowerCase.required = headersSchemaLowerCase.required.map(h => h.toLowerCase())
}
if (headers.properties) {
headersSchemaLowerCase.properties = {}
Object.keys(headers.properties).forEach(k => {
headersSchemaLowerCase.properties[k.toLowerCase()] = headers.properties[k]
})
}
context[headersSchema] = compile({ schema: headersSchemaLowerCase, method, url, httpPart: 'headers' })
} else if (Object.hasOwn(schema, 'headers')) {
FSTWRN001('headers', method, url)
}
if (schema.body) {
const contentProperty = schema.body.content
if (contentProperty) {
const contentTypeSchemas = {}
for (const contentType of Object.keys(contentProperty)) {
const contentSchema = contentProperty[contentType].schema
contentTypeSchemas[contentType] = compile({ schema: contentSchema, method, url, httpPart: 'body', contentType })
}
context[bodySchema] = contentTypeSchemas
} else {
context[bodySchema] = compile({ schema: schema.body, method, url, httpPart: 'body' })
}
} else if (Object.hasOwn(schema, 'body')) {
FSTWRN001('body', method, url)
}
if (schema.querystring) {
context[querystringSchema] = compile({ schema: schema.querystring, method, url, httpPart: 'querystring' })
} else if (Object.hasOwn(schema, 'querystring')) {
FSTWRN001('querystring', method, url)
}
if (schema.params) {
context[paramsSchema] = compile({ schema: schema.params, method, url, httpPart: 'params' })
} else if (Object.hasOwn(schema, 'params')) {
FSTWRN001('params', method, url)
}
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does compileSchemasForValidation() do?
compileSchemasForValidation() is a function in the fastify codebase, defined in lib/validation.js.
Where is compileSchemasForValidation() defined?
compileSchemasForValidation() is defined in lib/validation.js at line 57.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free