graphql-paper
Version:
A flexible in-memory store based on a GraphQL Schema
29 lines (28 loc) • 1.55 kB
TypeScript
import { GraphQLSchema } from 'graphql';
import * as defaultOperations from './operations/index';
import { Document, DocumentStore, DocumentTypeValidator, FieldValidator, HooksMap, KeyOrDocument, OperationMap, SerializedPaper, TransactionCallback } from './types';
import { createSchema } from './graphql/create-schema';
export type PaperConstructorOptions<UserOperations extends OperationMap> = {
operations?: UserOperations;
};
export declare class Paper<UserOperations extends OperationMap = OperationMap> {
static deserialize<DeserializeUserOperations extends OperationMap = OperationMap>(graphqlSchema: GraphQLSchema, serializedPaper: SerializedPaper, options?: PaperConstructorOptions<DeserializeUserOperations>): Paper<DeserializeUserOperations>;
protected history: DocumentStore[];
protected current: DocumentStore;
protected sourceGraphQLSchema: GraphQLSchema;
operations: typeof defaultOperations & UserOperations;
events: EventTarget;
validators: {
document: DocumentTypeValidator[];
field: FieldValidator[];
};
hooks: HooksMap<Paper['operations'] & UserOperations>;
constructor(graphqlSchema: Parameters<typeof createSchema>[0], options?: PaperConstructorOptions<UserOperations>);
get data(): DocumentStore;
find(documentOrKey: KeyOrDocument): Document | undefined;
clear(): void;
serialize(): SerializedPaper;
private validate;
private dispatchEvents;
mutate<T extends TransactionCallback<Paper['operations'] & UserOperations>>(fn: T): ReturnType<T>;
}