@graphql-mocks/falso
Version:
Fake GraphQL queries with graphql-mocks and Falso
51 lines (50 loc) • 2.85 kB
JavaScript
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
import { highlightAllCallback } from 'graphql-mocks/resolver-map/utils';
import { falsoFieldResolver } from './falso-field-resolver.mjs';
import { falsoTypeResolver } from './falso-type-resolver.mjs';
import { fromResolverMap, field, interfaceField, combine, union, interfaces } from 'graphql-mocks/highlight';
import { coerceHighlight, walk } from 'graphql-mocks/highlight/utils';
import { setResolver } from 'graphql-mocks/resolver-map';
function falsoMiddleware(options) {
var falsoOptions = options !== null && options !== void 0 ? options : {};
return /*#__PURE__*/function () {
var _ref = _asyncToGenerator(function* (resolverMap, packOptions) {
var _options$highlight;
var graphqlSchema = packOptions.dependencies.graphqlSchema;
var highlight = coerceHighlight(graphqlSchema, (_options$highlight = options === null || options === void 0 ? void 0 : options.highlight) !== null && _options$highlight !== void 0 ? _options$highlight : 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 = highlight.exclude(fromResolverMap(resolverMap));
}
var fieldResolvableHighlight = highlight.filter(field()).exclude(interfaceField());
var fieldResolver = falsoFieldResolver(falsoOptions);
yield walk(graphqlSchema, fieldResolvableHighlight.references, _ref2 => {
var {
reference
} = _ref2;
setResolver(resolverMap, reference, fieldResolver, {
graphqlSchema,
replace: options === null || options === void 0 ? void 0 : options.replace
});
});
var typeResolvableHighlight = highlight.filter(combine(union(), interfaces()));
var typeResolver = falsoTypeResolver();
yield walk(graphqlSchema, typeResolvableHighlight.references, _ref3 => {
var {
reference
} = _ref3;
setResolver(resolverMap, reference, typeResolver, {
graphqlSchema,
replace: options === null || options === void 0 ? void 0 : options.replace
});
});
return resolverMap;
});
return function (_x, _x2) {
return _ref.apply(this, arguments);
};
}();
}
export { falsoMiddleware };
//# sourceMappingURL=falso-middleware.mjs.map