graphql-compose-connection
Version:
Plugin for `graphql-compose` which provide a connection resolver for types.
45 lines • 2.3 kB
TypeScript
import { ObjectTypeComposer, InterfaceTypeComposer, Resolver, ResolverResolveParams, ObjectTypeComposerFieldConfigMap } from 'graphql-compose';
import { PageInfoType, ConnectionType } from './types/connectionType';
import { CursorDataType } from './cursor';
export declare type ConnectionResolverOpts<TContext> = {
findManyResolver: Resolver;
countResolver: Resolver;
sort: ConnectionSortMapOpts;
name?: string;
defaultLimit?: number | undefined;
edgeTypeName?: string;
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>;
};
export declare type ConnectionSortOpts<TSource = any, TContext = any> = {
value: any;
cursorFields: string[];
beforeCursorQuery: (rawQuery: any, cursorData: CursorDataType, resolveParams: Partial<ResolverResolveParams<TSource, TContext, ConnectionTArgs>>) => any;
afterCursorQuery: (rawQuery: any, cursorData: CursorDataType, resolveParams: Partial<ResolverResolveParams<TSource, TContext, ConnectionTArgs>>) => any;
};
export declare type ConnectionSortMapOpts = {
[sortName: string]: ConnectionSortOpts;
};
export interface ConnectionTArgs {
first?: number | null;
after?: string;
last?: number | null;
before?: string;
sort?: Record<string, any>;
filter?: Record<string, any>;
[argName: string]: any;
}
export declare function prepareConnectionResolver<TSource, TContext>(tc: ObjectTypeComposer<TSource, TContext> | InterfaceTypeComposer<TSource, TContext>, opts: ConnectionResolverOpts<TContext>): Resolver<TSource, TContext>;
export declare function preparePageInfo(edges: {
cursor: string;
[key: string]: any;
}[], args: {
last?: number | null;
first?: number | null;
after?: string;
before?: string;
}, limit: number, skip: number): PageInfoType;
export declare function prepareRawQuery(rp: Partial<ResolverResolveParams<any, any, ConnectionTArgs>>, sortConfig: ConnectionSortOpts): void;
export declare function prepareLimitSkipFallback(rp: ResolverResolveParams<any, any, ConnectionTArgs>, limit: number, skip: number): [number, number];
export declare function emptyConnection(): ConnectionType;
export declare function findSortConfig(configs: ConnectionSortMapOpts, val: unknown): ConnectionSortOpts | undefined;
//# sourceMappingURL=connection.d.ts.map