ts-json-schema-generator
Version:
Generate JSON schema from your Typescript sources
142 lines • 11.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createParser = createParser;
const BasicAnnotationsReader_js_1 = require("../src/AnnotationsReader/BasicAnnotationsReader.js");
const ExtendedAnnotationsReader_js_1 = require("../src/AnnotationsReader/ExtendedAnnotationsReader.js");
const ChainNodeParser_js_1 = require("../src/ChainNodeParser.js");
const CircularReferenceNodeParser_js_1 = require("../src/CircularReferenceNodeParser.js");
const ExposeNodeParser_js_1 = require("../src/ExposeNodeParser.js");
const AnnotatedNodeParser_js_1 = require("../src/NodeParser/AnnotatedNodeParser.js");
const AnyTypeNodeParser_js_1 = require("../src/NodeParser/AnyTypeNodeParser.js");
const ArrayLiteralExpressionNodeParser_js_1 = require("../src/NodeParser/ArrayLiteralExpressionNodeParser.js");
const ArrayNodeParser_js_1 = require("../src/NodeParser/ArrayNodeParser.js");
const AsExpressionNodeParser_js_1 = require("../src/NodeParser/AsExpressionNodeParser.js");
const BooleanLiteralNodeParser_js_1 = require("../src/NodeParser/BooleanLiteralNodeParser.js");
const BooleanTypeNodeParser_js_1 = require("../src/NodeParser/BooleanTypeNodeParser.js");
const CallExpressionParser_js_1 = require("../src/NodeParser/CallExpressionParser.js");
const ConditionalTypeNodeParser_js_1 = require("../src/NodeParser/ConditionalTypeNodeParser.js");
const ConstructorNodeParser_js_1 = require("../src/NodeParser/ConstructorNodeParser.js");
const EnumNodeParser_js_1 = require("../src/NodeParser/EnumNodeParser.js");
const ExpressionWithTypeArgumentsNodeParser_js_1 = require("../src/NodeParser/ExpressionWithTypeArgumentsNodeParser.js");
const FunctionNodeParser_js_1 = require("../src/NodeParser/FunctionNodeParser.js");
const HiddenTypeNodeParser_js_1 = require("../src/NodeParser/HiddenTypeNodeParser.js");
const IndexedAccessTypeNodeParser_js_1 = require("../src/NodeParser/IndexedAccessTypeNodeParser.js");
const InferTypeNodeParser_js_1 = require("../src/NodeParser/InferTypeNodeParser.js");
const InterfaceAndClassNodeParser_js_1 = require("../src/NodeParser/InterfaceAndClassNodeParser.js");
const IntersectionNodeParser_js_1 = require("../src/NodeParser/IntersectionNodeParser.js");
const IntrinsicNodeParser_js_1 = require("../src/NodeParser/IntrinsicNodeParser.js");
const LiteralNodeParser_js_1 = require("../src/NodeParser/LiteralNodeParser.js");
const MappedTypeNodeParser_js_1 = require("../src/NodeParser/MappedTypeNodeParser.js");
const NamedTupleMemberNodeParser_js_1 = require("../src/NodeParser/NamedTupleMemberNodeParser.js");
const NeverTypeNodeParser_js_1 = require("../src/NodeParser/NeverTypeNodeParser.js");
const NullLiteralNodeParser_js_1 = require("../src/NodeParser/NullLiteralNodeParser.js");
const NumberLiteralNodeParser_js_1 = require("../src/NodeParser/NumberLiteralNodeParser.js");
const NumberTypeNodeParser_js_1 = require("../src/NodeParser/NumberTypeNodeParser.js");
const ObjectLiteralExpressionNodeParser_js_1 = require("../src/NodeParser/ObjectLiteralExpressionNodeParser.js");
const ObjectTypeNodeParser_js_1 = require("../src/NodeParser/ObjectTypeNodeParser.js");
const OptionalTypeNodeParser_js_1 = require("../src/NodeParser/OptionalTypeNodeParser.js");
const ParameterParser_js_1 = require("../src/NodeParser/ParameterParser.js");
const ParenthesizedNodeParser_js_1 = require("../src/NodeParser/ParenthesizedNodeParser.js");
const PrefixUnaryExpressionNodeParser_js_1 = require("../src/NodeParser/PrefixUnaryExpressionNodeParser.js");
const PropertyAccessExpressionParser_js_1 = require("../src/NodeParser/PropertyAccessExpressionParser.js");
const RestTypeNodeParser_js_1 = require("../src/NodeParser/RestTypeNodeParser.js");
const StringLiteralNodeParser_js_1 = require("../src/NodeParser/StringLiteralNodeParser.js");
const StringTemplateLiteralNodeParser_js_1 = require("../src/NodeParser/StringTemplateLiteralNodeParser.js");
const StringTypeNodeParser_js_1 = require("../src/NodeParser/StringTypeNodeParser.js");
const SymbolTypeNodeParser_js_1 = require("../src/NodeParser/SymbolTypeNodeParser.js");
const TupleNodeParser_js_1 = require("../src/NodeParser/TupleNodeParser.js");
const TypeAliasNodeParser_js_1 = require("../src/NodeParser/TypeAliasNodeParser.js");
const TypeLiteralNodeParser_js_1 = require("../src/NodeParser/TypeLiteralNodeParser.js");
const TypeofNodeParser_js_1 = require("../src/NodeParser/TypeofNodeParser.js");
const TypeOperatorNodeParser_js_1 = require("../src/NodeParser/TypeOperatorNodeParser.js");
const TypeReferenceNodeParser_js_1 = require("../src/NodeParser/TypeReferenceNodeParser.js");
const UndefinedTypeNodeParser_js_1 = require("../src/NodeParser/UndefinedTypeNodeParser.js");
const UnionNodeParser_js_1 = require("../src/NodeParser/UnionNodeParser.js");
const UnknownTypeNodeParser_js_1 = require("../src/NodeParser/UnknownTypeNodeParser.js");
const VoidTypeNodeParser_js_1 = require("../src/NodeParser/VoidTypeNodeParser.js");
const TopRefNodeParser_js_1 = require("../src/TopRefNodeParser.js");
const SatisfiesNodeParser_js_1 = require("../src/NodeParser/SatisfiesNodeParser.js");
const PromiseNodeParser_js_1 = require("../src/NodeParser/PromiseNodeParser.js");
function createParser(program, config, augmentor) {
const typeChecker = program.getTypeChecker();
const chainNodeParser = new ChainNodeParser_js_1.ChainNodeParser(typeChecker, []);
function withExpose(nodeParser) {
return new ExposeNodeParser_js_1.ExposeNodeParser(typeChecker, nodeParser, config.expose, config.jsDoc);
}
function withTopRef(nodeParser) {
return new TopRefNodeParser_js_1.TopRefNodeParser(chainNodeParser, config.type, config.topRef);
}
function withJsDoc(nodeParser) {
const extraTags = new Set(config.extraTags);
if (config.jsDoc === "extended") {
return new AnnotatedNodeParser_js_1.AnnotatedNodeParser(nodeParser, new ExtendedAnnotationsReader_js_1.ExtendedAnnotationsReader(typeChecker, extraTags, config.markdownDescription));
}
else if (config.jsDoc === "basic") {
return new AnnotatedNodeParser_js_1.AnnotatedNodeParser(nodeParser, new BasicAnnotationsReader_js_1.BasicAnnotationsReader(extraTags));
}
else {
return nodeParser;
}
}
function withCircular(nodeParser) {
return new CircularReferenceNodeParser_js_1.CircularReferenceNodeParser(nodeParser);
}
if (augmentor) {
augmentor(chainNodeParser);
}
chainNodeParser
.addNodeParser(new HiddenTypeNodeParser_js_1.HiddenNodeParser(typeChecker))
.addNodeParser(new StringTypeNodeParser_js_1.StringTypeNodeParser())
.addNodeParser(new SymbolTypeNodeParser_js_1.SymbolTypeNodeParser())
.addNodeParser(new NumberTypeNodeParser_js_1.NumberTypeNodeParser())
.addNodeParser(new BooleanTypeNodeParser_js_1.BooleanTypeNodeParser())
.addNodeParser(new AnyTypeNodeParser_js_1.AnyTypeNodeParser())
.addNodeParser(new UnknownTypeNodeParser_js_1.UnknownTypeNodeParser())
.addNodeParser(new VoidTypeNodeParser_js_1.VoidTypeNodeParser())
.addNodeParser(new UndefinedTypeNodeParser_js_1.UndefinedTypeNodeParser())
.addNodeParser(new NeverTypeNodeParser_js_1.NeverTypeNodeParser())
.addNodeParser(new ObjectTypeNodeParser_js_1.ObjectTypeNodeParser())
.addNodeParser(new AsExpressionNodeParser_js_1.AsExpressionNodeParser(chainNodeParser))
.addNodeParser(new SatisfiesNodeParser_js_1.SatisfiesNodeParser(chainNodeParser))
.addNodeParser(withJsDoc(new ParameterParser_js_1.ParameterParser(chainNodeParser)))
.addNodeParser(new StringLiteralNodeParser_js_1.StringLiteralNodeParser())
.addNodeParser(new StringTemplateLiteralNodeParser_js_1.StringTemplateLiteralNodeParser(chainNodeParser))
.addNodeParser(new IntrinsicNodeParser_js_1.IntrinsicNodeParser())
.addNodeParser(new NumberLiteralNodeParser_js_1.NumberLiteralNodeParser())
.addNodeParser(new BooleanLiteralNodeParser_js_1.BooleanLiteralNodeParser())
.addNodeParser(new NullLiteralNodeParser_js_1.NullLiteralNodeParser())
.addNodeParser(new ObjectLiteralExpressionNodeParser_js_1.ObjectLiteralExpressionNodeParser(chainNodeParser, typeChecker))
.addNodeParser(new ArrayLiteralExpressionNodeParser_js_1.ArrayLiteralExpressionNodeParser(chainNodeParser))
.addNodeParser(new PrefixUnaryExpressionNodeParser_js_1.PrefixUnaryExpressionNodeParser(chainNodeParser))
.addNodeParser(new LiteralNodeParser_js_1.LiteralNodeParser(chainNodeParser))
.addNodeParser(new ParenthesizedNodeParser_js_1.ParenthesizedNodeParser(chainNodeParser))
.addNodeParser(new PromiseNodeParser_js_1.PromiseNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new TypeReferenceNodeParser_js_1.TypeReferenceNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new ExpressionWithTypeArgumentsNodeParser_js_1.ExpressionWithTypeArgumentsNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new IndexedAccessTypeNodeParser_js_1.IndexedAccessTypeNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new InferTypeNodeParser_js_1.InferTypeNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new TypeofNodeParser_js_1.TypeofNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new MappedTypeNodeParser_js_1.MappedTypeNodeParser(chainNodeParser, config.additionalProperties))
.addNodeParser(new ConditionalTypeNodeParser_js_1.ConditionalTypeNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new TypeOperatorNodeParser_js_1.TypeOperatorNodeParser(chainNodeParser))
.addNodeParser(new UnionNodeParser_js_1.UnionNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new IntersectionNodeParser_js_1.IntersectionNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new TupleNodeParser_js_1.TupleNodeParser(typeChecker, chainNodeParser))
.addNodeParser(new NamedTupleMemberNodeParser_js_1.NamedTupleMemberNodeParser(chainNodeParser))
.addNodeParser(new OptionalTypeNodeParser_js_1.OptionalTypeNodeParser(chainNodeParser))
.addNodeParser(new RestTypeNodeParser_js_1.RestTypeNodeParser(chainNodeParser))
.addNodeParser(new CallExpressionParser_js_1.CallExpressionParser(typeChecker, chainNodeParser))
.addNodeParser(new PropertyAccessExpressionParser_js_1.PropertyAccessExpressionParser(typeChecker, chainNodeParser))
.addNodeParser(withCircular(withExpose(withJsDoc(new TypeAliasNodeParser_js_1.TypeAliasNodeParser(typeChecker, chainNodeParser)))))
.addNodeParser(withExpose(withJsDoc(new EnumNodeParser_js_1.EnumNodeParser(typeChecker))))
.addNodeParser(withCircular(withExpose(withJsDoc(new InterfaceAndClassNodeParser_js_1.InterfaceAndClassNodeParser(typeChecker, withJsDoc(chainNodeParser), config.additionalProperties)))))
.addNodeParser(withCircular(withExpose(withJsDoc(new TypeLiteralNodeParser_js_1.TypeLiteralNodeParser(typeChecker, withJsDoc(chainNodeParser), config.additionalProperties)))))
.addNodeParser(new ArrayNodeParser_js_1.ArrayNodeParser(chainNodeParser));
if (config.functions !== "fail") {
chainNodeParser
.addNodeParser(new ConstructorNodeParser_js_1.ConstructorNodeParser(chainNodeParser, config.functions))
.addNodeParser(new FunctionNodeParser_js_1.FunctionNodeParser(chainNodeParser, config.functions));
}
return withTopRef(chainNodeParser);
}
//# sourceMappingURL=parser.js.map