UNPKG

3.24 kBTypeScriptView Raw
1import { IResolvers, Transform } from '@graphql-tools/utils';
2import { GraphQLSchema, GraphQLResolveInfo, DocumentNode } from 'graphql';
3import * as YamlConfig from './config';
4import { KeyValueCache, KeyValueCacheSetOptions } from 'fetchache';
5import { Executor, Subscriber } from '@graphql-tools/delegate';
6export { YamlConfig };
7export declare function getJsonSchema(): any;
8export declare type MeshSource<ContextType = any, InitialContext = any> = {
9 schema: GraphQLSchema;
10 executor?: Executor;
11 subscriber?: Subscriber;
12 contextVariables?: (keyof InitialContext)[];
13 contextBuilder?: (initialContextValue: InitialContext) => Promise<ContextType>;
14 batch?: boolean;
15};
16export declare type GetMeshSourceOptions<THandlerConfig> = {
17 name: string;
18 pubsub: MeshPubSub;
19 config: THandlerConfig;
20 cache: KeyValueCache;
21};
22export interface MeshHandler<TContext = any> {
23 getMeshSource: () => Promise<MeshSource<TContext>>;
24}
25export interface MeshHandlerLibrary<TConfig = any, TContext = any> {
26 new (options: GetMeshSourceOptions<TConfig>): MeshHandler<TContext>;
27}
28export declare type ResolverData<TParent = any, TArgs = any, TContext = any> = {
29 root?: TParent;
30 args?: TArgs;
31 context?: TContext;
32 info?: GraphQLResolveInfo;
33};
34export declare type AllHooks = {
35 destroy: void;
36 resolverCalled: {
37 resolverData: ResolverData;
38 };
39 resolverDone: {
40 resolverData: ResolverData;
41 result: any;
42 };
43 resolverError: {
44 resolverData: ResolverData;
45 error: Error;
46 };
47 [key: string]: any;
48};
49export declare type HookName = keyof AllHooks & string;
50export interface MeshPubSub {
51 publish<THook extends HookName>(triggerName: THook, payload: AllHooks[THook]): Promise<void>;
52 subscribe<THook extends HookName>(triggerName: THook, onMessage: (data: AllHooks[THook]) => void, options?: any): Promise<number>;
53 unsubscribe(subId: number): void;
54 asyncIterator<THook extends HookName>(triggers: THook): AsyncIterator<AllHooks[THook]>;
55}
56export interface MeshTransformOptions<Config = any> {
57 config: Config;
58 cache: KeyValueCache;
59 pubsub: MeshPubSub;
60 apiName?: string;
61}
62export interface MeshTransformLibrary<Config = any> {
63 new (options: MeshTransformOptions<Config>): MeshTransform;
64}
65export interface MeshTransform extends Transform {
66 noWrap?: boolean;
67}
68export declare type Maybe<T> = null | undefined | T;
69export { KeyValueCache, KeyValueCacheSetOptions };
70export declare type MergerFn = (options: {
71 rawSources: RawSourceOutput[];
72 cache: KeyValueCache;
73 pubsub: MeshPubSub;
74 typeDefs?: DocumentNode[];
75 resolvers?: IResolvers;
76 transforms?: Transform[];
77 executor?: Executor;
78}) => Promise<GraphQLSchema> | GraphQLSchema;
79export declare type RawSourceOutput = {
80 name: string;
81 contextBuilder: null | ((initialContextValue?: any) => Promise<any>);
82 schema: GraphQLSchema;
83 executor?: Executor;
84 subscriber?: Subscriber;
85 transforms: MeshTransform[];
86 contextVariables: (keyof any)[];
87 handler: MeshHandler;
88 batch: boolean;
89};
90export declare type GraphQLOperation = DocumentNode | string;
91export declare type ImportFn = (moduleId: string) => Promise<any>;