graphql-modules
Version: 
Create reusable, maintainable, testable and extendable GraphQL modules
56 lines (55 loc) • 1.62 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';
import { ResolvedProvider } from '../di/resolution';
export declare type TypeDefs = Plural<DocumentNode>;
export declare 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;
    providers?: Provider[];
    typeDefs: DocumentNode[];
    metadata: ModuleMetadata;
    factory: ModuleFactory;
    operationProviders: ResolvedProvider[];
    singletonProviders: ResolvedProvider[];
    config: ModuleConfig;
}
export interface MockedModule extends Module {
    /**
     * @internal
     */
    ɵoriginalModule: Module;
}