UNPKG

@graphql-mocks/falso

Version:

Fake GraphQL queries with graphql-mocks and Falso

44 lines (42 loc) 2.21 kB
'use strict'; var utils$1 = require('graphql-mocks/resolver-map/utils'); var falsoFieldResolver = require('./falso-field-resolver.js'); var falsoTypeResolver = require('./falso-type-resolver.js'); var highlight = require('graphql-mocks/highlight'); var utils = require('graphql-mocks/highlight/utils'); var resolverMap = require('graphql-mocks/resolver-map'); function falsoMiddleware(options) { const falsoOptions = options !== null && options !== void 0 ? options : {}; return async (resolverMap$1, packOptions) => { var _options$highlight; const graphqlSchema = packOptions.dependencies.graphqlSchema; let highlight$1 = utils.coerceHighlight(graphqlSchema, (_options$highlight = options === null || options === void 0 ? void 0 : options.highlight) !== null && _options$highlight !== void 0 ? _options$highlight : utils$1.highlightAllCallback); // If we can't replace resolvers, exclude the ones that exist in the resolver map if (!(options !== null && options !== void 0 && options.replace)) { highlight$1 = highlight$1.exclude(highlight.fromResolverMap(resolverMap$1)); } const fieldResolvableHighlight = highlight$1.filter(highlight.field()).exclude(highlight.interfaceField()); const fieldResolver = falsoFieldResolver.falsoFieldResolver(falsoOptions); await utils.walk(graphqlSchema, fieldResolvableHighlight.references, ({ reference }) => { resolverMap.setResolver(resolverMap$1, reference, fieldResolver, { graphqlSchema, replace: options === null || options === void 0 ? void 0 : options.replace }); }); const typeResolvableHighlight = highlight$1.filter(highlight.combine(highlight.union(), highlight.interfaces())); const typeResolver = falsoTypeResolver.falsoTypeResolver(); await utils.walk(graphqlSchema, typeResolvableHighlight.references, ({ reference }) => { resolverMap.setResolver(resolverMap$1, reference, typeResolver, { graphqlSchema, replace: options === null || options === void 0 ? void 0 : options.replace }); }); return resolverMap$1; }; } exports.falsoMiddleware = falsoMiddleware; //# sourceMappingURL=falso-middleware.js.map