Skip to content

Commit c8f85c1

Browse files
ryanquinn3forivall
authored andcommitted
Remove uses of reduce/spread which causes significant latency to large middlewares (maticzav/graphql-middleware#567)
1 parent ba35b85 commit c8f85c1

File tree

1 file changed

+26
-27
lines changed

1 file changed

+26
-27
lines changed

src/applicator.ts

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,10 @@ function wrapResolverInMiddleware<TSource, TContext, TArgs>(
4242

4343
function parseField(field: GraphQLField<any, any, any>) {
4444
const argsMap = field.args.reduce(
45-
(acc, cur) => ({
46-
...acc,
47-
[cur.name]: cur,
48-
}),
49-
{} as Record<string, GraphQLArgument>,
45+
(acc, cur) => {
46+
acc[cur.name] = cur;
47+
return acc;
48+
}, {} as Record<string, GraphQLArgument>,
5049
)
5150
return {
5251
...field,
@@ -135,28 +134,28 @@ function applyMiddlewareToType<TSource, TContext, TArgs>(
135134

136135
if (isMiddlewareFunction(middleware)) {
137136
const resolvers = Object.keys(fieldMap).reduce(
138-
(resolvers, fieldName) => ({
139-
...resolvers,
140-
[fieldName]: applyMiddlewareToField(
137+
(resolvers, fieldName) => {
138+
resolvers[fieldName] = applyMiddlewareToField(
141139
fieldMap[fieldName],
142140
options,
143141
middleware as IMiddlewareFunction<TSource, TContext, TArgs>,
144-
),
145-
}),
142+
);
143+
return resolvers;
144+
},
146145
{},
147146
)
148147

149148
return resolvers
150149
} else {
151150
const resolvers = Object.keys(middleware).reduce(
152-
(resolvers, field) => ({
153-
...resolvers,
154-
[field]: applyMiddlewareToField(
155-
fieldMap[field],
151+
(resolvers, fieldName) => {
152+
resolvers[fieldName] = applyMiddlewareToField(
153+
fieldMap[fieldName],
156154
options,
157-
middleware[field],
158-
),
159-
}),
155+
middleware[fieldName],
156+
);
157+
return resolvers;
158+
},
160159
{},
161160
)
162161

@@ -178,14 +177,14 @@ function applyMiddlewareToSchema<TSource, TContext, TArgs>(
178177
!isIntrospectionType(typeMap[type]),
179178
)
180179
.reduce(
181-
(resolvers, type) => ({
182-
...resolvers,
183-
[type]: applyMiddlewareToType(
180+
(resolvers, type) => {
181+
resolvers[type] = applyMiddlewareToType(
184182
typeMap[type] as GraphQLObjectType,
185183
options,
186184
middleware,
187-
),
188-
}),
185+
);
186+
return resolvers;
187+
},
189188
{},
190189
)
191190

@@ -213,14 +212,14 @@ export function generateResolverFromSchemaAndMiddleware<
213212
const typeMap = schema.getTypeMap()
214213

215214
const resolvers = Object.keys(middleware).reduce(
216-
(resolvers, type) => ({
217-
...resolvers,
218-
[type]: applyMiddlewareToType(
215+
(resolvers, type) => {
216+
resolvers[type] = applyMiddlewareToType(
219217
typeMap[type] as GraphQLObjectType,
220218
options,
221219
middleware[type],
222-
),
223-
}),
220+
);
221+
return resolvers;
222+
},
224223
{},
225224
)
226225

0 commit comments

Comments
 (0)