Skip to content

Commit

Permalink
fix(merge): support multidimensional arrays (#1789)
Browse files Browse the repository at this point in the history
  • Loading branch information
ardatan committed Jul 16, 2020
1 parent a511a0f commit 24101f9
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 16 deletions.
11 changes: 9 additions & 2 deletions packages/merge/src/merge-resolvers.ts
Expand Up @@ -48,13 +48,20 @@ export function mergeResolvers<TContext, T extends ResolversDefinition<TContext>
}

if (resolversDefinitions.length === 1) {
return resolversDefinitions[0];
const singleDefinition = resolversDefinitions[0];
if (Array.isArray(singleDefinition)) {
return mergeResolvers(singleDefinition);
}
return singleDefinition;
}

const resolversFactories = new Array<ResolversFactory<TContext>>();
const resolvers = new Array<IResolvers<any, TContext>>();

for (const resolversDefinition of resolversDefinitions) {
for (let resolversDefinition of resolversDefinitions) {
if (Array.isArray(resolversDefinition)) {
resolversDefinition = mergeResolvers(resolversDefinition);
}
if (typeof resolversDefinition === 'function') {
resolversFactories.push(resolversDefinition as ResolversFactory<TContext>);
} else if (typeof resolversDefinition === 'object') {
Expand Down
17 changes: 3 additions & 14 deletions packages/merge/src/typedefs-mergers/merge-typedefs.ts
Expand Up @@ -59,20 +59,6 @@ export interface Config {
convertExtensions?: boolean;
}

export function mergeGraphQLSchemas(
types: Array<string | Source | DocumentNode | GraphQLSchema>,
config?: Omit<Partial<Config>, 'commentDescriptions'>
) {
// tslint:disable-next-line: no-console
console.info(`
GraphQL tools/Epoxy
Deprecation Notice;
'mergeGraphQLSchemas' is deprecated and will be removed in the next version.
Please use 'mergeTypeDefs' instead!
`);
return mergeGraphQLTypes(types, config);
}

/**
* Merges multiple type definitions into a single `DocumentNode`
* @param types The type definitions to be merged
Expand Down Expand Up @@ -124,6 +110,9 @@ export function mergeGraphQLTypes(

const allNodes: ReadonlyArray<DefinitionNode> = types
.map<DocumentNode>(type => {
if (Array.isArray(type)) {
type = mergeTypeDefs(type);
}
if (isSchema(type)) {
return parse(printSchemaWithDirectives(type));
} else if (isStringTypes(type) || isSourceTypes(type)) {
Expand Down

0 comments on commit 24101f9

Please sign in to comment.