Aktueller Stand
This commit is contained in:
44
backend/node_modules/fastify/lib/schemas.js
generated
vendored
44
backend/node_modules/fastify/lib/schemas.js
generated
vendored
@@ -4,9 +4,6 @@ const fastClone = require('rfdc')({ circles: false, proto: true })
|
||||
const { kSchemaVisited, kSchemaResponse } = require('./symbols')
|
||||
const kFluentSchema = Symbol.for('fluent-schema-object')
|
||||
|
||||
const {
|
||||
FSTDEP022
|
||||
} = require('./warnings')
|
||||
const {
|
||||
FST_ERR_SCH_MISSING_ID,
|
||||
FST_ERR_SCH_ALREADY_PRESENT,
|
||||
@@ -57,7 +54,7 @@ function isCustomSchemaPrototype (schema) {
|
||||
return typeof schema === 'object' && Object.getPrototypeOf(schema) !== Object.prototype
|
||||
}
|
||||
|
||||
function normalizeSchema (opts, routeSchemas, serverOptions) {
|
||||
function normalizeSchema (routeSchemas, serverOptions) {
|
||||
if (routeSchemas[kSchemaVisited]) {
|
||||
return routeSchemas
|
||||
}
|
||||
@@ -85,11 +82,9 @@ function normalizeSchema (opts, routeSchemas, serverOptions) {
|
||||
if (!contentSchema) {
|
||||
throw new FST_ERR_SCH_CONTENT_MISSING_SCHEMA(contentType)
|
||||
}
|
||||
routeSchemas.body.content[contentType].schema = getSchemaAnyway(opts.url, contentSchema, serverOptions.jsonShorthand)
|
||||
}
|
||||
continue
|
||||
}
|
||||
routeSchemas[key] = getSchemaAnyway(opts.url, schema, serverOptions.jsonShorthand)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,25 +97,15 @@ function normalizeSchema (opts, routeSchemas, serverOptions) {
|
||||
|
||||
const contentProperty = routeSchemas.response[code].content
|
||||
|
||||
let hasContentMultipleContentTypes = false
|
||||
if (contentProperty) {
|
||||
const keys = Object.keys(contentProperty)
|
||||
for (let i = 0; i < keys.length; i++) {
|
||||
const mediaName = keys[i]
|
||||
if (!contentProperty[mediaName].schema) {
|
||||
if (keys.length === 1) { break }
|
||||
throw new FST_ERR_SCH_CONTENT_MISSING_SCHEMA(mediaName)
|
||||
}
|
||||
routeSchemas.response[code].content[mediaName].schema = getSchemaAnyway(opts.url, contentProperty[mediaName].schema, serverOptions.jsonShorthand)
|
||||
if (i === keys.length - 1) {
|
||||
hasContentMultipleContentTypes = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasContentMultipleContentTypes) {
|
||||
routeSchemas.response[code] = getSchemaAnyway(opts.url, routeSchemas.response[code], serverOptions.jsonShorthand)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,18 +130,6 @@ function generateFluentSchema (schema) {
|
||||
}
|
||||
}
|
||||
|
||||
function getSchemaAnyway (url, schema, jsonShorthand) {
|
||||
if (!jsonShorthand || schema.$ref || schema.oneOf || schema.allOf || schema.anyOf || schema.$merge || schema.$patch) return schema
|
||||
if (!schema.type && !schema.properties) {
|
||||
FSTDEP022(url)
|
||||
return {
|
||||
type: 'object',
|
||||
properties: schema
|
||||
}
|
||||
}
|
||||
return schema
|
||||
}
|
||||
|
||||
/**
|
||||
* Search for the right JSON schema compiled function in the request context
|
||||
* setup by the route configuration `schema.response`.
|
||||
@@ -180,6 +153,11 @@ function getSchemaSerializer (context, statusCode, contentType) {
|
||||
return responseSchemaDef[statusCode][mediaName]
|
||||
}
|
||||
|
||||
// fallback to match all media-type
|
||||
if (responseSchemaDef[statusCode]['*/*']) {
|
||||
return responseSchemaDef[statusCode]['*/*']
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
return responseSchemaDef[statusCode]
|
||||
@@ -192,6 +170,11 @@ function getSchemaSerializer (context, statusCode, contentType) {
|
||||
return responseSchemaDef[fallbackStatusCode][mediaName]
|
||||
}
|
||||
|
||||
// fallback to match all media-type
|
||||
if (responseSchemaDef[fallbackStatusCode]['*/*']) {
|
||||
return responseSchemaDef[fallbackStatusCode]['*/*']
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -204,6 +187,11 @@ function getSchemaSerializer (context, statusCode, contentType) {
|
||||
return responseSchemaDef.default[mediaName]
|
||||
}
|
||||
|
||||
// fallback to match all media-type
|
||||
if (responseSchemaDef.default['*/*']) {
|
||||
return responseSchemaDef.default['*/*']
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user