shyft
Version:
Model driven GraphQL API framework
86 lines (85 loc) • 2.53 kB
TypeScript
import { Entity } from '../entity/Entity';
import { Context } from '../context/Context';
import { GraphQLResolveInfo, Source } from 'graphql';
export declare const MUTATION_TYPE_CREATE = "create";
export declare const MUTATION_TYPE_UPDATE = "update";
export declare const MUTATION_TYPE_DELETE = "delete";
export declare const mutationTypes: string[];
export interface MutationMap {
[key: string]: Mutation;
}
export interface MutationGenerator {
(mutations: MutationMap): Mutation[];
}
export declare const defaultEntityMutations: ({
name: string;
type: string;
description: (typeName: string) => string;
hasAttributes: boolean;
} | {
name: string;
description: (typeName: string) => string;
type: string;
hasAttributes?: undefined;
})[];
interface MutationPreProcessorResponse {
[key: string]: unknown;
}
export declare type MutationPreProcessor = (params: {
entity: Entity;
id?: number | string;
source?: Source;
input?: {
[key: string]: unknown;
};
typeName: string;
entityMutation: Mutation;
context?: Context;
info?: GraphQLResolveInfo;
}) => MutationPreProcessorResponse | Promise<MutationPreProcessorResponse>;
export declare type MutationPostProcessor = (params: {
result?: {
[key: string]: unknown;
};
error?: Error;
entity: Entity;
id?: number | string;
source?: Source;
input?: {
[key: string]: unknown;
};
typeName: string;
entityMutation: Mutation;
context?: Context;
info?: GraphQLResolveInfo;
}) => void | Promise<void>;
export declare type MutationSetup = {
name?: string;
type?: string;
description?: string;
attributes?: string[];
preProcessor?: MutationPreProcessor;
postProcessor?: MutationPostProcessor;
fromState?: string | string[];
toState?: string | string[];
};
export declare class Mutation {
name: string;
type: string;
description: string;
attributes: string[];
fromState?: string | string[];
toState?: string | string[];
preProcessor?: MutationPreProcessor;
postProcessor?: MutationPostProcessor;
isTypeCreate?: boolean;
isTypeDelete?: boolean;
needsInstance?: boolean;
ignoreRequired?: boolean;
isTypeUpdate?: boolean;
constructor(setup?: MutationSetup);
toString(): string;
}
export declare const isMutation: (obj: unknown) => obj is Mutation;
export declare const processEntityMutations: (entity: Entity, mutations: Mutation[]) => Mutation[];
export {};