@graphql-mocks/falso
Version:
Fake GraphQL queries with graphql-mocks and Falso
44 lines (42 loc) • 2.21 kB
JavaScript
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
;