UNPKG

graphql-mocks

Version:
49 lines (40 loc) 1.61 kB
import { isInterfaceType } from 'graphql'; import 'ramda'; import { isEqual } from '../utils/is-equal.js'; import { HIGHLIGHT_ALL } from './constants.js'; import { field } from './field.js'; class InterfaceFieldHighlighter { constructor(targets) { if (targets.length === 0) { targets = [[HIGHLIGHT_ALL, HIGHLIGHT_ALL]]; } this.targets = targets; } mark(schema) { return InterfaceFieldHighlighter.expandTargets(schema, this.targets); } static expandTargets(schema, targets) { var interfaceTypes = Object.values(schema.getTypeMap()).filter(isInterfaceType); var fieldReferences = field(...targets).mark(schema); var interfaceTypeNamesAndFields = interfaceTypes.flatMap(interfaceType => { var interfaceName = interfaceType.name; var interfaceFields = Object.values(interfaceType.getFields()).map(interfaceField => { var interfaceFieldName = interfaceField.name; return [interfaceName, interfaceFieldName]; }); return [...interfaceFields]; }); return interfaceTypeNamesAndFields.filter(interfaceFieldReference => { var found = fieldReferences.find(allFieldReference => isEqual(allFieldReference, interfaceFieldReference)); return Boolean(found); }); } } var interfaceField = function type() { for (var _len = arguments.length, interfaceNames = new Array(_len), _key = 0; _key < _len; _key++) { interfaceNames[_key] = arguments[_key]; } return new InterfaceFieldHighlighter(interfaceNames); }; export { InterfaceFieldHighlighter, interfaceField }; //# sourceMappingURL=interface-field.js.map