json-schema-typescript-generator
Version:
Generate typescript types from json schemas
29 lines • 1.08 kB
JavaScript
import { filtered } from '../util';
import { located } from './TypeGenerator';
import { typeGenerator } from './type-generator';
export const oneOfGenerator = (locatedSchema, gatheredInfo, inputInfo) => {
const schema = locatedSchema.schema;
if (!schema.oneOf || schema.oneOf.length === 0) {
return;
}
const lines = [];
schema.oneOf.forEach((elementSchema) => {
const elementLocatedSchema = located(elementSchema, locatedSchema);
const elementContent = typeGenerator(elementLocatedSchema, gatheredInfo, inputInfo);
lines.push(elementContent);
});
const filteredLines = filtered(lines);
if (filteredLines.length === 0) {
return;
}
else if (filteredLines.length === 1) {
return filteredLines[0];
}
else {
gatheredInfo.oneOfTypes.add(filteredLines.length);
const typeName = `OneOf_${filteredLines.length}`;
const combinedTypeNames = filteredLines.join(', ');
return `${typeName}<${combinedTypeNames}>`;
}
};
//# sourceMappingURL=one-of-generator.js.map