1- import { Rewriter , RewriteHandler } from 'graphql-query-rewriter' ;
2- import { Request , Response , NextFunction } from 'express' ;
1+ import { NextFunction , Request , Response } from 'express' ;
32import * as graphqlHTTP from 'express-graphql' ;
3+ import { RewriteHandler , Rewriter } from 'graphql-query-rewriter' ;
44
55interface RewriterMiddlewareOpts {
66 rewriters : Rewriter [ ] ;
@@ -20,34 +20,32 @@ const rewriteResJson = (res: Response) => {
2020 } ;
2121} ;
2222
23- const graphqlRewriterMiddleware = ( { rewriters } : RewriterMiddlewareOpts ) => async (
24- req : Request ,
25- res : Response ,
26- next : NextFunction
27- ) => {
28- try {
29- const params = await ( graphqlHTTP as any ) . getGraphQLParams ( req ) ;
30- const { query, variables, operationName } = params ;
31- if ( ! query ) {
32- return ;
23+ const graphqlRewriterMiddleware = ( { rewriters } : RewriterMiddlewareOpts ) =>
24+ // tslint:disable-next-line: only-arrow-functions
25+ async function ( req : Request , res : Response , next : NextFunction ) {
26+ try {
27+ const params = await ( graphqlHTTP as any ) . getGraphQLParams ( req ) ;
28+ const { query, variables, operationName } = params ;
29+ if ( ! query ) {
30+ return ;
31+ }
32+ const rewriteHandler = new RewriteHandler ( rewriters ) ;
33+ const newQueryAndVariables = rewriteHandler . rewriteRequest ( query , variables || undefined ) ;
34+ const newBody = {
35+ operationName,
36+ query : newQueryAndVariables . query ,
37+ variables : newQueryAndVariables . variables
38+ } ;
39+ if ( typeof req . body === 'object' && ! ( req . body instanceof Buffer ) ) {
40+ req . body = { ...req . body , newBody } ;
41+ } else {
42+ req . body = newBody ;
43+ }
44+ req . _rewriteHandler = rewriteHandler ;
45+ rewriteResJson ( res ) ;
46+ } finally {
47+ next ( ) ;
3348 }
34- const rewriteHandler = new RewriteHandler ( rewriters ) ;
35- const newQueryAndVariables = rewriteHandler . rewriteRequest ( query , variables || undefined ) ;
36- const newBody = {
37- query : newQueryAndVariables . query ,
38- variables : newQueryAndVariables . variables ,
39- operationName
40- } ;
41- if ( typeof req . body === 'object' && ! ( req . body instanceof Buffer ) ) {
42- req . body = { ...req . body , newBody } ;
43- } else {
44- req . body = newBody ;
45- }
46- req . _rewriteHandler = rewriteHandler ;
47- rewriteResJson ( res ) ;
48- } finally {
49- next ( ) ;
50- }
51- } ;
49+ } ;
5250
5351export { graphqlRewriterMiddleware } ;
0 commit comments