UNPKG

graphql-mocks

Version:
87 lines (63 loc) 3.59 kB
'use strict'; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } Object.defineProperty(exports, '__esModule', { value: true }); var pack = require('../pack/pack.js'); require('../pack/utils/embed-pack-options-wrapper.js'); var ramda = require('ramda'); var highlight = require('../highlight/highlight.js'); require('graphql'); var fromResolverMap = require('../highlight/highlighter/from-resolver-map.js'); var walk = require('../highlight/utils/walk.js'); var getResolver = require('./get-resolver.js'); var setResolver = require('./set-resolver.js'); var applyWrappers = require('../resolver/apply-wrappers.js'); function layer(partials, options) { options = _objectSpread({ replace: false, wrappers: [] }, options); const layerMiddlewares = partials.map(resolverMap => previous => { return ramda.mergeDeepRight(previous, resolverMap); }); const middleware = async function layerMiddleware(resolverMap, packOptions) { const { graphqlSchema } = packOptions.dependencies; if (!graphqlSchema) throw new Error('`graphqlSchema` is a required dependency'); const packed = await pack.pack({}, layerMiddlewares, packOptions); const layeredResolverMap = packed.resolverMap; const resolverMapReferences = highlight.hi(graphqlSchema).include(fromResolverMap.fromResolverMap(layeredResolverMap)).references; // walk references from the resulting layeredResolverMap and apply them to // the final resolverMap for this middlware with any provided wrappers await walk.walk(graphqlSchema, resolverMapReferences, async function ({ reference, type, field }) { var _options, _options$wrappers; let resolver = getResolver.getResolver(layeredResolverMap, reference); if (resolver && ((_options = options) === null || _options === void 0 ? void 0 : (_options$wrappers = _options.wrappers) === null || _options$wrappers === void 0 ? void 0 : _options$wrappers.length)) { resolver = await applyWrappers.applyWrappers(resolver, options.wrappers, { schema: graphqlSchema, resolverMap, packOptions, type: type, field: field }); } if (resolver) { var _options2; setResolver.setResolver(resolverMap, reference, resolver, { replace: (_options2 = options) === null || _options2 === void 0 ? void 0 : _options2.replace }); } }); return resolverMap; }; return middleware; } exports.layer = layer; //# sourceMappingURL=layer.js.map