graphql-2-json-schema
Version:
`graphql-2-json-schema` package
48 lines (47 loc) • 3.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.filterDefinitionsTypes = exports.isIntrospectionDefaultScalarType = exports.isIntrospectionUnionType = exports.isIntrospectionEnumType = exports.isIntrospectionInterfaceType = exports.isIntrospectionInputObjectType = exports.isIntrospectionObjectType = exports.isIntrospectionScalarType = exports.isNonNullIntrospectionType = exports.isIntrospectionListTypeRef = exports.isIntrospectionInputValue = exports.isIntrospectionField = exports.SUPPORTED_KINDS = void 0;
const graphql_1 = require("graphql");
const lodash_1 = require("lodash");
exports.SUPPORTED_KINDS = [
graphql_1.TypeKind.SCALAR,
graphql_1.TypeKind.OBJECT,
graphql_1.TypeKind.INPUT_OBJECT,
graphql_1.TypeKind.INTERFACE,
graphql_1.TypeKind.ENUM,
graphql_1.TypeKind.UNION,
];
const isIntrospectionField = (type) => lodash_1.has(type, 'args');
exports.isIntrospectionField = isIntrospectionField;
const isIntrospectionInputValue = (type) => lodash_1.has(type, 'defaultValue');
exports.isIntrospectionInputValue = isIntrospectionInputValue;
const isIntrospectionListTypeRef = (type) => type.kind === graphql_1.TypeKind.LIST;
exports.isIntrospectionListTypeRef = isIntrospectionListTypeRef;
const isNonNullIntrospectionType = (type) => type.kind === graphql_1.TypeKind.NON_NULL;
exports.isNonNullIntrospectionType = isNonNullIntrospectionType;
const isIntrospectionScalarType = (type) => type.kind === graphql_1.TypeKind.SCALAR;
exports.isIntrospectionScalarType = isIntrospectionScalarType;
const isIntrospectionObjectType = (type) => type.kind === graphql_1.TypeKind.OBJECT;
exports.isIntrospectionObjectType = isIntrospectionObjectType;
const isIntrospectionInputObjectType = (type) => type.kind === graphql_1.TypeKind.INPUT_OBJECT;
exports.isIntrospectionInputObjectType = isIntrospectionInputObjectType;
const isIntrospectionInterfaceType = (type) => type.kind === graphql_1.TypeKind.INTERFACE;
exports.isIntrospectionInterfaceType = isIntrospectionInterfaceType;
const isIntrospectionEnumType = (type) => type.kind === graphql_1.TypeKind.ENUM;
exports.isIntrospectionEnumType = isIntrospectionEnumType;
const isIntrospectionUnionType = (type) => type.kind === graphql_1.TypeKind.UNION;
exports.isIntrospectionUnionType = isIntrospectionUnionType;
const isIntrospectionDefaultScalarType = (type) => type.kind === graphql_1.TypeKind.SCALAR &&
lodash_1.includes(['Boolean', 'String', 'Int', 'Float'], type.name);
exports.isIntrospectionDefaultScalarType = isIntrospectionDefaultScalarType;
const filterDefinitionsTypes = (types, opts) => {
const ignoreInternals = opts && opts.ignoreInternals;
return lodash_1.filter(types, (type) => ((exports.isIntrospectionScalarType(type) && !!type.name) ||
(exports.isIntrospectionObjectType(type) && !!type.fields) ||
(exports.isIntrospectionInputObjectType(type) && !!type.inputFields) ||
(exports.isIntrospectionInterfaceType(type) && !!type.fields) ||
(exports.isIntrospectionEnumType(type) && !!type.enumValues) ||
(exports.isIntrospectionUnionType(type) && !!type.possibleTypes)) &&
(!ignoreInternals || (ignoreInternals && !lodash_1.startsWith(type.name, '__'))));
};
exports.filterDefinitionsTypes = filterDefinitionsTypes;