ts-json-schema-generator
Version:
Generate JSON schema from your Typescript sources
119 lines • 9.22 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createParser = void 0;
const AsExpressionNodeParser_1 = require("./../src/NodeParser/AsExpressionNodeParser");
const BasicAnnotationsReader_1 = require("../src/AnnotationsReader/BasicAnnotationsReader");
const ExtendedAnnotationsReader_1 = require("../src/AnnotationsReader/ExtendedAnnotationsReader");
const ChainNodeParser_1 = require("../src/ChainNodeParser");
const CircularReferenceNodeParser_1 = require("../src/CircularReferenceNodeParser");
const Config_1 = require("../src/Config");
const ExposeNodeParser_1 = require("../src/ExposeNodeParser");
const AnnotatedNodeParser_1 = require("../src/NodeParser/AnnotatedNodeParser");
const AnyTypeNodeParser_1 = require("../src/NodeParser/AnyTypeNodeParser");
const ArrayNodeParser_1 = require("../src/NodeParser/ArrayNodeParser");
const BooleanLiteralNodeParser_1 = require("../src/NodeParser/BooleanLiteralNodeParser");
const BooleanTypeNodeParser_1 = require("../src/NodeParser/BooleanTypeNodeParser");
const CallExpressionParser_1 = require("../src/NodeParser/CallExpressionParser");
const ConditionalTypeNodeParser_1 = require("../src/NodeParser/ConditionalTypeNodeParser");
const EnumNodeParser_1 = require("../src/NodeParser/EnumNodeParser");
const ExpressionWithTypeArgumentsNodeParser_1 = require("../src/NodeParser/ExpressionWithTypeArgumentsNodeParser");
const HiddenTypeNodeParser_1 = require("../src/NodeParser/HiddenTypeNodeParser");
const IndexedAccessTypeNodeParser_1 = require("../src/NodeParser/IndexedAccessTypeNodeParser");
const InterfaceAndClassNodeParser_1 = require("../src/NodeParser/InterfaceAndClassNodeParser");
const IntersectionNodeParser_1 = require("../src/NodeParser/IntersectionNodeParser");
const LiteralNodeParser_1 = require("../src/NodeParser/LiteralNodeParser");
const MappedTypeNodeParser_1 = require("../src/NodeParser/MappedTypeNodeParser");
const NeverTypeNodeParser_1 = require("../src/NodeParser/NeverTypeNodeParser");
const NullLiteralNodeParser_1 = require("../src/NodeParser/NullLiteralNodeParser");
const NumberLiteralNodeParser_1 = require("../src/NodeParser/NumberLiteralNodeParser");
const NumberTypeNodeParser_1 = require("../src/NodeParser/NumberTypeNodeParser");
const ObjectTypeNodeParser_1 = require("../src/NodeParser/ObjectTypeNodeParser");
const OptionalTypeNodeParser_1 = require("../src/NodeParser/OptionalTypeNodeParser");
const ParenthesizedNodeParser_1 = require("../src/NodeParser/ParenthesizedNodeParser");
const PrefixUnaryExpressionNodeParser_1 = require("../src/NodeParser/PrefixUnaryExpressionNodeParser");
const RestTypeNodeParser_1 = require("../src/NodeParser/RestTypeNodeParser");
const StringLiteralNodeParser_1 = require("../src/NodeParser/StringLiteralNodeParser");
const StringTypeNodeParser_1 = require("../src/NodeParser/StringTypeNodeParser");
const TupleNodeParser_1 = require("../src/NodeParser/TupleNodeParser");
const TypeAliasNodeParser_1 = require("../src/NodeParser/TypeAliasNodeParser");
const TypeLiteralNodeParser_1 = require("../src/NodeParser/TypeLiteralNodeParser");
const TypeofNodeParser_1 = require("../src/NodeParser/TypeofNodeParser");
const TypeOperatorNodeParser_1 = require("../src/NodeParser/TypeOperatorNodeParser");
const TypeReferenceNodeParser_1 = require("../src/NodeParser/TypeReferenceNodeParser");
const UndefinedTypeNodeParser_1 = require("../src/NodeParser/UndefinedTypeNodeParser");
const UnionNodeParser_1 = require("../src/NodeParser/UnionNodeParser");
const UnknownTypeNodeParser_1 = require("../src/NodeParser/UnknownTypeNodeParser");
const VoidTypeNodeParser_1 = require("../src/NodeParser/VoidTypeNodeParser");
const TopRefNodeParser_1 = require("../src/TopRefNodeParser");
const FunctionNodeParser_1 = require("./../src/NodeParser/FunctionNodeParser");
const ObjectLiteralExpressionNodeParser_1 = require("./../src/NodeParser/ObjectLiteralExpressionNodeParser");
const ArrayLiteralExpressionNodeParser_1 = require("../src/NodeParser/ArrayLiteralExpressionNodeParser");
function createParser(program, config) {
const typeChecker = program.getTypeChecker();
const chainNodeParser = new ChainNodeParser_1.ChainNodeParser(typeChecker, []);
const mergedConfig = Object.assign(Object.assign({}, Config_1.DEFAULT_CONFIG), config);
function withExpose(nodeParser) {
return new ExposeNodeParser_1.ExposeNodeParser(typeChecker, nodeParser, mergedConfig.expose);
}
function withTopRef(nodeParser) {
return new TopRefNodeParser_1.TopRefNodeParser(chainNodeParser, mergedConfig.type, mergedConfig.topRef);
}
function withJsDoc(nodeParser) {
const extraTags = new Set(mergedConfig.extraTags);
if (mergedConfig.jsDoc === "extended") {
return new AnnotatedNodeParser_1.AnnotatedNodeParser(nodeParser, new ExtendedAnnotationsReader_1.ExtendedAnnotationsReader(typeChecker, extraTags));
}
else if (mergedConfig.jsDoc === "basic") {
return new AnnotatedNodeParser_1.AnnotatedNodeParser(nodeParser, new BasicAnnotationsReader_1.BasicAnnotationsReader(extraTags));
}
else {
return nodeParser;
}
}
function withCircular(nodeParser) {
return new CircularReferenceNodeParser_1.CircularReferenceNodeParser(nodeParser);
}
chainNodeParser
.addNodeParser(new HiddenTypeNodeParser_1.HiddenNodeParser(typeChecker))
.addNodeParser(new StringTypeNodeParser_1.StringTypeNodeParser())
.addNodeParser(new NumberTypeNodeParser_1.NumberTypeNodeParser())
.addNodeParser(new BooleanTypeNodeParser_1.BooleanTypeNodeParser())
.addNodeParser(new AnyTypeNodeParser_1.AnyTypeNodeParser())
.addNodeParser(new UnknownTypeNodeParser_1.UnknownTypeNodeParser())
.addNodeParser(new VoidTypeNodeParser_1.VoidTypeNodeParser())
.addNodeParser(new UndefinedTypeNodeParser_1.UndefinedTypeNodeParser())
.addNodeParser(new NeverTypeNodeParser_1.NeverTypeNodeParser())
.addNodeParser(new ObjectTypeNodeParser_1.ObjectTypeNodeParser())
.addNodeParser(new AsExpressionNodeParser_1.AsExpressionNodeParser(chainNodeParser))
.addNodeParser(new StringLiteralNodeParser_1.StringLiteralNodeParser())
.addNodeParser(new NumberLiteralNodeParser_1.NumberLiteralNodeParser())
.addNodeParser(new BooleanLiteralNodeParser_1.BooleanLiteralNodeParser())
.addNodeParser(new NullLiteralNodeParser_1.NullLiteralNodeParser())
.addNodeParser(new FunctionNodeParser_1.FunctionNodeParser())
.addNodeParser(new ObjectLiteralExpressionNodeParser_1.ObjectLiteralExpressionNodeParser(chainNodeParser))
.addNodeParser(new ArrayLiteralExpressionNodeParser_1.ArrayLiteralExpressionNodeParser(chainNodeParser))
.addNodeParser(new PrefixUnaryExpressionNodeParser_1.PrefixUnaryExpressionNodeParser(chainNodeParser))
.addNodeParser(new LiteralNodeParser_1.LiteralNodeParser(chainNodeParser))
.addNodeParser(new ParenthesizedNodeParser_1.ParenthesizedNodeParser(chainNodeParser))
.addNodeParser(new TypeReferenceNodeParser_1.TypeReferenceNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new ExpressionWithTypeArgumentsNodeParser_1.ExpressionWithTypeArgumentsNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new IndexedAccessTypeNodeParser_1.IndexedAccessTypeNodeParser(chainNodeParser))
.addNodeParser(new TypeofNodeParser_1.TypeofNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new MappedTypeNodeParser_1.MappedTypeNodeParser(chainNodeParser, mergedConfig.additionalProperties))
.addNodeParser(new ConditionalTypeNodeParser_1.ConditionalTypeNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new TypeOperatorNodeParser_1.TypeOperatorNodeParser(chainNodeParser))
.addNodeParser(new UnionNodeParser_1.UnionNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new IntersectionNodeParser_1.IntersectionNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new TupleNodeParser_1.TupleNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new OptionalTypeNodeParser_1.OptionalTypeNodeParser(chainNodeParser))
.addNodeParser(new RestTypeNodeParser_1.RestTypeNodeParser(chainNodeParser))
.addNodeParser(new CallExpressionParser_1.CallExpressionParser(typeChecker, chainNodeParser))
.addNodeParser(withCircular(withExpose(withJsDoc(new TypeAliasNodeParser_1.TypeAliasNodeParser(typeChecker, chainNodeParser)))))
.addNodeParser(withExpose(withJsDoc(new EnumNodeParser_1.EnumNodeParser(typeChecker))))
.addNodeParser(withCircular(withExpose(withJsDoc(new InterfaceAndClassNodeParser_1.InterfaceAndClassNodeParser(typeChecker, withJsDoc(chainNodeParser), mergedConfig.additionalProperties)))))
.addNodeParser(withCircular(withExpose(withJsDoc(new TypeLiteralNodeParser_1.TypeLiteralNodeParser(withJsDoc(chainNodeParser), mergedConfig.additionalProperties)))))
.addNodeParser(new ArrayNodeParser_1.ArrayNodeParser(chainNodeParser));
return withTopRef(chainNodeParser);
}
exports.createParser = createParser;
//# sourceMappingURL=parser.js.map