graphql-composer
Version:
Create your GraphQL API using composition!
65 lines • 2.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypeParser = void 0;
const graphql_1 = require("graphql");
const __1 = require("..");
const definition_1 = require("../definition");
class TypeParser {
static parse(type, requiredByDefault = false, arrayRequired = undefined, forceNullable = false, forceRequired = false) {
let finalType;
if (Array.isArray(type)) {
finalType = this.parse(type[0], requiredByDefault, arrayRequired, forceNullable, arrayRequired === undefined ? requiredByDefault : arrayRequired);
if (finalType) {
finalType = graphql_1.GraphQLList(finalType);
}
}
if (type instanceof __1.GQLAnyType) {
finalType = type.built;
}
if (type instanceof graphql_1.GraphQLScalarType) {
finalType = type;
}
switch (type) {
case String:
finalType = graphql_1.GraphQLString;
break;
case Number:
finalType = graphql_1.GraphQLFloat;
break;
case Boolean:
finalType = graphql_1.GraphQLBoolean;
break;
case Date:
finalType = __1.DateTime;
break;
}
if ((requiredByDefault && !forceNullable) || forceRequired) {
if (type instanceof __1.NullableType) {
finalType = this.parse(type.type, requiredByDefault, arrayRequired, true);
}
else if (type instanceof definition_1.RequiredType) {
const t = this.parse(type.type, requiredByDefault, arrayRequired);
if (t) {
finalType = graphql_1.GraphQLNonNull(t);
}
}
else if (finalType) {
finalType = graphql_1.GraphQLNonNull(finalType);
}
}
else {
if (type instanceof definition_1.RequiredType) {
const t = this.parse(type.type, requiredByDefault, arrayRequired);
if (t) {
finalType = graphql_1.GraphQLNonNull(t);
}
}
else if (type instanceof __1.NullableType) {
finalType = this.parse(type.type, requiredByDefault, arrayRequired, true);
}
}
return finalType;
}
}
exports.TypeParser = TypeParser;
//# sourceMappingURL=TypeParser.js.map
;