UNPKG

json-schema-typescript-generator

Version:
29 lines 1.08 kB
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