graphql-upload-ts
Version:
Typescript minimalistic and developer friendly middleware and an Upload scalar to add support for GraphQL multipart requests (file uploads via queries and mutations) to various Node.js GraphQL servers.
50 lines (49 loc) • 1.85 kB
TypeScript
import { NextFunction, Request, Response } from 'express';
export type ProcessRequestOptions = {
processRequest?: ((req: any, res: any, options: any) => Promise<any>) | (() => Promise<void>);
overrideSendResponse?: boolean;
maxFieldSize?: number;
maxFileSize?: number;
maxFiles?: number;
[key: string]: any;
};
/**
* Creates [Express](https://expressjs.com) middleware that processes
* [GraphQL multipart requests](https://github.com/jaydenseric/graphql-multipart-request-spec)
* using [`processRequest`]{@link processRequest}, ignoring non-multipart
* requests. It sets the request body to be
* [similar to a conventional GraphQL POST request]{@link GraphQLOperation} for
* following GraphQL middleware to consume.
* @example <caption>Ways to `import`.</caption>
* ```js
* import { graphqlUploadExpress } from 'graphql-upload-ts';
* ```
*
* ```js
* import graphqlUploadExpress from 'graphql-upload-ts/dist/graphqlUploadExpress.js';
* ```
* @example <caption>Ways to `require`.</caption>
* ```js
* const { graphqlUploadExpress } = require('graphql-upload-ts');
* ```
*
* ```js
* const graphqlUploadExpress = require('graphql-upload-ts/dist/graphqlUploadExpress');
* ```
* @example <caption>Basic [`express-graphql`](https://npm.im/express-graphql) setup.</caption>
* ```js
* const express = require('express');
* const graphqlHTTP = require('express-graphql');
* const { graphqlUploadExpress } = require('graphql-upload-ts');
* const schema = require('./schema');
*
* express()
* .use(
* '/graphql',
* graphqlUploadExpress({ maxFileSize: 10000000, maxFiles: 10 }),
* graphqlHTTP({ schema })
* )
* .listen(3000);
* ```
*/
export declare function graphqlUploadExpress(params?: ProcessRequestOptions): (request: Request, response: Response, next: NextFunction) => void;