UNPKG

react-blips

Version:
54 lines (42 loc) 2.54 kB
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } import { concatAST } from 'graphql'; import { createDocumentAST } from './createDocumentAST'; import { isOperationDefinition } from './isOperationDefinition'; import { isFragmentDefinition } from './isFragmentDefinition'; import { getOperationName } from './getOperationName'; import { getOperationType } from './getOperationType'; import { getRequiredFragments } from './getRequiredFragments'; import { mapObject } from './mapObject'; import { isNil } from './isNil'; import { hasDirectives } from './hasDirectives'; import { rejectDirectives } from './rejectDirectives'; var operationsCache = new Map(); function getExecutableOperation(fragments) { return function (def) { return concatAST([createDocumentAST(def)].concat(getRequiredFragments(def).map(function (f) { return createDocumentAST(fragments[f]); }))); }; } export function operationsMap(document) { var operations = operationsCache.get(document); if (!operations) { var _document$definitions = document.definitions.reduce(function (acc, node) { var _extends2, _extends3; var sanitizedNode = void 0; var _ref = isOperationDefinition(node) ? hasDirectives(['fetch'], node) ? (sanitizedNode = _extends({}, node, { directives: rejectDirectives(['fetch'], node) }), ['fetch', getOperationName(node)]) : [getOperationType(node), getOperationName(node)] : isFragmentDefinition(node) ? ['fragment', getOperationName(node)] : [null, null], key = _ref[0], name = _ref[1]; if (isNil(key) || isNil(name)) return acc; return _extends({}, acc, (_extends3 = {}, _extends3[key] = _extends({}, acc[key] || {}, (_extends2 = {}, _extends2[name] = sanitizedNode || node, _extends2)), _extends3)); }, {}), fragment = _document$definitions.fragment, definitionsObject = _objectWithoutProperties(_document$definitions, ['fragment']); operations = mapObject(mapObject(getExecutableOperation(fragment)))(definitionsObject); operationsCache.set(document, operations); } return operations; }