diff --git a/dev-test/githunt/types.avoidOptionals.ts b/dev-test/githunt/types.avoidOptionals.ts index 56967723018..b9fe2925225 100644 --- a/dev-test/githunt/types.avoidOptionals.ts +++ b/dev-test/githunt/types.avoidOptionals.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { feed: (Entry | null)[] | null /** A feed of repository submissions */; entry: Entry | null /** A single entry */; @@ -122,17 +118,17 @@ export enum VoteType { } export namespace QueryResolvers { - export interface Resolvers { - feed?: FeedResolver<(Entry | null)[] | null, Parent, Context> /** A feed of repository submissions */; - entry?: EntryResolver /** A single entry */; + export interface Resolvers { + feed?: FeedResolver<(Entry | null)[] | null, any, Context> /** A feed of repository submissions */; + entry?: EntryResolver /** A single entry */; currentUser?: CurrentUserResolver< User | null, - Parent, + any, Context > /** Return the currently logged in user, or null if nobody is logged in */; } - export type FeedResolver = Resolver< + export type FeedResolver = Resolver< R, Parent, Context, @@ -144,37 +140,37 @@ export namespace QueryResolvers { limit: number | null /** The number of items to fetch starting from the offset, for pagination */; } - export type EntryResolver = Resolver; + export type EntryResolver = Resolver; export interface EntryArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type CurrentUserResolver = Resolver; + export type CurrentUserResolver = Resolver; } /** Information about a GitHub repository submitted to GitHunt */ export namespace EntryResolvers { - export interface Resolvers { - repository?: RepositoryResolver /** Information about the repository from GitHub */; - postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; - createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; - score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; - hotScore?: HotScoreResolver /** The hot score of this repository */; - comments?: CommentsResolver<(Comment | null)[], Parent, Context> /** Comments posted about this repository */; + export interface Resolvers { + repository?: RepositoryResolver /** Information about the repository from GitHub */; + postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; + createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; + score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; + hotScore?: HotScoreResolver /** The hot score of this repository */; + comments?: CommentsResolver<(Comment | null)[], any, Context> /** Comments posted about this repository */; commentCount?: CommentCountResolver< number, - Parent, + any, Context > /** The number of comments posted about this repository */; - id?: IdResolver /** The SQL ID of this entry */; - vote?: VoteResolver /** XXX to be changed */; + id?: IdResolver /** The SQL ID of this entry */; + vote?: VoteResolver /** XXX to be changed */; } - export type RepositoryResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ScoreResolver = Resolver; - export type HotScoreResolver = Resolver; - export type CommentsResolver = Resolver< + export type RepositoryResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ScoreResolver = Resolver; + export type HotScoreResolver = Resolver; + export type CommentsResolver = Resolver< R, Parent, Context, @@ -185,107 +181,103 @@ export namespace EntryResolvers { offset: number | null; } - export type CommentCountResolver = Resolver; - export type IdResolver = Resolver; - export type VoteResolver = Resolver; + export type CommentCountResolver = Resolver; + export type IdResolver = Resolver; + export type VoteResolver = Resolver; } /** A repository object from the GitHub API. This uses the exact field names returned by theGitHub API for simplicity, even though the convention for GraphQL is usually to camel case. */ export namespace RepositoryResolvers { - export interface Resolvers { - name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; + export interface Resolvers { + name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; full_name?: FullNameResolver< string, - Parent, + any, Context > /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */; - description?: DescriptionResolver /** The description of the repository */; - html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; + description?: DescriptionResolver /** The description of the repository */; + html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; stargazers_count?: StargazersCountResolver< number, - Parent, + any, Context > /** The number of people who have starred this repository on GitHub */; open_issues_count?: OpenIssuesCountResolver< number | null, - Parent, + any, Context > /** The number of open issues on this repository on GitHub */; - owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; + owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; } - export type NameResolver = Resolver; - export type FullNameResolver = Resolver; - export type DescriptionResolver = Resolver; - export type HtmlUrlResolver = Resolver; - export type StargazersCountResolver = Resolver; - export type OpenIssuesCountResolver = Resolver< - R, - Parent, - Context - >; - export type OwnerResolver = Resolver; + export type NameResolver = Resolver; + export type FullNameResolver = Resolver; + export type DescriptionResolver = Resolver; + export type HtmlUrlResolver = Resolver; + export type StargazersCountResolver = Resolver; + export type OpenIssuesCountResolver = Resolver; + export type OwnerResolver = Resolver; } /** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ export namespace UserResolvers { - export interface Resolvers { - login?: LoginResolver /** The name of the user, e.g. apollostack */; + export interface Resolvers { + login?: LoginResolver /** The name of the user, e.g. apollostack */; avatar_url?: AvatarUrlResolver< string, - Parent, + any, Context > /** The URL to a directly embeddable image for this user's avatar */; - html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; + html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; } - export type LoginResolver = Resolver; - export type AvatarUrlResolver = Resolver; - export type HtmlUrlResolver = Resolver; + export type LoginResolver = Resolver; + export type AvatarUrlResolver = Resolver; + export type HtmlUrlResolver = Resolver; } /** A comment about an entry, submitted by a user */ export namespace CommentResolvers { - export interface Resolvers { - id?: IdResolver /** The SQL ID of this entry */; - postedBy?: PostedByResolver /** The GitHub user who posted the comment */; - createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; - content?: ContentResolver /** The text of the comment */; - repoName?: RepoNameResolver /** The repository which this comment is about */; + export interface Resolvers { + id?: IdResolver /** The SQL ID of this entry */; + postedBy?: PostedByResolver /** The GitHub user who posted the comment */; + createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; + content?: ContentResolver /** The text of the comment */; + repoName?: RepoNameResolver /** The repository which this comment is about */; } - export type IdResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ContentResolver = Resolver; - export type RepoNameResolver = Resolver; + export type IdResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ContentResolver = Resolver; + export type RepoNameResolver = Resolver; } /** XXX to be removed */ export namespace VoteResolvers { - export interface Resolvers { - vote_value?: VoteValueResolver; + export interface Resolvers { + vote_value?: VoteValueResolver; } - export type VoteValueResolver = Resolver; + export type VoteValueResolver = Resolver; } export namespace MutationResolvers { - export interface Resolvers { + export interface Resolvers { submitRepository?: SubmitRepositoryResolver< Entry | null, - Parent, + any, Context > /** Submit a new repository, returns the new submission */; vote?: VoteResolver< Entry | null, - Parent, + any, Context > /** Vote on a repository submission, returns the submission that was voted on */; submitComment?: SubmitCommentResolver< Comment | null, - Parent, + any, Context > /** Comment on a repository, returns the new comment */; } - export type SubmitRepositoryResolver = Resolver< + export type SubmitRepositoryResolver = Resolver< R, Parent, Context, @@ -295,13 +287,13 @@ export namespace MutationResolvers { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type VoteResolver = Resolver; + export type VoteResolver = Resolver; export interface VoteArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; type: VoteType /** The type of vote - UP, DOWN, or CANCEL */; } - export type SubmitCommentResolver = Resolver< + export type SubmitCommentResolver = Resolver< R, Parent, Context, @@ -314,15 +306,11 @@ export namespace MutationResolvers { } export namespace SubscriptionResolvers { - export interface Resolvers { - commentAdded?: CommentAddedResolver< - Comment | null, - Parent, - Context - > /** Subscription fires on every comment added */; + export interface Resolvers { + commentAdded?: CommentAddedResolver /** Subscription fires on every comment added */; } - export type CommentAddedResolver = Resolver< + export type CommentAddedResolver = Resolver< R, Parent, Context, diff --git a/dev-test/githunt/types.d.ts b/dev-test/githunt/types.d.ts index 79583a90a5d..9efde255eed 100644 --- a/dev-test/githunt/types.d.ts +++ b/dev-test/githunt/types.d.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { feed?: (Entry | null)[] | null /** A feed of repository submissions */; entry?: Entry | null /** A single entry */; @@ -114,17 +110,17 @@ export type FeedType = 'HOT' | 'NEW' | 'TOP'; export type VoteType = 'UP' | 'DOWN' | 'CANCEL'; export namespace QueryResolvers { - export interface Resolvers { - feed?: FeedResolver<(Entry | null)[] | null, Parent, Context> /** A feed of repository submissions */; - entry?: EntryResolver /** A single entry */; + export interface Resolvers { + feed?: FeedResolver<(Entry | null)[] | null, any, Context> /** A feed of repository submissions */; + entry?: EntryResolver /** A single entry */; currentUser?: CurrentUserResolver< User | null, - Parent, + any, Context > /** Return the currently logged in user, or null if nobody is logged in */; } - export type FeedResolver = Resolver< + export type FeedResolver = Resolver< R, Parent, Context, @@ -136,37 +132,37 @@ export namespace QueryResolvers { limit?: number | null /** The number of items to fetch starting from the offset, for pagination */; } - export type EntryResolver = Resolver; + export type EntryResolver = Resolver; export interface EntryArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type CurrentUserResolver = Resolver; + export type CurrentUserResolver = Resolver; } /** Information about a GitHub repository submitted to GitHunt */ export namespace EntryResolvers { - export interface Resolvers { - repository?: RepositoryResolver /** Information about the repository from GitHub */; - postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; - createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; - score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; - hotScore?: HotScoreResolver /** The hot score of this repository */; - comments?: CommentsResolver<(Comment | null)[], Parent, Context> /** Comments posted about this repository */; + export interface Resolvers { + repository?: RepositoryResolver /** Information about the repository from GitHub */; + postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; + createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; + score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; + hotScore?: HotScoreResolver /** The hot score of this repository */; + comments?: CommentsResolver<(Comment | null)[], any, Context> /** Comments posted about this repository */; commentCount?: CommentCountResolver< number, - Parent, + any, Context > /** The number of comments posted about this repository */; - id?: IdResolver /** The SQL ID of this entry */; - vote?: VoteResolver /** XXX to be changed */; + id?: IdResolver /** The SQL ID of this entry */; + vote?: VoteResolver /** XXX to be changed */; } - export type RepositoryResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ScoreResolver = Resolver; - export type HotScoreResolver = Resolver; - export type CommentsResolver = Resolver< + export type RepositoryResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ScoreResolver = Resolver; + export type HotScoreResolver = Resolver; + export type CommentsResolver = Resolver< R, Parent, Context, @@ -177,107 +173,103 @@ export namespace EntryResolvers { offset?: number | null; } - export type CommentCountResolver = Resolver; - export type IdResolver = Resolver; - export type VoteResolver = Resolver; + export type CommentCountResolver = Resolver; + export type IdResolver = Resolver; + export type VoteResolver = Resolver; } /** A repository object from the GitHub API. This uses the exact field names returned by theGitHub API for simplicity, even though the convention for GraphQL is usually to camel case. */ export namespace RepositoryResolvers { - export interface Resolvers { - name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; + export interface Resolvers { + name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; full_name?: FullNameResolver< string, - Parent, + any, Context > /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */; - description?: DescriptionResolver /** The description of the repository */; - html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; + description?: DescriptionResolver /** The description of the repository */; + html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; stargazers_count?: StargazersCountResolver< number, - Parent, + any, Context > /** The number of people who have starred this repository on GitHub */; open_issues_count?: OpenIssuesCountResolver< number | null, - Parent, + any, Context > /** The number of open issues on this repository on GitHub */; - owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; + owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; } - export type NameResolver = Resolver; - export type FullNameResolver = Resolver; - export type DescriptionResolver = Resolver; - export type HtmlUrlResolver = Resolver; - export type StargazersCountResolver = Resolver; - export type OpenIssuesCountResolver = Resolver< - R, - Parent, - Context - >; - export type OwnerResolver = Resolver; + export type NameResolver = Resolver; + export type FullNameResolver = Resolver; + export type DescriptionResolver = Resolver; + export type HtmlUrlResolver = Resolver; + export type StargazersCountResolver = Resolver; + export type OpenIssuesCountResolver = Resolver; + export type OwnerResolver = Resolver; } /** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ export namespace UserResolvers { - export interface Resolvers { - login?: LoginResolver /** The name of the user, e.g. apollostack */; + export interface Resolvers { + login?: LoginResolver /** The name of the user, e.g. apollostack */; avatar_url?: AvatarUrlResolver< string, - Parent, + any, Context > /** The URL to a directly embeddable image for this user's avatar */; - html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; + html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; } - export type LoginResolver = Resolver; - export type AvatarUrlResolver = Resolver; - export type HtmlUrlResolver = Resolver; + export type LoginResolver = Resolver; + export type AvatarUrlResolver = Resolver; + export type HtmlUrlResolver = Resolver; } /** A comment about an entry, submitted by a user */ export namespace CommentResolvers { - export interface Resolvers { - id?: IdResolver /** The SQL ID of this entry */; - postedBy?: PostedByResolver /** The GitHub user who posted the comment */; - createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; - content?: ContentResolver /** The text of the comment */; - repoName?: RepoNameResolver /** The repository which this comment is about */; + export interface Resolvers { + id?: IdResolver /** The SQL ID of this entry */; + postedBy?: PostedByResolver /** The GitHub user who posted the comment */; + createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; + content?: ContentResolver /** The text of the comment */; + repoName?: RepoNameResolver /** The repository which this comment is about */; } - export type IdResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ContentResolver = Resolver; - export type RepoNameResolver = Resolver; + export type IdResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ContentResolver = Resolver; + export type RepoNameResolver = Resolver; } /** XXX to be removed */ export namespace VoteResolvers { - export interface Resolvers { - vote_value?: VoteValueResolver; + export interface Resolvers { + vote_value?: VoteValueResolver; } - export type VoteValueResolver = Resolver; + export type VoteValueResolver = Resolver; } export namespace MutationResolvers { - export interface Resolvers { + export interface Resolvers { submitRepository?: SubmitRepositoryResolver< Entry | null, - Parent, + any, Context > /** Submit a new repository, returns the new submission */; vote?: VoteResolver< Entry | null, - Parent, + any, Context > /** Vote on a repository submission, returns the submission that was voted on */; submitComment?: SubmitCommentResolver< Comment | null, - Parent, + any, Context > /** Comment on a repository, returns the new comment */; } - export type SubmitRepositoryResolver = Resolver< + export type SubmitRepositoryResolver = Resolver< R, Parent, Context, @@ -287,13 +279,13 @@ export namespace MutationResolvers { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type VoteResolver = Resolver; + export type VoteResolver = Resolver; export interface VoteArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; type: VoteType /** The type of vote - UP, DOWN, or CANCEL */; } - export type SubmitCommentResolver = Resolver< + export type SubmitCommentResolver = Resolver< R, Parent, Context, @@ -306,15 +298,11 @@ export namespace MutationResolvers { } export namespace SubscriptionResolvers { - export interface Resolvers { - commentAdded?: CommentAddedResolver< - Comment | null, - Parent, - Context - > /** Subscription fires on every comment added */; + export interface Resolvers { + commentAdded?: CommentAddedResolver /** Subscription fires on every comment added */; } - export type CommentAddedResolver = Resolver< + export type CommentAddedResolver = Resolver< R, Parent, Context, diff --git a/dev-test/githunt/types.immutableTypes.ts b/dev-test/githunt/types.immutableTypes.ts index aa078dbf391..4fb218e5861 100644 --- a/dev-test/githunt/types.immutableTypes.ts +++ b/dev-test/githunt/types.immutableTypes.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { readonly feed?: ReadonlyArray | null /** A feed of repository submissions */; readonly entry?: Entry | null /** A single entry */; @@ -122,17 +118,17 @@ export enum VoteType { } export namespace QueryResolvers { - export interface Resolvers { - feed?: FeedResolver | null, Parent, Context> /** A feed of repository submissions */; - entry?: EntryResolver /** A single entry */; + export interface Resolvers { + feed?: FeedResolver | null, any, Context> /** A feed of repository submissions */; + entry?: EntryResolver /** A single entry */; currentUser?: CurrentUserResolver< User | null, - Parent, + any, Context > /** Return the currently logged in user, or null if nobody is logged in */; } - export type FeedResolver | null, Parent = Query, Context = any> = Resolver< + export type FeedResolver | null, Parent = any, Context = any> = Resolver< R, Parent, Context, @@ -144,41 +140,41 @@ export namespace QueryResolvers { limit?: number | null /** The number of items to fetch starting from the offset, for pagination */; } - export type EntryResolver = Resolver; + export type EntryResolver = Resolver; export interface EntryArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type CurrentUserResolver = Resolver; + export type CurrentUserResolver = Resolver; } /** Information about a GitHub repository submitted to GitHunt */ export namespace EntryResolvers { - export interface Resolvers { - repository?: RepositoryResolver /** Information about the repository from GitHub */; - postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; - createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; - score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; - hotScore?: HotScoreResolver /** The hot score of this repository */; + export interface Resolvers { + repository?: RepositoryResolver /** Information about the repository from GitHub */; + postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; + createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; + score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; + hotScore?: HotScoreResolver /** The hot score of this repository */; comments?: CommentsResolver< ReadonlyArray, - Parent, + any, Context > /** Comments posted about this repository */; commentCount?: CommentCountResolver< number, - Parent, + any, Context > /** The number of comments posted about this repository */; - id?: IdResolver /** The SQL ID of this entry */; - vote?: VoteResolver /** XXX to be changed */; + id?: IdResolver /** The SQL ID of this entry */; + vote?: VoteResolver /** XXX to be changed */; } - export type RepositoryResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ScoreResolver = Resolver; - export type HotScoreResolver = Resolver; - export type CommentsResolver, Parent = Entry, Context = any> = Resolver< + export type RepositoryResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ScoreResolver = Resolver; + export type HotScoreResolver = Resolver; + export type CommentsResolver, Parent = any, Context = any> = Resolver< R, Parent, Context, @@ -189,107 +185,103 @@ export namespace EntryResolvers { offset?: number | null; } - export type CommentCountResolver = Resolver; - export type IdResolver = Resolver; - export type VoteResolver = Resolver; + export type CommentCountResolver = Resolver; + export type IdResolver = Resolver; + export type VoteResolver = Resolver; } /** A repository object from the GitHub API. This uses the exact field names returned by theGitHub API for simplicity, even though the convention for GraphQL is usually to camel case. */ export namespace RepositoryResolvers { - export interface Resolvers { - name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; + export interface Resolvers { + name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; full_name?: FullNameResolver< string, - Parent, + any, Context > /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */; - description?: DescriptionResolver /** The description of the repository */; - html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; + description?: DescriptionResolver /** The description of the repository */; + html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; stargazers_count?: StargazersCountResolver< number, - Parent, + any, Context > /** The number of people who have starred this repository on GitHub */; open_issues_count?: OpenIssuesCountResolver< number | null, - Parent, + any, Context > /** The number of open issues on this repository on GitHub */; - owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; + owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; } - export type NameResolver = Resolver; - export type FullNameResolver = Resolver; - export type DescriptionResolver = Resolver; - export type HtmlUrlResolver = Resolver; - export type StargazersCountResolver = Resolver; - export type OpenIssuesCountResolver = Resolver< - R, - Parent, - Context - >; - export type OwnerResolver = Resolver; + export type NameResolver = Resolver; + export type FullNameResolver = Resolver; + export type DescriptionResolver = Resolver; + export type HtmlUrlResolver = Resolver; + export type StargazersCountResolver = Resolver; + export type OpenIssuesCountResolver = Resolver; + export type OwnerResolver = Resolver; } /** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ export namespace UserResolvers { - export interface Resolvers { - login?: LoginResolver /** The name of the user, e.g. apollostack */; + export interface Resolvers { + login?: LoginResolver /** The name of the user, e.g. apollostack */; avatar_url?: AvatarUrlResolver< string, - Parent, + any, Context > /** The URL to a directly embeddable image for this user's avatar */; - html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; + html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; } - export type LoginResolver = Resolver; - export type AvatarUrlResolver = Resolver; - export type HtmlUrlResolver = Resolver; + export type LoginResolver = Resolver; + export type AvatarUrlResolver = Resolver; + export type HtmlUrlResolver = Resolver; } /** A comment about an entry, submitted by a user */ export namespace CommentResolvers { - export interface Resolvers { - id?: IdResolver /** The SQL ID of this entry */; - postedBy?: PostedByResolver /** The GitHub user who posted the comment */; - createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; - content?: ContentResolver /** The text of the comment */; - repoName?: RepoNameResolver /** The repository which this comment is about */; + export interface Resolvers { + id?: IdResolver /** The SQL ID of this entry */; + postedBy?: PostedByResolver /** The GitHub user who posted the comment */; + createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; + content?: ContentResolver /** The text of the comment */; + repoName?: RepoNameResolver /** The repository which this comment is about */; } - export type IdResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ContentResolver = Resolver; - export type RepoNameResolver = Resolver; + export type IdResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ContentResolver = Resolver; + export type RepoNameResolver = Resolver; } /** XXX to be removed */ export namespace VoteResolvers { - export interface Resolvers { - vote_value?: VoteValueResolver; + export interface Resolvers { + vote_value?: VoteValueResolver; } - export type VoteValueResolver = Resolver; + export type VoteValueResolver = Resolver; } export namespace MutationResolvers { - export interface Resolvers { + export interface Resolvers { submitRepository?: SubmitRepositoryResolver< Entry | null, - Parent, + any, Context > /** Submit a new repository, returns the new submission */; vote?: VoteResolver< Entry | null, - Parent, + any, Context > /** Vote on a repository submission, returns the submission that was voted on */; submitComment?: SubmitCommentResolver< Comment | null, - Parent, + any, Context > /** Comment on a repository, returns the new comment */; } - export type SubmitRepositoryResolver = Resolver< + export type SubmitRepositoryResolver = Resolver< R, Parent, Context, @@ -299,13 +291,13 @@ export namespace MutationResolvers { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type VoteResolver = Resolver; + export type VoteResolver = Resolver; export interface VoteArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; type: VoteType /** The type of vote - UP, DOWN, or CANCEL */; } - export type SubmitCommentResolver = Resolver< + export type SubmitCommentResolver = Resolver< R, Parent, Context, @@ -318,15 +310,11 @@ export namespace MutationResolvers { } export namespace SubscriptionResolvers { - export interface Resolvers { - commentAdded?: CommentAddedResolver< - Comment | null, - Parent, - Context - > /** Subscription fires on every comment added */; + export interface Resolvers { + commentAdded?: CommentAddedResolver /** Subscription fires on every comment added */; } - export type CommentAddedResolver = Resolver< + export type CommentAddedResolver = Resolver< R, Parent, Context, diff --git a/dev-test/githunt/types.noNamespaces.ts b/dev-test/githunt/types.noNamespaces.ts index 998445ad156..272854c4c31 100644 --- a/dev-test/githunt/types.noNamespaces.ts +++ b/dev-test/githunt/types.noNamespaces.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { feed?: Entry[] | null /** A feed of repository submissions */; entry?: Entry | null /** A single entry */; @@ -121,160 +117,156 @@ export enum VoteType { CANCEL = 'CANCEL' } -export interface QueryResolvers { - feed?: QueryFeedResolver /** A feed of repository submissions */; - entry?: QueryEntryResolver /** A single entry */; +export interface QueryResolvers { + feed?: QueryFeedResolver /** A feed of repository submissions */; + entry?: QueryEntryResolver /** A single entry */; currentUser?: QueryCurrentUserResolver< User | null, - Parent, + any, Context > /** Return the currently logged in user, or null if nobody is logged in */; } -export type QueryFeedResolver = Resolver; +export type QueryFeedResolver = Resolver; export interface QueryFeedArgs { type: FeedType /** The sort order for the feed */; offset?: number | null /** The number of items to skip, for pagination */; limit?: number | null /** The number of items to fetch starting from the offset, for pagination */; } -export type QueryEntryResolver = Resolver; +export type QueryEntryResolver = Resolver; export interface QueryEntryArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } -export type QueryCurrentUserResolver = Resolver; +export type QueryCurrentUserResolver = Resolver; /** Information about a GitHub repository submitted to GitHunt */ -export interface EntryResolvers { - repository?: EntryRepositoryResolver /** Information about the repository from GitHub */; - postedBy?: EntryPostedByResolver /** The GitHub user who submitted this entry */; - createdAt?: EntryCreatedAtResolver /** A timestamp of when the entry was submitted */; - score?: EntryScoreResolver /** The score of this repository, upvotes - downvotes */; - hotScore?: EntryHotScoreResolver /** The hot score of this repository */; - comments?: EntryCommentsResolver /** Comments posted about this repository */; +export interface EntryResolvers { + repository?: EntryRepositoryResolver /** Information about the repository from GitHub */; + postedBy?: EntryPostedByResolver /** The GitHub user who submitted this entry */; + createdAt?: EntryCreatedAtResolver /** A timestamp of when the entry was submitted */; + score?: EntryScoreResolver /** The score of this repository, upvotes - downvotes */; + hotScore?: EntryHotScoreResolver /** The hot score of this repository */; + comments?: EntryCommentsResolver /** Comments posted about this repository */; commentCount?: EntryCommentCountResolver< number, - Parent, + any, Context > /** The number of comments posted about this repository */; - id?: EntryIdResolver /** The SQL ID of this entry */; - vote?: EntryVoteResolver /** XXX to be changed */; + id?: EntryIdResolver /** The SQL ID of this entry */; + vote?: EntryVoteResolver /** XXX to be changed */; } -export type EntryRepositoryResolver = Resolver; -export type EntryPostedByResolver = Resolver; -export type EntryCreatedAtResolver = Resolver; -export type EntryScoreResolver = Resolver; -export type EntryHotScoreResolver = Resolver; -export type EntryCommentsResolver = Resolver; +export type EntryRepositoryResolver = Resolver; +export type EntryPostedByResolver = Resolver; +export type EntryCreatedAtResolver = Resolver; +export type EntryScoreResolver = Resolver; +export type EntryHotScoreResolver = Resolver; +export type EntryCommentsResolver = Resolver; export interface EntryCommentsArgs { limit?: number | null; offset?: number | null; } -export type EntryCommentCountResolver = Resolver; -export type EntryIdResolver = Resolver; -export type EntryVoteResolver = Resolver; +export type EntryCommentCountResolver = Resolver; +export type EntryIdResolver = Resolver; +export type EntryVoteResolver = Resolver; /** A repository object from the GitHub API. This uses the exact field names returned by theGitHub API for simplicity, even though the convention for GraphQL is usually to camel case. */ -export interface RepositoryResolvers { - name?: RepositoryNameResolver /** Just the name of the repository, e.g. GitHunt-API */; +export interface RepositoryResolvers { + name?: RepositoryNameResolver /** Just the name of the repository, e.g. GitHunt-API */; full_name?: RepositoryFullNameResolver< string, - Parent, + any, Context > /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */; - description?: RepositoryDescriptionResolver /** The description of the repository */; - html_url?: RepositoryHtmlUrlResolver /** The link to the repository on GitHub */; + description?: RepositoryDescriptionResolver /** The description of the repository */; + html_url?: RepositoryHtmlUrlResolver /** The link to the repository on GitHub */; stargazers_count?: RepositoryStargazersCountResolver< number, - Parent, + any, Context > /** The number of people who have starred this repository on GitHub */; open_issues_count?: RepositoryOpenIssuesCountResolver< number | null, - Parent, + any, Context > /** The number of open issues on this repository on GitHub */; owner?: RepositoryOwnerResolver< User | null, - Parent, + any, Context > /** The owner of this repository on GitHub, e.g. apollostack */; } -export type RepositoryNameResolver = Resolver; -export type RepositoryFullNameResolver = Resolver; -export type RepositoryDescriptionResolver = Resolver< - R, - Parent, - Context ->; -export type RepositoryHtmlUrlResolver = Resolver; -export type RepositoryStargazersCountResolver = Resolver< +export type RepositoryNameResolver = Resolver; +export type RepositoryFullNameResolver = Resolver; +export type RepositoryDescriptionResolver = Resolver< R, Parent, Context >; -export type RepositoryOpenIssuesCountResolver = Resolver< +export type RepositoryHtmlUrlResolver = Resolver; +export type RepositoryStargazersCountResolver = Resolver; +export type RepositoryOpenIssuesCountResolver = Resolver< R, Parent, Context >; -export type RepositoryOwnerResolver = Resolver; +export type RepositoryOwnerResolver = Resolver; /** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ -export interface UserResolvers { - login?: UserLoginResolver /** The name of the user, e.g. apollostack */; +export interface UserResolvers { + login?: UserLoginResolver /** The name of the user, e.g. apollostack */; avatar_url?: UserAvatarUrlResolver< string, - Parent, + any, Context > /** The URL to a directly embeddable image for this user's avatar */; - html_url?: UserHtmlUrlResolver /** The URL of this user's GitHub page */; + html_url?: UserHtmlUrlResolver /** The URL of this user's GitHub page */; } -export type UserLoginResolver = Resolver; -export type UserAvatarUrlResolver = Resolver; -export type UserHtmlUrlResolver = Resolver; +export type UserLoginResolver = Resolver; +export type UserAvatarUrlResolver = Resolver; +export type UserHtmlUrlResolver = Resolver; /** A comment about an entry, submitted by a user */ -export interface CommentResolvers { - id?: CommentIdResolver /** The SQL ID of this entry */; - postedBy?: CommentPostedByResolver /** The GitHub user who posted the comment */; - createdAt?: CommentCreatedAtResolver /** A timestamp of when the comment was posted */; - content?: CommentContentResolver /** The text of the comment */; - repoName?: CommentRepoNameResolver /** The repository which this comment is about */; -} - -export type CommentIdResolver = Resolver; -export type CommentPostedByResolver = Resolver; -export type CommentCreatedAtResolver = Resolver; -export type CommentContentResolver = Resolver; -export type CommentRepoNameResolver = Resolver; +export interface CommentResolvers { + id?: CommentIdResolver /** The SQL ID of this entry */; + postedBy?: CommentPostedByResolver /** The GitHub user who posted the comment */; + createdAt?: CommentCreatedAtResolver /** A timestamp of when the comment was posted */; + content?: CommentContentResolver /** The text of the comment */; + repoName?: CommentRepoNameResolver /** The repository which this comment is about */; +} + +export type CommentIdResolver = Resolver; +export type CommentPostedByResolver = Resolver; +export type CommentCreatedAtResolver = Resolver; +export type CommentContentResolver = Resolver; +export type CommentRepoNameResolver = Resolver; /** XXX to be removed */ -export interface VoteResolvers { - vote_value?: VoteVoteValueResolver; +export interface VoteResolvers { + vote_value?: VoteVoteValueResolver; } -export type VoteVoteValueResolver = Resolver; +export type VoteVoteValueResolver = Resolver; -export interface MutationResolvers { +export interface MutationResolvers { submitRepository?: MutationSubmitRepositoryResolver< Entry | null, - Parent, + any, Context > /** Submit a new repository, returns the new submission */; vote?: MutationVoteResolver< Entry | null, - Parent, + any, Context > /** Vote on a repository submission, returns the submission that was voted on */; submitComment?: MutationSubmitCommentResolver< Comment | null, - Parent, + any, Context > /** Comment on a repository, returns the new comment */; } -export type MutationSubmitRepositoryResolver = Resolver< +export type MutationSubmitRepositoryResolver = Resolver< R, Parent, Context @@ -283,13 +275,13 @@ export interface MutationSubmitRepositoryArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } -export type MutationVoteResolver = Resolver; +export type MutationVoteResolver = Resolver; export interface MutationVoteArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; type: VoteType /** The type of vote - UP, DOWN, or CANCEL */; } -export type MutationSubmitCommentResolver = Resolver< +export type MutationSubmitCommentResolver = Resolver< R, Parent, Context @@ -299,15 +291,15 @@ export interface MutationSubmitCommentArgs { commentContent: string /** The text content for the new comment */; } -export interface SubscriptionResolvers { +export interface SubscriptionResolvers { commentAdded?: SubscriptionCommentAddedResolver< Comment | null, - Parent, + any, Context > /** Subscription fires on every comment added */; } -export type SubscriptionCommentAddedResolver = Resolver< +export type SubscriptionCommentAddedResolver = Resolver< R, Parent, Context diff --git a/dev-test/githunt/types.reactApollo.ts b/dev-test/githunt/types.reactApollo.ts index 29fed2f9c73..c7291845b81 100644 --- a/dev-test/githunt/types.reactApollo.ts +++ b/dev-test/githunt/types.reactApollo.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { feed?: (Entry | null)[] | null /** A feed of repository submissions */; entry?: Entry | null /** A single entry */; @@ -122,17 +118,17 @@ export enum VoteType { } export namespace QueryResolvers { - export interface Resolvers { - feed?: FeedResolver<(Entry | null)[] | null, Parent, Context> /** A feed of repository submissions */; - entry?: EntryResolver /** A single entry */; + export interface Resolvers { + feed?: FeedResolver<(Entry | null)[] | null, any, Context> /** A feed of repository submissions */; + entry?: EntryResolver /** A single entry */; currentUser?: CurrentUserResolver< User | null, - Parent, + any, Context > /** Return the currently logged in user, or null if nobody is logged in */; } - export type FeedResolver = Resolver< + export type FeedResolver = Resolver< R, Parent, Context, @@ -144,37 +140,37 @@ export namespace QueryResolvers { limit?: number | null /** The number of items to fetch starting from the offset, for pagination */; } - export type EntryResolver = Resolver; + export type EntryResolver = Resolver; export interface EntryArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type CurrentUserResolver = Resolver; + export type CurrentUserResolver = Resolver; } /** Information about a GitHub repository submitted to GitHunt */ export namespace EntryResolvers { - export interface Resolvers { - repository?: RepositoryResolver /** Information about the repository from GitHub */; - postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; - createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; - score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; - hotScore?: HotScoreResolver /** The hot score of this repository */; - comments?: CommentsResolver<(Comment | null)[], Parent, Context> /** Comments posted about this repository */; + export interface Resolvers { + repository?: RepositoryResolver /** Information about the repository from GitHub */; + postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; + createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; + score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; + hotScore?: HotScoreResolver /** The hot score of this repository */; + comments?: CommentsResolver<(Comment | null)[], any, Context> /** Comments posted about this repository */; commentCount?: CommentCountResolver< number, - Parent, + any, Context > /** The number of comments posted about this repository */; - id?: IdResolver /** The SQL ID of this entry */; - vote?: VoteResolver /** XXX to be changed */; + id?: IdResolver /** The SQL ID of this entry */; + vote?: VoteResolver /** XXX to be changed */; } - export type RepositoryResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ScoreResolver = Resolver; - export type HotScoreResolver = Resolver; - export type CommentsResolver = Resolver< + export type RepositoryResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ScoreResolver = Resolver; + export type HotScoreResolver = Resolver; + export type CommentsResolver = Resolver< R, Parent, Context, @@ -185,107 +181,103 @@ export namespace EntryResolvers { offset?: number | null; } - export type CommentCountResolver = Resolver; - export type IdResolver = Resolver; - export type VoteResolver = Resolver; + export type CommentCountResolver = Resolver; + export type IdResolver = Resolver; + export type VoteResolver = Resolver; } /** A repository object from the GitHub API. This uses the exact field names returned by theGitHub API for simplicity, even though the convention for GraphQL is usually to camel case. */ export namespace RepositoryResolvers { - export interface Resolvers { - name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; + export interface Resolvers { + name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; full_name?: FullNameResolver< string, - Parent, + any, Context > /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */; - description?: DescriptionResolver /** The description of the repository */; - html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; + description?: DescriptionResolver /** The description of the repository */; + html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; stargazers_count?: StargazersCountResolver< number, - Parent, + any, Context > /** The number of people who have starred this repository on GitHub */; open_issues_count?: OpenIssuesCountResolver< number | null, - Parent, + any, Context > /** The number of open issues on this repository on GitHub */; - owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; + owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; } - export type NameResolver = Resolver; - export type FullNameResolver = Resolver; - export type DescriptionResolver = Resolver; - export type HtmlUrlResolver = Resolver; - export type StargazersCountResolver = Resolver; - export type OpenIssuesCountResolver = Resolver< - R, - Parent, - Context - >; - export type OwnerResolver = Resolver; + export type NameResolver = Resolver; + export type FullNameResolver = Resolver; + export type DescriptionResolver = Resolver; + export type HtmlUrlResolver = Resolver; + export type StargazersCountResolver = Resolver; + export type OpenIssuesCountResolver = Resolver; + export type OwnerResolver = Resolver; } /** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ export namespace UserResolvers { - export interface Resolvers { - login?: LoginResolver /** The name of the user, e.g. apollostack */; + export interface Resolvers { + login?: LoginResolver /** The name of the user, e.g. apollostack */; avatar_url?: AvatarUrlResolver< string, - Parent, + any, Context > /** The URL to a directly embeddable image for this user's avatar */; - html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; + html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; } - export type LoginResolver = Resolver; - export type AvatarUrlResolver = Resolver; - export type HtmlUrlResolver = Resolver; + export type LoginResolver = Resolver; + export type AvatarUrlResolver = Resolver; + export type HtmlUrlResolver = Resolver; } /** A comment about an entry, submitted by a user */ export namespace CommentResolvers { - export interface Resolvers { - id?: IdResolver /** The SQL ID of this entry */; - postedBy?: PostedByResolver /** The GitHub user who posted the comment */; - createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; - content?: ContentResolver /** The text of the comment */; - repoName?: RepoNameResolver /** The repository which this comment is about */; + export interface Resolvers { + id?: IdResolver /** The SQL ID of this entry */; + postedBy?: PostedByResolver /** The GitHub user who posted the comment */; + createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; + content?: ContentResolver /** The text of the comment */; + repoName?: RepoNameResolver /** The repository which this comment is about */; } - export type IdResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ContentResolver = Resolver; - export type RepoNameResolver = Resolver; + export type IdResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ContentResolver = Resolver; + export type RepoNameResolver = Resolver; } /** XXX to be removed */ export namespace VoteResolvers { - export interface Resolvers { - vote_value?: VoteValueResolver; + export interface Resolvers { + vote_value?: VoteValueResolver; } - export type VoteValueResolver = Resolver; + export type VoteValueResolver = Resolver; } export namespace MutationResolvers { - export interface Resolvers { + export interface Resolvers { submitRepository?: SubmitRepositoryResolver< Entry | null, - Parent, + any, Context > /** Submit a new repository, returns the new submission */; vote?: VoteResolver< Entry | null, - Parent, + any, Context > /** Vote on a repository submission, returns the submission that was voted on */; submitComment?: SubmitCommentResolver< Comment | null, - Parent, + any, Context > /** Comment on a repository, returns the new comment */; } - export type SubmitRepositoryResolver = Resolver< + export type SubmitRepositoryResolver = Resolver< R, Parent, Context, @@ -295,13 +287,13 @@ export namespace MutationResolvers { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type VoteResolver = Resolver; + export type VoteResolver = Resolver; export interface VoteArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; type: VoteType /** The type of vote - UP, DOWN, or CANCEL */; } - export type SubmitCommentResolver = Resolver< + export type SubmitCommentResolver = Resolver< R, Parent, Context, @@ -314,15 +306,11 @@ export namespace MutationResolvers { } export namespace SubscriptionResolvers { - export interface Resolvers { - commentAdded?: CommentAddedResolver< - Comment | null, - Parent, - Context - > /** Subscription fires on every comment added */; + export interface Resolvers { + commentAdded?: CommentAddedResolver /** Subscription fires on every comment added */; } - export type CommentAddedResolver = Resolver< + export type CommentAddedResolver = Resolver< R, Parent, Context, diff --git a/dev-test/githunt/types.ts b/dev-test/githunt/types.ts index cef0211d7ae..b98f456e4e6 100644 --- a/dev-test/githunt/types.ts +++ b/dev-test/githunt/types.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { feed?: (Entry | null)[] | null /** A feed of repository submissions */; entry?: Entry | null /** A single entry */; @@ -122,17 +118,17 @@ export enum VoteType { } export namespace QueryResolvers { - export interface Resolvers { - feed?: FeedResolver<(Entry | null)[] | null, Parent, Context> /** A feed of repository submissions */; - entry?: EntryResolver /** A single entry */; + export interface Resolvers { + feed?: FeedResolver<(Entry | null)[] | null, any, Context> /** A feed of repository submissions */; + entry?: EntryResolver /** A single entry */; currentUser?: CurrentUserResolver< User | null, - Parent, + any, Context > /** Return the currently logged in user, or null if nobody is logged in */; } - export type FeedResolver = Resolver< + export type FeedResolver = Resolver< R, Parent, Context, @@ -144,37 +140,37 @@ export namespace QueryResolvers { limit?: number | null /** The number of items to fetch starting from the offset, for pagination */; } - export type EntryResolver = Resolver; + export type EntryResolver = Resolver; export interface EntryArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type CurrentUserResolver = Resolver; + export type CurrentUserResolver = Resolver; } /** Information about a GitHub repository submitted to GitHunt */ export namespace EntryResolvers { - export interface Resolvers { - repository?: RepositoryResolver /** Information about the repository from GitHub */; - postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; - createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; - score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; - hotScore?: HotScoreResolver /** The hot score of this repository */; - comments?: CommentsResolver<(Comment | null)[], Parent, Context> /** Comments posted about this repository */; + export interface Resolvers { + repository?: RepositoryResolver /** Information about the repository from GitHub */; + postedBy?: PostedByResolver /** The GitHub user who submitted this entry */; + createdAt?: CreatedAtResolver /** A timestamp of when the entry was submitted */; + score?: ScoreResolver /** The score of this repository, upvotes - downvotes */; + hotScore?: HotScoreResolver /** The hot score of this repository */; + comments?: CommentsResolver<(Comment | null)[], any, Context> /** Comments posted about this repository */; commentCount?: CommentCountResolver< number, - Parent, + any, Context > /** The number of comments posted about this repository */; - id?: IdResolver /** The SQL ID of this entry */; - vote?: VoteResolver /** XXX to be changed */; + id?: IdResolver /** The SQL ID of this entry */; + vote?: VoteResolver /** XXX to be changed */; } - export type RepositoryResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ScoreResolver = Resolver; - export type HotScoreResolver = Resolver; - export type CommentsResolver = Resolver< + export type RepositoryResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ScoreResolver = Resolver; + export type HotScoreResolver = Resolver; + export type CommentsResolver = Resolver< R, Parent, Context, @@ -185,107 +181,103 @@ export namespace EntryResolvers { offset?: number | null; } - export type CommentCountResolver = Resolver; - export type IdResolver = Resolver; - export type VoteResolver = Resolver; + export type CommentCountResolver = Resolver; + export type IdResolver = Resolver; + export type VoteResolver = Resolver; } /** A repository object from the GitHub API. This uses the exact field names returned by theGitHub API for simplicity, even though the convention for GraphQL is usually to camel case. */ export namespace RepositoryResolvers { - export interface Resolvers { - name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; + export interface Resolvers { + name?: NameResolver /** Just the name of the repository, e.g. GitHunt-API */; full_name?: FullNameResolver< string, - Parent, + any, Context > /** The full name of the repository with the username, e.g. apollostack/GitHunt-API */; - description?: DescriptionResolver /** The description of the repository */; - html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; + description?: DescriptionResolver /** The description of the repository */; + html_url?: HtmlUrlResolver /** The link to the repository on GitHub */; stargazers_count?: StargazersCountResolver< number, - Parent, + any, Context > /** The number of people who have starred this repository on GitHub */; open_issues_count?: OpenIssuesCountResolver< number | null, - Parent, + any, Context > /** The number of open issues on this repository on GitHub */; - owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; + owner?: OwnerResolver /** The owner of this repository on GitHub, e.g. apollostack */; } - export type NameResolver = Resolver; - export type FullNameResolver = Resolver; - export type DescriptionResolver = Resolver; - export type HtmlUrlResolver = Resolver; - export type StargazersCountResolver = Resolver; - export type OpenIssuesCountResolver = Resolver< - R, - Parent, - Context - >; - export type OwnerResolver = Resolver; + export type NameResolver = Resolver; + export type FullNameResolver = Resolver; + export type DescriptionResolver = Resolver; + export type HtmlUrlResolver = Resolver; + export type StargazersCountResolver = Resolver; + export type OpenIssuesCountResolver = Resolver; + export type OwnerResolver = Resolver; } /** A user object from the GitHub API. This uses the exact field names returned from the GitHub API. */ export namespace UserResolvers { - export interface Resolvers { - login?: LoginResolver /** The name of the user, e.g. apollostack */; + export interface Resolvers { + login?: LoginResolver /** The name of the user, e.g. apollostack */; avatar_url?: AvatarUrlResolver< string, - Parent, + any, Context > /** The URL to a directly embeddable image for this user's avatar */; - html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; + html_url?: HtmlUrlResolver /** The URL of this user's GitHub page */; } - export type LoginResolver = Resolver; - export type AvatarUrlResolver = Resolver; - export type HtmlUrlResolver = Resolver; + export type LoginResolver = Resolver; + export type AvatarUrlResolver = Resolver; + export type HtmlUrlResolver = Resolver; } /** A comment about an entry, submitted by a user */ export namespace CommentResolvers { - export interface Resolvers { - id?: IdResolver /** The SQL ID of this entry */; - postedBy?: PostedByResolver /** The GitHub user who posted the comment */; - createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; - content?: ContentResolver /** The text of the comment */; - repoName?: RepoNameResolver /** The repository which this comment is about */; + export interface Resolvers { + id?: IdResolver /** The SQL ID of this entry */; + postedBy?: PostedByResolver /** The GitHub user who posted the comment */; + createdAt?: CreatedAtResolver /** A timestamp of when the comment was posted */; + content?: ContentResolver /** The text of the comment */; + repoName?: RepoNameResolver /** The repository which this comment is about */; } - export type IdResolver = Resolver; - export type PostedByResolver = Resolver; - export type CreatedAtResolver = Resolver; - export type ContentResolver = Resolver; - export type RepoNameResolver = Resolver; + export type IdResolver = Resolver; + export type PostedByResolver = Resolver; + export type CreatedAtResolver = Resolver; + export type ContentResolver = Resolver; + export type RepoNameResolver = Resolver; } /** XXX to be removed */ export namespace VoteResolvers { - export interface Resolvers { - vote_value?: VoteValueResolver; + export interface Resolvers { + vote_value?: VoteValueResolver; } - export type VoteValueResolver = Resolver; + export type VoteValueResolver = Resolver; } export namespace MutationResolvers { - export interface Resolvers { + export interface Resolvers { submitRepository?: SubmitRepositoryResolver< Entry | null, - Parent, + any, Context > /** Submit a new repository, returns the new submission */; vote?: VoteResolver< Entry | null, - Parent, + any, Context > /** Vote on a repository submission, returns the submission that was voted on */; submitComment?: SubmitCommentResolver< Comment | null, - Parent, + any, Context > /** Comment on a repository, returns the new comment */; } - export type SubmitRepositoryResolver = Resolver< + export type SubmitRepositoryResolver = Resolver< R, Parent, Context, @@ -295,13 +287,13 @@ export namespace MutationResolvers { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; } - export type VoteResolver = Resolver; + export type VoteResolver = Resolver; export interface VoteArgs { repoFullName: string /** The full repository name from GitHub, e.g. "apollostack/GitHunt-API" */; type: VoteType /** The type of vote - UP, DOWN, or CANCEL */; } - export type SubmitCommentResolver = Resolver< + export type SubmitCommentResolver = Resolver< R, Parent, Context, @@ -314,15 +306,11 @@ export namespace MutationResolvers { } export namespace SubscriptionResolvers { - export interface Resolvers { - commentAdded?: CommentAddedResolver< - Comment | null, - Parent, - Context - > /** Subscription fires on every comment added */; + export interface Resolvers { + commentAdded?: CommentAddedResolver /** Subscription fires on every comment added */; } - export type CommentAddedResolver = Resolver< + export type CommentAddedResolver = Resolver< R, Parent, Context, diff --git a/dev-test/star-wars/ts-multiple/heroparenttypedependentfield.query.ts b/dev-test/star-wars/ts-multiple/heroparenttypedependentfield.query.ts index 183b11c0226..78cf2fede92 100644 --- a/dev-test/star-wars/ts-multiple/heroparenttypedependentfield.query.ts +++ b/dev-test/star-wars/ts-multiple/heroparenttypedependentfield.query.ts @@ -35,11 +35,11 @@ export namespace HeroParentTypeDependentField { }; export type _Friends = { - __typename?: __HumanInlineFragment['__typename']; + __typename?: _HumanInlineFragment['__typename']; name: string; - } & (__HumanInlineFragment); + } & (_HumanInlineFragment); - export type __HumanInlineFragment = { + export type _HumanInlineFragment = { __typename?: 'Human'; height?: number | null; }; diff --git a/dev-test/star-wars/types.avoidOptionals.ts b/dev-test/star-wars/types.avoidOptionals.ts index 4565865be84..b3db4ab1fb7 100644 --- a/dev-test/star-wars/types.avoidOptionals.ts +++ b/dev-test/star-wars/types.avoidOptionals.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - /** A character from the Star Wars universe */ export interface Character { id: string /** The ID of the character */; @@ -166,27 +162,22 @@ export type SearchResult = Human | Droid | Starship; /** The query type, represents all of the entry points into our object graph */ export namespace QueryResolvers { - export interface Resolvers { - hero?: HeroResolver; - reviews?: ReviewsResolver<(Review | null)[] | null, Parent, Context>; - search?: SearchResolver<(SearchResult | null)[] | null, Parent, Context>; - character?: CharacterResolver; - droid?: DroidResolver; - human?: HumanResolver; - starship?: StarshipResolver; + export interface Resolvers { + hero?: HeroResolver; + reviews?: ReviewsResolver<(Review | null)[] | null, any, Context>; + search?: SearchResolver<(SearchResult | null)[] | null, any, Context>; + character?: CharacterResolver; + droid?: DroidResolver; + human?: HumanResolver; + starship?: StarshipResolver; } - export type HeroResolver = Resolver< - R, - Parent, - Context, - HeroArgs - >; + export type HeroResolver = Resolver; export interface HeroArgs { episode: Episode | null; } - export type ReviewsResolver = Resolver< + export type ReviewsResolver = Resolver< R, Parent, Context, @@ -196,7 +187,7 @@ export namespace QueryResolvers { episode: Episode; } - export type SearchResolver = Resolver< + export type SearchResolver = Resolver< R, Parent, Context, @@ -206,7 +197,7 @@ export namespace QueryResolvers { text: string | null; } - export type CharacterResolver = Resolver< + export type CharacterResolver = Resolver< R, Parent, Context, @@ -216,17 +207,17 @@ export namespace QueryResolvers { id: string; } - export type DroidResolver = Resolver; + export type DroidResolver = Resolver; export interface DroidArgs { id: string; } - export type HumanResolver = Resolver; + export type HumanResolver = Resolver; export interface HumanArgs { id: string; } - export type StarshipResolver = Resolver< + export type StarshipResolver = Resolver< R, Parent, Context, @@ -238,120 +229,111 @@ export namespace QueryResolvers { } /** A connection object for a character's friends */ export namespace FriendsConnectionResolvers { - export interface Resolvers { - totalCount?: TotalCountResolver /** The total number of friends */; + export interface Resolvers { + totalCount?: TotalCountResolver /** The total number of friends */; edges?: EdgesResolver< (FriendsEdge | null)[] | null, - Parent, + any, Context > /** The edges for each of the character's friends. */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** A list of the friends, as a convenience when edges are not needed. */; - pageInfo?: PageInfoResolver /** Information for paginating this connection */; + pageInfo?: PageInfoResolver /** Information for paginating this connection */; } - export type TotalCountResolver = Resolver< + export type TotalCountResolver = Resolver; + export type EdgesResolver = Resolver< R, Parent, Context >; - export type EdgesResolver = Resolver< + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsResolver = Resolver< - R, - Parent, - Context - >; - export type PageInfoResolver = Resolver; + export type PageInfoResolver = Resolver; } /** An edge object for a character's friends */ export namespace FriendsEdgeResolvers { - export interface Resolvers { - cursor?: CursorResolver /** A cursor used for pagination */; - node?: NodeResolver /** The character represented by this friendship edge */; + export interface Resolvers { + cursor?: CursorResolver /** A cursor used for pagination */; + node?: NodeResolver /** The character represented by this friendship edge */; } - export type CursorResolver = Resolver; - export type NodeResolver = Resolver; + export type CursorResolver = Resolver; + export type NodeResolver = Resolver; } /** Information for paginating this connection */ export namespace PageInfoResolvers { - export interface Resolvers { - startCursor?: StartCursorResolver; - endCursor?: EndCursorResolver; - hasNextPage?: HasNextPageResolver; + export interface Resolvers { + startCursor?: StartCursorResolver; + endCursor?: EndCursorResolver; + hasNextPage?: HasNextPageResolver; } - export type StartCursorResolver = Resolver; - export type EndCursorResolver = Resolver; - export type HasNextPageResolver = Resolver; + export type StartCursorResolver = Resolver; + export type EndCursorResolver = Resolver; + export type HasNextPageResolver = Resolver; } /** Represents a review for a movie */ export namespace ReviewResolvers { - export interface Resolvers { - stars?: StarsResolver /** The number of stars this review gave, 1-5 */; - commentary?: CommentaryResolver /** Comment about the movie */; + export interface Resolvers { + stars?: StarsResolver /** The number of stars this review gave, 1-5 */; + commentary?: CommentaryResolver /** Comment about the movie */; } - export type StarsResolver = Resolver; - export type CommentaryResolver = Resolver; + export type StarsResolver = Resolver; + export type CommentaryResolver = Resolver; } /** A humanoid creature from the Star Wars universe */ export namespace HumanResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the human */; - name?: NameResolver /** What this human calls themselves */; + export interface Resolvers { + id?: IdResolver /** The ID of the human */; + name?: NameResolver /** What this human calls themselves */; homePlanet?: HomePlanetResolver< string | null, - Parent, + any, Context > /** The home planet of the human, or null if unknown */; - height?: HeightResolver /** Height in the preferred unit, default is meters */; - mass?: MassResolver /** Mass in kilograms, or null if unknown */; + height?: HeightResolver /** Height in the preferred unit, default is meters */; + mass?: MassResolver /** Mass in kilograms, or null if unknown */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** This human's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the human exposed as a connection with edges */; - appearsIn?: AppearsInResolver<(Episode | null)[], Parent, Context> /** The movies this human appears in */; + appearsIn?: AppearsInResolver<(Episode | null)[], any, Context> /** The movies this human appears in */; starships?: StarshipsResolver< (Starship | null)[] | null, - Parent, + any, Context > /** A list of starships this person has piloted, or an empty list if none */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type HomePlanetResolver = Resolver; - export type HeightResolver = Resolver< - R, - Parent, - Context, - HeightArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type HomePlanetResolver = Resolver; + export type HeightResolver = Resolver; export interface HeightArgs { unit: LengthUnit | null; } - export type MassResolver = Resolver; - export type FriendsResolver = Resolver< + export type MassResolver = Resolver; + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -362,8 +344,8 @@ export namespace HumanResolvers { after: string | null; } - export type AppearsInResolver = Resolver; - export type StarshipsResolver = Resolver< + export type AppearsInResolver = Resolver; + export type StarshipsResolver = Resolver< R, Parent, Context @@ -371,51 +353,46 @@ export namespace HumanResolvers { } export namespace StarshipResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the starship */; - name?: NameResolver /** The name of the starship */; - length?: LengthResolver /** Length of the starship, along the longest axis */; + export interface Resolvers { + id?: IdResolver /** The ID of the starship */; + name?: NameResolver /** The name of the starship */; + length?: LengthResolver /** Length of the starship, along the longest axis */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type LengthResolver = Resolver< - R, - Parent, - Context, - LengthArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type LengthResolver = Resolver; export interface LengthArgs { unit: LengthUnit | null; } } /** An autonomous mechanical character in the Star Wars universe */ export namespace DroidResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the droid */; - name?: NameResolver /** What others call this droid */; + export interface Resolvers { + id?: IdResolver /** The ID of the droid */; + name?: NameResolver /** What others call this droid */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** This droid's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the droid exposed as a connection with edges */; - appearsIn?: AppearsInResolver<(Episode | null)[], Parent, Context> /** The movies this droid appears in */; - primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; + appearsIn?: AppearsInResolver<(Episode | null)[], any, Context> /** The movies this droid appears in */; + primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type FriendsResolver = Resolver< + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -426,16 +403,16 @@ export namespace DroidResolvers { after: string | null; } - export type AppearsInResolver = Resolver; - export type PrimaryFunctionResolver = Resolver; + export type AppearsInResolver = Resolver; + export type PrimaryFunctionResolver = Resolver; } /** The mutation type, represents all updates we can make to our data */ export namespace MutationResolvers { - export interface Resolvers { - createReview?: CreateReviewResolver; + export interface Resolvers { + createReview?: CreateReviewResolver; } - export type CreateReviewResolver = Resolver< + export type CreateReviewResolver = Resolver< R, Parent, Context, @@ -627,11 +604,11 @@ export namespace HeroParentTypeDependentField { }; export type _Friends = { - __typename?: __HumanInlineFragment['__typename']; + __typename?: _HumanInlineFragment['__typename']; name: string; - } & (__HumanInlineFragment); + } & (_HumanInlineFragment); - export type __HumanInlineFragment = { + export type _HumanInlineFragment = { __typename?: 'Human'; height: number | null; }; diff --git a/dev-test/star-wars/types.d.ts b/dev-test/star-wars/types.d.ts index 61bea45e196..ff2660245cb 100644 --- a/dev-test/star-wars/types.d.ts +++ b/dev-test/star-wars/types.d.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - /** A character from the Star Wars universe */ export interface Character { id: string /** The ID of the character */; @@ -159,27 +155,22 @@ export type SearchResult = Human | Droid | Starship; /** The query type, represents all of the entry points into our object graph */ export namespace QueryResolvers { - export interface Resolvers { - hero?: HeroResolver; - reviews?: ReviewsResolver<(Review | null)[] | null, Parent, Context>; - search?: SearchResolver<(SearchResult | null)[] | null, Parent, Context>; - character?: CharacterResolver; - droid?: DroidResolver; - human?: HumanResolver; - starship?: StarshipResolver; + export interface Resolvers { + hero?: HeroResolver; + reviews?: ReviewsResolver<(Review | null)[] | null, any, Context>; + search?: SearchResolver<(SearchResult | null)[] | null, any, Context>; + character?: CharacterResolver; + droid?: DroidResolver; + human?: HumanResolver; + starship?: StarshipResolver; } - export type HeroResolver = Resolver< - R, - Parent, - Context, - HeroArgs - >; + export type HeroResolver = Resolver; export interface HeroArgs { episode?: Episode | null; } - export type ReviewsResolver = Resolver< + export type ReviewsResolver = Resolver< R, Parent, Context, @@ -189,7 +180,7 @@ export namespace QueryResolvers { episode: Episode; } - export type SearchResolver = Resolver< + export type SearchResolver = Resolver< R, Parent, Context, @@ -199,7 +190,7 @@ export namespace QueryResolvers { text?: string | null; } - export type CharacterResolver = Resolver< + export type CharacterResolver = Resolver< R, Parent, Context, @@ -209,17 +200,17 @@ export namespace QueryResolvers { id: string; } - export type DroidResolver = Resolver; + export type DroidResolver = Resolver; export interface DroidArgs { id: string; } - export type HumanResolver = Resolver; + export type HumanResolver = Resolver; export interface HumanArgs { id: string; } - export type StarshipResolver = Resolver< + export type StarshipResolver = Resolver< R, Parent, Context, @@ -231,120 +222,111 @@ export namespace QueryResolvers { } /** A connection object for a character's friends */ export namespace FriendsConnectionResolvers { - export interface Resolvers { - totalCount?: TotalCountResolver /** The total number of friends */; + export interface Resolvers { + totalCount?: TotalCountResolver /** The total number of friends */; edges?: EdgesResolver< (FriendsEdge | null)[] | null, - Parent, + any, Context > /** The edges for each of the character's friends. */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** A list of the friends, as a convenience when edges are not needed. */; - pageInfo?: PageInfoResolver /** Information for paginating this connection */; + pageInfo?: PageInfoResolver /** Information for paginating this connection */; } - export type TotalCountResolver = Resolver< + export type TotalCountResolver = Resolver; + export type EdgesResolver = Resolver< R, Parent, Context >; - export type EdgesResolver = Resolver< + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsResolver = Resolver< - R, - Parent, - Context - >; - export type PageInfoResolver = Resolver; + export type PageInfoResolver = Resolver; } /** An edge object for a character's friends */ export namespace FriendsEdgeResolvers { - export interface Resolvers { - cursor?: CursorResolver /** A cursor used for pagination */; - node?: NodeResolver /** The character represented by this friendship edge */; + export interface Resolvers { + cursor?: CursorResolver /** A cursor used for pagination */; + node?: NodeResolver /** The character represented by this friendship edge */; } - export type CursorResolver = Resolver; - export type NodeResolver = Resolver; + export type CursorResolver = Resolver; + export type NodeResolver = Resolver; } /** Information for paginating this connection */ export namespace PageInfoResolvers { - export interface Resolvers { - startCursor?: StartCursorResolver; - endCursor?: EndCursorResolver; - hasNextPage?: HasNextPageResolver; + export interface Resolvers { + startCursor?: StartCursorResolver; + endCursor?: EndCursorResolver; + hasNextPage?: HasNextPageResolver; } - export type StartCursorResolver = Resolver; - export type EndCursorResolver = Resolver; - export type HasNextPageResolver = Resolver; + export type StartCursorResolver = Resolver; + export type EndCursorResolver = Resolver; + export type HasNextPageResolver = Resolver; } /** Represents a review for a movie */ export namespace ReviewResolvers { - export interface Resolvers { - stars?: StarsResolver /** The number of stars this review gave, 1-5 */; - commentary?: CommentaryResolver /** Comment about the movie */; + export interface Resolvers { + stars?: StarsResolver /** The number of stars this review gave, 1-5 */; + commentary?: CommentaryResolver /** Comment about the movie */; } - export type StarsResolver = Resolver; - export type CommentaryResolver = Resolver; + export type StarsResolver = Resolver; + export type CommentaryResolver = Resolver; } /** A humanoid creature from the Star Wars universe */ export namespace HumanResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the human */; - name?: NameResolver /** What this human calls themselves */; + export interface Resolvers { + id?: IdResolver /** The ID of the human */; + name?: NameResolver /** What this human calls themselves */; homePlanet?: HomePlanetResolver< string | null, - Parent, + any, Context > /** The home planet of the human, or null if unknown */; - height?: HeightResolver /** Height in the preferred unit, default is meters */; - mass?: MassResolver /** Mass in kilograms, or null if unknown */; + height?: HeightResolver /** Height in the preferred unit, default is meters */; + mass?: MassResolver /** Mass in kilograms, or null if unknown */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** This human's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the human exposed as a connection with edges */; - appearsIn?: AppearsInResolver<(Episode | null)[], Parent, Context> /** The movies this human appears in */; + appearsIn?: AppearsInResolver<(Episode | null)[], any, Context> /** The movies this human appears in */; starships?: StarshipsResolver< (Starship | null)[] | null, - Parent, + any, Context > /** A list of starships this person has piloted, or an empty list if none */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type HomePlanetResolver = Resolver; - export type HeightResolver = Resolver< - R, - Parent, - Context, - HeightArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type HomePlanetResolver = Resolver; + export type HeightResolver = Resolver; export interface HeightArgs { unit?: LengthUnit | null; } - export type MassResolver = Resolver; - export type FriendsResolver = Resolver< + export type MassResolver = Resolver; + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -355,8 +337,8 @@ export namespace HumanResolvers { after?: string | null; } - export type AppearsInResolver = Resolver; - export type StarshipsResolver = Resolver< + export type AppearsInResolver = Resolver; + export type StarshipsResolver = Resolver< R, Parent, Context @@ -364,51 +346,46 @@ export namespace HumanResolvers { } export namespace StarshipResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the starship */; - name?: NameResolver /** The name of the starship */; - length?: LengthResolver /** Length of the starship, along the longest axis */; + export interface Resolvers { + id?: IdResolver /** The ID of the starship */; + name?: NameResolver /** The name of the starship */; + length?: LengthResolver /** Length of the starship, along the longest axis */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type LengthResolver = Resolver< - R, - Parent, - Context, - LengthArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type LengthResolver = Resolver; export interface LengthArgs { unit?: LengthUnit | null; } } /** An autonomous mechanical character in the Star Wars universe */ export namespace DroidResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the droid */; - name?: NameResolver /** What others call this droid */; + export interface Resolvers { + id?: IdResolver /** The ID of the droid */; + name?: NameResolver /** What others call this droid */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** This droid's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the droid exposed as a connection with edges */; - appearsIn?: AppearsInResolver<(Episode | null)[], Parent, Context> /** The movies this droid appears in */; - primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; + appearsIn?: AppearsInResolver<(Episode | null)[], any, Context> /** The movies this droid appears in */; + primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type FriendsResolver = Resolver< + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -419,16 +396,16 @@ export namespace DroidResolvers { after?: string | null; } - export type AppearsInResolver = Resolver; - export type PrimaryFunctionResolver = Resolver; + export type AppearsInResolver = Resolver; + export type PrimaryFunctionResolver = Resolver; } /** The mutation type, represents all updates we can make to our data */ export namespace MutationResolvers { - export interface Resolvers { - createReview?: CreateReviewResolver; + export interface Resolvers { + createReview?: CreateReviewResolver; } - export type CreateReviewResolver = Resolver< + export type CreateReviewResolver = Resolver< R, Parent, Context, @@ -620,11 +597,11 @@ export namespace HeroParentTypeDependentField { }; export type _Friends = { - __typename?: __HumanInlineFragment['__typename']; + __typename?: _HumanInlineFragment['__typename']; name: string; - } & (__HumanInlineFragment); + } & (_HumanInlineFragment); - export type __HumanInlineFragment = { + export type _HumanInlineFragment = { __typename?: 'Human'; height?: number | null; }; diff --git a/dev-test/star-wars/types.immutableTypes.ts b/dev-test/star-wars/types.immutableTypes.ts index 3c8d7f3685c..9e9894c80c3 100644 --- a/dev-test/star-wars/types.immutableTypes.ts +++ b/dev-test/star-wars/types.immutableTypes.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - /** A character from the Star Wars universe */ export interface Character { readonly id: string /** The ID of the character */; @@ -166,27 +162,22 @@ export type SearchResult = Human | Droid | Starship; /** The query type, represents all of the entry points into our object graph */ export namespace QueryResolvers { - export interface Resolvers { - hero?: HeroResolver; - reviews?: ReviewsResolver | null, Parent, Context>; - search?: SearchResolver | null, Parent, Context>; - character?: CharacterResolver; - droid?: DroidResolver; - human?: HumanResolver; - starship?: StarshipResolver; + export interface Resolvers { + hero?: HeroResolver; + reviews?: ReviewsResolver | null, any, Context>; + search?: SearchResolver | null, any, Context>; + character?: CharacterResolver; + droid?: DroidResolver; + human?: HumanResolver; + starship?: StarshipResolver; } - export type HeroResolver = Resolver< - R, - Parent, - Context, - HeroArgs - >; + export type HeroResolver = Resolver; export interface HeroArgs { episode?: Episode | null; } - export type ReviewsResolver | null, Parent = Query, Context = any> = Resolver< + export type ReviewsResolver | null, Parent = any, Context = any> = Resolver< R, Parent, Context, @@ -196,7 +187,7 @@ export namespace QueryResolvers { episode: Episode; } - export type SearchResolver | null, Parent = Query, Context = any> = Resolver< + export type SearchResolver | null, Parent = any, Context = any> = Resolver< R, Parent, Context, @@ -206,7 +197,7 @@ export namespace QueryResolvers { text?: string | null; } - export type CharacterResolver = Resolver< + export type CharacterResolver = Resolver< R, Parent, Context, @@ -216,17 +207,17 @@ export namespace QueryResolvers { id: string; } - export type DroidResolver = Resolver; + export type DroidResolver = Resolver; export interface DroidArgs { id: string; } - export type HumanResolver = Resolver; + export type HumanResolver = Resolver; export interface HumanArgs { id: string; } - export type StarshipResolver = Resolver< + export type StarshipResolver = Resolver< R, Parent, Context, @@ -238,124 +229,111 @@ export namespace QueryResolvers { } /** A connection object for a character's friends */ export namespace FriendsConnectionResolvers { - export interface Resolvers { - totalCount?: TotalCountResolver /** The total number of friends */; + export interface Resolvers { + totalCount?: TotalCountResolver /** The total number of friends */; edges?: EdgesResolver< ReadonlyArray | null, - Parent, + any, Context > /** The edges for each of the character's friends. */; friends?: FriendsResolver< ReadonlyArray | null, - Parent, + any, Context > /** A list of the friends, as a convenience when edges are not needed. */; - pageInfo?: PageInfoResolver /** Information for paginating this connection */; + pageInfo?: PageInfoResolver /** Information for paginating this connection */; } - export type TotalCountResolver = Resolver< + export type TotalCountResolver = Resolver; + export type EdgesResolver | null, Parent = any, Context = any> = Resolver< R, Parent, Context >; - export type EdgesResolver< - R = ReadonlyArray | null, - Parent = FriendsConnection, - Context = any - > = Resolver; - export type FriendsResolver< - R = ReadonlyArray | null, - Parent = FriendsConnection, - Context = any - > = Resolver; - export type PageInfoResolver = Resolver; + export type FriendsResolver | null, Parent = any, Context = any> = Resolver< + R, + Parent, + Context + >; + export type PageInfoResolver = Resolver; } /** An edge object for a character's friends */ export namespace FriendsEdgeResolvers { - export interface Resolvers { - cursor?: CursorResolver /** A cursor used for pagination */; - node?: NodeResolver /** The character represented by this friendship edge */; + export interface Resolvers { + cursor?: CursorResolver /** A cursor used for pagination */; + node?: NodeResolver /** The character represented by this friendship edge */; } - export type CursorResolver = Resolver; - export type NodeResolver = Resolver; + export type CursorResolver = Resolver; + export type NodeResolver = Resolver; } /** Information for paginating this connection */ export namespace PageInfoResolvers { - export interface Resolvers { - startCursor?: StartCursorResolver; - endCursor?: EndCursorResolver; - hasNextPage?: HasNextPageResolver; + export interface Resolvers { + startCursor?: StartCursorResolver; + endCursor?: EndCursorResolver; + hasNextPage?: HasNextPageResolver; } - export type StartCursorResolver = Resolver; - export type EndCursorResolver = Resolver; - export type HasNextPageResolver = Resolver; + export type StartCursorResolver = Resolver; + export type EndCursorResolver = Resolver; + export type HasNextPageResolver = Resolver; } /** Represents a review for a movie */ export namespace ReviewResolvers { - export interface Resolvers { - stars?: StarsResolver /** The number of stars this review gave, 1-5 */; - commentary?: CommentaryResolver /** Comment about the movie */; + export interface Resolvers { + stars?: StarsResolver /** The number of stars this review gave, 1-5 */; + commentary?: CommentaryResolver /** Comment about the movie */; } - export type StarsResolver = Resolver; - export type CommentaryResolver = Resolver; + export type StarsResolver = Resolver; + export type CommentaryResolver = Resolver; } /** A humanoid creature from the Star Wars universe */ export namespace HumanResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the human */; - name?: NameResolver /** What this human calls themselves */; + export interface Resolvers { + id?: IdResolver /** The ID of the human */; + name?: NameResolver /** What this human calls themselves */; homePlanet?: HomePlanetResolver< string | null, - Parent, + any, Context > /** The home planet of the human, or null if unknown */; - height?: HeightResolver /** Height in the preferred unit, default is meters */; - mass?: MassResolver /** Mass in kilograms, or null if unknown */; + height?: HeightResolver /** Height in the preferred unit, default is meters */; + mass?: MassResolver /** Mass in kilograms, or null if unknown */; friends?: FriendsResolver< ReadonlyArray | null, - Parent, + any, Context > /** This human's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the human exposed as a connection with edges */; - appearsIn?: AppearsInResolver< - ReadonlyArray, - Parent, - Context - > /** The movies this human appears in */; + appearsIn?: AppearsInResolver, any, Context> /** The movies this human appears in */; starships?: StarshipsResolver< ReadonlyArray | null, - Parent, + any, Context > /** A list of starships this person has piloted, or an empty list if none */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type HomePlanetResolver = Resolver; - export type HeightResolver = Resolver< - R, - Parent, - Context, - HeightArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type HomePlanetResolver = Resolver; + export type HeightResolver = Resolver; export interface HeightArgs { unit?: LengthUnit | null; } - export type MassResolver = Resolver; - export type FriendsResolver | null, Parent = Human, Context = any> = Resolver< + export type MassResolver = Resolver; + export type FriendsResolver | null, Parent = any, Context = any> = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -366,12 +344,12 @@ export namespace HumanResolvers { after?: string | null; } - export type AppearsInResolver, Parent = Human, Context = any> = Resolver< + export type AppearsInResolver, Parent = any, Context = any> = Resolver< R, Parent, Context >; - export type StarshipsResolver | null, Parent = Human, Context = any> = Resolver< + export type StarshipsResolver | null, Parent = any, Context = any> = Resolver< R, Parent, Context @@ -379,55 +357,46 @@ export namespace HumanResolvers { } export namespace StarshipResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the starship */; - name?: NameResolver /** The name of the starship */; - length?: LengthResolver /** Length of the starship, along the longest axis */; + export interface Resolvers { + id?: IdResolver /** The ID of the starship */; + name?: NameResolver /** The name of the starship */; + length?: LengthResolver /** Length of the starship, along the longest axis */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type LengthResolver = Resolver< - R, - Parent, - Context, - LengthArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type LengthResolver = Resolver; export interface LengthArgs { unit?: LengthUnit | null; } } /** An autonomous mechanical character in the Star Wars universe */ export namespace DroidResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the droid */; - name?: NameResolver /** What others call this droid */; + export interface Resolvers { + id?: IdResolver /** The ID of the droid */; + name?: NameResolver /** What others call this droid */; friends?: FriendsResolver< ReadonlyArray | null, - Parent, + any, Context > /** This droid's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the droid exposed as a connection with edges */; - appearsIn?: AppearsInResolver< - ReadonlyArray, - Parent, - Context - > /** The movies this droid appears in */; - primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; + appearsIn?: AppearsInResolver, any, Context> /** The movies this droid appears in */; + primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type FriendsResolver | null, Parent = Droid, Context = any> = Resolver< + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type FriendsResolver | null, Parent = any, Context = any> = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -438,20 +407,20 @@ export namespace DroidResolvers { after?: string | null; } - export type AppearsInResolver, Parent = Droid, Context = any> = Resolver< + export type AppearsInResolver, Parent = any, Context = any> = Resolver< R, Parent, Context >; - export type PrimaryFunctionResolver = Resolver; + export type PrimaryFunctionResolver = Resolver; } /** The mutation type, represents all updates we can make to our data */ export namespace MutationResolvers { - export interface Resolvers { - createReview?: CreateReviewResolver; + export interface Resolvers { + createReview?: CreateReviewResolver; } - export type CreateReviewResolver = Resolver< + export type CreateReviewResolver = Resolver< R, Parent, Context, @@ -643,11 +612,11 @@ export namespace HeroParentTypeDependentField { }; export type _Friends = { - readonly __typename?: __HumanInlineFragment['__typename']; + readonly __typename?: _HumanInlineFragment['__typename']; readonly name: string; - } & (__HumanInlineFragment); + } & (_HumanInlineFragment); - export type __HumanInlineFragment = { + export type _HumanInlineFragment = { readonly __typename?: 'Human'; readonly height?: number | null; }; diff --git a/dev-test/star-wars/types.noNamespaces.ts b/dev-test/star-wars/types.noNamespaces.ts index 385d4d26327..91c39e49669 100644 --- a/dev-test/star-wars/types.noNamespaces.ts +++ b/dev-test/star-wars/types.noNamespaces.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - /** A character from the Star Wars universe */ export interface Character { id: string /** The ID of the character */; @@ -165,177 +161,157 @@ export enum LengthUnit { export type SearchResult = Human | Droid | Starship; /** The query type, represents all of the entry points into our object graph */ -export interface QueryResolvers { - hero?: QueryHeroResolver; - reviews?: QueryReviewsResolver; - search?: QuerySearchResolver; - character?: QueryCharacterResolver; - droid?: QueryDroidResolver; - human?: QueryHumanResolver; - starship?: QueryStarshipResolver; +export interface QueryResolvers { + hero?: QueryHeroResolver; + reviews?: QueryReviewsResolver; + search?: QuerySearchResolver; + character?: QueryCharacterResolver; + droid?: QueryDroidResolver; + human?: QueryHumanResolver; + starship?: QueryStarshipResolver; } -export type QueryHeroResolver = Resolver; +export type QueryHeroResolver = Resolver; export interface QueryHeroArgs { episode?: Episode | null; } -export type QueryReviewsResolver = Resolver; +export type QueryReviewsResolver = Resolver; export interface QueryReviewsArgs { episode: Episode; } -export type QuerySearchResolver = Resolver< - R, - Parent, - Context ->; +export type QuerySearchResolver = Resolver; export interface QuerySearchArgs { text?: string | null; } -export type QueryCharacterResolver = Resolver; +export type QueryCharacterResolver = Resolver; export interface QueryCharacterArgs { id: string; } -export type QueryDroidResolver = Resolver; +export type QueryDroidResolver = Resolver; export interface QueryDroidArgs { id: string; } -export type QueryHumanResolver = Resolver; +export type QueryHumanResolver = Resolver; export interface QueryHumanArgs { id: string; } -export type QueryStarshipResolver = Resolver; +export type QueryStarshipResolver = Resolver; export interface QueryStarshipArgs { id: string; } /** A connection object for a character's friends */ -export interface FriendsConnectionResolvers { - totalCount?: FriendsConnectionTotalCountResolver /** The total number of friends */; +export interface FriendsConnectionResolvers { + totalCount?: FriendsConnectionTotalCountResolver /** The total number of friends */; edges?: FriendsConnectionEdgesResolver< FriendsEdge[] | null, - Parent, + any, Context > /** The edges for each of the character's friends. */; friends?: FriendsConnectionFriendsResolver< Character[] | null, - Parent, + any, Context > /** A list of the friends, as a convenience when edges are not needed. */; pageInfo?: FriendsConnectionPageInfoResolver< PageInfo, - Parent, + any, Context > /** Information for paginating this connection */; } -export type FriendsConnectionTotalCountResolver< - R = number | null, - Parent = FriendsConnection, - Context = any -> = Resolver; -export type FriendsConnectionEdgesResolver< - R = FriendsEdge[] | null, - Parent = FriendsConnection, - Context = any -> = Resolver; -export type FriendsConnectionFriendsResolver< - R = Character[] | null, - Parent = FriendsConnection, - Context = any -> = Resolver; -export type FriendsConnectionPageInfoResolver = Resolver< +export type FriendsConnectionTotalCountResolver = Resolver< + R, + Parent, + Context +>; +export type FriendsConnectionEdgesResolver = Resolver< R, Parent, Context >; +export type FriendsConnectionFriendsResolver = Resolver< + R, + Parent, + Context +>; +export type FriendsConnectionPageInfoResolver = Resolver; /** An edge object for a character's friends */ -export interface FriendsEdgeResolvers { - cursor?: FriendsEdgeCursorResolver /** A cursor used for pagination */; +export interface FriendsEdgeResolvers { + cursor?: FriendsEdgeCursorResolver /** A cursor used for pagination */; node?: FriendsEdgeNodeResolver< Character | null, - Parent, + any, Context > /** The character represented by this friendship edge */; } -export type FriendsEdgeCursorResolver = Resolver; -export type FriendsEdgeNodeResolver = Resolver< - R, - Parent, - Context ->; +export type FriendsEdgeCursorResolver = Resolver; +export type FriendsEdgeNodeResolver = Resolver; /** Information for paginating this connection */ -export interface PageInfoResolvers { - startCursor?: PageInfoStartCursorResolver; - endCursor?: PageInfoEndCursorResolver; - hasNextPage?: PageInfoHasNextPageResolver; +export interface PageInfoResolvers { + startCursor?: PageInfoStartCursorResolver; + endCursor?: PageInfoEndCursorResolver; + hasNextPage?: PageInfoHasNextPageResolver; } -export type PageInfoStartCursorResolver = Resolver< - R, - Parent, - Context ->; -export type PageInfoEndCursorResolver = Resolver< - R, - Parent, - Context ->; -export type PageInfoHasNextPageResolver = Resolver; +export type PageInfoStartCursorResolver = Resolver; +export type PageInfoEndCursorResolver = Resolver; +export type PageInfoHasNextPageResolver = Resolver; /** Represents a review for a movie */ -export interface ReviewResolvers { - stars?: ReviewStarsResolver /** The number of stars this review gave, 1-5 */; - commentary?: ReviewCommentaryResolver /** Comment about the movie */; +export interface ReviewResolvers { + stars?: ReviewStarsResolver /** The number of stars this review gave, 1-5 */; + commentary?: ReviewCommentaryResolver /** Comment about the movie */; } -export type ReviewStarsResolver = Resolver; -export type ReviewCommentaryResolver = Resolver; +export type ReviewStarsResolver = Resolver; +export type ReviewCommentaryResolver = Resolver; /** A humanoid creature from the Star Wars universe */ -export interface HumanResolvers { - id?: HumanIdResolver /** The ID of the human */; - name?: HumanNameResolver /** What this human calls themselves */; +export interface HumanResolvers { + id?: HumanIdResolver /** The ID of the human */; + name?: HumanNameResolver /** What this human calls themselves */; homePlanet?: HumanHomePlanetResolver< string | null, - Parent, + any, Context > /** The home planet of the human, or null if unknown */; - height?: HumanHeightResolver /** Height in the preferred unit, default is meters */; - mass?: HumanMassResolver /** Mass in kilograms, or null if unknown */; + height?: HumanHeightResolver /** Height in the preferred unit, default is meters */; + mass?: HumanMassResolver /** Mass in kilograms, or null if unknown */; friends?: HumanFriendsResolver< Character[] | null, - Parent, + any, Context > /** This human's friends, or an empty list if they have none */; friendsConnection?: HumanFriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the human exposed as a connection with edges */; - appearsIn?: HumanAppearsInResolver /** The movies this human appears in */; + appearsIn?: HumanAppearsInResolver /** The movies this human appears in */; starships?: HumanStarshipsResolver< Starship[] | null, - Parent, + any, Context > /** A list of starships this person has piloted, or an empty list if none */; } -export type HumanIdResolver = Resolver; -export type HumanNameResolver = Resolver; -export type HumanHomePlanetResolver = Resolver; -export type HumanHeightResolver = Resolver; +export type HumanIdResolver = Resolver; +export type HumanNameResolver = Resolver; +export type HumanHomePlanetResolver = Resolver; +export type HumanHeightResolver = Resolver; export interface HumanHeightArgs { unit?: LengthUnit | null; } -export type HumanMassResolver = Resolver; -export type HumanFriendsResolver = Resolver; -export type HumanFriendsConnectionResolver = Resolver< +export type HumanMassResolver = Resolver; +export type HumanFriendsResolver = Resolver; +export type HumanFriendsConnectionResolver = Resolver< R, Parent, Context @@ -345,44 +321,44 @@ export interface HumanFriendsConnectionArgs { after?: string | null; } -export type HumanAppearsInResolver = Resolver; -export type HumanStarshipsResolver = Resolver; +export type HumanAppearsInResolver = Resolver; +export type HumanStarshipsResolver = Resolver; -export interface StarshipResolvers { - id?: StarshipIdResolver /** The ID of the starship */; - name?: StarshipNameResolver /** The name of the starship */; - length?: StarshipLengthResolver /** Length of the starship, along the longest axis */; +export interface StarshipResolvers { + id?: StarshipIdResolver /** The ID of the starship */; + name?: StarshipNameResolver /** The name of the starship */; + length?: StarshipLengthResolver /** Length of the starship, along the longest axis */; } -export type StarshipIdResolver = Resolver; -export type StarshipNameResolver = Resolver; -export type StarshipLengthResolver = Resolver; +export type StarshipIdResolver = Resolver; +export type StarshipNameResolver = Resolver; +export type StarshipLengthResolver = Resolver; export interface StarshipLengthArgs { unit?: LengthUnit | null; } /** An autonomous mechanical character in the Star Wars universe */ -export interface DroidResolvers { - id?: DroidIdResolver /** The ID of the droid */; - name?: DroidNameResolver /** What others call this droid */; +export interface DroidResolvers { + id?: DroidIdResolver /** The ID of the droid */; + name?: DroidNameResolver /** What others call this droid */; friends?: DroidFriendsResolver< Character[] | null, - Parent, + any, Context > /** This droid's friends, or an empty list if they have none */; friendsConnection?: DroidFriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the droid exposed as a connection with edges */; - appearsIn?: DroidAppearsInResolver /** The movies this droid appears in */; - primaryFunction?: DroidPrimaryFunctionResolver /** This droid's primary function */; + appearsIn?: DroidAppearsInResolver /** The movies this droid appears in */; + primaryFunction?: DroidPrimaryFunctionResolver /** This droid's primary function */; } -export type DroidIdResolver = Resolver; -export type DroidNameResolver = Resolver; -export type DroidFriendsResolver = Resolver; -export type DroidFriendsConnectionResolver = Resolver< +export type DroidIdResolver = Resolver; +export type DroidNameResolver = Resolver; +export type DroidFriendsResolver = Resolver; +export type DroidFriendsConnectionResolver = Resolver< R, Parent, Context @@ -392,22 +368,14 @@ export interface DroidFriendsConnectionArgs { after?: string | null; } -export type DroidAppearsInResolver = Resolver; -export type DroidPrimaryFunctionResolver = Resolver< - R, - Parent, - Context ->; +export type DroidAppearsInResolver = Resolver; +export type DroidPrimaryFunctionResolver = Resolver; /** The mutation type, represents all updates we can make to our data */ -export interface MutationResolvers { - createReview?: MutationCreateReviewResolver; +export interface MutationResolvers { + createReview?: MutationCreateReviewResolver; } -export type MutationCreateReviewResolver = Resolver< - R, - Parent, - Context ->; +export type MutationCreateReviewResolver = Resolver; export interface MutationCreateReviewArgs { episode?: Episode | null; review: ReviewInput; @@ -578,11 +546,11 @@ export type HeroParentTypeDependentFieldDroidInlineFragment = { }; export type HeroParentTypeDependentField_Friends = { - __typename?: HeroParentTypeDependentField__HumanInlineFragment['__typename']; + __typename?: HeroParentTypeDependentField_HumanInlineFragment['__typename']; name: string; -} & (HeroParentTypeDependentField__HumanInlineFragment); +} & (HeroParentTypeDependentField_HumanInlineFragment); -export type HeroParentTypeDependentField__HumanInlineFragment = { +export type HeroParentTypeDependentField_HumanInlineFragment = { __typename?: 'Human'; height?: number | null; }; diff --git a/dev-test/star-wars/types.skipSchema.ts b/dev-test/star-wars/types.skipSchema.ts index 96ac83f4aa1..0602029db6a 100644 --- a/dev-test/star-wars/types.skipSchema.ts +++ b/dev-test/star-wars/types.skipSchema.ts @@ -204,11 +204,11 @@ export namespace HeroParentTypeDependentField { }; export type _Friends = { - __typename?: __HumanInlineFragment['__typename']; + __typename?: _HumanInlineFragment['__typename']; name: string; - } & (__HumanInlineFragment); + } & (_HumanInlineFragment); - export type __HumanInlineFragment = { + export type _HumanInlineFragment = { __typename?: 'Human'; height?: number | null; }; diff --git a/dev-test/star-wars/types.ts b/dev-test/star-wars/types.ts index 6973d68cf52..dda9c6cdbb6 100644 --- a/dev-test/star-wars/types.ts +++ b/dev-test/star-wars/types.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - /** A character from the Star Wars universe */ export interface Character { id: string /** The ID of the character */; @@ -166,27 +162,22 @@ export type SearchResult = Human | Droid | Starship; /** The query type, represents all of the entry points into our object graph */ export namespace QueryResolvers { - export interface Resolvers { - hero?: HeroResolver; - reviews?: ReviewsResolver<(Review | null)[] | null, Parent, Context>; - search?: SearchResolver<(SearchResult | null)[] | null, Parent, Context>; - character?: CharacterResolver; - droid?: DroidResolver; - human?: HumanResolver; - starship?: StarshipResolver; + export interface Resolvers { + hero?: HeroResolver; + reviews?: ReviewsResolver<(Review | null)[] | null, any, Context>; + search?: SearchResolver<(SearchResult | null)[] | null, any, Context>; + character?: CharacterResolver; + droid?: DroidResolver; + human?: HumanResolver; + starship?: StarshipResolver; } - export type HeroResolver = Resolver< - R, - Parent, - Context, - HeroArgs - >; + export type HeroResolver = Resolver; export interface HeroArgs { episode?: Episode | null; } - export type ReviewsResolver = Resolver< + export type ReviewsResolver = Resolver< R, Parent, Context, @@ -196,7 +187,7 @@ export namespace QueryResolvers { episode: Episode; } - export type SearchResolver = Resolver< + export type SearchResolver = Resolver< R, Parent, Context, @@ -206,7 +197,7 @@ export namespace QueryResolvers { text?: string | null; } - export type CharacterResolver = Resolver< + export type CharacterResolver = Resolver< R, Parent, Context, @@ -216,17 +207,17 @@ export namespace QueryResolvers { id: string; } - export type DroidResolver = Resolver; + export type DroidResolver = Resolver; export interface DroidArgs { id: string; } - export type HumanResolver = Resolver; + export type HumanResolver = Resolver; export interface HumanArgs { id: string; } - export type StarshipResolver = Resolver< + export type StarshipResolver = Resolver< R, Parent, Context, @@ -238,120 +229,111 @@ export namespace QueryResolvers { } /** A connection object for a character's friends */ export namespace FriendsConnectionResolvers { - export interface Resolvers { - totalCount?: TotalCountResolver /** The total number of friends */; + export interface Resolvers { + totalCount?: TotalCountResolver /** The total number of friends */; edges?: EdgesResolver< (FriendsEdge | null)[] | null, - Parent, + any, Context > /** The edges for each of the character's friends. */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** A list of the friends, as a convenience when edges are not needed. */; - pageInfo?: PageInfoResolver /** Information for paginating this connection */; + pageInfo?: PageInfoResolver /** Information for paginating this connection */; } - export type TotalCountResolver = Resolver< + export type TotalCountResolver = Resolver; + export type EdgesResolver = Resolver< R, Parent, Context >; - export type EdgesResolver = Resolver< + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsResolver = Resolver< - R, - Parent, - Context - >; - export type PageInfoResolver = Resolver; + export type PageInfoResolver = Resolver; } /** An edge object for a character's friends */ export namespace FriendsEdgeResolvers { - export interface Resolvers { - cursor?: CursorResolver /** A cursor used for pagination */; - node?: NodeResolver /** The character represented by this friendship edge */; + export interface Resolvers { + cursor?: CursorResolver /** A cursor used for pagination */; + node?: NodeResolver /** The character represented by this friendship edge */; } - export type CursorResolver = Resolver; - export type NodeResolver = Resolver; + export type CursorResolver = Resolver; + export type NodeResolver = Resolver; } /** Information for paginating this connection */ export namespace PageInfoResolvers { - export interface Resolvers { - startCursor?: StartCursorResolver; - endCursor?: EndCursorResolver; - hasNextPage?: HasNextPageResolver; + export interface Resolvers { + startCursor?: StartCursorResolver; + endCursor?: EndCursorResolver; + hasNextPage?: HasNextPageResolver; } - export type StartCursorResolver = Resolver; - export type EndCursorResolver = Resolver; - export type HasNextPageResolver = Resolver; + export type StartCursorResolver = Resolver; + export type EndCursorResolver = Resolver; + export type HasNextPageResolver = Resolver; } /** Represents a review for a movie */ export namespace ReviewResolvers { - export interface Resolvers { - stars?: StarsResolver /** The number of stars this review gave, 1-5 */; - commentary?: CommentaryResolver /** Comment about the movie */; + export interface Resolvers { + stars?: StarsResolver /** The number of stars this review gave, 1-5 */; + commentary?: CommentaryResolver /** Comment about the movie */; } - export type StarsResolver = Resolver; - export type CommentaryResolver = Resolver; + export type StarsResolver = Resolver; + export type CommentaryResolver = Resolver; } /** A humanoid creature from the Star Wars universe */ export namespace HumanResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the human */; - name?: NameResolver /** What this human calls themselves */; + export interface Resolvers { + id?: IdResolver /** The ID of the human */; + name?: NameResolver /** What this human calls themselves */; homePlanet?: HomePlanetResolver< string | null, - Parent, + any, Context > /** The home planet of the human, or null if unknown */; - height?: HeightResolver /** Height in the preferred unit, default is meters */; - mass?: MassResolver /** Mass in kilograms, or null if unknown */; + height?: HeightResolver /** Height in the preferred unit, default is meters */; + mass?: MassResolver /** Mass in kilograms, or null if unknown */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** This human's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the human exposed as a connection with edges */; - appearsIn?: AppearsInResolver<(Episode | null)[], Parent, Context> /** The movies this human appears in */; + appearsIn?: AppearsInResolver<(Episode | null)[], any, Context> /** The movies this human appears in */; starships?: StarshipsResolver< (Starship | null)[] | null, - Parent, + any, Context > /** A list of starships this person has piloted, or an empty list if none */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type HomePlanetResolver = Resolver; - export type HeightResolver = Resolver< - R, - Parent, - Context, - HeightArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type HomePlanetResolver = Resolver; + export type HeightResolver = Resolver; export interface HeightArgs { unit?: LengthUnit | null; } - export type MassResolver = Resolver; - export type FriendsResolver = Resolver< + export type MassResolver = Resolver; + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -362,8 +344,8 @@ export namespace HumanResolvers { after?: string | null; } - export type AppearsInResolver = Resolver; - export type StarshipsResolver = Resolver< + export type AppearsInResolver = Resolver; + export type StarshipsResolver = Resolver< R, Parent, Context @@ -371,51 +353,46 @@ export namespace HumanResolvers { } export namespace StarshipResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the starship */; - name?: NameResolver /** The name of the starship */; - length?: LengthResolver /** Length of the starship, along the longest axis */; + export interface Resolvers { + id?: IdResolver /** The ID of the starship */; + name?: NameResolver /** The name of the starship */; + length?: LengthResolver /** Length of the starship, along the longest axis */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type LengthResolver = Resolver< - R, - Parent, - Context, - LengthArgs - >; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type LengthResolver = Resolver; export interface LengthArgs { unit?: LengthUnit | null; } } /** An autonomous mechanical character in the Star Wars universe */ export namespace DroidResolvers { - export interface Resolvers { - id?: IdResolver /** The ID of the droid */; - name?: NameResolver /** What others call this droid */; + export interface Resolvers { + id?: IdResolver /** The ID of the droid */; + name?: NameResolver /** What others call this droid */; friends?: FriendsResolver< (Character | null)[] | null, - Parent, + any, Context > /** This droid's friends, or an empty list if they have none */; friendsConnection?: FriendsConnectionResolver< FriendsConnection, - Parent, + any, Context > /** The friends of the droid exposed as a connection with edges */; - appearsIn?: AppearsInResolver<(Episode | null)[], Parent, Context> /** The movies this droid appears in */; - primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; + appearsIn?: AppearsInResolver<(Episode | null)[], any, Context> /** The movies this droid appears in */; + primaryFunction?: PrimaryFunctionResolver /** This droid's primary function */; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type FriendsResolver = Resolver< + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type FriendsResolver = Resolver< R, Parent, Context >; - export type FriendsConnectionResolver = Resolver< + export type FriendsConnectionResolver = Resolver< R, Parent, Context, @@ -426,16 +403,16 @@ export namespace DroidResolvers { after?: string | null; } - export type AppearsInResolver = Resolver; - export type PrimaryFunctionResolver = Resolver; + export type AppearsInResolver = Resolver; + export type PrimaryFunctionResolver = Resolver; } /** The mutation type, represents all updates we can make to our data */ export namespace MutationResolvers { - export interface Resolvers { - createReview?: CreateReviewResolver; + export interface Resolvers { + createReview?: CreateReviewResolver; } - export type CreateReviewResolver = Resolver< + export type CreateReviewResolver = Resolver< R, Parent, Context, @@ -627,11 +604,11 @@ export namespace HeroParentTypeDependentField { }; export type _Friends = { - __typename?: __HumanInlineFragment['__typename']; + __typename?: _HumanInlineFragment['__typename']; name: string; - } & (__HumanInlineFragment); + } & (_HumanInlineFragment); - export type __HumanInlineFragment = { + export type _HumanInlineFragment = { __typename?: 'Human'; height?: number | null; }; diff --git a/dev-test/test-schema/typings.avoidOptionals.ts b/dev-test/test-schema/typings.avoidOptionals.ts index e31724f5326..8a9a50006b3 100644 --- a/dev-test/test-schema/typings.avoidOptionals.ts +++ b/dev-test/test-schema/typings.avoidOptionals.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { allUsers: (User | null)[]; userById: User | null; @@ -42,13 +38,13 @@ export interface UserByIdQueryArgs { } export namespace QueryResolvers { - export interface Resolvers { - allUsers?: AllUsersResolver<(User | null)[], Parent, Context>; - userById?: UserByIdResolver; + export interface Resolvers { + allUsers?: AllUsersResolver<(User | null)[], any, Context>; + userById?: UserByIdResolver; } - export type AllUsersResolver = Resolver; - export type UserByIdResolver = Resolver< + export type AllUsersResolver = Resolver; + export type UserByIdResolver = Resolver< R, Parent, Context, @@ -60,13 +56,13 @@ export namespace QueryResolvers { } export namespace UserResolvers { - export interface Resolvers { - id?: IdResolver; - name?: NameResolver; - email?: EmailResolver; + export interface Resolvers { + id?: IdResolver; + name?: NameResolver; + email?: EmailResolver; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type EmailResolver = Resolver; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type EmailResolver = Resolver; } diff --git a/dev-test/test-schema/typings.immutableTypes.ts b/dev-test/test-schema/typings.immutableTypes.ts index 8a9d9f26f3f..15f6d06d805 100644 --- a/dev-test/test-schema/typings.immutableTypes.ts +++ b/dev-test/test-schema/typings.immutableTypes.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { readonly allUsers: ReadonlyArray; readonly userById?: User | null; @@ -42,17 +38,17 @@ export interface UserByIdQueryArgs { } export namespace QueryResolvers { - export interface Resolvers { - allUsers?: AllUsersResolver, Parent, Context>; - userById?: UserByIdResolver; + export interface Resolvers { + allUsers?: AllUsersResolver, any, Context>; + userById?: UserByIdResolver; } - export type AllUsersResolver, Parent = Query, Context = any> = Resolver< + export type AllUsersResolver, Parent = any, Context = any> = Resolver< R, Parent, Context >; - export type UserByIdResolver = Resolver< + export type UserByIdResolver = Resolver< R, Parent, Context, @@ -64,13 +60,13 @@ export namespace QueryResolvers { } export namespace UserResolvers { - export interface Resolvers { - id?: IdResolver; - name?: NameResolver; - email?: EmailResolver; + export interface Resolvers { + id?: IdResolver; + name?: NameResolver; + email?: EmailResolver; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type EmailResolver = Resolver; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type EmailResolver = Resolver; } diff --git a/dev-test/test-schema/typings.ts b/dev-test/test-schema/typings.ts index 1a4464d87a3..9e2f8e87e9d 100644 --- a/dev-test/test-schema/typings.ts +++ b/dev-test/test-schema/typings.ts @@ -1,7 +1,7 @@ /* tslint:disable */ import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -23,10 +23,6 @@ export type SubscriptionResolver; }; -export type Resolver = - | QueryResolver - | SubscriptionResolver; - export interface Query { allUsers: (User | null)[]; userById?: User | null; @@ -42,13 +38,13 @@ export interface UserByIdQueryArgs { } export namespace QueryResolvers { - export interface Resolvers { - allUsers?: AllUsersResolver<(User | null)[], Parent, Context>; - userById?: UserByIdResolver; + export interface Resolvers { + allUsers?: AllUsersResolver<(User | null)[], any, Context>; + userById?: UserByIdResolver; } - export type AllUsersResolver = Resolver; - export type UserByIdResolver = Resolver< + export type AllUsersResolver = Resolver; + export type UserByIdResolver = Resolver< R, Parent, Context, @@ -60,13 +56,13 @@ export namespace QueryResolvers { } export namespace UserResolvers { - export interface Resolvers { - id?: IdResolver; - name?: NameResolver; - email?: EmailResolver; + export interface Resolvers { + id?: IdResolver; + name?: NameResolver; + email?: EmailResolver; } - export type IdResolver = Resolver; - export type NameResolver = Resolver; - export type EmailResolver = Resolver; + export type IdResolver = Resolver; + export type NameResolver = Resolver; + export type EmailResolver = Resolver; } diff --git a/packages/graphql-codegen-compiler/src/flatten-types.ts b/packages/graphql-codegen-compiler/src/flatten-types.ts index f2b7f0faec8..3d14a769ca5 100644 --- a/packages/graphql-codegen-compiler/src/flatten-types.ts +++ b/packages/graphql-codegen-compiler/src/flatten-types.ts @@ -73,20 +73,24 @@ export function flattenSelectionSet(selectionSet: SelectionSetItem[], result: Fl export function flattenTypes(document: Document): FlattenDocument { return { - operations: document.operations.map((operation: Operation): FlattenOperation => { - return { - isFlatten: true, - ...operation, - innerModels: flattenSelectionSet(operation.selectionSet) - } as FlattenOperation; - }), - fragments: document.fragments.map((fragment: Fragment): FlattenFragment => { - return { - isFlatten: true, - ...fragment, - innerModels: flattenSelectionSet(fragment.selectionSet) - } as FlattenFragment; - }), + operations: document.operations.map( + (operation: Operation): FlattenOperation => { + return { + isFlatten: true, + ...operation, + innerModels: flattenSelectionSet(operation.selectionSet) + } as FlattenOperation; + } + ), + fragments: document.fragments.map( + (fragment: Fragment): FlattenFragment => { + return { + isFlatten: true, + ...fragment, + innerModels: flattenSelectionSet(fragment.selectionSet) + } as FlattenFragment; + } + ), hasOperations: document.hasOperations, hasFragments: document.hasFragments }; diff --git a/packages/graphql-codegen-core/src/schema/resolve-type-indicators.ts b/packages/graphql-codegen-core/src/schema/resolve-type-indicators.ts index 14053d8333e..e1dd3b9a311 100644 --- a/packages/graphql-codegen-core/src/schema/resolve-type-indicators.ts +++ b/packages/graphql-codegen-core/src/schema/resolve-type-indicators.ts @@ -5,9 +5,7 @@ import { GraphQLNamedType, GraphQLObjectType, GraphQLScalarType, - GraphQLType, - GraphQLUnionType, - isLeafType + GraphQLUnionType } from 'graphql'; export interface NamedTypeIndicators { diff --git a/packages/graphql-codegen-core/src/schema/transform-fields.ts b/packages/graphql-codegen-core/src/schema/transform-fields.ts index c0de8d88ab5..8aefa030a8b 100644 --- a/packages/graphql-codegen-core/src/schema/transform-fields.ts +++ b/packages/graphql-codegen-core/src/schema/transform-fields.ts @@ -1,13 +1,29 @@ -import { getNamedType, GraphQLField, GraphQLFieldMap, GraphQLSchema, isLeafType } from 'graphql'; +import { + getNamedType, + GraphQLField, + GraphQLFieldMap, + GraphQLSchema, + GraphQLInterfaceType, + GraphQLObjectType, + GraphQLInputObjectType, + GraphQLNamedType, + GraphQLScalarType, + GraphQLUnionType, + GraphQLEnumType +} from 'graphql'; import { objectMapToArray } from '../utils/object-map-to-array'; -import { Field } from '../types'; +import { Field, FieldType } from '../types'; import { resolveType } from './resolve-type'; import { resolveArguments } from './resolve-arguments'; import { resolveTypeIndicators } from './resolve-type-indicators'; import { debugLog } from '../debugging'; import { getDirectives } from '../utils/get-directives'; -export function resolveFields(schema: GraphQLSchema, rawFields: GraphQLFieldMap): Field[] { +export function resolveFields( + schema: GraphQLSchema, + rawFields: GraphQLFieldMap, + parent: GraphQLObjectType | GraphQLInterfaceType | GraphQLInputObjectType +): Field[] { const fieldsArray = objectMapToArray>(rawFields); return fieldsArray.map( @@ -25,6 +41,7 @@ export function resolveFields(schema: GraphQLSchema, rawFields: GraphQLFieldMap< description: item.value.description || '', arguments: resolvedArguments, type: type.name, + fieldType: toFieldType(schema, namedType), raw: type.raw, isNullableArray: type.isNullableArray, isArray: type.isArray, @@ -43,3 +60,19 @@ export function resolveFields(schema: GraphQLSchema, rawFields: GraphQLFieldMap< } ); } + +function toFieldType(schema: GraphQLSchema, type: GraphQLNamedType): FieldType { + const typeMap = { + Type: () => type instanceof GraphQLObjectType, + Scalar: () => type instanceof GraphQLScalarType, + Interface: () => type instanceof GraphQLInterfaceType, + Union: () => type instanceof GraphQLUnionType, + InputType: () => type instanceof GraphQLInputObjectType, + Enum: () => type instanceof GraphQLEnumType, + Query: () => schema.getQueryType() && schema.getQueryType().name === type.name, + Mutation: () => schema.getMutationType() && schema.getMutationType().name === type.name, + Subscription: () => schema.getSubscriptionType() && schema.getSubscriptionType().name === type.name + }; + + return Object.keys(typeMap).find(fieldType => typeMap[fieldType]()) as FieldType; +} diff --git a/packages/graphql-codegen-core/src/schema/transform-interface.ts b/packages/graphql-codegen-core/src/schema/transform-interface.ts index a71b51b8573..3f9f562847f 100644 --- a/packages/graphql-codegen-core/src/schema/transform-interface.ts +++ b/packages/graphql-codegen-core/src/schema/transform-interface.ts @@ -8,7 +8,7 @@ import { getImplementingTypes } from './implementing-types'; export function transformInterface(schema: GraphQLSchema, gqlInterface: GraphQLInterfaceType): Interface { debugLog(`[transformInterface] transformed interface ${gqlInterface.name}`); - const resolvedFields = resolveFields(schema, gqlInterface.getFields()); + const resolvedFields = resolveFields(schema, gqlInterface.getFields(), gqlInterface); const directives = getDirectives(schema, gqlInterface); const implementingTypes = getImplementingTypes(gqlInterface.name, schema); diff --git a/packages/graphql-codegen-core/src/schema/transform-object.ts b/packages/graphql-codegen-core/src/schema/transform-object.ts index d10fbfaab1d..51e3840df32 100644 --- a/packages/graphql-codegen-core/src/schema/transform-object.ts +++ b/packages/graphql-codegen-core/src/schema/transform-object.ts @@ -9,7 +9,7 @@ export function transformGraphQLObject( object: GraphQLObjectType | GraphQLInputObjectType ): Type { debugLog(`[transformGraphQLObject] transforming type ${object.name}`); - const resolvedFields = resolveFields(schema, (object as any).getFields()); + const resolvedFields = resolveFields(schema, (object as any).getFields(), object); const resolvedInterfaces = object instanceof GraphQLObjectType ? object.getInterfaces().map(inf => inf.name) : []; const directives = getDirectives(schema, object); diff --git a/packages/graphql-codegen-core/src/types.ts b/packages/graphql-codegen-core/src/types.ts index 7d50433b7e0..aa61ac6b493 100644 --- a/packages/graphql-codegen-core/src/types.ts +++ b/packages/graphql-codegen-core/src/types.ts @@ -5,6 +5,17 @@ export interface AstNode { usesDirectives: boolean; } +export type FieldType = + | 'Interface' + | 'InputType' + | 'Type' + | 'Query' + | 'Mutation' + | 'Subscription' + | 'Enum' + | 'Scalar' + | 'Union'; + export interface Argument extends AstNode { raw: string; name: string; @@ -27,6 +38,7 @@ export interface Field extends AstNode { description: string; arguments: Argument[]; type: string; + fieldType: FieldType; raw: string; isArray: boolean; dimensionOfArray: number; diff --git a/packages/templates/typescript/src/helpers/get-field-resolver.ts b/packages/templates/typescript/src/helpers/get-field-resolver.ts index 83d48bf81e5..737f7dc8859 100644 --- a/packages/templates/typescript/src/helpers/get-field-resolver.ts +++ b/packages/templates/typescript/src/helpers/get-field-resolver.ts @@ -9,10 +9,18 @@ export function getFieldResolver(type, options) { let result; + let resolver: string; + + if (type.fieldType === 'Subscription') { + resolver = 'SubscriptionResolver'; + } else { + resolver = 'Resolver'; + } + if (type.hasArguments && !config.noNamespaces) { - result = `Resolver`; + result = `${resolver}`; } else { - result = `Resolver`; + result = `${resolver}`; } return new SafeString(result); diff --git a/packages/templates/typescript/src/resolver.handlebars b/packages/templates/typescript/src/resolver.handlebars index 12dbff55ebb..a0fec41f150 100644 --- a/packages/templates/typescript/src/resolver.handlebars +++ b/packages/templates/typescript/src/resolver.handlebars @@ -2,14 +2,14 @@ {{#unless @root.config.noNamespaces}} export namespace {{ toPascalCase name }}Resolvers { {{/unless}} - export interface {{#if @root.config.noNamespaces}}{{ toPascalCase name }}{{/if}}Resolvers { + export interface {{#if @root.config.noNamespaces}}{{ toPascalCase name }}{{/if}}Resolvers { {{#each fields}} - {{ name }}?: {{#if @root.config.noNamespaces}}{{ toPascalCase ../name }}{{/if}}{{ getFieldResolverName name }}<{{convertedType this}}, Parent, Context>; {{ toComment description }} + {{ name }}?: {{#if @root.config.noNamespaces}}{{ toPascalCase ../name }}{{/if}}{{ getFieldResolverName name }}<{{ convertedType this}}, any, Context>; {{ toComment description }} {{/each}} } {{#each fields}} - export type {{#if @root.config.noNamespaces}}{{ toPascalCase ../name }}{{/if}}{{ getFieldResolverName name }} = {{ getFieldResolver this }}; + export type {{#if @root.config.noNamespaces}}{{ toPascalCase ../name }}{{/if}}{{ getFieldResolverName name }} = {{ getFieldResolver this }}; {{~# if hasArguments }} diff --git a/packages/templates/typescript/src/schema.handlebars b/packages/templates/typescript/src/schema.handlebars index 9fb05f199c6..5a1a9a28820 100644 --- a/packages/templates/typescript/src/schema.handlebars +++ b/packages/templates/typescript/src/schema.handlebars @@ -2,7 +2,7 @@ {{#if types}} import { GraphQLResolveInfo } from 'graphql'; -export type QueryResolver = ( +export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -24,9 +24,6 @@ export type SubscriptionResolver; } -export type Resolver = - QueryResolver | SubscriptionResolver; - {{/if}} {{/ifCond}} {{#if @root.config.schemaNamespace ~}}export namespace {{@root.config.schemaNamespace}} { {{/if}} diff --git a/packages/templates/typescript/src/utils/get-result-type.ts b/packages/templates/typescript/src/utils/get-result-type.ts index 2144ba3f5cb..afde8f7adec 100644 --- a/packages/templates/typescript/src/utils/get-result-type.ts +++ b/packages/templates/typescript/src/utils/get-result-type.ts @@ -2,23 +2,25 @@ import { pascalCase } from 'change-case'; export function getResultType(type, options) { const baseType = type.type; + const underscorePrefix = type.type.match(/^[\_]+/) || ''; const config = options.data.root.config || {}; const realType = - options.data.root.primitivesMap[baseType] || `${config.interfacePrefix || ''}${pascalCase(baseType)}`; + options.data.root.primitivesMap[baseType] || + `${config.interfacePrefix || ''}${underscorePrefix + pascalCase(baseType)}`; const useImmutable = !!config.immutableTypes; if (type.isArray) { let result = realType; + const dimension = type.dimensionOfArray + 1; + if (type.isNullableArray && !config.noNamespaces) { result = useImmutable ? [realType, 'null'].join(' | ') : `(${[realType, 'null'].join(' | ')})`; } if (useImmutable) { - result = `${new Array(type.dimensionOfArray + 1).join('ReadonlyArray<')}${result}${new Array( - type.dimensionOfArray + 1 - ).join('>')}`; + result = `${new Array(dimension).join('ReadonlyArray<')}${result}${new Array(dimension).join('>')}`; } else { - result = `${result}${new Array(type.dimensionOfArray + 1).join('[]')}`; + result = `${result}${new Array(dimension).join('[]')}`; } if (!type.isRequired) { diff --git a/packages/templates/typescript/tests/resolvers.spec.ts b/packages/templates/typescript/tests/resolvers.spec.ts index 49bf1e71ad4..5e7f35fbdf9 100644 --- a/packages/templates/typescript/tests/resolvers.spec.ts +++ b/packages/templates/typescript/tests/resolvers.spec.ts @@ -37,7 +37,7 @@ describe('Resolvers', () => { expect(content).toBeSimilarStringTo(` import { GraphQLResolveInfo } from 'graphql'; - export type QueryResolver = ( + export type Resolver = ( parent?: Parent, args?: Args, context?: Context, @@ -58,10 +58,6 @@ describe('Resolvers', () => { info?: GraphQLResolveInfo ): R | Result | Promise; } - - export type Resolver = - QueryResolver | SubscriptionResolver; - `); }); @@ -82,8 +78,8 @@ describe('Resolvers', () => { expect(content).toBeSimilarStringTo(` export namespace QueryResolvers { - export interface Resolvers { - fieldTest?: FieldTestResolver; + export interface Resolvers { + fieldTest?: FieldTestResolver; } `); }); @@ -105,10 +101,10 @@ describe('Resolvers', () => { expect(content).toBeSimilarStringTo(` export namespace QueryResolvers { - export interface Resolvers { - fieldTest?: FieldTestResolver; + export interface Resolvers { + fieldTest?: FieldTestResolver; } - export type FieldTestResolver = Resolver; + export type FieldTestResolver = Resolver; } `); }); @@ -130,11 +126,11 @@ describe('Resolvers', () => { expect(content).toBeSimilarStringTo(` export namespace QueryResolvers { - export interface Resolvers { - fieldTest?: FieldTestResolver; + export interface Resolvers { + fieldTest?: FieldTestResolver; } - export type FieldTestResolver = Resolver; + export type FieldTestResolver = Resolver; export interface FieldTestArgs { last: number; @@ -185,6 +181,42 @@ describe('Resolvers', () => { `); }); + it('should handle subscription', async () => { + const { context } = compileAndBuildContext(` + type Subscription { + fieldTest: String + } + + schema { + subscription: Subscription + } + `); + + const compiled = await compileTemplate( + { + ...config + }, + context + ); + + const content = compiled[0].content; + + expect(content).not.toBeSimilarStringTo(` + export namespace SubscriptionResolvers { + export interface Resolvers { + fieldTest?: FieldTestResolver; + } + + export type FieldTestResolver = SubscriptionResolver; + + export interface FieldTestArgs { + last: number; + sort?: string | null; + } + } + `); + }); + it('should handle noNamespaces', async () => { const { context } = compileAndBuildContext(` type Query { @@ -209,11 +241,11 @@ describe('Resolvers', () => { const content = compiled[0].content; expect(content).toBeSimilarStringTo(` - export interface QueryResolvers { - fieldTest?: QueryFieldTestResolver; + export interface QueryResolvers { + fieldTest?: QueryFieldTestResolver; } - export type QueryFieldTestResolver = Resolver; + export type QueryFieldTestResolver = Resolver; `); }); @@ -242,7 +274,7 @@ describe('Resolvers', () => { const content = compiled[0].content; expect(content).toBeSimilarStringTo(` - export type SnakeCaseRootQueryResolver = Resolver; + export type SnakeCaseRootQueryResolver = Resolver; `); expect(content).toBeSimilarStringTo(` export interface SnakeCaseRootQueryArgs { diff --git a/packages/templates/typescript/tests/typescript.spec.ts b/packages/templates/typescript/tests/typescript.spec.ts index a6b0cc68d85..1697e1e1117 100644 --- a/packages/templates/typescript/tests/typescript.spec.ts +++ b/packages/templates/typescript/tests/typescript.spec.ts @@ -414,18 +414,18 @@ describe('TypeScript template', () => { it('should compile template correctly when using a simple Query with arrays and required', async () => { const { context } = compileAndBuildContext(` type Query { - fieldTest: String + fieldTest: T } type T { - f1: [String], + f1: [String] f2: Int! - f3: A, + f3: A f4: [[[String]]] } type A { - f4: String + f4: T } `); const compiled = await compileTemplate(config, context); @@ -436,7 +436,7 @@ describe('TypeScript template', () => { `); expect(content).toBeSimilarStringTo(` export interface Query { - fieldTest?: string | null; + fieldTest?: T | null; } `); expect(content).toBeSimilarStringTo(` @@ -449,7 +449,7 @@ describe('TypeScript template', () => { `); expect(content).toBeSimilarStringTo(` export interface A { - f4?: string | null; + f4?: T | null; } `); }); @@ -893,6 +893,87 @@ describe('TypeScript template', () => { `); }); + it('Should compile nested types', async () => { + const schema = makeExecutableSchema({ + typeDefs: ` + type User { + profile: Profile + id: Int! + favFriend: User + } + + type Profile { + name: String! + email: String! + } + + type Query { + me: User + } + ` + }); + const context = schemaToTemplateContext(schema); + + const documents = gql` + query me { + me { + id + profile { + name + } + favFriend { + id + profile { + email + } + } + } + } + `; + + const transformedDocument = transformDocument(schema, documents); + const compiled = await compileTemplate(config, context, [transformedDocument], { generateSchema: false }); + const content = compiled[0].content; + + expect(compiled[0].content).toBeSimilarStringTo(` + /* tslint:disable */ + `); + expect(content).toBeSimilarStringTo(` + export namespace Me { + export type Variables = { + } + + export type Query = { + __typename?: "Query"; + me?: Me | null; + } + + export type Me = { + __typename?: "User"; + id: number; + profile?: Profile | null; + favFriend?: FavFriend | null; + } + + export type Profile = { + __typename?: "Profile"; + name: string; + } + + export type FavFriend = { + __typename?: "User"; + id: number; + profile?: _Profile | null; + } + + export type _Profile = { + __typename?: "Profile"; + email: string; + } + } + `); + }); + it('Should compile simple Query with Fragment spread correctly', async () => { const schema = introspectionToGraphQLSchema(JSON.parse(fs.readFileSync('./tests/files/schema.json').toString())); const context = schemaToTemplateContext(schema);