UNPKG

@tsed/schema

Version:
31 lines (30 loc) 1.3 kB
import { camelCase } from "change-case"; import { JsonParameterTypes } from "../../domain/JsonParameterTypes.js"; import { execMapper, hasMapper, registerJsonSchemaMapper } from "../../registries/JsonSchemaMapperContainer.js"; function mapOptions(parameter, options = {}) { return { ...options, groups: parameter.schema().getGroups(), groupsName: parameter.schema().getGroupsName() }; } export function operationInParameterMapper(jsonParameter, opts) { const options = mapOptions(jsonParameter, opts); const schemas = { ...(options.components?.schemas || {}) }; const { type, schema, ...parameter } = execMapper("map", [jsonParameter], options); const jsonSchema = execMapper("item", [jsonParameter.schema()], options); parameter.required = parameter.required || jsonParameter.get("in") === JsonParameterTypes.PATH; const paramOpts = { ...options, jsonSchema, jsonParameter, oldSchemas: schemas }; const mapperName = camelCase(`operationIn ${jsonParameter.get("in")}`); if (hasMapper(mapperName)) { return execMapper(mapperName, [parameter], paramOpts); } parameter.schema = jsonSchema; return parameter; } registerJsonSchemaMapper("operationInParameter", operationInParameterMapper);