apollo-server/packages/apollo-server-core/src/graphqlOptions.ts

61 lines
1.9 KiB
TypeScript
Raw Normal View History

import {
GraphQLSchema,
ValidationContext,
GraphQLFieldResolver,
} from 'graphql';
import { LogFunction } from './runQuery';
2017-10-23 19:01:02 -07:00
import { GraphQLExtension } from 'graphql-extensions';
2016-07-04 22:03:59 -07:00
/*
* GraphQLServerOptions
2016-07-04 22:03:59 -07:00
*
* - schema: an executable GraphQL schema used to fulfill requests.
* - (optional) formatError: Formatting function applied to all errors before response is sent
* - (optional) rootValue: rootValue passed to GraphQL execution
* - (optional) context: the context passed to GraphQL execution
* - (optional) logFunction: a function called for logging events such as execution times
* - (optional) formatParams: a function applied to the parameters of every invocation of runQuery
* - (optional) validationRules: extra validation rules applied to requests
* - (optional) formatResponse: a function applied to each graphQL execution result
* - (optional) fieldResolver: a custom default field resolver
* - (optional) debug: a boolean that will print additional debug logging if execution errors occur
2016-07-04 22:03:59 -07:00
*
*/
export interface GraphQLServerOptions {
schema: GraphQLSchema;
2016-07-04 22:03:59 -07:00
formatError?: Function;
rootValue?: any;
context?: any;
logFunction?: LogFunction;
2016-07-04 22:03:59 -07:00
formatParams?: Function;
2017-01-04 18:03:11 -08:00
validationRules?: Array<(context: ValidationContext) => any>;
2016-07-04 22:03:59 -07:00
formatResponse?: Function;
fieldResolver?: GraphQLFieldResolver<any, any>;
debug?: boolean;
2017-08-09 16:57:17 +02:00
tracing?: boolean;
2017-10-23 19:01:02 -07:00
cacheControl?: boolean;
2016-07-04 22:03:59 -07:00
}
export default GraphQLServerOptions;
export async function resolveGraphqlOptions(
options: GraphQLServerOptions | Function,
...args
): Promise<GraphQLServerOptions> {
if (isOptionsFunction(options)) {
try {
return await options(...args);
} catch (e) {
throw new Error(`Invalid options provided to ApolloServer: ${e.message}`);
}
} else {
return options;
}
}
export function isOptionsFunction(
arg: GraphQLServerOptions | Function,
): arg is Function {
return typeof arg === 'function';
}