UNPKG

superagent

Version:

elegant & feature rich browser / node HTTP with a fluent API

30 lines (29 loc) 3.6 kB
"use strict"; module.exports = function (res, fn) { res.text = ''; res.setEncoding('utf8'); res.on('data', chunk => { res.text += chunk; }); res.on('end', () => { let body; let error; try { const text = res.text && res.text.replace(/^\uFEFF/, ''); body = text && JSON.parse(text); } catch (err) { error = err; // issue #675: return the raw response if the response parsing fails error.rawResponse = res.text || null; // issue #876: return the http status code if the response parsing fails error.statusCode = res.statusCode; // issue #1529: preserve the standard SuperAgent status property as well error.status = res.statusCode; // issue #1734: return the response headers if the response parsing fails error.headers = res.headers; } finally { fn(error, body); } }); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicmVzIiwiZm4iLCJ0ZXh0Iiwic2V0RW5jb2RpbmciLCJvbiIsImNodW5rIiwiYm9keSIsImVycm9yIiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsImVyciIsInJhd1Jlc3BvbnNlIiwic3RhdHVzQ29kZSIsInN0YXR1cyIsImhlYWRlcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm9kZS9wYXJzZXJzL2pzb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocmVzLCBmbikge1xuICByZXMudGV4dCA9ICcnO1xuICByZXMuc2V0RW5jb2RpbmcoJ3V0ZjgnKTtcbiAgcmVzLm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgcmVzLnRleHQgKz0gY2h1bms7XG4gIH0pO1xuICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICBsZXQgYm9keTtcbiAgICBsZXQgZXJyb3I7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRleHQgPSByZXMudGV4dCAmJiByZXMudGV4dC5yZXBsYWNlKC9eXFx1RkVGRi8sICcnKTtcbiAgICAgIGJvZHkgPSB0ZXh0ICYmIEpTT04ucGFyc2UodGV4dCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvciA9IGVycjtcbiAgICAgIC8vIGlzc3VlICM2NzU6IHJldHVybiB0aGUgcmF3IHJlc3BvbnNlIGlmIHRoZSByZXNwb25zZSBwYXJzaW5nIGZhaWxzXG4gICAgICBlcnJvci5yYXdSZXNwb25zZSA9IHJlcy50ZXh0IHx8IG51bGw7XG4gICAgICAvLyBpc3N1ZSAjODc2OiByZXR1cm4gdGhlIGh0dHAgc3RhdHVzIGNvZGUgaWYgdGhlIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAgICAgIGVycm9yLnN0YXR1c0NvZGUgPSByZXMuc3RhdHVzQ29kZTtcbiAgICAgIC8vIGlzc3VlICMxNTI5OiBwcmVzZXJ2ZSB0aGUgc3RhbmRhcmQgU3VwZXJBZ2VudCBzdGF0dXMgcHJvcGVydHkgYXMgd2VsbFxuICAgICAgZXJyb3Iuc3RhdHVzID0gcmVzLnN0YXR1c0NvZGU7XG4gICAgICAvLyBpc3N1ZSAjMTczNDogcmV0dXJuIHRoZSByZXNwb25zZSBoZWFkZXJzIGlmIHRoZSByZXNwb25zZSBwYXJzaW5nIGZhaWxzXG4gICAgICBlcnJvci5oZWFkZXJzID0gcmVzLmhlYWRlcnM7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGZuKGVycm9yLCBib2R5KTtcbiAgICB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQUEsTUFBTSxDQUFDQyxPQUFPLEdBQUcsVUFBVUMsR0FBRyxFQUFFQyxFQUFFLEVBQUU7RUFDbENELEdBQUcsQ0FBQ0UsSUFBSSxHQUFHLEVBQUU7RUFDYkYsR0FBRyxDQUFDRyxXQUFXLENBQUMsTUFBTSxDQUFDO0VBQ3ZCSCxHQUFHLENBQUNJLEVBQUUsQ0FBQyxNQUFNLEVBQUdDLEtBQUssSUFBSztJQUN4QkwsR0FBRyxDQUFDRSxJQUFJLElBQUlHLEtBQUs7RUFDbkIsQ0FBQyxDQUFDO0VBQ0ZMLEdBQUcsQ0FBQ0ksRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNO0lBQ2xCLElBQUlFLElBQUk7SUFDUixJQUFJQyxLQUFLO0lBQ1QsSUFBSTtNQUNGLE1BQU1MLElBQUksR0FBR0YsR0FBRyxDQUFDRSxJQUFJLElBQUlGLEdBQUcsQ0FBQ0UsSUFBSSxDQUFDTSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztNQUN4REYsSUFBSSxHQUFHSixJQUFJLElBQUlPLElBQUksQ0FBQ0MsS0FBSyxDQUFDUixJQUFJLENBQUM7SUFDakMsQ0FBQyxDQUFDLE9BQU9TLEdBQUcsRUFBRTtNQUNaSixLQUFLLEdBQUdJLEdBQUc7TUFDWDtNQUNBSixLQUFLLENBQUNLLFdBQVcsR0FBR1osR0FBRyxDQUFDRSxJQUFJLElBQUksSUFBSTtNQUNwQztNQUNBSyxLQUFLLENBQUNNLFVBQVUsR0FBR2IsR0FBRyxDQUFDYSxVQUFVO01BQ2pDO01BQ0FOLEtBQUssQ0FBQ08sTUFBTSxHQUFHZCxHQUFHLENBQUNhLFVBQVU7TUFDN0I7TUFDQU4sS0FBSyxDQUFDUSxPQUFPLEdBQUdmLEdBQUcsQ0FBQ2UsT0FBTztJQUM3QixDQUFDLFNBQVM7TUFDUmQsRUFBRSxDQUFDTSxLQUFLLEVBQUVELElBQUksQ0FBQztJQUNqQjtFQUNGLENBQUMsQ0FBQztBQUNKLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=