@graphql-tools/schema
Advanced tools
| import { GraphQLSchema } from 'graphql'; | ||
| export declare function addCatchUndefinedToSchema(schema: GraphQLSchema): void; | ||
| export declare function addCatchUndefinedToSchema(schema: GraphQLSchema): GraphQLSchema; |
| import { GraphQLSchema } from 'graphql'; | ||
| import { ILogger } from './types'; | ||
| export declare function addErrorLoggingToSchema(schema: GraphQLSchema, logger?: ILogger): void; | ||
| export declare function addErrorLoggingToSchema(schema: GraphQLSchema, logger?: ILogger): GraphQLSchema; |
| import { GraphQLSchema, GraphQLFieldResolver } from 'graphql'; | ||
| export declare function addSchemaLevelResolver(schema: GraphQLSchema, fn: GraphQLFieldResolver<any, any>): void; | ||
| export declare function addSchemaLevelResolver(schema: GraphQLSchema, fn: GraphQLFieldResolver<any, any>): GraphQLSchema; |
| import { GraphQLSchema } from 'graphql'; | ||
| import { IResolvers } from '@graphql-tools/utils'; | ||
| export declare function extendResolversFromInterfaces(schema: GraphQLSchema, resolvers: IResolvers): {}; | ||
| export declare function extendResolversFromInterfaces(schema: GraphQLSchema, resolvers: IResolvers): IResolvers; |
+169
-118
@@ -12,20 +12,21 @@ 'use strict'; | ||
| // TODO test that schema is a schema, fn is a function | ||
| const rootTypes = [schema.getQueryType(), schema.getMutationType(), schema.getSubscriptionType()].filter(x => Boolean(x)); | ||
| rootTypes.forEach(type => { | ||
| if (type != null) { | ||
| const fnToRunOnlyOnce = runAtMostOncePerRequest(fn); | ||
| return utils.mapSchema(schema, { | ||
| [utils.MapperKind.ROOT_FIELD]: (fieldConfig, _fieldName, typeName, schema) => { | ||
| // XXX this should run at most once per request to simulate a true root resolver | ||
| // for graphql-js this is an approximation that works with queries but not mutations | ||
| const rootResolveFn = runAtMostOncePerRequest(fn); | ||
| const fields = type.getFields(); | ||
| Object.keys(fields).forEach(fieldName => { | ||
| // XXX if the type is a subscription, a same query AST will be ran multiple times so we | ||
| // deactivate here the runOnce if it's a subscription. This may not be optimal though... | ||
| if (type === schema.getSubscriptionType()) { | ||
| fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, fn); | ||
| } | ||
| else { | ||
| fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, rootResolveFn); | ||
| } | ||
| }); | ||
| } | ||
| // XXX if the type is a subscription, a same query AST will be ran multiple times so we | ||
| // deactivate here the runOnce if it's a subscription. This may not be optimal though... | ||
| const subscription = schema.getSubscriptionType(); | ||
| if (subscription != null && subscription.name === typeName) { | ||
| return { | ||
| ...fieldConfig, | ||
| resolve: wrapResolver(fieldConfig.resolve, fn), | ||
| }; | ||
| } | ||
| return { | ||
| ...fieldConfig, | ||
| resolve: wrapResolver(fieldConfig.resolve, fnToRunOnlyOnce), | ||
| }; | ||
| }, | ||
| }); | ||
@@ -342,3 +343,3 @@ } | ||
| : schemaOrOptions; | ||
| const { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options; | ||
| let { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options; | ||
| const { allowResolversNotInSchema = false, requireResolversForResolveType } = resolverValidationOptions; | ||
@@ -348,3 +349,2 @@ const resolvers = inheritResolversFromInterfaces | ||
| : inputResolvers; | ||
| const typeMap = schema.getTypeMap(); | ||
| Object.keys(resolvers).forEach(typeName => { | ||
@@ -362,104 +362,149 @@ const resolverValue = resolvers[typeName]; | ||
| } | ||
| const type = schema.getType(typeName); | ||
| if (type == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`"${typeName}" defined in resolvers, but not in schema`); | ||
| } | ||
| else if (graphql.isSpecifiedScalarType(type)) { | ||
| // allow -- without recommending -- overriding of specified scalar types | ||
| const resolverValue = resolvers[typeName]; | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else { | ||
| type[fieldName] = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| const type = schema.getType(typeName); | ||
| if (!type && typeName !== '__schema') { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| }); | ||
| schema = utils.mapSchema(schema, { | ||
| [utils.MapperKind.SCALAR_TYPE]: type => { | ||
| const config = type.toConfig(); | ||
| const resolverValue = resolvers[type.name]; | ||
| if (!graphql.isSpecifiedScalarType(type) && resolverValue != null) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else { | ||
| config[fieldName] = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| return new graphql.GraphQLScalarType(config); | ||
| } | ||
| throw new Error(`"${typeName}" defined in resolvers, but not in schema`); | ||
| } | ||
| if (graphql.isScalarType(type)) { | ||
| // Support -- without recommending -- overriding default scalar types | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else { | ||
| type[fieldName] = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| } | ||
| else if (graphql.isEnumType(type)) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else if (!type.getValue(fieldName)) { | ||
| if (allowResolversNotInSchema) { | ||
| }, | ||
| [utils.MapperKind.ENUM_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| const config = type.toConfig(); | ||
| const enumValueConfigMap = config.values; | ||
| if (resolverValue != null) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else if (!enumValueConfigMap[fieldName]) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`); | ||
| } | ||
| else { | ||
| enumValueConfigMap[fieldName].value = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| return new graphql.GraphQLEnumType(config); | ||
| } | ||
| }, | ||
| [utils.MapperKind.UNION_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| if (resolverValue != null) { | ||
| const config = type.toConfig(); | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| // this is for isTypeOf and resolveType and all the other stuff. | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| throw new Error(`${typeName}.${fieldName} was defined in resolvers, but not present within ${typeName}`); | ||
| } | ||
| }); | ||
| const config = type.toConfig(); | ||
| const values = type.getValues(); | ||
| const newValues = values.reduce((prev, value) => ({ | ||
| ...prev, | ||
| [value.name]: { | ||
| value: Object.keys(resolverValue).includes(value.name) ? resolverValue[value.name] : value.name, | ||
| deprecationReason: value.deprecationReason, | ||
| description: value.description, | ||
| astNode: value.astNode, | ||
| }, | ||
| }), {}); | ||
| // healSchema called later to update all fields to new type | ||
| typeMap[typeName] = new graphql.GraphQLEnumType({ | ||
| ...config, | ||
| values: newValues, | ||
| }); | ||
| } | ||
| else if (graphql.isUnionType(type)) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| // this is for isTypeOf and resolveType and all the other stuff. | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${typeName}.${fieldName} was defined in resolvers, but ${typeName} is not an object or interface type`); | ||
| }); | ||
| } | ||
| else if (graphql.isObjectType(type) || graphql.isInterfaceType(type)) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| // this is for isTypeOf and resolveType and all the other stuff. | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| const fields = type.getFields(); | ||
| const field = fields[fieldName]; | ||
| if (field == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`); | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`); | ||
| }); | ||
| return new graphql.GraphQLUnionType(config); | ||
| } | ||
| }, | ||
| [utils.MapperKind.OBJECT_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| if (resolverValue != null) { | ||
| const config = type.toConfig(); | ||
| const fields = config.fields; | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| const field = fields[fieldName]; | ||
| if (field == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`); | ||
| } | ||
| }); | ||
| return new graphql.GraphQLObjectType(config); | ||
| } | ||
| }, | ||
| [utils.MapperKind.INTERFACE_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| if (resolverValue != null) { | ||
| const config = type.toConfig(); | ||
| const fields = config.fields; | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| const field = fields[fieldName]; | ||
| if (field == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`); | ||
| } | ||
| }); | ||
| return new graphql.GraphQLInterfaceType(config); | ||
| } | ||
| }, | ||
| [utils.MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => { | ||
| const resolverValue = resolvers[typeName]; | ||
| if (resolverValue != null) { | ||
| const fieldResolve = resolverValue[fieldName]; | ||
| if (typeof fieldResolve === 'function') { | ||
| // for convenience. Allows shorter syntax in resolver definition file | ||
| field.resolve = fieldResolve; | ||
| } | ||
| else { | ||
| if (typeof fieldResolve !== 'object') { | ||
| throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`); | ||
| if (fieldResolve != null) { | ||
| const newFieldConfig = { ...fieldConfig }; | ||
| if (typeof fieldResolve === 'function') { | ||
| // for convenience. Allows shorter syntax in resolver definition file | ||
| newFieldConfig.resolve = fieldResolve; | ||
| } | ||
| setFieldProperties(field, fieldResolve); | ||
| else { | ||
| if (typeof fieldResolve !== 'object') { | ||
| throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`); | ||
| } | ||
| setFieldProperties(newFieldConfig, fieldResolve); | ||
| } | ||
| return newFieldConfig; | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| }, | ||
| }); | ||
| checkForResolveTypeResolver(schema, requireResolversForResolveType); | ||
| // serialize all default values prior to healing fields with new scalar/enum types. | ||
| utils.forEachDefaultValue(schema, utils.serializeInputValue); | ||
| // schema may have new scalar/enum types that require healing | ||
| utils.healSchema(schema); | ||
| // reparse all default values with new parsing functions. | ||
| utils.forEachDefaultValue(schema, utils.parseInputValue); | ||
| if (defaultFieldResolver != null) { | ||
| utils.forEachField(schema, field => { | ||
| if (!field.resolve) { | ||
| field.resolve = defaultFieldResolver; | ||
| } | ||
| schema = utils.mapSchema(schema, { | ||
| [utils.MapperKind.OBJECT_FIELD]: fieldConfig => ({ | ||
| ...fieldConfig, | ||
| resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver, | ||
| }), | ||
| }); | ||
@@ -482,5 +527,7 @@ } | ||
| } | ||
| utils.forEachField(schema, (field, typeName, fieldName) => { | ||
| const errorHint = `${typeName}.${fieldName}`; | ||
| field.resolve = decorateWithLogger(field.resolve, logger, errorHint); | ||
| return utils.mapSchema(schema, { | ||
| [utils.MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({ | ||
| ...fieldConfig, | ||
| resolve: decorateWithLogger(fieldConfig.resolve, logger, `${typeName}.${fieldName}`), | ||
| }), | ||
| }); | ||
@@ -500,5 +547,7 @@ } | ||
| function addCatchUndefinedToSchema(schema) { | ||
| utils.forEachField(schema, (field, typeName, fieldName) => { | ||
| const errorHint = `${typeName}.${fieldName}`; | ||
| field.resolve = decorateToCatchUndefined(field.resolve, errorHint); | ||
| return utils.mapSchema(schema, { | ||
| [utils.MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({ | ||
| ...fieldConfig, | ||
| resolve: decorateToCatchUndefined(fieldConfig.resolve, `${typeName}.${fieldName}`), | ||
| }), | ||
| }); | ||
@@ -518,4 +567,4 @@ } | ||
| // Arguments are now validated and cleaned up | ||
| const schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions); | ||
| addResolversToSchema({ | ||
| let schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions); | ||
| schema = addResolversToSchema({ | ||
| schema, | ||
@@ -528,6 +577,6 @@ resolvers: resolverMap, | ||
| if (!allowUndefinedInResolve) { | ||
| addCatchUndefinedToSchema(schema); | ||
| schema = addCatchUndefinedToSchema(schema); | ||
| } | ||
| if (logger != null) { | ||
| addErrorLoggingToSchema(schema, logger); | ||
| schema = addErrorLoggingToSchema(schema, logger); | ||
| } | ||
@@ -537,4 +586,6 @@ if (typeof resolvers['__schema'] === 'function') { | ||
| // not doing that now, because I'd have to rewrite a lot of tests. | ||
| addSchemaLevelResolver(schema, resolvers['__schema']); | ||
| schema = addSchemaLevelResolver(schema, resolvers['__schema']); | ||
| } | ||
| // directive resolvers are implemented using SchemaDirectiveVisitor.visitSchemaDirectives | ||
| // schema visiting modifies the schema in place | ||
| if (directiveResolvers != null) { | ||
@@ -541,0 +592,0 @@ attachDirectiveResolvers(schema, directiveResolvers); |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.cjs.js","sources":["../../../dist/schema/src/addSchemaLevelResolver.js","../../../dist/schema/src/assertResolversPresent.js","../../../dist/schema/src/attachDirectiveResolvers.js","../../../dist/schema/src/extensionDefinitions.js","../../../dist/schema/src/concatenateTypeDefs.js","../../../dist/schema/src/buildSchemaFromTypeDefinitions.js","../../../dist/schema/src/chainResolvers.js","../../../dist/schema/src/decorateWithLogger.js","../../../dist/schema/src/checkForResolveTypeResolver.js","../../../dist/schema/src/extendResolversFromInterfaces.js","../../../dist/schema/src/addResolversToSchema.js","../../../dist/schema/src/addErrorLoggingToSchema.js","../../../dist/schema/src/addCatchUndefinedToSchema.js","../../../dist/schema/src/makeExecutableSchema.js"],"sourcesContent":["import { defaultFieldResolver } from 'graphql';\n// wraps all resolvers of query, mutation or subscription fields\n// with the provided function to simulate a root schema level resolver\nexport function addSchemaLevelResolver(schema, fn) {\n // TODO test that schema is a schema, fn is a function\n const rootTypes = [schema.getQueryType(), schema.getMutationType(), schema.getSubscriptionType()].filter(x => Boolean(x));\n rootTypes.forEach(type => {\n if (type != null) {\n // XXX this should run at most once per request to simulate a true root resolver\n // for graphql-js this is an approximation that works with queries but not mutations\n const rootResolveFn = runAtMostOncePerRequest(fn);\n const fields = type.getFields();\n Object.keys(fields).forEach(fieldName => {\n // XXX if the type is a subscription, a same query AST will be ran multiple times so we\n // deactivate here the runOnce if it's a subscription. This may not be optimal though...\n if (type === schema.getSubscriptionType()) {\n fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, fn);\n }\n else {\n fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, rootResolveFn);\n }\n });\n }\n });\n}\n// XXX badly named function. this doesn't really wrap, it just chains resolvers...\nfunction wrapResolver(innerResolver, outerResolver) {\n return (obj, args, ctx, info) => resolveMaybePromise(outerResolver(obj, args, ctx, info), root => {\n if (innerResolver != null) {\n return innerResolver(root, args, ctx, info);\n }\n return defaultFieldResolver(root, args, ctx, info);\n });\n}\nfunction isPromise(maybePromise) {\n return maybePromise && typeof maybePromise.then === 'function';\n}\n// resolvers can be synchronous or asynchronous. if all resolvers\n// in an operation return synchronously, the execution should return\n// synchronously. the maybe-sync/maybe-async nature of resolvers should be\n// preserved\nfunction resolveMaybePromise(maybePromise, fulfillmentCallback) {\n if (isPromise(maybePromise)) {\n return maybePromise.then(fulfillmentCallback);\n }\n return fulfillmentCallback(maybePromise);\n}\n// XXX this function only works for resolvers\n// XXX very hacky way to remember if the function\n// already ran for this request. This will only work\n// if people don't actually cache the operation.\n// if they do cache the operation, they will have to\n// manually remove the __runAtMostOnce before every request.\nfunction runAtMostOncePerRequest(fn) {\n let value;\n const randomNumber = Math.random();\n return (root, args, ctx, info) => {\n if (!info.operation['__runAtMostOnce']) {\n info.operation['__runAtMostOnce'] = {};\n }\n if (!info.operation['__runAtMostOnce'][randomNumber]) {\n info.operation['__runAtMostOnce'][randomNumber] = true;\n value = fn(root, args, ctx, info);\n }\n return value;\n };\n}\n//# sourceMappingURL=addSchemaLevelResolver.js.map","import { getNamedType, isScalarType } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nexport function assertResolversPresent(schema, resolverValidationOptions = {}) {\n const { requireResolversForArgs = false, requireResolversForNonScalar = false, requireResolversForAllFields = false, } = resolverValidationOptions;\n if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n 'requireResolversForNonScalar, but not a combination of them.');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n // requires a resolver for *every* field.\n if (requireResolversForAllFields) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that has arguments\n if (requireResolversForArgs && field.args.length > 0) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that returns a non-scalar type\n if (requireResolversForNonScalar && !isScalarType(getNamedType(field.type))) {\n expectResolver(field, typeName, fieldName);\n }\n });\n}\nfunction expectResolver(field, typeName, fieldName) {\n if (!field.resolve) {\n // eslint-disable-next-line no-console\n console.warn(`Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this warning check pass;\nresolverValidationOptions: {\n requireResolversForNonScalar: false\n}\n `);\n return;\n }\n if (typeof field.resolve !== 'function') {\n throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n }\n}\n//# sourceMappingURL=assertResolversPresent.js.map","import { defaultFieldResolver } from 'graphql';\nimport { SchemaDirectiveVisitor } from '@graphql-tools/utils';\nexport function attachDirectiveResolvers(schema, directiveResolvers) {\n if (typeof directiveResolvers !== 'object') {\n throw new Error(`Expected directiveResolvers to be of type object, got ${typeof directiveResolvers}`);\n }\n if (Array.isArray(directiveResolvers)) {\n throw new Error('Expected directiveResolvers to be of type object, got Array');\n }\n const schemaDirectives = Object.create(null);\n Object.keys(directiveResolvers).forEach(directiveName => {\n schemaDirectives[directiveName] = class extends SchemaDirectiveVisitor {\n visitFieldDefinition(field) {\n const resolver = directiveResolvers[directiveName];\n const originalResolver = field.resolve != null ? field.resolve : defaultFieldResolver;\n const directiveArgs = this.args;\n field.resolve = (...args) => {\n const [source /* original args */, , context, info] = args;\n return resolver(() => new Promise((resolve, reject) => {\n const result = originalResolver.apply(field, args);\n if (result instanceof Error) {\n reject(result);\n }\n resolve(result);\n }), source, directiveArgs, context, info);\n };\n }\n };\n });\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n}\n//# sourceMappingURL=attachDirectiveResolvers.js.map","import { Kind } from 'graphql';\nexport function extractExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind === Kind.OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.UNION_TYPE_EXTENSION ||\n def.kind === Kind.ENUM_TYPE_EXTENSION ||\n def.kind === Kind.SCALAR_TYPE_EXTENSION ||\n def.kind === Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\nexport function filterExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind !== Kind.OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.INTERFACE_TYPE_EXTENSION &&\n def.kind !== Kind.INPUT_OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.UNION_TYPE_EXTENSION &&\n def.kind !== Kind.ENUM_TYPE_EXTENSION &&\n def.kind !== Kind.SCALAR_TYPE_EXTENSION &&\n def.kind !== Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\n//# sourceMappingURL=extensionDefinitions.js.map","import { print } from 'graphql';\nexport function concatenateTypeDefs(typeDefinitionsAry, calledFunctionRefs = []) {\n let resolvedTypeDefinitions = [];\n typeDefinitionsAry.forEach((typeDef) => {\n if (typeof typeDef === 'function') {\n if (calledFunctionRefs.indexOf(typeDef) === -1) {\n calledFunctionRefs.push(typeDef);\n resolvedTypeDefinitions = resolvedTypeDefinitions.concat(concatenateTypeDefs(typeDef(), calledFunctionRefs));\n }\n }\n else if (typeof typeDef === 'string') {\n resolvedTypeDefinitions.push(typeDef.trim());\n }\n else if (typeDef.kind !== undefined) {\n resolvedTypeDefinitions.push(print(typeDef).trim());\n }\n else {\n const type = typeof typeDef;\n throw new Error(`typeDef array must contain only strings, documents, or functions, got ${type}`);\n }\n });\n return uniq(resolvedTypeDefinitions.map(x => x.trim())).join('\\n');\n}\nfunction uniq(array) {\n return array.reduce((accumulator, currentValue) => accumulator.indexOf(currentValue) === -1 ? [...accumulator, currentValue] : accumulator, []);\n}\n//# sourceMappingURL=concatenateTypeDefs.js.map","import { parse, extendSchema, buildASTSchema } from 'graphql';\nimport { extractExtensionDefinitions, filterExtensionDefinitions } from './extensionDefinitions';\nimport { concatenateTypeDefs } from './concatenateTypeDefs';\nexport function buildSchemaFromTypeDefinitions(typeDefinitions, parseOptions) {\n const document = buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions);\n const typesAst = filterExtensionDefinitions(document);\n const backcompatOptions = { commentDescriptions: true };\n let schema = buildASTSchema(typesAst, backcompatOptions);\n const extensionsAst = extractExtensionDefinitions(document);\n if (extensionsAst.definitions.length > 0) {\n schema = extendSchema(schema, extensionsAst, backcompatOptions);\n }\n return schema;\n}\nexport function isDocumentNode(typeDefinitions) {\n return typeDefinitions.kind !== undefined;\n}\nexport function buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions) {\n let document;\n if (typeof typeDefinitions === 'string') {\n document = parse(typeDefinitions, parseOptions);\n }\n else if (Array.isArray(typeDefinitions)) {\n document = parse(concatenateTypeDefs(typeDefinitions), parseOptions);\n }\n else if (isDocumentNode(typeDefinitions)) {\n document = typeDefinitions;\n }\n else {\n const type = typeof typeDefinitions;\n throw new Error(`typeDefs must be a string, array or schema AST, got ${type}`);\n }\n return document;\n}\n//# sourceMappingURL=buildSchemaFromTypeDefinitions.js.map","import { defaultFieldResolver } from 'graphql';\nexport function chainResolvers(resolvers) {\n return (root, args, ctx, info) => resolvers.reduce((prev, curResolver) => {\n if (curResolver != null) {\n return curResolver(prev, args, ctx, info);\n }\n return defaultFieldResolver(prev, args, ctx, info);\n }, root);\n}\n//# sourceMappingURL=chainResolvers.js.map","import { defaultFieldResolver } from 'graphql';\n/*\n * fn: The function to decorate with the logger\n * logger: an object instance of type Logger\n * hint: an optional hint to add to the error's message\n */\nexport function decorateWithLogger(fn, logger, hint) {\n const resolver = fn != null ? fn : defaultFieldResolver;\n const logError = (e) => {\n // TODO: clone the error properly\n const newE = new Error();\n newE.stack = e.stack;\n /* istanbul ignore else: always get the hint from addErrorLoggingToSchema */\n if (hint) {\n newE['originalMessage'] = e.message;\n newE.message = `Error in resolver ${hint}\\n${e.message}`;\n }\n logger.log(newE);\n };\n return (root, args, ctx, info) => {\n try {\n const result = resolver(root, args, ctx, info);\n // If the resolver returns a Promise log any Promise rejects.\n if (result && typeof result.then === 'function' && typeof result.catch === 'function') {\n result.catch((reason) => {\n // make sure that it's an error we're logging.\n const error = reason instanceof Error ? reason : new Error(reason);\n logError(error);\n // We don't want to leave an unhandled exception so pass on error.\n return reason;\n });\n }\n return result;\n }\n catch (e) {\n logError(e);\n // we want to pass on the error, just in case.\n throw e;\n }\n };\n}\n//# sourceMappingURL=decorateWithLogger.js.map","import { isAbstractType } from 'graphql';\n// If we have any union or interface types throw if no there is no resolveType or isTypeOf resolvers\nexport function checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n Object.keys(schema.getTypeMap())\n .map(typeName => schema.getType(typeName))\n .forEach((type) => {\n if (!isAbstractType(type)) {\n return;\n }\n if (!type.resolveType) {\n if (!requireResolversForResolveType) {\n return;\n }\n throw new Error(`Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass false into ` +\n '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.');\n }\n });\n}\n//# sourceMappingURL=checkForResolveTypeResolver.js.map","export function extendResolversFromInterfaces(schema, resolvers) {\n const typeNames = Object.keys({\n ...schema.getTypeMap(),\n ...resolvers,\n });\n const extendedResolvers = {};\n typeNames.forEach(typeName => {\n const type = schema.getType(typeName);\n if ('getInterfaces' in type) {\n const allInterfaceResolvers = type\n .getInterfaces()\n .map(iFace => resolvers[iFace.name])\n .filter(interfaceResolvers => interfaceResolvers != null);\n extendedResolvers[typeName] = {};\n allInterfaceResolvers.forEach(interfaceResolvers => {\n Object.keys(interfaceResolvers).forEach(fieldName => {\n if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n extendedResolvers[typeName][fieldName] = interfaceResolvers[fieldName];\n }\n });\n });\n const typeResolvers = resolvers[typeName];\n extendedResolvers[typeName] = {\n ...extendedResolvers[typeName],\n ...typeResolvers,\n };\n }\n else {\n const typeResolvers = resolvers[typeName];\n if (typeResolvers != null) {\n extendedResolvers[typeName] = typeResolvers;\n }\n }\n });\n return extendedResolvers;\n}\n//# sourceMappingURL=extendResolversFromInterfaces.js.map","import { GraphQLEnumType, isSchema, isScalarType, isEnumType, isUnionType, isInterfaceType, isObjectType, } from 'graphql';\nimport { healSchema, forEachField, forEachDefaultValue, parseInputValue, serializeInputValue, } from '@graphql-tools/utils';\nimport { checkForResolveTypeResolver } from './checkForResolveTypeResolver';\nimport { extendResolversFromInterfaces } from './extendResolversFromInterfaces';\nexport function addResolversToSchema(schemaOrOptions, legacyInputResolvers, legacyInputValidationOptions) {\n const options = isSchema(schemaOrOptions)\n ? {\n schema: schemaOrOptions,\n resolvers: legacyInputResolvers,\n resolverValidationOptions: legacyInputValidationOptions,\n }\n : schemaOrOptions;\n const { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options;\n const { allowResolversNotInSchema = false, requireResolversForResolveType } = resolverValidationOptions;\n const resolvers = inheritResolversFromInterfaces\n ? extendResolversFromInterfaces(schema, inputResolvers)\n : inputResolvers;\n const typeMap = schema.getTypeMap();\n Object.keys(resolvers).forEach(typeName => {\n const resolverValue = resolvers[typeName];\n const resolverType = typeof resolverValue;\n if (typeName === '__schema') {\n if (resolverType !== 'function') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". A schema resolver's value must be of type object or function.`);\n }\n }\n else {\n if (resolverType !== 'object') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n }\n }\n const type = schema.getType(typeName);\n if (!type && typeName !== '__schema') {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`\"${typeName}\" defined in resolvers, but not in schema`);\n }\n if (isScalarType(type)) {\n // Support -- without recommending -- overriding default scalar types\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n });\n }\n else if (isEnumType(type)) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (!type.getValue(fieldName)) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${typeName}.${fieldName} was defined in resolvers, but not present within ${typeName}`);\n }\n });\n const config = type.toConfig();\n const values = type.getValues();\n const newValues = values.reduce((prev, value) => ({\n ...prev,\n [value.name]: {\n value: Object.keys(resolverValue).includes(value.name) ? resolverValue[value.name] : value.name,\n deprecationReason: value.deprecationReason,\n description: value.description,\n astNode: value.astNode,\n },\n }), {});\n // healSchema called later to update all fields to new type\n typeMap[typeName] = new GraphQLEnumType({\n ...config,\n values: newValues,\n });\n }\n else if (isUnionType(type)) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n type[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${typeName}.${fieldName} was defined in resolvers, but ${typeName} is not an object or interface type`);\n });\n }\n else if (isObjectType(type) || isInterfaceType(type)) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n type[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n const fields = type.getFields();\n const field = fields[fieldName];\n if (field == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`);\n }\n const fieldResolve = resolverValue[fieldName];\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n field.resolve = fieldResolve;\n }\n else {\n if (typeof fieldResolve !== 'object') {\n throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n }\n setFieldProperties(field, fieldResolve);\n }\n });\n }\n });\n checkForResolveTypeResolver(schema, requireResolversForResolveType);\n // serialize all default values prior to healing fields with new scalar/enum types.\n forEachDefaultValue(schema, serializeInputValue);\n // schema may have new scalar/enum types that require healing\n healSchema(schema);\n // reparse all default values with new parsing functions.\n forEachDefaultValue(schema, parseInputValue);\n if (defaultFieldResolver != null) {\n forEachField(schema, field => {\n if (!field.resolve) {\n field.resolve = defaultFieldResolver;\n }\n });\n }\n return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n Object.keys(propertiesObj).forEach(propertyName => {\n field[propertyName] = propertiesObj[propertyName];\n });\n}\n//# sourceMappingURL=addResolversToSchema.js.map","import { forEachField } from '@graphql-tools/utils';\nimport { decorateWithLogger } from './decorateWithLogger';\nexport function addErrorLoggingToSchema(schema, logger) {\n if (!logger) {\n throw new Error('Must provide a logger');\n }\n if (typeof logger.log !== 'function') {\n throw new Error('Logger.log must be a function');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n const errorHint = `${typeName}.${fieldName}`;\n field.resolve = decorateWithLogger(field.resolve, logger, errorHint);\n });\n}\n//# sourceMappingURL=addErrorLoggingToSchema.js.map","import { defaultFieldResolver } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nfunction decorateToCatchUndefined(fn, hint) {\n const resolve = fn == null ? defaultFieldResolver : fn;\n return (root, args, ctx, info) => {\n const result = resolve(root, args, ctx, info);\n if (typeof result === 'undefined') {\n throw new Error(`Resolver for \"${hint}\" returned undefined`);\n }\n return result;\n };\n}\nexport function addCatchUndefinedToSchema(schema) {\n forEachField(schema, (field, typeName, fieldName) => {\n const errorHint = `${typeName}.${fieldName}`;\n field.resolve = decorateToCatchUndefined(field.resolve, errorHint);\n });\n}\n//# sourceMappingURL=addCatchUndefinedToSchema.js.map","import { mergeDeep, SchemaDirectiveVisitor } from '@graphql-tools/utils';\nimport { addResolversToSchema } from './addResolversToSchema';\nimport { attachDirectiveResolvers } from './attachDirectiveResolvers';\nimport { assertResolversPresent } from './assertResolversPresent';\nimport { addSchemaLevelResolver } from './addSchemaLevelResolver';\nimport { buildSchemaFromTypeDefinitions } from './buildSchemaFromTypeDefinitions';\nimport { addErrorLoggingToSchema } from './addErrorLoggingToSchema';\nimport { addCatchUndefinedToSchema } from './addCatchUndefinedToSchema';\nexport function makeExecutableSchema({ typeDefs, resolvers = {}, logger, allowUndefinedInResolve = true, resolverValidationOptions = {}, directiveResolvers, schemaDirectives, parseOptions = {}, inheritResolversFromInterfaces = false, }) {\n // Validate and clean up arguments\n if (typeof resolverValidationOptions !== 'object') {\n throw new Error('Expected `resolverValidationOptions` to be an object');\n }\n if (!typeDefs) {\n throw new Error('Must provide typeDefs');\n }\n // We allow passing in an array of resolver maps, in which case we merge them\n const resolverMap = Array.isArray(resolvers) ? resolvers.reduce(mergeDeep, {}) : resolvers;\n // Arguments are now validated and cleaned up\n const schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions);\n addResolversToSchema({\n schema,\n resolvers: resolverMap,\n resolverValidationOptions,\n inheritResolversFromInterfaces,\n });\n assertResolversPresent(schema, resolverValidationOptions);\n if (!allowUndefinedInResolve) {\n addCatchUndefinedToSchema(schema);\n }\n if (logger != null) {\n addErrorLoggingToSchema(schema, logger);\n }\n if (typeof resolvers['__schema'] === 'function') {\n // TODO a bit of a hack now, better rewrite generateSchema to attach it there.\n // not doing that now, because I'd have to rewrite a lot of tests.\n addSchemaLevelResolver(schema, resolvers['__schema']);\n }\n if (directiveResolvers != null) {\n attachDirectiveResolvers(schema, directiveResolvers);\n }\n if (schemaDirectives != null) {\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n }\n return schema;\n}\n//# sourceMappingURL=makeExecutableSchema.js.map"],"names":["defaultFieldResolver","forEachField","isScalarType","getNamedType","SchemaDirectiveVisitor","Kind","print","buildASTSchema","extendSchema","parse","isAbstractType","isSchema","isEnumType","GraphQLEnumType","isUnionType","isObjectType","isInterfaceType","forEachDefaultValue","serializeInputValue","healSchema","parseInputValue","mergeDeep"],"mappings":"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"} | ||
| {"version":3,"file":"index.cjs.js","sources":["../../../dist/schema/src/addSchemaLevelResolver.js","../../../dist/schema/src/assertResolversPresent.js","../../../dist/schema/src/attachDirectiveResolvers.js","../../../dist/schema/src/extensionDefinitions.js","../../../dist/schema/src/concatenateTypeDefs.js","../../../dist/schema/src/buildSchemaFromTypeDefinitions.js","../../../dist/schema/src/chainResolvers.js","../../../dist/schema/src/decorateWithLogger.js","../../../dist/schema/src/checkForResolveTypeResolver.js","../../../dist/schema/src/extendResolversFromInterfaces.js","../../../dist/schema/src/addResolversToSchema.js","../../../dist/schema/src/addErrorLoggingToSchema.js","../../../dist/schema/src/addCatchUndefinedToSchema.js","../../../dist/schema/src/makeExecutableSchema.js"],"sourcesContent":["import { defaultFieldResolver } from 'graphql';\nimport { mapSchema, MapperKind } from '@graphql-tools/utils';\n// wraps all resolvers of query, mutation or subscription fields\n// with the provided function to simulate a root schema level resolver\nexport function addSchemaLevelResolver(schema, fn) {\n // TODO test that schema is a schema, fn is a function\n const fnToRunOnlyOnce = runAtMostOncePerRequest(fn);\n return mapSchema(schema, {\n [MapperKind.ROOT_FIELD]: (fieldConfig, _fieldName, typeName, schema) => {\n // XXX this should run at most once per request to simulate a true root resolver\n // for graphql-js this is an approximation that works with queries but not mutations\n // XXX if the type is a subscription, a same query AST will be ran multiple times so we\n // deactivate here the runOnce if it's a subscription. This may not be optimal though...\n const subscription = schema.getSubscriptionType();\n if (subscription != null && subscription.name === typeName) {\n return {\n ...fieldConfig,\n resolve: wrapResolver(fieldConfig.resolve, fn),\n };\n }\n return {\n ...fieldConfig,\n resolve: wrapResolver(fieldConfig.resolve, fnToRunOnlyOnce),\n };\n },\n });\n}\n// XXX badly named function. this doesn't really wrap, it just chains resolvers...\nfunction wrapResolver(innerResolver, outerResolver) {\n return (obj, args, ctx, info) => resolveMaybePromise(outerResolver(obj, args, ctx, info), root => {\n if (innerResolver != null) {\n return innerResolver(root, args, ctx, info);\n }\n return defaultFieldResolver(root, args, ctx, info);\n });\n}\nfunction isPromise(maybePromise) {\n return maybePromise && typeof maybePromise.then === 'function';\n}\n// resolvers can be synchronous or asynchronous. if all resolvers\n// in an operation return synchronously, the execution should return\n// synchronously. the maybe-sync/maybe-async nature of resolvers should be\n// preserved\nfunction resolveMaybePromise(maybePromise, fulfillmentCallback) {\n if (isPromise(maybePromise)) {\n return maybePromise.then(fulfillmentCallback);\n }\n return fulfillmentCallback(maybePromise);\n}\n// XXX this function only works for resolvers\n// XXX very hacky way to remember if the function\n// already ran for this request. This will only work\n// if people don't actually cache the operation.\n// if they do cache the operation, they will have to\n// manually remove the __runAtMostOnce before every request.\nfunction runAtMostOncePerRequest(fn) {\n let value;\n const randomNumber = Math.random();\n return (root, args, ctx, info) => {\n if (!info.operation['__runAtMostOnce']) {\n info.operation['__runAtMostOnce'] = {};\n }\n if (!info.operation['__runAtMostOnce'][randomNumber]) {\n info.operation['__runAtMostOnce'][randomNumber] = true;\n value = fn(root, args, ctx, info);\n }\n return value;\n };\n}\n//# sourceMappingURL=addSchemaLevelResolver.js.map","import { getNamedType, isScalarType } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nexport function assertResolversPresent(schema, resolverValidationOptions = {}) {\n const { requireResolversForArgs = false, requireResolversForNonScalar = false, requireResolversForAllFields = false, } = resolverValidationOptions;\n if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n 'requireResolversForNonScalar, but not a combination of them.');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n // requires a resolver for *every* field.\n if (requireResolversForAllFields) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that has arguments\n if (requireResolversForArgs && field.args.length > 0) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that returns a non-scalar type\n if (requireResolversForNonScalar && !isScalarType(getNamedType(field.type))) {\n expectResolver(field, typeName, fieldName);\n }\n });\n}\nfunction expectResolver(field, typeName, fieldName) {\n if (!field.resolve) {\n // eslint-disable-next-line no-console\n console.warn(`Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this warning check pass;\nresolverValidationOptions: {\n requireResolversForNonScalar: false\n}\n `);\n return;\n }\n if (typeof field.resolve !== 'function') {\n throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n }\n}\n//# sourceMappingURL=assertResolversPresent.js.map","import { defaultFieldResolver } from 'graphql';\nimport { SchemaDirectiveVisitor } from '@graphql-tools/utils';\nexport function attachDirectiveResolvers(schema, directiveResolvers) {\n if (typeof directiveResolvers !== 'object') {\n throw new Error(`Expected directiveResolvers to be of type object, got ${typeof directiveResolvers}`);\n }\n if (Array.isArray(directiveResolvers)) {\n throw new Error('Expected directiveResolvers to be of type object, got Array');\n }\n const schemaDirectives = Object.create(null);\n Object.keys(directiveResolvers).forEach(directiveName => {\n schemaDirectives[directiveName] = class extends SchemaDirectiveVisitor {\n visitFieldDefinition(field) {\n const resolver = directiveResolvers[directiveName];\n const originalResolver = field.resolve != null ? field.resolve : defaultFieldResolver;\n const directiveArgs = this.args;\n field.resolve = (...args) => {\n const [source /* original args */, , context, info] = args;\n return resolver(() => new Promise((resolve, reject) => {\n const result = originalResolver.apply(field, args);\n if (result instanceof Error) {\n reject(result);\n }\n resolve(result);\n }), source, directiveArgs, context, info);\n };\n }\n };\n });\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n}\n//# sourceMappingURL=attachDirectiveResolvers.js.map","import { Kind } from 'graphql';\nexport function extractExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind === Kind.OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.UNION_TYPE_EXTENSION ||\n def.kind === Kind.ENUM_TYPE_EXTENSION ||\n def.kind === Kind.SCALAR_TYPE_EXTENSION ||\n def.kind === Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\nexport function filterExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind !== Kind.OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.INTERFACE_TYPE_EXTENSION &&\n def.kind !== Kind.INPUT_OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.UNION_TYPE_EXTENSION &&\n def.kind !== Kind.ENUM_TYPE_EXTENSION &&\n def.kind !== Kind.SCALAR_TYPE_EXTENSION &&\n def.kind !== Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\n//# sourceMappingURL=extensionDefinitions.js.map","import { print } from 'graphql';\nexport function concatenateTypeDefs(typeDefinitionsAry, calledFunctionRefs = []) {\n let resolvedTypeDefinitions = [];\n typeDefinitionsAry.forEach((typeDef) => {\n if (typeof typeDef === 'function') {\n if (calledFunctionRefs.indexOf(typeDef) === -1) {\n calledFunctionRefs.push(typeDef);\n resolvedTypeDefinitions = resolvedTypeDefinitions.concat(concatenateTypeDefs(typeDef(), calledFunctionRefs));\n }\n }\n else if (typeof typeDef === 'string') {\n resolvedTypeDefinitions.push(typeDef.trim());\n }\n else if (typeDef.kind !== undefined) {\n resolvedTypeDefinitions.push(print(typeDef).trim());\n }\n else {\n const type = typeof typeDef;\n throw new Error(`typeDef array must contain only strings, documents, or functions, got ${type}`);\n }\n });\n return uniq(resolvedTypeDefinitions.map(x => x.trim())).join('\\n');\n}\nfunction uniq(array) {\n return array.reduce((accumulator, currentValue) => accumulator.indexOf(currentValue) === -1 ? [...accumulator, currentValue] : accumulator, []);\n}\n//# sourceMappingURL=concatenateTypeDefs.js.map","import { parse, extendSchema, buildASTSchema } from 'graphql';\nimport { extractExtensionDefinitions, filterExtensionDefinitions } from './extensionDefinitions';\nimport { concatenateTypeDefs } from './concatenateTypeDefs';\nexport function buildSchemaFromTypeDefinitions(typeDefinitions, parseOptions) {\n const document = buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions);\n const typesAst = filterExtensionDefinitions(document);\n const backcompatOptions = { commentDescriptions: true };\n let schema = buildASTSchema(typesAst, backcompatOptions);\n const extensionsAst = extractExtensionDefinitions(document);\n if (extensionsAst.definitions.length > 0) {\n schema = extendSchema(schema, extensionsAst, backcompatOptions);\n }\n return schema;\n}\nexport function isDocumentNode(typeDefinitions) {\n return typeDefinitions.kind !== undefined;\n}\nexport function buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions) {\n let document;\n if (typeof typeDefinitions === 'string') {\n document = parse(typeDefinitions, parseOptions);\n }\n else if (Array.isArray(typeDefinitions)) {\n document = parse(concatenateTypeDefs(typeDefinitions), parseOptions);\n }\n else if (isDocumentNode(typeDefinitions)) {\n document = typeDefinitions;\n }\n else {\n const type = typeof typeDefinitions;\n throw new Error(`typeDefs must be a string, array or schema AST, got ${type}`);\n }\n return document;\n}\n//# sourceMappingURL=buildSchemaFromTypeDefinitions.js.map","import { defaultFieldResolver } from 'graphql';\nexport function chainResolvers(resolvers) {\n return (root, args, ctx, info) => resolvers.reduce((prev, curResolver) => {\n if (curResolver != null) {\n return curResolver(prev, args, ctx, info);\n }\n return defaultFieldResolver(prev, args, ctx, info);\n }, root);\n}\n//# sourceMappingURL=chainResolvers.js.map","import { defaultFieldResolver } from 'graphql';\n/*\n * fn: The function to decorate with the logger\n * logger: an object instance of type Logger\n * hint: an optional hint to add to the error's message\n */\nexport function decorateWithLogger(fn, logger, hint) {\n const resolver = fn != null ? fn : defaultFieldResolver;\n const logError = (e) => {\n // TODO: clone the error properly\n const newE = new Error();\n newE.stack = e.stack;\n /* istanbul ignore else: always get the hint from addErrorLoggingToSchema */\n if (hint) {\n newE['originalMessage'] = e.message;\n newE.message = `Error in resolver ${hint}\\n${e.message}`;\n }\n logger.log(newE);\n };\n return (root, args, ctx, info) => {\n try {\n const result = resolver(root, args, ctx, info);\n // If the resolver returns a Promise log any Promise rejects.\n if (result && typeof result.then === 'function' && typeof result.catch === 'function') {\n result.catch((reason) => {\n // make sure that it's an error we're logging.\n const error = reason instanceof Error ? reason : new Error(reason);\n logError(error);\n // We don't want to leave an unhandled exception so pass on error.\n return reason;\n });\n }\n return result;\n }\n catch (e) {\n logError(e);\n // we want to pass on the error, just in case.\n throw e;\n }\n };\n}\n//# sourceMappingURL=decorateWithLogger.js.map","import { isAbstractType } from 'graphql';\n// If we have any union or interface types throw if no there is no resolveType or isTypeOf resolvers\nexport function checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n Object.keys(schema.getTypeMap())\n .map(typeName => schema.getType(typeName))\n .forEach((type) => {\n if (!isAbstractType(type)) {\n return;\n }\n if (!type.resolveType) {\n if (!requireResolversForResolveType) {\n return;\n }\n throw new Error(`Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass false into ` +\n '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.');\n }\n });\n}\n//# sourceMappingURL=checkForResolveTypeResolver.js.map","export function extendResolversFromInterfaces(schema, resolvers) {\n const typeNames = Object.keys({\n ...schema.getTypeMap(),\n ...resolvers,\n });\n const extendedResolvers = {};\n typeNames.forEach(typeName => {\n const type = schema.getType(typeName);\n if ('getInterfaces' in type) {\n const allInterfaceResolvers = type\n .getInterfaces()\n .map(iFace => resolvers[iFace.name])\n .filter(interfaceResolvers => interfaceResolvers != null);\n extendedResolvers[typeName] = {};\n allInterfaceResolvers.forEach(interfaceResolvers => {\n Object.keys(interfaceResolvers).forEach(fieldName => {\n if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n extendedResolvers[typeName][fieldName] = interfaceResolvers[fieldName];\n }\n });\n });\n const typeResolvers = resolvers[typeName];\n extendedResolvers[typeName] = {\n ...extendedResolvers[typeName],\n ...typeResolvers,\n };\n }\n else {\n const typeResolvers = resolvers[typeName];\n if (typeResolvers != null) {\n extendedResolvers[typeName] = typeResolvers;\n }\n }\n });\n return extendedResolvers;\n}\n//# sourceMappingURL=extendResolversFromInterfaces.js.map","import { GraphQLEnumType, isSchema, GraphQLScalarType, GraphQLUnionType, GraphQLInterfaceType, GraphQLObjectType, isSpecifiedScalarType, } from 'graphql';\nimport { mapSchema, MapperKind, } from '@graphql-tools/utils';\nimport { checkForResolveTypeResolver } from './checkForResolveTypeResolver';\nimport { extendResolversFromInterfaces } from './extendResolversFromInterfaces';\nexport function addResolversToSchema(schemaOrOptions, legacyInputResolvers, legacyInputValidationOptions) {\n const options = isSchema(schemaOrOptions)\n ? {\n schema: schemaOrOptions,\n resolvers: legacyInputResolvers,\n resolverValidationOptions: legacyInputValidationOptions,\n }\n : schemaOrOptions;\n let { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options;\n const { allowResolversNotInSchema = false, requireResolversForResolveType } = resolverValidationOptions;\n const resolvers = inheritResolversFromInterfaces\n ? extendResolversFromInterfaces(schema, inputResolvers)\n : inputResolvers;\n Object.keys(resolvers).forEach(typeName => {\n const resolverValue = resolvers[typeName];\n const resolverType = typeof resolverValue;\n if (typeName === '__schema') {\n if (resolverType !== 'function') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". A schema resolver's value must be of type object or function.`);\n }\n }\n else {\n if (resolverType !== 'object') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n }\n const type = schema.getType(typeName);\n if (type == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`\"${typeName}\" defined in resolvers, but not in schema`);\n }\n else if (isSpecifiedScalarType(type)) {\n // allow -- without recommending -- overriding of specified scalar types\n const resolverValue = resolvers[typeName];\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n });\n }\n }\n });\n schema = mapSchema(schema, {\n [MapperKind.SCALAR_TYPE]: type => {\n const config = type.toConfig();\n const resolverValue = resolvers[type.name];\n if (!isSpecifiedScalarType(type) && resolverValue != null) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n config[fieldName] = resolverValue[fieldName];\n }\n });\n return new GraphQLScalarType(config);\n }\n },\n [MapperKind.ENUM_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n const config = type.toConfig();\n const enumValueConfigMap = config.values;\n if (resolverValue != null) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (!enumValueConfigMap[fieldName]) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`);\n }\n else {\n enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n }\n });\n return new GraphQLEnumType(config);\n }\n },\n [MapperKind.UNION_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n config[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`);\n });\n return new GraphQLUnionType(config);\n }\n },\n [MapperKind.OBJECT_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n const fields = config.fields;\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n const field = fields[fieldName];\n if (field == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`);\n }\n });\n return new GraphQLObjectType(config);\n }\n },\n [MapperKind.INTERFACE_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n const fields = config.fields;\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n const field = fields[fieldName];\n if (field == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`);\n }\n });\n return new GraphQLInterfaceType(config);\n }\n },\n [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {\n const resolverValue = resolvers[typeName];\n if (resolverValue != null) {\n const fieldResolve = resolverValue[fieldName];\n if (fieldResolve != null) {\n const newFieldConfig = { ...fieldConfig };\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n newFieldConfig.resolve = fieldResolve;\n }\n else {\n if (typeof fieldResolve !== 'object') {\n throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n }\n setFieldProperties(newFieldConfig, fieldResolve);\n }\n return newFieldConfig;\n }\n }\n },\n });\n checkForResolveTypeResolver(schema, requireResolversForResolveType);\n if (defaultFieldResolver != null) {\n schema = mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: fieldConfig => ({\n ...fieldConfig,\n resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver,\n }),\n });\n }\n return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n Object.keys(propertiesObj).forEach(propertyName => {\n field[propertyName] = propertiesObj[propertyName];\n });\n}\n//# sourceMappingURL=addResolversToSchema.js.map","import { mapSchema, MapperKind } from '@graphql-tools/utils';\nimport { decorateWithLogger } from './decorateWithLogger';\nexport function addErrorLoggingToSchema(schema, logger) {\n if (!logger) {\n throw new Error('Must provide a logger');\n }\n if (typeof logger.log !== 'function') {\n throw new Error('Logger.log must be a function');\n }\n return mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({\n ...fieldConfig,\n resolve: decorateWithLogger(fieldConfig.resolve, logger, `${typeName}.${fieldName}`),\n }),\n });\n}\n//# sourceMappingURL=addErrorLoggingToSchema.js.map","import { defaultFieldResolver } from 'graphql';\nimport { mapSchema, MapperKind } from '@graphql-tools/utils';\nfunction decorateToCatchUndefined(fn, hint) {\n const resolve = fn == null ? defaultFieldResolver : fn;\n return (root, args, ctx, info) => {\n const result = resolve(root, args, ctx, info);\n if (typeof result === 'undefined') {\n throw new Error(`Resolver for \"${hint}\" returned undefined`);\n }\n return result;\n };\n}\nexport function addCatchUndefinedToSchema(schema) {\n return mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({\n ...fieldConfig,\n resolve: decorateToCatchUndefined(fieldConfig.resolve, `${typeName}.${fieldName}`),\n }),\n });\n}\n//# sourceMappingURL=addCatchUndefinedToSchema.js.map","import { mergeDeep, SchemaDirectiveVisitor } from '@graphql-tools/utils';\nimport { addResolversToSchema } from './addResolversToSchema';\nimport { attachDirectiveResolvers } from './attachDirectiveResolvers';\nimport { assertResolversPresent } from './assertResolversPresent';\nimport { addSchemaLevelResolver } from './addSchemaLevelResolver';\nimport { buildSchemaFromTypeDefinitions } from './buildSchemaFromTypeDefinitions';\nimport { addErrorLoggingToSchema } from './addErrorLoggingToSchema';\nimport { addCatchUndefinedToSchema } from './addCatchUndefinedToSchema';\nexport function makeExecutableSchema({ typeDefs, resolvers = {}, logger, allowUndefinedInResolve = true, resolverValidationOptions = {}, directiveResolvers, schemaDirectives, parseOptions = {}, inheritResolversFromInterfaces = false, }) {\n // Validate and clean up arguments\n if (typeof resolverValidationOptions !== 'object') {\n throw new Error('Expected `resolverValidationOptions` to be an object');\n }\n if (!typeDefs) {\n throw new Error('Must provide typeDefs');\n }\n // We allow passing in an array of resolver maps, in which case we merge them\n const resolverMap = Array.isArray(resolvers) ? resolvers.reduce(mergeDeep, {}) : resolvers;\n // Arguments are now validated and cleaned up\n let schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions);\n schema = addResolversToSchema({\n schema,\n resolvers: resolverMap,\n resolverValidationOptions,\n inheritResolversFromInterfaces,\n });\n assertResolversPresent(schema, resolverValidationOptions);\n if (!allowUndefinedInResolve) {\n schema = addCatchUndefinedToSchema(schema);\n }\n if (logger != null) {\n schema = addErrorLoggingToSchema(schema, logger);\n }\n if (typeof resolvers['__schema'] === 'function') {\n // TODO a bit of a hack now, better rewrite generateSchema to attach it there.\n // not doing that now, because I'd have to rewrite a lot of tests.\n schema = addSchemaLevelResolver(schema, resolvers['__schema']);\n }\n // directive resolvers are implemented using SchemaDirectiveVisitor.visitSchemaDirectives\n // schema visiting modifies the schema in place\n if (directiveResolvers != null) {\n attachDirectiveResolvers(schema, directiveResolvers);\n }\n if (schemaDirectives != null) {\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n }\n return schema;\n}\n//# sourceMappingURL=makeExecutableSchema.js.map"],"names":["mapSchema","MapperKind","defaultFieldResolver","forEachField","isScalarType","getNamedType","SchemaDirectiveVisitor","Kind","print","buildASTSchema","extendSchema","parse","isAbstractType","isSchema","isSpecifiedScalarType","GraphQLScalarType","GraphQLEnumType","GraphQLUnionType","GraphQLObjectType","GraphQLInterfaceType","mergeDeep"],"mappings":"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"} |
+171
-120
@@ -1,3 +0,3 @@ | ||
| import { defaultFieldResolver, isScalarType, getNamedType, Kind, print, buildASTSchema, extendSchema, parse, isAbstractType, isSchema, isEnumType, GraphQLEnumType, isUnionType, isObjectType, isInterfaceType } from 'graphql'; | ||
| import { forEachField, SchemaDirectiveVisitor, forEachDefaultValue, serializeInputValue, healSchema, parseInputValue, mergeDeep } from '@graphql-tools/utils'; | ||
| import { defaultFieldResolver, isScalarType, getNamedType, Kind, print, buildASTSchema, extendSchema, parse, isAbstractType, isSchema, isSpecifiedScalarType, GraphQLScalarType, GraphQLEnumType, GraphQLUnionType, GraphQLObjectType, GraphQLInterfaceType } from 'graphql'; | ||
| import { mapSchema, MapperKind, forEachField, SchemaDirectiveVisitor, mergeDeep } from '@graphql-tools/utils'; | ||
@@ -8,20 +8,21 @@ // wraps all resolvers of query, mutation or subscription fields | ||
| // TODO test that schema is a schema, fn is a function | ||
| const rootTypes = [schema.getQueryType(), schema.getMutationType(), schema.getSubscriptionType()].filter(x => Boolean(x)); | ||
| rootTypes.forEach(type => { | ||
| if (type != null) { | ||
| const fnToRunOnlyOnce = runAtMostOncePerRequest(fn); | ||
| return mapSchema(schema, { | ||
| [MapperKind.ROOT_FIELD]: (fieldConfig, _fieldName, typeName, schema) => { | ||
| // XXX this should run at most once per request to simulate a true root resolver | ||
| // for graphql-js this is an approximation that works with queries but not mutations | ||
| const rootResolveFn = runAtMostOncePerRequest(fn); | ||
| const fields = type.getFields(); | ||
| Object.keys(fields).forEach(fieldName => { | ||
| // XXX if the type is a subscription, a same query AST will be ran multiple times so we | ||
| // deactivate here the runOnce if it's a subscription. This may not be optimal though... | ||
| if (type === schema.getSubscriptionType()) { | ||
| fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, fn); | ||
| } | ||
| else { | ||
| fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, rootResolveFn); | ||
| } | ||
| }); | ||
| } | ||
| // XXX if the type is a subscription, a same query AST will be ran multiple times so we | ||
| // deactivate here the runOnce if it's a subscription. This may not be optimal though... | ||
| const subscription = schema.getSubscriptionType(); | ||
| if (subscription != null && subscription.name === typeName) { | ||
| return { | ||
| ...fieldConfig, | ||
| resolve: wrapResolver(fieldConfig.resolve, fn), | ||
| }; | ||
| } | ||
| return { | ||
| ...fieldConfig, | ||
| resolve: wrapResolver(fieldConfig.resolve, fnToRunOnlyOnce), | ||
| }; | ||
| }, | ||
| }); | ||
@@ -338,3 +339,3 @@ } | ||
| : schemaOrOptions; | ||
| const { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options; | ||
| let { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options; | ||
| const { allowResolversNotInSchema = false, requireResolversForResolveType } = resolverValidationOptions; | ||
@@ -344,3 +345,2 @@ const resolvers = inheritResolversFromInterfaces | ||
| : inputResolvers; | ||
| const typeMap = schema.getTypeMap(); | ||
| Object.keys(resolvers).forEach(typeName => { | ||
@@ -358,104 +358,149 @@ const resolverValue = resolvers[typeName]; | ||
| } | ||
| const type = schema.getType(typeName); | ||
| if (type == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`"${typeName}" defined in resolvers, but not in schema`); | ||
| } | ||
| else if (isSpecifiedScalarType(type)) { | ||
| // allow -- without recommending -- overriding of specified scalar types | ||
| const resolverValue = resolvers[typeName]; | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else { | ||
| type[fieldName] = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| const type = schema.getType(typeName); | ||
| if (!type && typeName !== '__schema') { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| }); | ||
| schema = mapSchema(schema, { | ||
| [MapperKind.SCALAR_TYPE]: type => { | ||
| const config = type.toConfig(); | ||
| const resolverValue = resolvers[type.name]; | ||
| if (!isSpecifiedScalarType(type) && resolverValue != null) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else { | ||
| config[fieldName] = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| return new GraphQLScalarType(config); | ||
| } | ||
| throw new Error(`"${typeName}" defined in resolvers, but not in schema`); | ||
| } | ||
| if (isScalarType(type)) { | ||
| // Support -- without recommending -- overriding default scalar types | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else { | ||
| type[fieldName] = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| } | ||
| else if (isEnumType(type)) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else if (!type.getValue(fieldName)) { | ||
| if (allowResolversNotInSchema) { | ||
| }, | ||
| [MapperKind.ENUM_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| const config = type.toConfig(); | ||
| const enumValueConfigMap = config.values; | ||
| if (resolverValue != null) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| } | ||
| else if (!enumValueConfigMap[fieldName]) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`); | ||
| } | ||
| else { | ||
| enumValueConfigMap[fieldName].value = resolverValue[fieldName]; | ||
| } | ||
| }); | ||
| return new GraphQLEnumType(config); | ||
| } | ||
| }, | ||
| [MapperKind.UNION_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| if (resolverValue != null) { | ||
| const config = type.toConfig(); | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| // this is for isTypeOf and resolveType and all the other stuff. | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| throw new Error(`${typeName}.${fieldName} was defined in resolvers, but not present within ${typeName}`); | ||
| } | ||
| }); | ||
| const config = type.toConfig(); | ||
| const values = type.getValues(); | ||
| const newValues = values.reduce((prev, value) => ({ | ||
| ...prev, | ||
| [value.name]: { | ||
| value: Object.keys(resolverValue).includes(value.name) ? resolverValue[value.name] : value.name, | ||
| deprecationReason: value.deprecationReason, | ||
| description: value.description, | ||
| astNode: value.astNode, | ||
| }, | ||
| }), {}); | ||
| // healSchema called later to update all fields to new type | ||
| typeMap[typeName] = new GraphQLEnumType({ | ||
| ...config, | ||
| values: newValues, | ||
| }); | ||
| } | ||
| else if (isUnionType(type)) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| // this is for isTypeOf and resolveType and all the other stuff. | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${typeName}.${fieldName} was defined in resolvers, but ${typeName} is not an object or interface type`); | ||
| }); | ||
| } | ||
| else if (isObjectType(type) || isInterfaceType(type)) { | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| // this is for isTypeOf and resolveType and all the other stuff. | ||
| type[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| const fields = type.getFields(); | ||
| const field = fields[fieldName]; | ||
| if (field == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`); | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`); | ||
| }); | ||
| return new GraphQLUnionType(config); | ||
| } | ||
| }, | ||
| [MapperKind.OBJECT_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| if (resolverValue != null) { | ||
| const config = type.toConfig(); | ||
| const fields = config.fields; | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| const field = fields[fieldName]; | ||
| if (field == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`); | ||
| } | ||
| }); | ||
| return new GraphQLObjectType(config); | ||
| } | ||
| }, | ||
| [MapperKind.INTERFACE_TYPE]: type => { | ||
| const resolverValue = resolvers[type.name]; | ||
| if (resolverValue != null) { | ||
| const config = type.toConfig(); | ||
| const fields = config.fields; | ||
| Object.keys(resolverValue).forEach(fieldName => { | ||
| if (fieldName.startsWith('__')) { | ||
| config[fieldName.substring(2)] = resolverValue[fieldName]; | ||
| return; | ||
| } | ||
| const field = fields[fieldName]; | ||
| if (field == null) { | ||
| if (allowResolversNotInSchema) { | ||
| return; | ||
| } | ||
| throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`); | ||
| } | ||
| }); | ||
| return new GraphQLInterfaceType(config); | ||
| } | ||
| }, | ||
| [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => { | ||
| const resolverValue = resolvers[typeName]; | ||
| if (resolverValue != null) { | ||
| const fieldResolve = resolverValue[fieldName]; | ||
| if (typeof fieldResolve === 'function') { | ||
| // for convenience. Allows shorter syntax in resolver definition file | ||
| field.resolve = fieldResolve; | ||
| } | ||
| else { | ||
| if (typeof fieldResolve !== 'object') { | ||
| throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`); | ||
| if (fieldResolve != null) { | ||
| const newFieldConfig = { ...fieldConfig }; | ||
| if (typeof fieldResolve === 'function') { | ||
| // for convenience. Allows shorter syntax in resolver definition file | ||
| newFieldConfig.resolve = fieldResolve; | ||
| } | ||
| setFieldProperties(field, fieldResolve); | ||
| else { | ||
| if (typeof fieldResolve !== 'object') { | ||
| throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`); | ||
| } | ||
| setFieldProperties(newFieldConfig, fieldResolve); | ||
| } | ||
| return newFieldConfig; | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| }, | ||
| }); | ||
| checkForResolveTypeResolver(schema, requireResolversForResolveType); | ||
| // serialize all default values prior to healing fields with new scalar/enum types. | ||
| forEachDefaultValue(schema, serializeInputValue); | ||
| // schema may have new scalar/enum types that require healing | ||
| healSchema(schema); | ||
| // reparse all default values with new parsing functions. | ||
| forEachDefaultValue(schema, parseInputValue); | ||
| if (defaultFieldResolver != null) { | ||
| forEachField(schema, field => { | ||
| if (!field.resolve) { | ||
| field.resolve = defaultFieldResolver; | ||
| } | ||
| schema = mapSchema(schema, { | ||
| [MapperKind.OBJECT_FIELD]: fieldConfig => ({ | ||
| ...fieldConfig, | ||
| resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver, | ||
| }), | ||
| }); | ||
@@ -478,5 +523,7 @@ } | ||
| } | ||
| forEachField(schema, (field, typeName, fieldName) => { | ||
| const errorHint = `${typeName}.${fieldName}`; | ||
| field.resolve = decorateWithLogger(field.resolve, logger, errorHint); | ||
| return mapSchema(schema, { | ||
| [MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({ | ||
| ...fieldConfig, | ||
| resolve: decorateWithLogger(fieldConfig.resolve, logger, `${typeName}.${fieldName}`), | ||
| }), | ||
| }); | ||
@@ -496,5 +543,7 @@ } | ||
| function addCatchUndefinedToSchema(schema) { | ||
| forEachField(schema, (field, typeName, fieldName) => { | ||
| const errorHint = `${typeName}.${fieldName}`; | ||
| field.resolve = decorateToCatchUndefined(field.resolve, errorHint); | ||
| return mapSchema(schema, { | ||
| [MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({ | ||
| ...fieldConfig, | ||
| resolve: decorateToCatchUndefined(fieldConfig.resolve, `${typeName}.${fieldName}`), | ||
| }), | ||
| }); | ||
@@ -514,4 +563,4 @@ } | ||
| // Arguments are now validated and cleaned up | ||
| const schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions); | ||
| addResolversToSchema({ | ||
| let schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions); | ||
| schema = addResolversToSchema({ | ||
| schema, | ||
@@ -524,6 +573,6 @@ resolvers: resolverMap, | ||
| if (!allowUndefinedInResolve) { | ||
| addCatchUndefinedToSchema(schema); | ||
| schema = addCatchUndefinedToSchema(schema); | ||
| } | ||
| if (logger != null) { | ||
| addErrorLoggingToSchema(schema, logger); | ||
| schema = addErrorLoggingToSchema(schema, logger); | ||
| } | ||
@@ -533,4 +582,6 @@ if (typeof resolvers['__schema'] === 'function') { | ||
| // not doing that now, because I'd have to rewrite a lot of tests. | ||
| addSchemaLevelResolver(schema, resolvers['__schema']); | ||
| schema = addSchemaLevelResolver(schema, resolvers['__schema']); | ||
| } | ||
| // directive resolvers are implemented using SchemaDirectiveVisitor.visitSchemaDirectives | ||
| // schema visiting modifies the schema in place | ||
| if (directiveResolvers != null) { | ||
@@ -537,0 +588,0 @@ attachDirectiveResolvers(schema, directiveResolvers); |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.esm.js","sources":["../../../dist/schema/src/addSchemaLevelResolver.js","../../../dist/schema/src/assertResolversPresent.js","../../../dist/schema/src/attachDirectiveResolvers.js","../../../dist/schema/src/extensionDefinitions.js","../../../dist/schema/src/concatenateTypeDefs.js","../../../dist/schema/src/buildSchemaFromTypeDefinitions.js","../../../dist/schema/src/chainResolvers.js","../../../dist/schema/src/decorateWithLogger.js","../../../dist/schema/src/checkForResolveTypeResolver.js","../../../dist/schema/src/extendResolversFromInterfaces.js","../../../dist/schema/src/addResolversToSchema.js","../../../dist/schema/src/addErrorLoggingToSchema.js","../../../dist/schema/src/addCatchUndefinedToSchema.js","../../../dist/schema/src/makeExecutableSchema.js"],"sourcesContent":["import { defaultFieldResolver } from 'graphql';\n// wraps all resolvers of query, mutation or subscription fields\n// with the provided function to simulate a root schema level resolver\nexport function addSchemaLevelResolver(schema, fn) {\n // TODO test that schema is a schema, fn is a function\n const rootTypes = [schema.getQueryType(), schema.getMutationType(), schema.getSubscriptionType()].filter(x => Boolean(x));\n rootTypes.forEach(type => {\n if (type != null) {\n // XXX this should run at most once per request to simulate a true root resolver\n // for graphql-js this is an approximation that works with queries but not mutations\n const rootResolveFn = runAtMostOncePerRequest(fn);\n const fields = type.getFields();\n Object.keys(fields).forEach(fieldName => {\n // XXX if the type is a subscription, a same query AST will be ran multiple times so we\n // deactivate here the runOnce if it's a subscription. This may not be optimal though...\n if (type === schema.getSubscriptionType()) {\n fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, fn);\n }\n else {\n fields[fieldName].resolve = wrapResolver(fields[fieldName].resolve, rootResolveFn);\n }\n });\n }\n });\n}\n// XXX badly named function. this doesn't really wrap, it just chains resolvers...\nfunction wrapResolver(innerResolver, outerResolver) {\n return (obj, args, ctx, info) => resolveMaybePromise(outerResolver(obj, args, ctx, info), root => {\n if (innerResolver != null) {\n return innerResolver(root, args, ctx, info);\n }\n return defaultFieldResolver(root, args, ctx, info);\n });\n}\nfunction isPromise(maybePromise) {\n return maybePromise && typeof maybePromise.then === 'function';\n}\n// resolvers can be synchronous or asynchronous. if all resolvers\n// in an operation return synchronously, the execution should return\n// synchronously. the maybe-sync/maybe-async nature of resolvers should be\n// preserved\nfunction resolveMaybePromise(maybePromise, fulfillmentCallback) {\n if (isPromise(maybePromise)) {\n return maybePromise.then(fulfillmentCallback);\n }\n return fulfillmentCallback(maybePromise);\n}\n// XXX this function only works for resolvers\n// XXX very hacky way to remember if the function\n// already ran for this request. This will only work\n// if people don't actually cache the operation.\n// if they do cache the operation, they will have to\n// manually remove the __runAtMostOnce before every request.\nfunction runAtMostOncePerRequest(fn) {\n let value;\n const randomNumber = Math.random();\n return (root, args, ctx, info) => {\n if (!info.operation['__runAtMostOnce']) {\n info.operation['__runAtMostOnce'] = {};\n }\n if (!info.operation['__runAtMostOnce'][randomNumber]) {\n info.operation['__runAtMostOnce'][randomNumber] = true;\n value = fn(root, args, ctx, info);\n }\n return value;\n };\n}\n//# sourceMappingURL=addSchemaLevelResolver.js.map","import { getNamedType, isScalarType } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nexport function assertResolversPresent(schema, resolverValidationOptions = {}) {\n const { requireResolversForArgs = false, requireResolversForNonScalar = false, requireResolversForAllFields = false, } = resolverValidationOptions;\n if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n 'requireResolversForNonScalar, but not a combination of them.');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n // requires a resolver for *every* field.\n if (requireResolversForAllFields) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that has arguments\n if (requireResolversForArgs && field.args.length > 0) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that returns a non-scalar type\n if (requireResolversForNonScalar && !isScalarType(getNamedType(field.type))) {\n expectResolver(field, typeName, fieldName);\n }\n });\n}\nfunction expectResolver(field, typeName, fieldName) {\n if (!field.resolve) {\n // eslint-disable-next-line no-console\n console.warn(`Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this warning check pass;\nresolverValidationOptions: {\n requireResolversForNonScalar: false\n}\n `);\n return;\n }\n if (typeof field.resolve !== 'function') {\n throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n }\n}\n//# sourceMappingURL=assertResolversPresent.js.map","import { defaultFieldResolver } from 'graphql';\nimport { SchemaDirectiveVisitor } from '@graphql-tools/utils';\nexport function attachDirectiveResolvers(schema, directiveResolvers) {\n if (typeof directiveResolvers !== 'object') {\n throw new Error(`Expected directiveResolvers to be of type object, got ${typeof directiveResolvers}`);\n }\n if (Array.isArray(directiveResolvers)) {\n throw new Error('Expected directiveResolvers to be of type object, got Array');\n }\n const schemaDirectives = Object.create(null);\n Object.keys(directiveResolvers).forEach(directiveName => {\n schemaDirectives[directiveName] = class extends SchemaDirectiveVisitor {\n visitFieldDefinition(field) {\n const resolver = directiveResolvers[directiveName];\n const originalResolver = field.resolve != null ? field.resolve : defaultFieldResolver;\n const directiveArgs = this.args;\n field.resolve = (...args) => {\n const [source /* original args */, , context, info] = args;\n return resolver(() => new Promise((resolve, reject) => {\n const result = originalResolver.apply(field, args);\n if (result instanceof Error) {\n reject(result);\n }\n resolve(result);\n }), source, directiveArgs, context, info);\n };\n }\n };\n });\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n}\n//# sourceMappingURL=attachDirectiveResolvers.js.map","import { Kind } from 'graphql';\nexport function extractExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind === Kind.OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.UNION_TYPE_EXTENSION ||\n def.kind === Kind.ENUM_TYPE_EXTENSION ||\n def.kind === Kind.SCALAR_TYPE_EXTENSION ||\n def.kind === Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\nexport function filterExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind !== Kind.OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.INTERFACE_TYPE_EXTENSION &&\n def.kind !== Kind.INPUT_OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.UNION_TYPE_EXTENSION &&\n def.kind !== Kind.ENUM_TYPE_EXTENSION &&\n def.kind !== Kind.SCALAR_TYPE_EXTENSION &&\n def.kind !== Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\n//# sourceMappingURL=extensionDefinitions.js.map","import { print } from 'graphql';\nexport function concatenateTypeDefs(typeDefinitionsAry, calledFunctionRefs = []) {\n let resolvedTypeDefinitions = [];\n typeDefinitionsAry.forEach((typeDef) => {\n if (typeof typeDef === 'function') {\n if (calledFunctionRefs.indexOf(typeDef) === -1) {\n calledFunctionRefs.push(typeDef);\n resolvedTypeDefinitions = resolvedTypeDefinitions.concat(concatenateTypeDefs(typeDef(), calledFunctionRefs));\n }\n }\n else if (typeof typeDef === 'string') {\n resolvedTypeDefinitions.push(typeDef.trim());\n }\n else if (typeDef.kind !== undefined) {\n resolvedTypeDefinitions.push(print(typeDef).trim());\n }\n else {\n const type = typeof typeDef;\n throw new Error(`typeDef array must contain only strings, documents, or functions, got ${type}`);\n }\n });\n return uniq(resolvedTypeDefinitions.map(x => x.trim())).join('\\n');\n}\nfunction uniq(array) {\n return array.reduce((accumulator, currentValue) => accumulator.indexOf(currentValue) === -1 ? [...accumulator, currentValue] : accumulator, []);\n}\n//# sourceMappingURL=concatenateTypeDefs.js.map","import { parse, extendSchema, buildASTSchema } from 'graphql';\nimport { extractExtensionDefinitions, filterExtensionDefinitions } from './extensionDefinitions';\nimport { concatenateTypeDefs } from './concatenateTypeDefs';\nexport function buildSchemaFromTypeDefinitions(typeDefinitions, parseOptions) {\n const document = buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions);\n const typesAst = filterExtensionDefinitions(document);\n const backcompatOptions = { commentDescriptions: true };\n let schema = buildASTSchema(typesAst, backcompatOptions);\n const extensionsAst = extractExtensionDefinitions(document);\n if (extensionsAst.definitions.length > 0) {\n schema = extendSchema(schema, extensionsAst, backcompatOptions);\n }\n return schema;\n}\nexport function isDocumentNode(typeDefinitions) {\n return typeDefinitions.kind !== undefined;\n}\nexport function buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions) {\n let document;\n if (typeof typeDefinitions === 'string') {\n document = parse(typeDefinitions, parseOptions);\n }\n else if (Array.isArray(typeDefinitions)) {\n document = parse(concatenateTypeDefs(typeDefinitions), parseOptions);\n }\n else if (isDocumentNode(typeDefinitions)) {\n document = typeDefinitions;\n }\n else {\n const type = typeof typeDefinitions;\n throw new Error(`typeDefs must be a string, array or schema AST, got ${type}`);\n }\n return document;\n}\n//# sourceMappingURL=buildSchemaFromTypeDefinitions.js.map","import { defaultFieldResolver } from 'graphql';\nexport function chainResolvers(resolvers) {\n return (root, args, ctx, info) => resolvers.reduce((prev, curResolver) => {\n if (curResolver != null) {\n return curResolver(prev, args, ctx, info);\n }\n return defaultFieldResolver(prev, args, ctx, info);\n }, root);\n}\n//# sourceMappingURL=chainResolvers.js.map","import { defaultFieldResolver } from 'graphql';\n/*\n * fn: The function to decorate with the logger\n * logger: an object instance of type Logger\n * hint: an optional hint to add to the error's message\n */\nexport function decorateWithLogger(fn, logger, hint) {\n const resolver = fn != null ? fn : defaultFieldResolver;\n const logError = (e) => {\n // TODO: clone the error properly\n const newE = new Error();\n newE.stack = e.stack;\n /* istanbul ignore else: always get the hint from addErrorLoggingToSchema */\n if (hint) {\n newE['originalMessage'] = e.message;\n newE.message = `Error in resolver ${hint}\\n${e.message}`;\n }\n logger.log(newE);\n };\n return (root, args, ctx, info) => {\n try {\n const result = resolver(root, args, ctx, info);\n // If the resolver returns a Promise log any Promise rejects.\n if (result && typeof result.then === 'function' && typeof result.catch === 'function') {\n result.catch((reason) => {\n // make sure that it's an error we're logging.\n const error = reason instanceof Error ? reason : new Error(reason);\n logError(error);\n // We don't want to leave an unhandled exception so pass on error.\n return reason;\n });\n }\n return result;\n }\n catch (e) {\n logError(e);\n // we want to pass on the error, just in case.\n throw e;\n }\n };\n}\n//# sourceMappingURL=decorateWithLogger.js.map","import { isAbstractType } from 'graphql';\n// If we have any union or interface types throw if no there is no resolveType or isTypeOf resolvers\nexport function checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n Object.keys(schema.getTypeMap())\n .map(typeName => schema.getType(typeName))\n .forEach((type) => {\n if (!isAbstractType(type)) {\n return;\n }\n if (!type.resolveType) {\n if (!requireResolversForResolveType) {\n return;\n }\n throw new Error(`Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass false into ` +\n '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.');\n }\n });\n}\n//# sourceMappingURL=checkForResolveTypeResolver.js.map","export function extendResolversFromInterfaces(schema, resolvers) {\n const typeNames = Object.keys({\n ...schema.getTypeMap(),\n ...resolvers,\n });\n const extendedResolvers = {};\n typeNames.forEach(typeName => {\n const type = schema.getType(typeName);\n if ('getInterfaces' in type) {\n const allInterfaceResolvers = type\n .getInterfaces()\n .map(iFace => resolvers[iFace.name])\n .filter(interfaceResolvers => interfaceResolvers != null);\n extendedResolvers[typeName] = {};\n allInterfaceResolvers.forEach(interfaceResolvers => {\n Object.keys(interfaceResolvers).forEach(fieldName => {\n if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n extendedResolvers[typeName][fieldName] = interfaceResolvers[fieldName];\n }\n });\n });\n const typeResolvers = resolvers[typeName];\n extendedResolvers[typeName] = {\n ...extendedResolvers[typeName],\n ...typeResolvers,\n };\n }\n else {\n const typeResolvers = resolvers[typeName];\n if (typeResolvers != null) {\n extendedResolvers[typeName] = typeResolvers;\n }\n }\n });\n return extendedResolvers;\n}\n//# sourceMappingURL=extendResolversFromInterfaces.js.map","import { GraphQLEnumType, isSchema, isScalarType, isEnumType, isUnionType, isInterfaceType, isObjectType, } from 'graphql';\nimport { healSchema, forEachField, forEachDefaultValue, parseInputValue, serializeInputValue, } from '@graphql-tools/utils';\nimport { checkForResolveTypeResolver } from './checkForResolveTypeResolver';\nimport { extendResolversFromInterfaces } from './extendResolversFromInterfaces';\nexport function addResolversToSchema(schemaOrOptions, legacyInputResolvers, legacyInputValidationOptions) {\n const options = isSchema(schemaOrOptions)\n ? {\n schema: schemaOrOptions,\n resolvers: legacyInputResolvers,\n resolverValidationOptions: legacyInputValidationOptions,\n }\n : schemaOrOptions;\n const { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options;\n const { allowResolversNotInSchema = false, requireResolversForResolveType } = resolverValidationOptions;\n const resolvers = inheritResolversFromInterfaces\n ? extendResolversFromInterfaces(schema, inputResolvers)\n : inputResolvers;\n const typeMap = schema.getTypeMap();\n Object.keys(resolvers).forEach(typeName => {\n const resolverValue = resolvers[typeName];\n const resolverType = typeof resolverValue;\n if (typeName === '__schema') {\n if (resolverType !== 'function') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". A schema resolver's value must be of type object or function.`);\n }\n }\n else {\n if (resolverType !== 'object') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n }\n }\n const type = schema.getType(typeName);\n if (!type && typeName !== '__schema') {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`\"${typeName}\" defined in resolvers, but not in schema`);\n }\n if (isScalarType(type)) {\n // Support -- without recommending -- overriding default scalar types\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n });\n }\n else if (isEnumType(type)) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (!type.getValue(fieldName)) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${typeName}.${fieldName} was defined in resolvers, but not present within ${typeName}`);\n }\n });\n const config = type.toConfig();\n const values = type.getValues();\n const newValues = values.reduce((prev, value) => ({\n ...prev,\n [value.name]: {\n value: Object.keys(resolverValue).includes(value.name) ? resolverValue[value.name] : value.name,\n deprecationReason: value.deprecationReason,\n description: value.description,\n astNode: value.astNode,\n },\n }), {});\n // healSchema called later to update all fields to new type\n typeMap[typeName] = new GraphQLEnumType({\n ...config,\n values: newValues,\n });\n }\n else if (isUnionType(type)) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n type[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${typeName}.${fieldName} was defined in resolvers, but ${typeName} is not an object or interface type`);\n });\n }\n else if (isObjectType(type) || isInterfaceType(type)) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n type[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n const fields = type.getFields();\n const field = fields[fieldName];\n if (field == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`);\n }\n const fieldResolve = resolverValue[fieldName];\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n field.resolve = fieldResolve;\n }\n else {\n if (typeof fieldResolve !== 'object') {\n throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n }\n setFieldProperties(field, fieldResolve);\n }\n });\n }\n });\n checkForResolveTypeResolver(schema, requireResolversForResolveType);\n // serialize all default values prior to healing fields with new scalar/enum types.\n forEachDefaultValue(schema, serializeInputValue);\n // schema may have new scalar/enum types that require healing\n healSchema(schema);\n // reparse all default values with new parsing functions.\n forEachDefaultValue(schema, parseInputValue);\n if (defaultFieldResolver != null) {\n forEachField(schema, field => {\n if (!field.resolve) {\n field.resolve = defaultFieldResolver;\n }\n });\n }\n return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n Object.keys(propertiesObj).forEach(propertyName => {\n field[propertyName] = propertiesObj[propertyName];\n });\n}\n//# sourceMappingURL=addResolversToSchema.js.map","import { forEachField } from '@graphql-tools/utils';\nimport { decorateWithLogger } from './decorateWithLogger';\nexport function addErrorLoggingToSchema(schema, logger) {\n if (!logger) {\n throw new Error('Must provide a logger');\n }\n if (typeof logger.log !== 'function') {\n throw new Error('Logger.log must be a function');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n const errorHint = `${typeName}.${fieldName}`;\n field.resolve = decorateWithLogger(field.resolve, logger, errorHint);\n });\n}\n//# sourceMappingURL=addErrorLoggingToSchema.js.map","import { defaultFieldResolver } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nfunction decorateToCatchUndefined(fn, hint) {\n const resolve = fn == null ? defaultFieldResolver : fn;\n return (root, args, ctx, info) => {\n const result = resolve(root, args, ctx, info);\n if (typeof result === 'undefined') {\n throw new Error(`Resolver for \"${hint}\" returned undefined`);\n }\n return result;\n };\n}\nexport function addCatchUndefinedToSchema(schema) {\n forEachField(schema, (field, typeName, fieldName) => {\n const errorHint = `${typeName}.${fieldName}`;\n field.resolve = decorateToCatchUndefined(field.resolve, errorHint);\n });\n}\n//# sourceMappingURL=addCatchUndefinedToSchema.js.map","import { mergeDeep, SchemaDirectiveVisitor } from '@graphql-tools/utils';\nimport { addResolversToSchema } from './addResolversToSchema';\nimport { attachDirectiveResolvers } from './attachDirectiveResolvers';\nimport { assertResolversPresent } from './assertResolversPresent';\nimport { addSchemaLevelResolver } from './addSchemaLevelResolver';\nimport { buildSchemaFromTypeDefinitions } from './buildSchemaFromTypeDefinitions';\nimport { addErrorLoggingToSchema } from './addErrorLoggingToSchema';\nimport { addCatchUndefinedToSchema } from './addCatchUndefinedToSchema';\nexport function makeExecutableSchema({ typeDefs, resolvers = {}, logger, allowUndefinedInResolve = true, resolverValidationOptions = {}, directiveResolvers, schemaDirectives, parseOptions = {}, inheritResolversFromInterfaces = false, }) {\n // Validate and clean up arguments\n if (typeof resolverValidationOptions !== 'object') {\n throw new Error('Expected `resolverValidationOptions` to be an object');\n }\n if (!typeDefs) {\n throw new Error('Must provide typeDefs');\n }\n // We allow passing in an array of resolver maps, in which case we merge them\n const resolverMap = Array.isArray(resolvers) ? resolvers.reduce(mergeDeep, {}) : resolvers;\n // Arguments are now validated and cleaned up\n const schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions);\n addResolversToSchema({\n schema,\n resolvers: resolverMap,\n resolverValidationOptions,\n inheritResolversFromInterfaces,\n });\n assertResolversPresent(schema, resolverValidationOptions);\n if (!allowUndefinedInResolve) {\n addCatchUndefinedToSchema(schema);\n }\n if (logger != null) {\n addErrorLoggingToSchema(schema, logger);\n }\n if (typeof resolvers['__schema'] === 'function') {\n // TODO a bit of a hack now, better rewrite generateSchema to attach it there.\n // not doing that now, because I'd have to rewrite a lot of tests.\n addSchemaLevelResolver(schema, resolvers['__schema']);\n }\n if (directiveResolvers != null) {\n attachDirectiveResolvers(schema, directiveResolvers);\n }\n if (schemaDirectives != null) {\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n }\n return schema;\n}\n//# sourceMappingURL=makeExecutableSchema.js.map"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.esm.js","sources":["../../../dist/schema/src/addSchemaLevelResolver.js","../../../dist/schema/src/assertResolversPresent.js","../../../dist/schema/src/attachDirectiveResolvers.js","../../../dist/schema/src/extensionDefinitions.js","../../../dist/schema/src/concatenateTypeDefs.js","../../../dist/schema/src/buildSchemaFromTypeDefinitions.js","../../../dist/schema/src/chainResolvers.js","../../../dist/schema/src/decorateWithLogger.js","../../../dist/schema/src/checkForResolveTypeResolver.js","../../../dist/schema/src/extendResolversFromInterfaces.js","../../../dist/schema/src/addResolversToSchema.js","../../../dist/schema/src/addErrorLoggingToSchema.js","../../../dist/schema/src/addCatchUndefinedToSchema.js","../../../dist/schema/src/makeExecutableSchema.js"],"sourcesContent":["import { defaultFieldResolver } from 'graphql';\nimport { mapSchema, MapperKind } from '@graphql-tools/utils';\n// wraps all resolvers of query, mutation or subscription fields\n// with the provided function to simulate a root schema level resolver\nexport function addSchemaLevelResolver(schema, fn) {\n // TODO test that schema is a schema, fn is a function\n const fnToRunOnlyOnce = runAtMostOncePerRequest(fn);\n return mapSchema(schema, {\n [MapperKind.ROOT_FIELD]: (fieldConfig, _fieldName, typeName, schema) => {\n // XXX this should run at most once per request to simulate a true root resolver\n // for graphql-js this is an approximation that works with queries but not mutations\n // XXX if the type is a subscription, a same query AST will be ran multiple times so we\n // deactivate here the runOnce if it's a subscription. This may not be optimal though...\n const subscription = schema.getSubscriptionType();\n if (subscription != null && subscription.name === typeName) {\n return {\n ...fieldConfig,\n resolve: wrapResolver(fieldConfig.resolve, fn),\n };\n }\n return {\n ...fieldConfig,\n resolve: wrapResolver(fieldConfig.resolve, fnToRunOnlyOnce),\n };\n },\n });\n}\n// XXX badly named function. this doesn't really wrap, it just chains resolvers...\nfunction wrapResolver(innerResolver, outerResolver) {\n return (obj, args, ctx, info) => resolveMaybePromise(outerResolver(obj, args, ctx, info), root => {\n if (innerResolver != null) {\n return innerResolver(root, args, ctx, info);\n }\n return defaultFieldResolver(root, args, ctx, info);\n });\n}\nfunction isPromise(maybePromise) {\n return maybePromise && typeof maybePromise.then === 'function';\n}\n// resolvers can be synchronous or asynchronous. if all resolvers\n// in an operation return synchronously, the execution should return\n// synchronously. the maybe-sync/maybe-async nature of resolvers should be\n// preserved\nfunction resolveMaybePromise(maybePromise, fulfillmentCallback) {\n if (isPromise(maybePromise)) {\n return maybePromise.then(fulfillmentCallback);\n }\n return fulfillmentCallback(maybePromise);\n}\n// XXX this function only works for resolvers\n// XXX very hacky way to remember if the function\n// already ran for this request. This will only work\n// if people don't actually cache the operation.\n// if they do cache the operation, they will have to\n// manually remove the __runAtMostOnce before every request.\nfunction runAtMostOncePerRequest(fn) {\n let value;\n const randomNumber = Math.random();\n return (root, args, ctx, info) => {\n if (!info.operation['__runAtMostOnce']) {\n info.operation['__runAtMostOnce'] = {};\n }\n if (!info.operation['__runAtMostOnce'][randomNumber]) {\n info.operation['__runAtMostOnce'][randomNumber] = true;\n value = fn(root, args, ctx, info);\n }\n return value;\n };\n}\n//# sourceMappingURL=addSchemaLevelResolver.js.map","import { getNamedType, isScalarType } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nexport function assertResolversPresent(schema, resolverValidationOptions = {}) {\n const { requireResolversForArgs = false, requireResolversForNonScalar = false, requireResolversForAllFields = false, } = resolverValidationOptions;\n if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n 'requireResolversForNonScalar, but not a combination of them.');\n }\n forEachField(schema, (field, typeName, fieldName) => {\n // requires a resolver for *every* field.\n if (requireResolversForAllFields) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that has arguments\n if (requireResolversForArgs && field.args.length > 0) {\n expectResolver(field, typeName, fieldName);\n }\n // requires a resolver on every field that returns a non-scalar type\n if (requireResolversForNonScalar && !isScalarType(getNamedType(field.type))) {\n expectResolver(field, typeName, fieldName);\n }\n });\n}\nfunction expectResolver(field, typeName, fieldName) {\n if (!field.resolve) {\n // eslint-disable-next-line no-console\n console.warn(`Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this warning check pass;\nresolverValidationOptions: {\n requireResolversForNonScalar: false\n}\n `);\n return;\n }\n if (typeof field.resolve !== 'function') {\n throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n }\n}\n//# sourceMappingURL=assertResolversPresent.js.map","import { defaultFieldResolver } from 'graphql';\nimport { SchemaDirectiveVisitor } from '@graphql-tools/utils';\nexport function attachDirectiveResolvers(schema, directiveResolvers) {\n if (typeof directiveResolvers !== 'object') {\n throw new Error(`Expected directiveResolvers to be of type object, got ${typeof directiveResolvers}`);\n }\n if (Array.isArray(directiveResolvers)) {\n throw new Error('Expected directiveResolvers to be of type object, got Array');\n }\n const schemaDirectives = Object.create(null);\n Object.keys(directiveResolvers).forEach(directiveName => {\n schemaDirectives[directiveName] = class extends SchemaDirectiveVisitor {\n visitFieldDefinition(field) {\n const resolver = directiveResolvers[directiveName];\n const originalResolver = field.resolve != null ? field.resolve : defaultFieldResolver;\n const directiveArgs = this.args;\n field.resolve = (...args) => {\n const [source /* original args */, , context, info] = args;\n return resolver(() => new Promise((resolve, reject) => {\n const result = originalResolver.apply(field, args);\n if (result instanceof Error) {\n reject(result);\n }\n resolve(result);\n }), source, directiveArgs, context, info);\n };\n }\n };\n });\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n}\n//# sourceMappingURL=attachDirectiveResolvers.js.map","import { Kind } from 'graphql';\nexport function extractExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind === Kind.OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.UNION_TYPE_EXTENSION ||\n def.kind === Kind.ENUM_TYPE_EXTENSION ||\n def.kind === Kind.SCALAR_TYPE_EXTENSION ||\n def.kind === Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\nexport function filterExtensionDefinitions(ast) {\n const extensionDefs = ast.definitions.filter((def) => def.kind !== Kind.OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.INTERFACE_TYPE_EXTENSION &&\n def.kind !== Kind.INPUT_OBJECT_TYPE_EXTENSION &&\n def.kind !== Kind.UNION_TYPE_EXTENSION &&\n def.kind !== Kind.ENUM_TYPE_EXTENSION &&\n def.kind !== Kind.SCALAR_TYPE_EXTENSION &&\n def.kind !== Kind.SCHEMA_EXTENSION);\n return {\n ...ast,\n definitions: extensionDefs,\n };\n}\n//# sourceMappingURL=extensionDefinitions.js.map","import { print } from 'graphql';\nexport function concatenateTypeDefs(typeDefinitionsAry, calledFunctionRefs = []) {\n let resolvedTypeDefinitions = [];\n typeDefinitionsAry.forEach((typeDef) => {\n if (typeof typeDef === 'function') {\n if (calledFunctionRefs.indexOf(typeDef) === -1) {\n calledFunctionRefs.push(typeDef);\n resolvedTypeDefinitions = resolvedTypeDefinitions.concat(concatenateTypeDefs(typeDef(), calledFunctionRefs));\n }\n }\n else if (typeof typeDef === 'string') {\n resolvedTypeDefinitions.push(typeDef.trim());\n }\n else if (typeDef.kind !== undefined) {\n resolvedTypeDefinitions.push(print(typeDef).trim());\n }\n else {\n const type = typeof typeDef;\n throw new Error(`typeDef array must contain only strings, documents, or functions, got ${type}`);\n }\n });\n return uniq(resolvedTypeDefinitions.map(x => x.trim())).join('\\n');\n}\nfunction uniq(array) {\n return array.reduce((accumulator, currentValue) => accumulator.indexOf(currentValue) === -1 ? [...accumulator, currentValue] : accumulator, []);\n}\n//# sourceMappingURL=concatenateTypeDefs.js.map","import { parse, extendSchema, buildASTSchema } from 'graphql';\nimport { extractExtensionDefinitions, filterExtensionDefinitions } from './extensionDefinitions';\nimport { concatenateTypeDefs } from './concatenateTypeDefs';\nexport function buildSchemaFromTypeDefinitions(typeDefinitions, parseOptions) {\n const document = buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions);\n const typesAst = filterExtensionDefinitions(document);\n const backcompatOptions = { commentDescriptions: true };\n let schema = buildASTSchema(typesAst, backcompatOptions);\n const extensionsAst = extractExtensionDefinitions(document);\n if (extensionsAst.definitions.length > 0) {\n schema = extendSchema(schema, extensionsAst, backcompatOptions);\n }\n return schema;\n}\nexport function isDocumentNode(typeDefinitions) {\n return typeDefinitions.kind !== undefined;\n}\nexport function buildDocumentFromTypeDefinitions(typeDefinitions, parseOptions) {\n let document;\n if (typeof typeDefinitions === 'string') {\n document = parse(typeDefinitions, parseOptions);\n }\n else if (Array.isArray(typeDefinitions)) {\n document = parse(concatenateTypeDefs(typeDefinitions), parseOptions);\n }\n else if (isDocumentNode(typeDefinitions)) {\n document = typeDefinitions;\n }\n else {\n const type = typeof typeDefinitions;\n throw new Error(`typeDefs must be a string, array or schema AST, got ${type}`);\n }\n return document;\n}\n//# sourceMappingURL=buildSchemaFromTypeDefinitions.js.map","import { defaultFieldResolver } from 'graphql';\nexport function chainResolvers(resolvers) {\n return (root, args, ctx, info) => resolvers.reduce((prev, curResolver) => {\n if (curResolver != null) {\n return curResolver(prev, args, ctx, info);\n }\n return defaultFieldResolver(prev, args, ctx, info);\n }, root);\n}\n//# sourceMappingURL=chainResolvers.js.map","import { defaultFieldResolver } from 'graphql';\n/*\n * fn: The function to decorate with the logger\n * logger: an object instance of type Logger\n * hint: an optional hint to add to the error's message\n */\nexport function decorateWithLogger(fn, logger, hint) {\n const resolver = fn != null ? fn : defaultFieldResolver;\n const logError = (e) => {\n // TODO: clone the error properly\n const newE = new Error();\n newE.stack = e.stack;\n /* istanbul ignore else: always get the hint from addErrorLoggingToSchema */\n if (hint) {\n newE['originalMessage'] = e.message;\n newE.message = `Error in resolver ${hint}\\n${e.message}`;\n }\n logger.log(newE);\n };\n return (root, args, ctx, info) => {\n try {\n const result = resolver(root, args, ctx, info);\n // If the resolver returns a Promise log any Promise rejects.\n if (result && typeof result.then === 'function' && typeof result.catch === 'function') {\n result.catch((reason) => {\n // make sure that it's an error we're logging.\n const error = reason instanceof Error ? reason : new Error(reason);\n logError(error);\n // We don't want to leave an unhandled exception so pass on error.\n return reason;\n });\n }\n return result;\n }\n catch (e) {\n logError(e);\n // we want to pass on the error, just in case.\n throw e;\n }\n };\n}\n//# sourceMappingURL=decorateWithLogger.js.map","import { isAbstractType } from 'graphql';\n// If we have any union or interface types throw if no there is no resolveType or isTypeOf resolvers\nexport function checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n Object.keys(schema.getTypeMap())\n .map(typeName => schema.getType(typeName))\n .forEach((type) => {\n if (!isAbstractType(type)) {\n return;\n }\n if (!type.resolveType) {\n if (!requireResolversForResolveType) {\n return;\n }\n throw new Error(`Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass false into ` +\n '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.');\n }\n });\n}\n//# sourceMappingURL=checkForResolveTypeResolver.js.map","export function extendResolversFromInterfaces(schema, resolvers) {\n const typeNames = Object.keys({\n ...schema.getTypeMap(),\n ...resolvers,\n });\n const extendedResolvers = {};\n typeNames.forEach(typeName => {\n const type = schema.getType(typeName);\n if ('getInterfaces' in type) {\n const allInterfaceResolvers = type\n .getInterfaces()\n .map(iFace => resolvers[iFace.name])\n .filter(interfaceResolvers => interfaceResolvers != null);\n extendedResolvers[typeName] = {};\n allInterfaceResolvers.forEach(interfaceResolvers => {\n Object.keys(interfaceResolvers).forEach(fieldName => {\n if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n extendedResolvers[typeName][fieldName] = interfaceResolvers[fieldName];\n }\n });\n });\n const typeResolvers = resolvers[typeName];\n extendedResolvers[typeName] = {\n ...extendedResolvers[typeName],\n ...typeResolvers,\n };\n }\n else {\n const typeResolvers = resolvers[typeName];\n if (typeResolvers != null) {\n extendedResolvers[typeName] = typeResolvers;\n }\n }\n });\n return extendedResolvers;\n}\n//# sourceMappingURL=extendResolversFromInterfaces.js.map","import { GraphQLEnumType, isSchema, GraphQLScalarType, GraphQLUnionType, GraphQLInterfaceType, GraphQLObjectType, isSpecifiedScalarType, } from 'graphql';\nimport { mapSchema, MapperKind, } from '@graphql-tools/utils';\nimport { checkForResolveTypeResolver } from './checkForResolveTypeResolver';\nimport { extendResolversFromInterfaces } from './extendResolversFromInterfaces';\nexport function addResolversToSchema(schemaOrOptions, legacyInputResolvers, legacyInputValidationOptions) {\n const options = isSchema(schemaOrOptions)\n ? {\n schema: schemaOrOptions,\n resolvers: legacyInputResolvers,\n resolverValidationOptions: legacyInputValidationOptions,\n }\n : schemaOrOptions;\n let { schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, } = options;\n const { allowResolversNotInSchema = false, requireResolversForResolveType } = resolverValidationOptions;\n const resolvers = inheritResolversFromInterfaces\n ? extendResolversFromInterfaces(schema, inputResolvers)\n : inputResolvers;\n Object.keys(resolvers).forEach(typeName => {\n const resolverValue = resolvers[typeName];\n const resolverType = typeof resolverValue;\n if (typeName === '__schema') {\n if (resolverType !== 'function') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". A schema resolver's value must be of type object or function.`);\n }\n }\n else {\n if (resolverType !== 'object') {\n throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n }\n const type = schema.getType(typeName);\n if (type == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`\"${typeName}\" defined in resolvers, but not in schema`);\n }\n else if (isSpecifiedScalarType(type)) {\n // allow -- without recommending -- overriding of specified scalar types\n const resolverValue = resolvers[typeName];\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n type[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n type[fieldName] = resolverValue[fieldName];\n }\n });\n }\n }\n });\n schema = mapSchema(schema, {\n [MapperKind.SCALAR_TYPE]: type => {\n const config = type.toConfig();\n const resolverValue = resolvers[type.name];\n if (!isSpecifiedScalarType(type) && resolverValue != null) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else {\n config[fieldName] = resolverValue[fieldName];\n }\n });\n return new GraphQLScalarType(config);\n }\n },\n [MapperKind.ENUM_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n const config = type.toConfig();\n const enumValueConfigMap = config.values;\n if (resolverValue != null) {\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n }\n else if (!enumValueConfigMap[fieldName]) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`);\n }\n else {\n enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n }\n });\n return new GraphQLEnumType(config);\n }\n },\n [MapperKind.UNION_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n // this is for isTypeOf and resolveType and all the other stuff.\n config[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`);\n });\n return new GraphQLUnionType(config);\n }\n },\n [MapperKind.OBJECT_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n const fields = config.fields;\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n const field = fields[fieldName];\n if (field == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`);\n }\n });\n return new GraphQLObjectType(config);\n }\n },\n [MapperKind.INTERFACE_TYPE]: type => {\n const resolverValue = resolvers[type.name];\n if (resolverValue != null) {\n const config = type.toConfig();\n const fields = config.fields;\n Object.keys(resolverValue).forEach(fieldName => {\n if (fieldName.startsWith('__')) {\n config[fieldName.substring(2)] = resolverValue[fieldName];\n return;\n }\n const field = fields[fieldName];\n if (field == null) {\n if (allowResolversNotInSchema) {\n return;\n }\n throw new Error(`${type.name}.${fieldName} defined in resolvers, but not in schema`);\n }\n });\n return new GraphQLInterfaceType(config);\n }\n },\n [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {\n const resolverValue = resolvers[typeName];\n if (resolverValue != null) {\n const fieldResolve = resolverValue[fieldName];\n if (fieldResolve != null) {\n const newFieldConfig = { ...fieldConfig };\n if (typeof fieldResolve === 'function') {\n // for convenience. Allows shorter syntax in resolver definition file\n newFieldConfig.resolve = fieldResolve;\n }\n else {\n if (typeof fieldResolve !== 'object') {\n throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n }\n setFieldProperties(newFieldConfig, fieldResolve);\n }\n return newFieldConfig;\n }\n }\n },\n });\n checkForResolveTypeResolver(schema, requireResolversForResolveType);\n if (defaultFieldResolver != null) {\n schema = mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: fieldConfig => ({\n ...fieldConfig,\n resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver,\n }),\n });\n }\n return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n Object.keys(propertiesObj).forEach(propertyName => {\n field[propertyName] = propertiesObj[propertyName];\n });\n}\n//# sourceMappingURL=addResolversToSchema.js.map","import { mapSchema, MapperKind } from '@graphql-tools/utils';\nimport { decorateWithLogger } from './decorateWithLogger';\nexport function addErrorLoggingToSchema(schema, logger) {\n if (!logger) {\n throw new Error('Must provide a logger');\n }\n if (typeof logger.log !== 'function') {\n throw new Error('Logger.log must be a function');\n }\n return mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({\n ...fieldConfig,\n resolve: decorateWithLogger(fieldConfig.resolve, logger, `${typeName}.${fieldName}`),\n }),\n });\n}\n//# sourceMappingURL=addErrorLoggingToSchema.js.map","import { defaultFieldResolver } from 'graphql';\nimport { mapSchema, MapperKind } from '@graphql-tools/utils';\nfunction decorateToCatchUndefined(fn, hint) {\n const resolve = fn == null ? defaultFieldResolver : fn;\n return (root, args, ctx, info) => {\n const result = resolve(root, args, ctx, info);\n if (typeof result === 'undefined') {\n throw new Error(`Resolver for \"${hint}\" returned undefined`);\n }\n return result;\n };\n}\nexport function addCatchUndefinedToSchema(schema) {\n return mapSchema(schema, {\n [MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => ({\n ...fieldConfig,\n resolve: decorateToCatchUndefined(fieldConfig.resolve, `${typeName}.${fieldName}`),\n }),\n });\n}\n//# sourceMappingURL=addCatchUndefinedToSchema.js.map","import { mergeDeep, SchemaDirectiveVisitor } from '@graphql-tools/utils';\nimport { addResolversToSchema } from './addResolversToSchema';\nimport { attachDirectiveResolvers } from './attachDirectiveResolvers';\nimport { assertResolversPresent } from './assertResolversPresent';\nimport { addSchemaLevelResolver } from './addSchemaLevelResolver';\nimport { buildSchemaFromTypeDefinitions } from './buildSchemaFromTypeDefinitions';\nimport { addErrorLoggingToSchema } from './addErrorLoggingToSchema';\nimport { addCatchUndefinedToSchema } from './addCatchUndefinedToSchema';\nexport function makeExecutableSchema({ typeDefs, resolvers = {}, logger, allowUndefinedInResolve = true, resolverValidationOptions = {}, directiveResolvers, schemaDirectives, parseOptions = {}, inheritResolversFromInterfaces = false, }) {\n // Validate and clean up arguments\n if (typeof resolverValidationOptions !== 'object') {\n throw new Error('Expected `resolverValidationOptions` to be an object');\n }\n if (!typeDefs) {\n throw new Error('Must provide typeDefs');\n }\n // We allow passing in an array of resolver maps, in which case we merge them\n const resolverMap = Array.isArray(resolvers) ? resolvers.reduce(mergeDeep, {}) : resolvers;\n // Arguments are now validated and cleaned up\n let schema = buildSchemaFromTypeDefinitions(typeDefs, parseOptions);\n schema = addResolversToSchema({\n schema,\n resolvers: resolverMap,\n resolverValidationOptions,\n inheritResolversFromInterfaces,\n });\n assertResolversPresent(schema, resolverValidationOptions);\n if (!allowUndefinedInResolve) {\n schema = addCatchUndefinedToSchema(schema);\n }\n if (logger != null) {\n schema = addErrorLoggingToSchema(schema, logger);\n }\n if (typeof resolvers['__schema'] === 'function') {\n // TODO a bit of a hack now, better rewrite generateSchema to attach it there.\n // not doing that now, because I'd have to rewrite a lot of tests.\n schema = addSchemaLevelResolver(schema, resolvers['__schema']);\n }\n // directive resolvers are implemented using SchemaDirectiveVisitor.visitSchemaDirectives\n // schema visiting modifies the schema in place\n if (directiveResolvers != null) {\n attachDirectiveResolvers(schema, directiveResolvers);\n }\n if (schemaDirectives != null) {\n SchemaDirectiveVisitor.visitSchemaDirectives(schema, schemaDirectives);\n }\n return schema;\n}\n//# sourceMappingURL=makeExecutableSchema.js.map"],"names":[],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@graphql-tools/schema", | ||
| "version": "5.0.1-alpha-cf46456.0", | ||
| "version": "5.0.1-alpha-d0ee15c.0", | ||
| "description": "A set of utils for faster development of GraphQL tools", | ||
@@ -9,3 +9,3 @@ "peerDependencies": { | ||
| "dependencies": { | ||
| "@graphql-tools/utils": "5.0.1-alpha-cf46456.0", | ||
| "@graphql-tools/utils": "5.0.1-alpha-d0ee15c.0", | ||
| "tslib": "1.11.1" | ||
@@ -12,0 +12,0 @@ }, |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
159067
8.9%1243
8.94%7
-36.36%+ Added
- Removed