graphql-2-json-schema
Version:
`graphql-2-json-schema` package
56 lines (55 loc) • 3.69 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 = exports.SUPPORTED_SCALARS = exports.ID_TYPE_MAPPING_OPTION_DEFAULT = void 0;
const graphql_1 = require("graphql");
const lodash_1 = require("lodash");
var typesMapping_1 = require("./typesMapping");
Object.defineProperty(exports, "ID_TYPE_MAPPING_OPTION_DEFAULT", { enumerable: true, get: function () { return typesMapping_1.ID_TYPE_MAPPING_OPTION_DEFAULT; } });
exports.SUPPORTED_SCALARS = Object.freeze([
'Boolean',
'String',
'Int',
'Float',
'ID',
]);
exports.SUPPORTED_KINDS = Object.freeze([
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(exports.SUPPORTED_SCALARS, 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;