55 lines
2.0 KiB
TypeScript
55 lines
2.0 KiB
TypeScript
import express from "express";
|
|
import type { GraphQLResolveInfo } from "graphql";
|
|
import { HttpsFunction, HttpsOptions } from "../https";
|
|
/** @hidden */
|
|
export declare function initGraphqlServer(opts: GraphqlServerOptions): Promise<express.Express>;
|
|
/**
|
|
* Handles HTTPS GraphQL requests.
|
|
* @param {GraphqlServerOptions} opts - Options for configuring the GraphQL server.
|
|
* @returns {HttpsFunction} A function you can export and deploy.
|
|
*/
|
|
export declare function onGraphRequest(opts: GraphqlServerOptions): HttpsFunction;
|
|
/**
|
|
* Options for configuring the GraphQL server.
|
|
*/
|
|
export interface GraphqlServerOptions extends Omit<HttpsOptions, "cors"> {
|
|
/**
|
|
* A valid SDL string that represents the GraphQL server's schema.
|
|
* Either `schema` or `schemaFilePath` is required.
|
|
*/
|
|
schema?: string;
|
|
/**
|
|
* A relative file path from the Firebase project directory to a valid GraphQL schema.
|
|
* Either `schema` or `schemaFilePath` is required.
|
|
*/
|
|
schemaFilePath?: string;
|
|
/**
|
|
* The path where the GraphQL server will be served on the Cloud Run function.
|
|
* e.g. https://...run.app/{path}
|
|
* If no path is provided, "graphql" is used as the default.
|
|
*/
|
|
path?: string;
|
|
/** A map of functions that populate data for individual GraphQL schema fields. */
|
|
resolvers: GraphqlResolvers;
|
|
}
|
|
/**
|
|
* Per-request context state shared by all resolvers in a particular query.
|
|
*/
|
|
export interface FirebaseContext {
|
|
auth: {
|
|
/** The token attached to the `X-Firebase-Auth-Token` in the request, if present. */
|
|
token?: string;
|
|
};
|
|
}
|
|
/**
|
|
* Resolver functions that populate data for individual GraphQL schema fields.
|
|
*/
|
|
export interface GraphqlResolvers {
|
|
query?: {
|
|
[resolver: string]: (parent: unknown, args: Record<string, unknown>, context: FirebaseContext, info: GraphQLResolveInfo) => unknown;
|
|
};
|
|
mutation?: {
|
|
[key: string]: (parent: unknown, args: Record<string, unknown>, context: FirebaseContext, info: GraphQLResolveInfo) => unknown;
|
|
};
|
|
}
|