UNPKG

graphql-mocks

Version:

Tools for setting up graphql test resolvers

46 lines (45 loc) 2.61 kB
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 { isObjectType, isAbstractType } from 'graphql'; import { WrapperFor } from './constants.mjs'; 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.mjs.map