From abce05cd0c837dda4301a40d66f3d67638e9918e Mon Sep 17 00:00:00 2001 From: assafmilman Date: Tue, 21 Nov 2017 10:31:53 +0200 Subject: [PATCH 1/2] not going recursive on mutation type, to avoid dobule resolve on fields --- src/custom.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/custom.js b/src/custom.js index 05d0a07..eee72fc 100644 --- a/src/custom.js +++ b/src/custom.js @@ -94,7 +94,7 @@ function resolveMiddlewareWrapper(resolve = defaultResolveFn, directives = {}) { * Scanning the shema and wrapping the resolve of each field with the support * of the graphql custom directives resolve execution */ -function wrapFieldsWithMiddleware(type, typeMet = {}) { +function wrapFieldsWithMiddleware(type, typeMet = {}, deepWrap = true) { if(!type){ return; } @@ -106,10 +106,10 @@ function wrapFieldsWithMiddleware(type, typeMet = {}) { if (field && !typeMet[field.type.name]) { if (!!field && typeof field == 'object') { field.resolve = resolveMiddlewareWrapper(field.resolve, field.directives); - if (field.type._fields) { - wrapFieldsWithMiddleware(field.type, typeMet) - } else if (field.type.ofType && field.type.ofType._fields) { - wrapFieldsWithMiddleware(field.type.ofType, typeMet); + if (field.type._fields && deepWrap) { + wrapFieldsWithMiddleware(field.type, typeMet, deepWrap) + } else if (field.type.ofType && field.type.ofType._fields && deepWrap) { + wrapFieldsWithMiddleware(field.type.ofType, typeMet, deepWrap); } } } @@ -140,7 +140,7 @@ exports.applySchemaCustomDirectives = function (schema) { } wrapFieldsWithMiddleware(schema._queryType); - wrapFieldsWithMiddleware(schema._mutationType); + wrapFieldsWithMiddleware(schema._mutationType, false); return true; }; From a3d98cddd703460609ed53c0f2d3688dc1b8b11b Mon Sep 17 00:00:00 2001 From: assafmilman Date: Tue, 21 Nov 2017 10:33:49 +0200 Subject: [PATCH 2/2] fixed position of args --- src/custom.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/custom.js b/src/custom.js index eee72fc..78dca9b 100644 --- a/src/custom.js +++ b/src/custom.js @@ -94,7 +94,7 @@ function resolveMiddlewareWrapper(resolve = defaultResolveFn, directives = {}) { * Scanning the shema and wrapping the resolve of each field with the support * of the graphql custom directives resolve execution */ -function wrapFieldsWithMiddleware(type, typeMet = {}, deepWrap = true) { +function wrapFieldsWithMiddleware(type, deepWrap = true, typeMet = {}) { if(!type){ return; } @@ -107,9 +107,9 @@ function wrapFieldsWithMiddleware(type, typeMet = {}, deepWrap = true) { if (!!field && typeof field == 'object') { field.resolve = resolveMiddlewareWrapper(field.resolve, field.directives); if (field.type._fields && deepWrap) { - wrapFieldsWithMiddleware(field.type, typeMet, deepWrap) + wrapFieldsWithMiddleware(field.type, deepWrap, typeMet) } else if (field.type.ofType && field.type.ofType._fields && deepWrap) { - wrapFieldsWithMiddleware(field.type.ofType, typeMet, deepWrap); + wrapFieldsWithMiddleware(field.type.ofType, deepWrap, typeMet); } } }