UNPKG

graphql-compose-mongoose

Version:

Plugin for `graphql-compose` which derive a graphql types from a mongoose model.

62 lines 2.73 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addErrorCatcherField = addErrorCatcherField; const errors_1 = require("../../errors"); const graphql_1 = require("graphql-compose/lib/graphql"); function addErrorCatcherField(resolver) { (0, errors_1.getErrorInterface)(resolver.schemaComposer); const payloadTC = resolver.getOTC(); if (!payloadTC.hasField('error')) { payloadTC.setField('error', { type: 'ErrorInterface', description: 'Error that may occur during operation. If you request this field in GraphQL query, you will receive typed error in payload; otherwise error will be provided in root `errors` field of GraphQL response.', }); } const childResolve = resolver.resolve.bind(resolver); resolver.setResolve((rp) => __awaiter(this, void 0, void 0, function* () { var _a; try { const res = yield childResolve(rp); return res; } catch (e) { let error; if (e instanceof errors_1.ValidationError) { error = { name: 'ValidationError', message: e.message, errors: e.errors, }; } else if ((e === null || e === void 0 ? void 0 : e.constructor.name) === 'MongoError') { error = { name: 'MongoError', message: e.message, code: e.code, }; } else { error = { message: e.message, }; } if ((_a = rp.projection) === null || _a === void 0 ? void 0 : _a.error) { return { error }; } else { delete error.message; throw new graphql_1.GraphQLError(e.message, undefined, undefined, undefined, undefined, undefined, error); } } })); } //# sourceMappingURL=errorCatcher.js.map