@n1ru4l/socket-io-graphql-server
Version:
[](https://www.npmjs.com/package/@n1ru4l/socket-io-graphql-server) [](https://www.npmjs.co
54 lines (53 loc) • 2.38 kB
TypeScript
import { subscribe as defaultSubscribe, validateSchema as defaultValidateSchema, validate as defaultValidate, parse as defaultParse, GraphQLSchema, ExecutionResult, ExecutionArgs, DocumentNode, ValidationRule } from "graphql";
import type { Server as IOServer, Socket as IOSocket } from "socket.io";
export declare type PromiseOrPlain<T> = T | Promise<T>;
declare type DocumentSourceString = string;
declare type MaybeDocumentNode = Record<string, unknown> | DocumentNode;
export declare type ExecuteFunction = (args: ExecutionArgs) => PromiseOrPlain<AsyncIterableIterator<ExecutionResult> | ExecutionResult>;
export declare type GetParameterFunctionParameter = {
socket: IOSocket;
graphQLPayload: {
source: DocumentSourceString | MaybeDocumentNode;
variableValues: {
[key: string]: any;
} | null;
operationName: string | null;
/** Additional extensions that can be used for authentication tokens etc. */
extensions: {
[key: string]: any;
} | null;
};
};
export declare type GetParameterFunction = (parameter: GetParameterFunctionParameter) => PromiseOrPlain<{
graphQLExecutionParameter: {
schema: GraphQLSchema;
contextValue?: unknown;
rootValue?: unknown;
source?: DocumentSourceString | DocumentNode;
variableValues?: {
[key: string]: any;
} | null;
operationName?: string;
};
execute?: ExecuteFunction;
subscribe?: typeof defaultSubscribe;
parse?: typeof defaultParse;
validateSchema?: typeof defaultValidateSchema;
validate?: typeof defaultValidate;
validationRules?: ValidationRule[];
}>;
export declare type DecodeErrorHandler = (error: Error) => void;
export declare type RegisterSocketIOGraphQLServerParameter = {
socketServer: IOServer;
getParameter: GetParameterFunction;
onMessageDecodeError?: DecodeErrorHandler;
isLazy?: boolean;
};
export declare type UnsubscribeHandler = () => void;
export declare type SocketIOGraphQLServer = {
registerSocket: (socket: IOSocket) => UnsubscribeHandler;
disposeSocket: (socket: IOSocket) => void;
destroy: () => void;
};
export declare const registerSocketIOGraphQLServer: ({ socketServer, getParameter, onMessageDecodeError, isLazy, }: RegisterSocketIOGraphQLServerParameter) => SocketIOGraphQLServer;
export {};