123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- Object.defineProperty(exports, "__esModule", { value: true });
- var graphql_1 = require("graphql");
- /*
- * fn: The function to decorate with the logger
- * logger: an object instance of type Logger
- * hint: an optional hint to add to the error's message
- */
- function decorateWithLogger(fn, logger, hint) {
- if (typeof fn === 'undefined') {
- fn = graphql_1.defaultFieldResolver;
- }
- var logError = function (e) {
- // TODO: clone the error properly
- var newE = new Error();
- newE.stack = e.stack;
- /* istanbul ignore else: always get the hint from addErrorLoggingToSchema */
- if (hint) {
- newE['originalMessage'] = e.message;
- newE['message'] = "Error in resolver " + hint + "\n" + e.message;
- }
- logger.log(newE);
- };
- return function (root, args, ctx, info) {
- try {
- var result = fn(root, args, ctx, info);
- // If the resolve function returns a Promise log any Promise rejects.
- if (result &&
- typeof result.then === 'function' &&
- typeof result.catch === 'function') {
- result.catch(function (reason) {
- // make sure that it's an error we're logging.
- var error = reason instanceof Error ? reason : new Error(reason);
- logError(error);
- // We don't want to leave an unhandled exception so pass on error.
- return reason;
- });
- }
- return result;
- }
- catch (e) {
- logError(e);
- // we want to pass on the error, just in case.
- throw e;
- }
- };
- }
- exports.default = decorateWithLogger;
- //# sourceMappingURL=decorateWithLogger.js.map
|