Skip to content

Commit

Permalink
fix for missing modifiers with preResolveType (#2175) (#2270)
Browse files Browse the repository at this point in the history
  • Loading branch information
dotansimha committed Aug 1, 2019
1 parent 1559ab6 commit 9a53d8d
Show file tree
Hide file tree
Showing 9 changed files with 70 additions and 15 deletions.
9 changes: 9 additions & 0 deletions dev-test/codegen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,15 @@ generates:
plugins:
- typescript
- typescript-operations
./dev-test/test-schema/types.preResolveTypes.ts:
schema: ./dev-test/test-schema/schema.graphql
documents:
- "query test { testArr1 testArr2 testArr3 }"
config:
preResolveTypes: true
plugins:
- typescript
- typescript-operations
./dev-test/star-wars/types.d.ts:
schema: ./dev-test/star-wars/schema.json
documents: ./dev-test/star-wars/**/*.graphql
Expand Down
4 changes: 2 additions & 2 deletions dev-test/githunt/types.preResolveTypes.compatibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ export type CommentQueryVariables = {
};


export type CommentQuery = { __typename?: 'Query', currentUser: Maybe<{ __typename?: 'User', login: string, html_url: string }>, entry: Maybe<{ __typename?: 'Entry', id: number, createdAt: number, commentCount: number, postedBy: { __typename?: 'User', login: string, html_url: string }, comments: Array<Maybe<({ __typename?: 'Comment' } & CommentsPageCommentFragment)>>, repository: ({ __typename?: 'Repository', full_name: string, html_url: string } & { __typename?: 'Repository', description: string, open_issues_count: number, stargazers_count: number }) }> };
export type CommentQuery = { __typename?: 'Query', currentUser: Maybe<{ __typename?: 'User', login: string, html_url: string }>, entry: Maybe<{ __typename?: 'Entry', id: number, createdAt: number, commentCount: number, postedBy: { __typename?: 'User', login: string, html_url: string }, comments: Array<Maybe<({ __typename?: 'Comment' } & CommentsPageCommentFragment)>>, repository: ({ __typename?: 'Repository', full_name: string, html_url: string } & { __typename?: 'Repository', description: Maybe<string>, open_issues_count: Maybe<number>, stargazers_count: number }) }> };

export type CommentsPageCommentFragment = { __typename?: 'Comment', id: number, createdAt: number, content: string, postedBy: { __typename?: 'User', login: string, html_url: string } };

Expand All @@ -208,7 +208,7 @@ export type SubmitRepositoryMutationVariables = {

export type SubmitRepositoryMutation = { __typename?: 'Mutation', submitRepository: Maybe<{ __typename?: 'Entry', createdAt: number }> };

export type RepoInfoFragment = { __typename?: 'Entry', createdAt: number, repository: { __typename?: 'Repository', description: string, stargazers_count: number, open_issues_count: number }, postedBy: { __typename?: 'User', html_url: string, login: string } };
export type RepoInfoFragment = { __typename?: 'Entry', createdAt: number, repository: { __typename?: 'Repository', description: Maybe<string>, stargazers_count: number, open_issues_count: Maybe<number> }, postedBy: { __typename?: 'User', html_url: string, login: string } };

export type SubmitCommentMutationVariables = {
repoFullName: Scalars['String'],
Expand Down
4 changes: 2 additions & 2 deletions dev-test/githunt/types.preResolveTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ export type CommentQueryVariables = {
};


export type CommentQuery = { __typename?: 'Query', currentUser: Maybe<{ __typename?: 'User', login: string, html_url: string }>, entry: Maybe<{ __typename?: 'Entry', id: number, createdAt: number, commentCount: number, postedBy: { __typename?: 'User', login: string, html_url: string }, comments: Array<Maybe<({ __typename?: 'Comment' } & CommentsPageCommentFragment)>>, repository: ({ __typename?: 'Repository', full_name: string, html_url: string } & { __typename?: 'Repository', description: string, open_issues_count: number, stargazers_count: number }) }> };
export type CommentQuery = { __typename?: 'Query', currentUser: Maybe<{ __typename?: 'User', login: string, html_url: string }>, entry: Maybe<{ __typename?: 'Entry', id: number, createdAt: number, commentCount: number, postedBy: { __typename?: 'User', login: string, html_url: string }, comments: Array<Maybe<({ __typename?: 'Comment' } & CommentsPageCommentFragment)>>, repository: ({ __typename?: 'Repository', full_name: string, html_url: string } & { __typename?: 'Repository', description: Maybe<string>, open_issues_count: Maybe<number>, stargazers_count: number }) }> };

export type CommentsPageCommentFragment = { __typename?: 'Comment', id: number, createdAt: number, content: string, postedBy: { __typename?: 'User', login: string, html_url: string } };

Expand All @@ -208,7 +208,7 @@ export type SubmitRepositoryMutationVariables = {

export type SubmitRepositoryMutation = { __typename?: 'Mutation', submitRepository: Maybe<{ __typename?: 'Entry', createdAt: number }> };

export type RepoInfoFragment = { __typename?: 'Entry', createdAt: number, repository: { __typename?: 'Repository', description: string, stargazers_count: number, open_issues_count: number }, postedBy: { __typename?: 'User', html_url: string, login: string } };
export type RepoInfoFragment = { __typename?: 'Entry', createdAt: number, repository: { __typename?: 'Repository', description: Maybe<string>, stargazers_count: number, open_issues_count: Maybe<number> }, postedBy: { __typename?: 'User', html_url: string, login: string } };

export type SubmitCommentMutationVariables = {
repoFullName: Scalars['String'],
Expand Down
4 changes: 2 additions & 2 deletions dev-test/githunt/types.reactApollo.preResolveTypes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ export type CommentQueryVariables = {
};


export type CommentQuery = { __typename?: 'Query', currentUser: Maybe<{ __typename?: 'User', login: string, html_url: string }>, entry: Maybe<{ __typename?: 'Entry', id: number, createdAt: number, commentCount: number, postedBy: { __typename?: 'User', login: string, html_url: string }, comments: Array<Maybe<({ __typename?: 'Comment' } & CommentsPageCommentFragment)>>, repository: ({ __typename?: 'Repository', full_name: string, html_url: string } & { __typename?: 'Repository', description: string, open_issues_count: number, stargazers_count: number }) }> };
export type CommentQuery = { __typename?: 'Query', currentUser: Maybe<{ __typename?: 'User', login: string, html_url: string }>, entry: Maybe<{ __typename?: 'Entry', id: number, createdAt: number, commentCount: number, postedBy: { __typename?: 'User', login: string, html_url: string }, comments: Array<Maybe<({ __typename?: 'Comment' } & CommentsPageCommentFragment)>>, repository: ({ __typename?: 'Repository', full_name: string, html_url: string } & { __typename?: 'Repository', description: Maybe<string>, open_issues_count: Maybe<number>, stargazers_count: number }) }> };

export type CommentsPageCommentFragment = { __typename?: 'Comment', id: number, createdAt: number, content: string, postedBy: { __typename?: 'User', login: string, html_url: string } };

Expand All @@ -213,7 +213,7 @@ export type SubmitRepositoryMutationVariables = {

export type SubmitRepositoryMutation = { __typename?: 'Mutation', submitRepository: Maybe<{ __typename?: 'Entry', createdAt: number }> };

export type RepoInfoFragment = { __typename?: 'Entry', createdAt: number, repository: { __typename?: 'Repository', description: string, stargazers_count: number, open_issues_count: number }, postedBy: { __typename?: 'User', html_url: string, login: string } };
export type RepoInfoFragment = { __typename?: 'Entry', createdAt: number, repository: { __typename?: 'Repository', description: Maybe<string>, stargazers_count: number, open_issues_count: Maybe<number> }, postedBy: { __typename?: 'User', html_url: string, login: string } };

export type SubmitCommentMutationVariables = {
repoFullName: Scalars['String'],
Expand Down
14 changes: 7 additions & 7 deletions dev-test/star-wars/types.preResolveTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ export type CreateReviewForEpisodeMutationVariables = {
};


export type CreateReviewForEpisodeMutation = { __typename?: 'Mutation', createReview: Maybe<{ __typename?: 'Review', stars: number, commentary: string }> };
export type CreateReviewForEpisodeMutation = { __typename?: 'Mutation', createReview: Maybe<{ __typename?: 'Review', stars: number, commentary: Maybe<string> }> };

export type HeroAndFriendsNamesQueryVariables = {
episode?: Maybe<Episode>
Expand All @@ -264,14 +264,14 @@ export type HeroAndFriendsNamesQuery = { __typename?: 'Query', hero: Maybe<{ __t
export type HeroAppearsInQueryVariables = {};


export type HeroAppearsInQuery = { __typename?: 'Query', hero: Maybe<{ __typename?: 'Human' | 'Droid', name: string, appearsIn: Episode }> };
export type HeroAppearsInQuery = { __typename?: 'Query', hero: Maybe<{ __typename?: 'Human' | 'Droid', name: string, appearsIn: Array<Maybe<Episode>> }> };

export type HeroDetailsQueryVariables = {
episode?: Maybe<Episode>
};


export type HeroDetailsQuery = { __typename?: 'Query', hero: Maybe<({ __typename?: 'Human' | 'Droid', name: string } & ({ __typename?: 'Human', height: number } | { __typename?: 'Droid', primaryFunction: string }))> };
export type HeroDetailsQuery = { __typename?: 'Query', hero: Maybe<({ __typename?: 'Human' | 'Droid', name: string } & ({ __typename?: 'Human', height: Maybe<number> } | { __typename?: 'Droid', primaryFunction: Maybe<string> }))> };

export type HeroDetailsWithFragmentQueryVariables = {
episode?: Maybe<Episode>
Expand All @@ -280,7 +280,7 @@ export type HeroDetailsWithFragmentQueryVariables = {

export type HeroDetailsWithFragmentQuery = { __typename?: 'Query', hero: Maybe<({ __typename?: 'Human' | 'Droid' } & HeroDetailsFragment)> };

export type HeroDetailsFragment = ({ __typename?: 'Human' | 'Droid', name: string } & ({ __typename?: 'Human', height: number } | { __typename?: 'Droid', primaryFunction: string }));
export type HeroDetailsFragment = ({ __typename?: 'Human' | 'Droid', name: string } & ({ __typename?: 'Human', height: Maybe<number> } | { __typename?: 'Droid', primaryFunction: Maybe<string> }));

export type HeroNameQueryVariables = {
episode?: Maybe<Episode>
Expand Down Expand Up @@ -310,19 +310,19 @@ export type HeroParentTypeDependentFieldQueryVariables = {
};


export type HeroParentTypeDependentFieldQuery = { __typename?: 'Query', hero: Maybe<({ __typename?: 'Human' | 'Droid', name: string } & ({ __typename?: 'Human', friends: Maybe<Array<Maybe<({ __typename?: 'Human' | 'Droid', name: string } & { __typename?: 'Human', height: number })>>> } | { __typename?: 'Droid', friends: Maybe<Array<Maybe<({ __typename?: 'Human' | 'Droid', name: string } & { __typename?: 'Human', height: number })>>> }))> };
export type HeroParentTypeDependentFieldQuery = { __typename?: 'Query', hero: Maybe<({ __typename?: 'Human' | 'Droid', name: string } & ({ __typename?: 'Human', friends: Maybe<Array<Maybe<({ __typename?: 'Human' | 'Droid', name: string } & { __typename?: 'Human', height: Maybe<number> })>>> } | { __typename?: 'Droid', friends: Maybe<Array<Maybe<({ __typename?: 'Human' | 'Droid', name: string } & { __typename?: 'Human', height: Maybe<number> })>>> }))> };

export type HeroTypeDependentAliasedFieldQueryVariables = {
episode?: Maybe<Episode>
};


export type HeroTypeDependentAliasedFieldQuery = { __typename?: 'Query', hero: Maybe<({ __typename?: 'Human' | 'Droid' } & ({ __typename?: 'Human', property: string } | { __typename?: 'Droid', property: string }))> };
export type HeroTypeDependentAliasedFieldQuery = { __typename?: 'Query', hero: Maybe<({ __typename?: 'Human' | 'Droid' } & ({ __typename?: 'Human', property: Maybe<string> } | { __typename?: 'Droid', property: Maybe<string> }))> };

export type HumanWithNullHeightQueryVariables = {};


export type HumanWithNullHeightQuery = { __typename?: 'Query', human: Maybe<{ __typename?: 'Human', name: string, mass: number }> };
export type HumanWithNullHeightQuery = { __typename?: 'Query', human: Maybe<{ __typename?: 'Human', name: string, mass: Maybe<number> }> };

export type TwoHeroesQueryVariables = {};

Expand Down
6 changes: 6 additions & 0 deletions dev-test/test-schema/resolvers-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ export type Query = {
allUsers: Array<Maybe<User>>,
userById?: Maybe<User>,
answer: Array<Scalars['Int']>,
testArr1?: Maybe<Array<Maybe<Scalars['String']>>>,
testArr2: Array<Maybe<Scalars['String']>>,
testArr3: Array<Scalars['String']>,
};


Expand Down Expand Up @@ -110,6 +113,9 @@ export type QueryResolvers<ContextType = any, ParentType = ResolversParentTypes[
allUsers?: Resolver<Array<Maybe<ResolversTypes['User']>>, ParentType, ContextType>,
userById?: Resolver<Maybe<ResolversTypes['User']>, ParentType, ContextType, QueryUserByIdArgs>,
answer?: Resolver<Array<ResolversTypes['Int']>, ParentType, ContextType>,
testArr1?: Resolver<Maybe<Array<Maybe<ResolversTypes['String']>>>, ParentType, ContextType>,
testArr2?: Resolver<Array<Maybe<ResolversTypes['String']>>, ParentType, ContextType>,
testArr3?: Resolver<Array<ResolversTypes['String']>, ParentType, ContextType>,
};

export type UserResolvers<ContextType = any, ParentType = ResolversParentTypes['User']> = {
Expand Down
3 changes: 3 additions & 0 deletions dev-test/test-schema/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@ type Query {
# Generates a new answer for the
# guessing game
answer: [Int!]!
testArr1: [String]
testArr2: [String]!
testArr3: [String!]!
}

35 changes: 35 additions & 0 deletions dev-test/test-schema/types.preResolveTypes.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
export type Maybe<T> = T | null;
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
ID: string,
String: string,
Boolean: boolean,
Int: number,
Float: number,
};

export type Query = {
__typename?: 'Query',
allUsers: Array<Maybe<User>>,
userById?: Maybe<User>,
answer: Array<Scalars['Int']>,
testArr1?: Maybe<Array<Maybe<Scalars['String']>>>,
testArr2: Array<Maybe<Scalars['String']>>,
testArr3: Array<Scalars['String']>,
};


export type QueryUserByIdArgs = {
id: Scalars['Int']
};

export type User = {
__typename?: 'User',
id: Scalars['Int'],
name: Scalars['String'],
email: Scalars['String'],
};
export type TestQueryVariables = {};


export type TestQuery = { __typename?: 'Query', testArr1: Maybe<Array<Maybe<string>>>, testArr2: Array<Maybe<string>>, testArr3: Array<string> };
Original file line number Diff line number Diff line change
Expand Up @@ -196,10 +196,11 @@ export class SelectionSetToObject {
const fieldObj = schemaType.getFields()[aliasedField.fieldName];
const baseType = getBaseType(fieldObj.type);
const typeToUse = this._scalars[baseType.name] || baseType.name;
const wrappedType = this.wrapTypeWithModifiers(typeToUse, fieldObj.type as GraphQLObjectType);

return {
name: this.formatNamedField(aliasedField.alias),
type: typeToUse,
type: wrappedType,
};
});
}
Expand All @@ -221,10 +222,11 @@ export class SelectionSetToObject {
const fieldObj = schemaType.getFields()[field];
const baseType = getBaseType(fieldObj.type);
const typeToUse = this._scalars[baseType.name] || baseType.name;
const wrappedType = this.wrapTypeWithModifiers(typeToUse, fieldObj.type as GraphQLObjectType);

return {
name: this.formatNamedField(field),
type: typeToUse,
type: wrappedType,
};
});
}
Expand Down

0 comments on commit 9a53d8d

Please sign in to comment.