graphql-mocks
Version:
Tools for setting up graphql test resolvers
63 lines (44 loc) • 2.79 kB
JavaScript
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
import { isObjectType, isAbstractType } from 'graphql';
import { WrapperFor } from './constants.js';
function isNamedWrapper(wrapper) {
return wrapper && 'name' in wrapper && 'wrap' in wrapper;
}
function applyWrappers(_x, _x2, _x3) {
return _applyWrappers.apply(this, arguments);
}
function _applyWrappers() {
_applyWrappers = _asyncToGenerator(function* (resolver, wrappers, wrapperOptions) {
wrappers = [...wrappers];
var wrapper = wrappers.shift();
if (typeof resolver !== 'function') {
throw new Error("Resolver for wrapResolver must be a function, got ".concat(typeof resolver));
}
if (!wrapper) {
return resolver;
}
var wrapperName = wrapper.name || 'UNNAMED';
if (isNamedWrapper(wrapper)) {
var namedWrapper = wrapper;
wrapperName = namedWrapper.name;
var wrapperFor = namedWrapper.wrapperFor;
if (wrapperFor === WrapperFor.FIELD && !isObjectType(wrapperOptions.type)) {
var _wrapperOptions$field;
throw new Error("Wrapper \"".concat(wrapperName, "\" is for FIELD resolvers and can't wrap [\"").concat(wrapperOptions.type.name, "\", \"").concat((_wrapperOptions$field = wrapperOptions.field) === null || _wrapperOptions$field === void 0 ? void 0 : _wrapperOptions$field.name, "\"]."));
}
if (wrapperFor === WrapperFor.TYPE && !isAbstractType(wrapperOptions.type)) {
throw new Error("Wrapper \"".concat(wrapperName, "\" is for TYPE resolvers and can't wrap [\"").concat(wrapperOptions.type.name, "\"]."));
}
wrapper = wrapper.wrap.bind(wrapper);
} // eslint-disable-next-line @typescript-eslint/no-explicit-any
var wrappedResolver = yield wrapper(resolver, wrapperOptions);
if (typeof wrappedResolver !== 'function') {
throw new Error("Wrapper \"".concat(wrapperName, "\" was not a function or did not have a wrap method, got ").concat(typeof wrappedResolver, "."));
}
return applyWrappers(wrappedResolver, wrappers, wrapperOptions);
});
return _applyWrappers.apply(this, arguments);
}
export { applyWrappers };
//# sourceMappingURL=apply-wrappers.js.map