UNPKG

graphql-2-json-schema

Version:
48 lines (47 loc) 3.3 kB
"use strict"; 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;