diff --git a/src/generate/addResolveFunctionsToSchema.ts b/src/generate/addResolveFunctionsToSchema.ts index c9fe386a72c..1b0dc06a37b 100644 --- a/src/generate/addResolveFunctionsToSchema.ts +++ b/src/generate/addResolveFunctionsToSchema.ts @@ -18,10 +18,13 @@ import { import SchemaError from './SchemaError'; import checkForResolveTypeResolver from './checkForResolveTypeResolver'; import extendResolversFromInterfaces from './extendResolversFromInterfaces'; -import forEachField from './forEachField'; -import forEachDefaultValue from './forEachDefaultValue'; -import { parseInputValue, serializeInputValue } from '../utils/transformInputValue'; -import { healSchema } from '../utils/heal'; +import { + parseInputValue, + serializeInputValue, + healSchema, + forEachField, + forEachDefaultValue, +} from '../utils'; function addResolveFunctionsToSchema( options: IAddResolveFunctionsToSchemaOptions | GraphQLSchema, diff --git a/src/generate/assertResolveFunctionsPresent.ts b/src/generate/assertResolveFunctionsPresent.ts index 9d170f237a6..ec51b3d0c90 100644 --- a/src/generate/assertResolveFunctionsPresent.ts +++ b/src/generate/assertResolveFunctionsPresent.ts @@ -5,7 +5,7 @@ import { GraphQLScalarType, } from 'graphql'; import { IResolverValidationOptions } from '../Interfaces'; -import forEachField from './forEachField'; +import { forEachField } from '../utils'; import SchemaError from './SchemaError'; function assertResolveFunctionsPresent( diff --git a/src/generate/index.ts b/src/generate/index.ts index 1cabbca287d..f447f981e1d 100644 --- a/src/generate/index.ts +++ b/src/generate/index.ts @@ -10,5 +10,4 @@ export { default as concatenateTypeDefs } from './concatenateTypeDefs'; export { default as decorateWithLogger } from './decorateWithLogger'; export { default as extendResolversFromInterfaces } from './extendResolversFromInterfaces'; export { default as extractExtensionDefinitions } from './extractExtensionDefinitions'; -export { default as forEachField } from './forEachField'; export { default as SchemaError } from './SchemaError'; diff --git a/src/makeExecutableSchema.ts b/src/makeExecutableSchema.ts index deedacd8378..e8fb4120e18 100644 --- a/src/makeExecutableSchema.ts +++ b/src/makeExecutableSchema.ts @@ -2,8 +2,11 @@ import { defaultFieldResolver, GraphQLSchema, GraphQLFieldResolver } from 'graph import { IExecutableSchemaDefinition, ILogger } from './Interfaces'; -import { SchemaDirectiveVisitor } from './utils/SchemaDirectiveVisitor'; -import mergeDeep from './utils/mergeDeep'; +import { + SchemaDirectiveVisitor, + forEachField, + mergeDeep +} from './utils'; import { attachDirectiveResolvers, @@ -13,7 +16,6 @@ import { addSchemaLevelResolveFunction, buildSchemaFromTypeDefinitions, decorateWithLogger, - forEachField, SchemaError } from './generate'; diff --git a/src/mock.ts b/src/mock.ts index 465b763f490..c6dc2a7dae6 100644 --- a/src/mock.ts +++ b/src/mock.ts @@ -16,10 +16,8 @@ import { GraphQLNonNull, } from 'graphql'; import * as uuid from 'uuid'; -import { - forEachField, - buildSchemaFromTypeDefinitions, -} from './makeExecutableSchema'; +import { buildSchemaFromTypeDefinitions } from './makeExecutableSchema'; +import { forEachField } from './utils'; import { IMocks, diff --git a/src/stitching/mergeSchemas.ts b/src/stitching/mergeSchemas.ts index 7ee934b6abc..a6d5977360f 100644 --- a/src/stitching/mergeSchemas.ts +++ b/src/stitching/mergeSchemas.ts @@ -1,6 +1,5 @@ import { DocumentNode, - GraphQLField, GraphQLNamedType, GraphQLObjectType, GraphQLResolveInfo, @@ -36,10 +35,15 @@ import { ExpandAbstractTypes, ReplaceFieldWithFragment, } from '../transforms'; -import mergeDeep from '../utils/mergeDeep'; -import { SchemaDirectiveVisitor } from '../utils/SchemaDirectiveVisitor'; -import { cloneDirective, cloneType } from '../utils/clone'; -import { healSchema, healTypes } from '../utils/heal'; +import { + SchemaDirectiveVisitor, + cloneDirective, + cloneType, + healSchema, + healTypes, + forEachField, + mergeDeep, +} from '../utils'; import { makeMergedType } from './makeMergedType'; type MergeTypeCandidate = { @@ -356,30 +360,6 @@ function createDelegatingResolver({ }; } -type FieldIteratorFn = ( - fieldDef: GraphQLField, - typeName: string, - fieldName: string, -) => void; - -function forEachField(schema: GraphQLSchema, fn: FieldIteratorFn): void { - const typeMap = schema.getTypeMap(); - Object.keys(typeMap).forEach(typeName => { - const type = typeMap[typeName]; - - if ( - !getNamedType(type).name.startsWith('__') && - type instanceof GraphQLObjectType - ) { - const fields = type.getFields(); - Object.keys(fields).forEach(fieldName => { - const field = fields[fieldName]; - fn(field, typeName, fieldName); - }); - } - }); -} - function addTypeCandidate( typeCandidates: { [name: string]: Array }, name: string, diff --git a/src/generate/forEachDefaultValue.ts b/src/utils/forEachDefaultValue.ts similarity index 88% rename from src/generate/forEachDefaultValue.ts rename to src/utils/forEachDefaultValue.ts index ef7655f7f87..189ced660fb 100644 --- a/src/generate/forEachDefaultValue.ts +++ b/src/utils/forEachDefaultValue.ts @@ -1,7 +1,7 @@ import { getNamedType, GraphQLInputObjectType, GraphQLSchema, GraphQLObjectType } from 'graphql'; import { IDefaultValueIteratorFn } from '../Interfaces'; -function forEachDefaultValue(schema: GraphQLSchema, fn: IDefaultValueIteratorFn): void { +export function forEachDefaultValue(schema: GraphQLSchema, fn: IDefaultValueIteratorFn): void { const typeMap = schema.getTypeMap(); Object.keys(typeMap).forEach(typeName => { @@ -27,5 +27,3 @@ function forEachDefaultValue(schema: GraphQLSchema, fn: IDefaultValueIteratorFn) } }); } - -export default forEachDefaultValue; diff --git a/src/generate/forEachField.ts b/src/utils/forEachField.ts similarity index 85% rename from src/generate/forEachField.ts rename to src/utils/forEachField.ts index f48da53a4b7..a75f866244b 100644 --- a/src/generate/forEachField.ts +++ b/src/utils/forEachField.ts @@ -1,7 +1,7 @@ import { getNamedType, GraphQLObjectType, GraphQLSchema } from 'graphql'; import { IFieldIteratorFn } from '../Interfaces'; -function forEachField(schema: GraphQLSchema, fn: IFieldIteratorFn): void { +export function forEachField(schema: GraphQLSchema, fn: IFieldIteratorFn): void { const typeMap = schema.getTypeMap(); Object.keys(typeMap).forEach(typeName => { const type = typeMap[typeName]; @@ -19,5 +19,3 @@ function forEachField(schema: GraphQLSchema, fn: IFieldIteratorFn): void { } }); } - -export default forEachField; diff --git a/src/utils/index.ts b/src/utils/index.ts index cabd47a08d5..7303b6f68fb 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -4,3 +4,12 @@ export { SchemaVisitor } from './SchemaVisitor'; export { SchemaDirectiveVisitor } from './SchemaDirectiveVisitor'; export { visitSchema } from './visitSchema'; export { getResolversFromSchema } from './getResolversFromSchema'; +export { forEachField } from './forEachField'; +export { forEachDefaultValue } from './forEachDefaultValue'; +export { + transformInputValue, + parseInputValue, + parseInputValueLiteral, + serializeInputValue, +} from './transformInputValue'; +export { mergeDeep } from './mergeDeep'; diff --git a/src/utils/mergeDeep.ts b/src/utils/mergeDeep.ts index 599ab656773..37ae2782a46 100644 --- a/src/utils/mergeDeep.ts +++ b/src/utils/mergeDeep.ts @@ -1,4 +1,4 @@ -export default function mergeDeep(target: any, source: any): any { +export function mergeDeep(target: any, source: any): any { let output = Object.assign({}, target); if (isObject(target) && isObject(source)) { Object.keys(source).forEach(key => {