UNPKG

graphql-mocks

Version:

Tools for setting up graphql test resolvers

100 lines (99 loc) 4.46 kB
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 { include } from './operation/include.mjs'; import { exclude } from './operation/exclude.mjs'; import { filter } from './operation/filter.mjs'; import { validate, ValidationError } from './utils/validate.mjs'; import { convertHighlighterOrReferenceToHighlighter } from './utils/convert-highlighter-or-reference-to-highlighter.mjs'; import { buildReferenceMap } from './utils/build-reference-map.mjs'; import { unique } from './utils/unique.mjs'; import { isFieldReference } from './utils/is-field-reference.mjs'; import { isTypeReference } from './utils/is-type-reference.mjs'; var INTERNAL_SCALARS = ['Int', 'Float', 'String', 'Boolean', 'ID']; class Highlight { constructor(schema, references) { var _references; _defineProperty(this, "schema", void 0); _defineProperty(this, "references", void 0); this.schema = schema; references = (_references = references) !== null && _references !== void 0 ? _references : []; this.validate(references); this.references = references; } get instances() { var schema = this.schema; var map = buildReferenceMap(schema, this.references); return { types: map }; } include() { var operation = include; for (var _len = arguments.length, highlightersOrReferences = new Array(_len), _key = 0; _key < _len; _key++) { highlightersOrReferences[_key] = arguments[_key]; } var highlighters = highlightersOrReferences.map(convertHighlighterOrReferenceToHighlighter).filter(Boolean); var newReferences = this.applyHighlighters(operation, highlighters); this.validate(newReferences); return this.clone(newReferences); } exclude() { var operation = exclude; for (var _len2 = arguments.length, highlightersOrReferences = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { highlightersOrReferences[_key2] = arguments[_key2]; } var highlighters = highlightersOrReferences.map(convertHighlighterOrReferenceToHighlighter).filter(Boolean); var newReferences = this.applyHighlighters(operation, highlighters); this.validate(newReferences); return this.clone(newReferences); } filter() { var operation = filter; for (var _len3 = arguments.length, highlightersOrReferences = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { highlightersOrReferences[_key3] = arguments[_key3]; } var highlighters = highlightersOrReferences.map(convertHighlighterOrReferenceToHighlighter).filter(Boolean); var newReferences = this.applyHighlighters(operation, highlighters); this.validate(newReferences); return this.clone(newReferences); } clone(references) { return new Highlight(this.schema, references); } applyHighlighters(operation, highlighters) { var schema = this.schema; // all changes are implemented with a fresh copy of data var references = [...this.references]; var updated = highlighters.reduce((references, highlighter) => { var highlightedReferences = highlighter.mark(schema); return operation(references, highlightedReferences); }, references).filter(function filterInternalGraphQLTypes(reference) { var type; if (isFieldReference(reference)) { type = reference[0]; } if (isTypeReference(reference)) { type = reference; } if (type) { return !type.startsWith('__') && !INTERNAL_SCALARS.includes(type); } return true; }); updated = unique(updated); return updated; } validate(references) { var errors = references.map(reference => validate(this.schema, reference)).filter(Boolean); if (errors.length === 0) { return; } throw new ValidationError(errors); } } function hi(schema, references) { return new Highlight(schema, references); } export { Highlight, hi }; //# sourceMappingURL=highlight.mjs.map