graphql-mocks
Version:
Tools for setting up graphql test resolvers
85 lines (84 loc) • 3.13 kB
JavaScript
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import { isInterfaceType, isObjectType } from 'graphql';
import { HIGHLIGHT_ALL, HIGHLIGHT_ROOT_QUERY, HIGHLIGHT_ROOT_MUTATION } from './constants.mjs';
class FieldHighlighter {
constructor(targets) {
_defineProperty(this, "targets", void 0);
if (targets.length === 0) {
targets = [[HIGHLIGHT_ALL, HIGHLIGHT_ALL]];
}
this.targets = targets;
}
mark(schema) {
return FieldHighlighter.expandTargets(schema, this.targets);
}
static expandTargets(schema, targets) {
var fieldReferences = [];
for (var target of targets) {
var fr = FieldHighlighter.expandTarget(schema, target);
for (var fieldReference of fr) {
fieldReferences.push(fieldReference);
}
}
return fieldReferences;
}
static expandTarget(schema, _ref) {
var _type2;
var [typeTarget, fieldTarget] = _ref;
if (typeTarget === HIGHLIGHT_ALL) {
var references = [];
var types = schema.getTypeMap();
for (var typeName in types) {
if (typeName.startsWith('__')) {
continue;
}
var _type = types[typeName];
if (!isInterfaceType(_type) && !isObjectType(_type)) {
continue;
}
references.push([typeName, fieldTarget]);
}
return this.expandTargets(schema, references);
}
var type = schema.getType(typeTarget);
if (!type) {
return [];
}
if (typeTarget === HIGHLIGHT_ROOT_QUERY) {
var queryType = schema.getQueryType();
if (!queryType) {
return [];
}
type = queryType;
}
if (typeTarget === HIGHLIGHT_ROOT_MUTATION) {
var mutationType = schema.getMutationType();
if (!mutationType) {
return [];
}
type = mutationType;
}
if (!type || !((_type2 = type) !== null && _type2 !== void 0 && _type2.name) || !('getFields' in type)) {
return [];
}
var fields = type.getFields();
var fieldNames = fieldTarget === HIGHLIGHT_ALL ? Object.keys(fields) : [fieldTarget];
var fieldReferences = [];
for (var fieldName of fieldNames) {
if (fields[fieldName]) {
fieldReferences.push([type.name, fieldName]);
}
}
return fieldReferences;
}
}
var field = function type() {
for (var _len = arguments.length, targetReferences = new Array(_len), _key = 0; _key < _len; _key++) {
targetReferences[_key] = arguments[_key];
}
return new FieldHighlighter(targetReferences);
};
export { FieldHighlighter, field };
//# sourceMappingURL=field.mjs.map