grafserv
Version:
A highly optimized server for GraphQL, powered by Grafast
50 lines • 2.59 kB
TypeScript
import type { Readable } from "node:stream";
import { SafeError } from "grafast";
import type { FormattedExecutionResult } from "grafast/graphql";
import * as graphql from "grafast/graphql";
import type { ServerOptions, SubscribePayload } from "graphql-ws";
import type { GrafservBase } from "./index.js";
import type { GrafservBody, JSONValue, NormalizedRequestDigest, ParsedGraphQLBody, RequestDigest } from "./interfaces.js";
export declare const sleep: (ms: number) => {
promise: Promise<void>;
release(): void;
};
interface ObjMap<T> {
[key: string]: T;
}
/**
* `FormattedExecutionPatchResult` type definition copied from
* {@link https://github.com/graphql/graphql-js/blob/v16.1.0-experimental-stream-defer.6/src/execution/execute.ts#L177-L187};
* MIT license, copyright GraphQL Contributors
*/
interface FormattedExecutionPatchResult<TData = ObjMap<unknown> | unknown, TExtensions = ObjMap<unknown>> {
errors?: ReadonlyArray<graphql.GraphQLFormattedError>;
data?: TData | null;
path?: ReadonlyArray<string | number>;
label?: string;
hasNext: boolean;
extensions?: TExtensions;
}
export declare function handleErrors(payload: FormattedExecutionResult | FormattedExecutionPatchResult): void;
type IncomingHttpHeaders = Record<string, string | string[] | undefined>;
export declare function processHeaders(headers: IncomingHttpHeaders): Record<string, string>;
export declare function getBodyFromRequest(req: Readable, maxLength: number): Promise<GrafservBody>;
/**
* Using this is a hack, it sniffs the data and tries to determine the type.
* Really you should ask your framework of choice what type of data it has given
* you.
*/
export declare function getBodyFromFrameworkBody(body: unknown): GrafservBody;
export declare function memo<T>(fn: () => T): () => T;
export declare function normalizeRequest(request: RequestDigest | NormalizedRequestDigest): NormalizedRequestDigest;
export declare function httpError(statusCode: number, message: string): SafeError;
export declare function normalizeConnectionParams(connectionParams: Record<string, unknown> | undefined): IncomingHttpHeaders | undefined;
export declare function makeGraphQLWSConfig(instance: GrafservBase): ServerOptions;
export declare function parseGraphQLJSONBody(params: JSONValue | (SubscribePayload & {
id?: string;
documentId?: string;
})): ParsedGraphQLBody;
export declare function concatBufferIterator(bufferIterator: AsyncGenerator<Buffer>): Promise<Buffer<ArrayBuffer>>;
export declare function noop(): void;
export {};
//# sourceMappingURL=utils.d.ts.map