graphql-codegen-plugin-typescript-swr
Version:
A GraphQL code generator plug-in that automatically generates utility functions for SWR.
140 lines (117 loc) • 4.61 kB
JavaScript
// @flow
import { type GraphQLResolveInfo } from 'graphql';
export type $RequireFields<Origin, Keys> = $Diff<Origin, Keys> &
$ObjMapi<Keys, <Key>(k: Key) => $NonMaybeType<$ElementType<Origin, Key>>>;
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {|
ID: string,
String: string,
Boolean: boolean,
Int: number,
Float: number,
|};
export type Query = {|
__typename?: 'Query',
allUsers: Array<?User>,
userById?: ?User,
|};
export type QueryUserByIdArgs = {|
id: $ElementType<Scalars, 'Int'>,
|};
export type User = {|
__typename?: 'User',
id: $ElementType<Scalars, 'Int'>,
name: $ElementType<Scalars, 'String'>,
email: $ElementType<Scalars, 'String'>,
|};
export type Resolver<Result, Parent = {}, Context = {}, Args = {}> = (
parent: Parent,
args: Args,
context: Context,
info: GraphQLResolveInfo
) => Promise<Result> | Result;
export type SubscriptionSubscribeFn<Result, Parent, Context, Args> = (
parent: Parent,
args: Args,
context: Context,
info: GraphQLResolveInfo
) => AsyncIterator<Result> | Promise<AsyncIterator<Result>>;
export type SubscriptionResolveFn<Result, Parent, Context, Args> = (
parent: Parent,
args: Args,
context: Context,
info: GraphQLResolveInfo
) => Result | Promise<Result>;
export interface SubscriptionSubscriberObject<Result, Key: string, Parent, Context, Args> {
subscribe: SubscriptionSubscribeFn<{ [key: Key]: Result }, Parent, Context, Args>;
resolve?: SubscriptionResolveFn<Result, { [key: Key]: Result }, Context, Args>;
}
export interface SubscriptionResolverObject<Result, Parent, Context, Args> {
subscribe: SubscriptionSubscribeFn<mixed, Parent, Context, Args>;
resolve: SubscriptionResolveFn<Result, mixed, Context, Args>;
}
export type SubscriptionObject<Result, Key: string, Parent, Context, Args> =
| SubscriptionSubscriberObject<Result, Key, Parent, Context, Args>
| SubscriptionResolverObject<Result, Parent, Context, Args>;
export type SubscriptionResolver<Result, Key: string, Parent = {}, Context = {}, Args = {}> =
| ((...args: Array<any>) => SubscriptionObject<Result, Key, Parent, Context, Args>)
| SubscriptionObject<Result, Key, Parent, Context, Args>;
export type TypeResolveFn<Types, Parent = {}, Context = {}> = (
parent: Parent,
context: Context,
info: GraphQLResolveInfo
) => ?Types | Promise<?Types>;
export type IsTypeOfResolverFn<T = {}, Context = {}> = (
obj: T,
context: Context,
info: GraphQLResolveInfo
) => boolean | Promise<boolean>;
export type NextResolverFn<T> = () => Promise<T>;
export type DirectiveResolverFn<Result = {}, Parent = {}, Args = {}, Context = {}> = (
next: NextResolverFn<Result>,
parent: Parent,
args: Args,
context: Context,
info: GraphQLResolveInfo
) => Result | Promise<Result>;
export type ResolverTypeWrapper<T> = Promise<T> | T;
/** Mapping between all available schema types and the resolvers types */
export type ResolversTypes = {
Query: ResolverTypeWrapper<{}>,
Int: ResolverTypeWrapper<$ElementType<Scalars, 'Int'>>,
User: ResolverTypeWrapper<User>,
String: ResolverTypeWrapper<$ElementType<Scalars, 'String'>>,
Boolean: ResolverTypeWrapper<$ElementType<Scalars, 'Boolean'>>,
};
/** Mapping between all available schema types and the resolvers parents */
export type ResolversParentTypes = {
Query: {},
Int: $ElementType<Scalars, 'Int'>,
User: User,
String: $ElementType<Scalars, 'String'>,
Boolean: $ElementType<Scalars, 'Boolean'>,
};
export type QueryResolvers<ContextType = any, ParentType = $ElementType<ResolversParentTypes, 'Query'>> = {
allUsers?: Resolver<Array<?$ElementType<ResolversTypes, 'User'>>, ParentType, ContextType>,
userById?: Resolver<
?$ElementType<ResolversTypes, 'User'>,
ParentType,
ContextType,
$RequireFields<QueryUserByIdArgs, { id: * }>
>,
};
export type UserResolvers<ContextType = any, ParentType = $ElementType<ResolversParentTypes, 'User'>> = {
id?: Resolver<$ElementType<ResolversTypes, 'Int'>, ParentType, ContextType>,
name?: Resolver<$ElementType<ResolversTypes, 'String'>, ParentType, ContextType>,
email?: Resolver<$ElementType<ResolversTypes, 'String'>, ParentType, ContextType>,
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>,
};
export type Resolvers<ContextType = any> = {
Query?: QueryResolvers<ContextType>,
User?: UserResolvers<ContextType>,
};
/**
* @deprecated
* Use "Resolvers" root object instead. If you wish to get "IResolvers", add "typesPrefix: I" to your config.
*/
export type IResolvers<ContextType = any> = Resolvers<ContextType>;