UNPKG

graphql-mocks

Version:
56 lines (42 loc) 1.66 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var graphql = require('graphql'); require('ramda'); var isEqual = require('../utils/is-equal.js'); var constants = require('./constants.js'); var field = require('./field.js'); class InterfaceFieldHighlighter { constructor(targets) { if (targets.length === 0) { targets = [[constants.HIGHLIGHT_ALL, constants.HIGHLIGHT_ALL]]; } this.targets = targets; } mark(schema) { return InterfaceFieldHighlighter.expandTargets(schema, this.targets); } static expandTargets(schema, targets) { const interfaceTypes = Object.values(schema.getTypeMap()).filter(graphql.isInterfaceType); const fieldReferences = field.field(...targets).mark(schema); const interfaceTypeNamesAndFields = interfaceTypes.flatMap(interfaceType => { const interfaceName = interfaceType.name; const interfaceFields = Object.values(interfaceType.getFields()).map(interfaceField => { const interfaceFieldName = interfaceField.name; return [interfaceName, interfaceFieldName]; }); return [...interfaceFields]; }); return interfaceTypeNamesAndFields.filter(interfaceFieldReference => { const found = fieldReferences.find(allFieldReference => isEqual.isEqual(allFieldReference, interfaceFieldReference)); return Boolean(found); }); } } const interfaceField = function type(...interfaceNames) { return new InterfaceFieldHighlighter(interfaceNames); }; exports.InterfaceFieldHighlighter = InterfaceFieldHighlighter; exports.interfaceField = interfaceField; //# sourceMappingURL=interface-field.js.map