UNPKG

@graphql-mesh/types

Version:
142 lines (141 loc) • 5.73 kB
import { IResolvers, Executor } from '@graphql-tools/utils'; import { GraphQLSchema, GraphQLResolveInfo, DocumentNode, SelectionSetNode } from 'graphql'; import * as YamlConfig from './config'; import { Transform, MergedTypeConfig, SubschemaConfig } from '@graphql-tools/delegate'; import { TypedDocumentNode } from '@graphql-typed-document-node/core'; import { MeshStore } from '@graphql-mesh/store'; import type { Plugin } from '@envelop/core'; export declare const jsonSchema: any; export { YamlConfig }; export declare type MeshSource = { schema: GraphQLSchema; executor?: Executor; contextVariables?: Record<string, string>; batch?: boolean; }; declare type FetchFn = (input: RequestInfo, init?: RequestInit) => Promise<Response>; export interface KeyValueCacheSetOptions { /** * Specified in **seconds**, the time-to-live (TTL) value limits the lifespan * of the data being stored in the cache. */ ttl?: number | null; } export interface KeyValueCache<V = any> { get(key: string): Promise<V | undefined>; set(key: string, value: V, options?: KeyValueCacheSetOptions): Promise<void>; delete(key: string): Promise<boolean | void>; getKeysByPrefix(prefix: string): Promise<string[]>; } export declare type GetMeshSourceOptions<THandlerConfig> = { name: string; config: THandlerConfig; baseDir: string; cache: KeyValueCache; pubsub: MeshPubSub; store: MeshStore; logger: Logger; importFn: ImportFn; fetchFn: FetchFn; }; export interface MeshHandler { getMeshSource: () => Promise<MeshSource>; } export interface MeshHandlerLibrary<TConfig = any> { new (options: GetMeshSourceOptions<TConfig>): MeshHandler; } export declare type AllHooks = { destroy: void; [key: string]: any; }; export declare type HookName = keyof AllHooks & string; export interface MeshPubSub { publish<THook extends HookName>(triggerName: THook, payload: AllHooks[THook]): void; subscribe<THook extends HookName>(triggerName: THook, onMessage: (data: AllHooks[THook]) => void, options?: any): number; unsubscribe(subId: number): void; asyncIterator<THook extends HookName>(triggers: THook): AsyncIterable<AllHooks[THook]>; } export interface MeshTransformOptions<Config = any> { apiName: string; config: Config; baseDir: string; cache: KeyValueCache; pubsub: MeshPubSub; importFn: ImportFn; } export interface MeshTransformLibrary<Config = any> { new (options: MeshTransformOptions<Config>): MeshTransform; } export interface MeshTransform<T = any> extends Transform<T> { noWrap?: boolean; } export declare type Maybe<T> = null | undefined | T; export interface MeshMergerOptions { cache: KeyValueCache; pubsub: MeshPubSub; logger: Logger; store: MeshStore; } export interface MeshMergerLibrary { new (options: MeshMergerOptions): MeshMerger; } export interface MeshMergerContext { rawSources: RawSourceOutput[]; typeDefs?: DocumentNode[]; resolvers?: IResolvers | IResolvers[]; } export interface MeshMerger { name: string; getUnifiedSchema(mergerContext: MeshMergerContext): SubschemaConfig | Promise<SubschemaConfig>; } export declare type MeshPluginOptions<TConfig> = TConfig & { logger: Logger; cache: KeyValueCache; pubsub: MeshPubSub; }; export declare type MeshPluginFactory<TConfig> = (options: MeshPluginOptions<TConfig>) => Plugin; export declare type RawSourceOutput = { name: string; schema: GraphQLSchema; executor?: Executor; transforms: MeshTransform[]; contextVariables: Record<string, string>; handler: MeshHandler; batch: boolean; merge?: Record<string, MergedTypeConfig>; }; export declare type GraphQLOperation<TData, TVariables> = TypedDocumentNode<TData, TVariables> | string; export declare type ImportFn = <T = any>(moduleId: string, noCache?: boolean) => Promise<T>; export declare type LazyLoggerMessage = (() => any | any[]) | any; export declare type Logger = { name?: string; log: (...args: any[]) => void; warn: (...args: any[]) => void; info: (...args: any[]) => void; error: (...args: any[]) => void; debug: (...lazyArgs: LazyLoggerMessage[]) => void; child: (name: string) => Logger; }; export declare type SelectionSetParam = SelectionSetNode | DocumentNode | string | SelectionSetNode; export declare type SelectionSetParamOrFactory = ((subtree: SelectionSetNode) => SelectionSetParam) | SelectionSetParam; export declare type InContextSdkMethodBatchingParams<TDefaultReturn, TArgs, TKey, TReturn> = { key: TKey; argsFromKeys: (keys: TKey[]) => TArgs; valuesFromResults?: (results: TDefaultReturn, keys: TKey[]) => TReturn | TReturn[]; }; export declare type InContextSdkMethodRegularParams<TDefaultReturn, TArgs, TReturn> = { args?: TArgs; valuesFromResults?: (results: TDefaultReturn) => TReturn | TReturn[]; }; export declare type InContextSdkMethodCustomSelectionSetParams = { selectionSet: SelectionSetParamOrFactory; info?: GraphQLResolveInfo; }; export declare type InContextSdkMethodInfoParams = { info: GraphQLResolveInfo; }; export declare type InContextSdkMethodParams<TDefaultReturn, TArgs, TContext, TKey, TReturn> = { root?: any; context: TContext; } & (InContextSdkMethodCustomSelectionSetParams | InContextSdkMethodInfoParams) & (InContextSdkMethodBatchingParams<TDefaultReturn, TArgs, TKey, TReturn> | InContextSdkMethodRegularParams<TDefaultReturn, TArgs, TReturn>); export declare type InContextSdkMethod<TDefaultReturn = any, TArgs = any, TContext = any> = <TKey, TReturn = TDefaultReturn>(params: InContextSdkMethodParams<TDefaultReturn, TArgs, TContext, TKey, TReturn>) => Promise<TReturn>;