From 9830fdabee232309d3ffb1423f616048b3a4f6e9 Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Mon, 10 May 2021 10:27:14 -0700 Subject: [PATCH] Update other duplicated callsites in extendSchema and lexicographicSortSchema --- src/index.d.ts | 2 - src/index.js | 2 - src/type/definition.d.ts | 8 +--- src/type/definition.js | 8 +--- src/type/index.d.ts | 2 - src/type/index.js | 2 - src/utilities/extendSchema.js | 56 +++++++++--------------- src/utilities/lexicographicSortSchema.js | 24 ++++------ 8 files changed, 32 insertions(+), 72 deletions(-) diff --git a/src/index.d.ts b/src/index.d.ts index ddf092347f..317602293e 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -160,14 +160,12 @@ export { GraphQLField, GraphQLFieldConfig, GraphQLFieldExtensions, - GraphQLFieldConfigArgumentMap, GraphQLFieldConfigMap, GraphQLFieldMap, GraphQLFieldResolver, GraphQLInputField, GraphQLInputFieldConfig, GraphQLInputFieldExtensions, - GraphQLInputFieldConfigMap, GraphQLInputFieldMap, GraphQLInputObjectTypeConfig, GraphQLInputObjectTypeExtensions, diff --git a/src/index.js b/src/index.js index a9864a384f..b46f10cd3a 100644 --- a/src/index.js +++ b/src/index.js @@ -153,13 +153,11 @@ export type { GraphQLEnumValueConfigMap, GraphQLField, GraphQLFieldConfig, - GraphQLFieldConfigArgumentMap, GraphQLFieldConfigMap, GraphQLFieldMap, GraphQLFieldResolver, GraphQLInputField, GraphQLInputFieldConfig, - GraphQLInputFieldConfigMap, GraphQLInputFieldMap, GraphQLInputObjectTypeConfig, GraphQLInterfaceTypeConfig, diff --git a/src/type/definition.d.ts b/src/type/definition.d.ts index 3614db5b1b..f07202d91a 100644 --- a/src/type/definition.d.ts +++ b/src/type/definition.d.ts @@ -516,7 +516,7 @@ export interface GraphQLFieldConfig< > { description?: Maybe; type: GraphQLOutputType; - args?: GraphQLFieldConfigArgumentMap; + args?: ObjMap; resolve?: GraphQLFieldResolver; subscribe?: GraphQLFieldResolver; deprecationReason?: Maybe; @@ -526,8 +526,6 @@ export interface GraphQLFieldConfig< astNode?: Maybe; } -export type GraphQLFieldConfigArgumentMap = ObjMap; - /** * Custom extensions * @@ -885,7 +883,7 @@ export class GraphQLInputObjectType { getFields(): GraphQLInputFieldMap; toConfig(): GraphQLInputObjectTypeConfig & { - fields: GraphQLInputFieldConfigMap; + fields: ObjMap; extensions: Maybe>; extensionASTNodes: ReadonlyArray; }; @@ -920,8 +918,6 @@ export interface GraphQLInputFieldExtensions { export type GraphQLInputFieldConfig = GraphQLInputValueConfig; -export type GraphQLInputFieldConfigMap = ObjMap; - export type GraphQLInputField = GraphQLInputValue; export function isRequiredInputField(field: GraphQLInputField): boolean; diff --git a/src/type/definition.js b/src/type/definition.js index 8a7f0a72b1..c16433d5b3 100644 --- a/src/type/definition.js +++ b/src/type/definition.js @@ -918,7 +918,7 @@ export type GraphQLFieldConfig< > = {| description?: ?string, type: GraphQLOutputType, - args?: GraphQLFieldConfigArgumentMap, + args?: ObjMap, resolve?: GraphQLFieldResolver, subscribe?: GraphQLFieldResolver, deprecationReason?: ?string, @@ -926,8 +926,6 @@ export type GraphQLFieldConfig< astNode?: ?FieldDefinitionNode, |}; -export type GraphQLFieldConfigArgumentMap = ObjMap; - export type GraphQLArgumentConfig = GraphQLInputValueConfig; export type GraphQLFieldConfigMap = ObjMap< @@ -1561,15 +1559,13 @@ export type GraphQLInputObjectTypeConfig = {| type GraphQLInputObjectTypeNormalizedConfig = {| ...GraphQLInputObjectTypeConfig, - fields: GraphQLInputFieldConfigMap, + fields: ObjMap, extensions: ?ReadOnlyObjMap, extensionASTNodes: $ReadOnlyArray, |}; export type GraphQLInputFieldConfig = GraphQLInputValueConfig; -export type GraphQLInputFieldConfigMap = ObjMap; - export type GraphQLInputField = GraphQLInputValue; export const isRequiredInputField = isRequiredInput; diff --git a/src/type/index.d.ts b/src/type/index.d.ts index fc7c22ead8..365256dfd1 100644 --- a/src/type/index.d.ts +++ b/src/type/index.d.ts @@ -91,14 +91,12 @@ export { GraphQLEnumValueExtensions, GraphQLField, GraphQLFieldConfig, - GraphQLFieldConfigArgumentMap, GraphQLFieldConfigMap, GraphQLFieldExtensions, GraphQLFieldMap, GraphQLFieldResolver, GraphQLInputField, GraphQLInputFieldConfig, - GraphQLInputFieldConfigMap, GraphQLInputFieldExtensions, GraphQLInputFieldMap, GraphQLInputObjectTypeConfig, diff --git a/src/type/index.js b/src/type/index.js index 851d9a192d..6bf0943f22 100644 --- a/src/type/index.js +++ b/src/type/index.js @@ -143,13 +143,11 @@ export type { GraphQLEnumValueConfigMap, GraphQLField, GraphQLFieldConfig, - GraphQLFieldConfigArgumentMap, GraphQLFieldConfigMap, GraphQLFieldMap, GraphQLFieldResolver, GraphQLInputField, GraphQLInputFieldConfig, - GraphQLInputFieldConfigMap, GraphQLInputFieldMap, GraphQLInputObjectTypeConfig, GraphQLInterfaceTypeConfig, diff --git a/src/utilities/extendSchema.js b/src/utilities/extendSchema.js index 4aeac58584..9c55417d95 100644 --- a/src/utilities/extendSchema.js +++ b/src/utilities/extendSchema.js @@ -1,3 +1,4 @@ +import type { ObjMap } from '../jsutils/ObjMap'; import { keyMap } from '../jsutils/keyMap'; import { inspect } from '../jsutils/inspect'; import { mapValue } from '../jsutils/mapValue'; @@ -47,10 +48,9 @@ import type { GraphQLNamedType, GraphQLFieldConfig, GraphQLFieldConfigMap, + GraphQLInputValueConfig, GraphQLArgumentConfig, - GraphQLFieldConfigArgumentMap, GraphQLEnumValueConfigMap, - GraphQLInputFieldConfigMap, } from '../type/definition'; import { assertSchema, GraphQLSchema } from '../type/schema'; import { specifiedScalarTypes, isSpecifiedScalarType } from '../type/scalars'; @@ -444,7 +444,7 @@ export function extendSchemaImpl( // $FlowFixMe[incompatible-call] locations: node.locations.map(({ value }) => value), isRepeatable: node.repeatable, - args: buildArgumentMap(node.arguments), + args: buildInputValueMap(node.arguments), astNode: node, }); } @@ -469,7 +469,7 @@ export function extendSchemaImpl( // with validateSchema() will produce more actionable results. type: getWrappedType(field.type), description: field.description?.value, - args: buildArgumentMap(field.arguments), + args: buildInputValueMap(field.arguments), deprecationReason: getDeprecationReason(field), astNode: field, }; @@ -478,54 +478,38 @@ export function extendSchemaImpl( return fieldConfigMap; } - function buildArgumentMap( - args: ?$ReadOnlyArray, - ): GraphQLFieldConfigArgumentMap { + function buildInputValueMap( + nodes: ?$ReadOnlyArray, + configMap: ObjMap = Object.create(null), + ): ObjMap { // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203') - const argsNodes = args ?? []; + const inputNodes = nodes ?? []; - const argConfigMap = Object.create(null); - for (const arg of argsNodes) { + for (const node of inputNodes) { // Note: While this could make assertions to get the correctly typed // value, that would throw immediately while type system validation // with validateSchema() will produce more actionable results. - const type: any = getWrappedType(arg.type); + const type: any = getWrappedType(node.type); - argConfigMap[arg.name.value] = { + configMap[node.name.value] = { type, - description: arg.description?.value, - defaultValue: valueFromAST(arg.defaultValue, type), - deprecationReason: getDeprecationReason(arg), - astNode: arg, + description: node.description?.value, + defaultValue: valueFromAST(node.defaultValue, type), + deprecationReason: getDeprecationReason(node), + astNode: node, }; } - return argConfigMap; + return configMap; } function buildInputFieldMap( nodes: $ReadOnlyArray< InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode, >, - ): GraphQLInputFieldConfigMap { - const inputFieldMap = Object.create(null); + ): ObjMap { + let inputFieldMap = Object.create(null); for (const node of nodes) { - // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203') - const fieldsNodes = node.fields ?? []; - - for (const field of fieldsNodes) { - // Note: While this could make assertions to get the correctly typed - // value, that would throw immediately while type system validation - // with validateSchema() will produce more actionable results. - const type: any = getWrappedType(field.type); - - inputFieldMap[field.name.value] = { - type, - description: field.description?.value, - defaultValue: valueFromAST(field.defaultValue, type), - deprecationReason: getDeprecationReason(field), - astNode: field, - }; - } + inputFieldMap = buildInputValueMap(node.fields, inputFieldMap); } return inputFieldMap; } diff --git a/src/utilities/lexicographicSortSchema.js b/src/utilities/lexicographicSortSchema.js index 291248ec1a..03918ce344 100644 --- a/src/utilities/lexicographicSortSchema.js +++ b/src/utilities/lexicographicSortSchema.js @@ -8,8 +8,7 @@ import type { GraphQLType, GraphQLNamedType, GraphQLFieldConfigMap, - GraphQLFieldConfigArgumentMap, - GraphQLInputFieldConfigMap, + GraphQLInputValueConfig, } from '../type/definition'; import { GraphQLSchema } from '../type/schema'; import { GraphQLDirective } from '../type/directives'; @@ -79,14 +78,14 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema { return new GraphQLDirective({ ...config, locations: sortBy(config.locations, (x) => x), - args: sortArgs(config.args), + args: sortInputs(config.args), }); } - function sortArgs(args: GraphQLFieldConfigArgumentMap) { - return sortObjMap(args, (arg) => ({ - ...arg, - type: replaceType(arg.type), + function sortInputs(inputs: ObjMap) { + return sortObjMap(inputs, (input) => ({ + ...input, + type: replaceType(input.type), })); } @@ -94,14 +93,7 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema { return sortObjMap(fieldsMap, (field) => ({ ...field, type: replaceType(field.type), - args: sortArgs(field.args), - })); - } - - function sortInputFields(fieldsMap: GraphQLInputFieldConfigMap) { - return sortObjMap(fieldsMap, (field) => ({ - ...field, - type: replaceType(field.type), + args: sortInputs(field.args), })); } @@ -148,7 +140,7 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema { const config = type.toConfig(); return new GraphQLInputObjectType({ ...config, - fields: () => sortInputFields(config.fields), + fields: () => sortInputs(config.fields), }); }