graphql-modules
Version:
Create reusable, maintainable, testable and extendable GraphQL modules
52 lines (51 loc) • 1.44 kB
TypeScript
import { DocumentNode } from 'graphql';
import { ModuleFactory } from './factory';
import { ID, Plural } from '../shared/types';
import { ModuleMetadata } from './metadata';
import { Provider } from '../di';
import { MiddlewareMap } from '../shared/middleware';
export type TypeDefs = Plural<DocumentNode>;
export type Resolvers = Plural<Record<string, any>>;
/**
* @api
* Module's configuration object. Represents the first argument of `createModule` function.
*/
export interface ModuleConfig {
/**
* Unique identifier of a module
*/
id: ID;
/**
* Pass `__dirname` variable as a value to get better error messages.
*/
dirname?: string;
/**
* An object or a list of GraphQL type definitions (SDL).
*/
typeDefs: TypeDefs;
/**
* An object or a list of GraphQL resolve functions.
*/
resolvers?: Resolvers;
/**
* A map of middlewares - read the ["Middlewares"](./advanced/middlewares) chapter.
*/
middlewares?: MiddlewareMap;
/**
* A list of Providers - read the ["Providers and Tokens"](./di/providers) chapter.
*/
providers?: Provider[] | (() => Provider[]);
}
export interface Module {
id: ID;
typeDefs: DocumentNode[];
metadata: ModuleMetadata;
factory: ModuleFactory;
config: ModuleConfig;
}
export interface MockedModule extends Module {
/**
* @internal
*/
ɵoriginalModule: Module;
}