@tsed/schema
Version:
JsonSchema module for Ts.ED Framework
31 lines (30 loc) • 1.3 kB
JavaScript
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);