UNPKG

codingame-connector

Version:
106 lines (91 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); var _promise = require("babel-runtime/core-js/promise"); var _promise2 = _interopRequireDefault(_promise); var _error = require("../error.js"); var _error2 = _interopRequireDefault(_error); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var name = "fail-compile"; /** * Attempt to parse the body of a successful request to Codingame test API. * This function will try to map a response for a failed test because the compilation of bundle failed. * * @function parse * @param {Object} body Body of the response * @returns {Promise<CodingameError>} Reject with a CodingameError if parsing was successful * @throws {Error} Throw is parsing failed * @instance */ /** * @file Module 'codingame/parsers/failcompile' * @author woshilapin <woshilapin@tuziwo.info> */ /** * Parse failed response from Codingame when test found a value different from the compile. * * The typical response in this case if of the following form. * ```json * { * "success": { * "error": { * message": `SyntaxError: EOL while scanning string literal`, * "stacktrace": [{ * "location": `ANSWER`, * "container": `Answer.py`, * "function": ` not in a function`, * "line": 26 * }] * } * } * } * ``` * @module codingame/parsers/failcompile */ var parse = function parse(body) { try { var _body$error = body["error"], message = _body$error["message"], stacktrace = _body$error["stacktrace"]; if (Array.isArray(stacktrace)) { message += "\n"; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(stacktrace), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var st = _step.value; message += "\t" + st.container + ":" + st.line + ":" + st.function; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } var error = new _error2.default(message); return _promise2.default.reject(error); } else { throw "Stacktrace in the error should be an array"; } } catch (error) { var _message = "The body is not of response type '" + name + "'\n"; _message += error.message; throw new Error(_message); } }; exports.default = { "name": name, "parse": parse };