Initial commit
This commit is contained in:
commit
f47e08fdcb
2409 files changed
+363607
No files matched your search
+146
@@ -0,0 +1,146 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.printError = printError;
|
||||
|
||||
var _location = require("../language/location");
|
||||
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* strict
|
||||
*/
|
||||
|
||||
/**
|
||||
* Prints a GraphQLError to a string, representing useful location information
|
||||
* about the error's position in the source.
|
||||
*/
|
||||
function printError(error) {
|
||||
var printedLocations = [];
|
||||
|
||||
if (error.nodes) {
|
||||
var _iteratorNormalCompletion = true;
|
||||
var _didIteratorError = false;
|
||||
var _iteratorError = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
||||
var node = _step.value;
|
||||
|
||||
if (node.loc) {
|
||||
printedLocations.push(highlightSourceAtLocation(node.loc.source, (0, _location.getLocation)(node.loc.source, node.loc.start)));
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError = true;
|
||||
_iteratorError = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
||||
_iterator.return();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError) {
|
||||
throw _iteratorError;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (error.source && error.locations) {
|
||||
var source = error.source;
|
||||
var _iteratorNormalCompletion2 = true;
|
||||
var _didIteratorError2 = false;
|
||||
var _iteratorError2 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
||||
var location = _step2.value;
|
||||
printedLocations.push(highlightSourceAtLocation(source, location));
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError2 = true;
|
||||
_iteratorError2 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
||||
_iterator2.return();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError2) {
|
||||
throw _iteratorError2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\n\n') + '\n';
|
||||
}
|
||||
/**
|
||||
* Render a helpful description of the location of the error in the GraphQL
|
||||
* Source document.
|
||||
*/
|
||||
|
||||
|
||||
function highlightSourceAtLocation(source, location) {
|
||||
var firstLineColumnOffset = source.locationOffset.column - 1;
|
||||
var body = whitespace(firstLineColumnOffset) + source.body;
|
||||
var lineIndex = location.line - 1;
|
||||
var lineOffset = source.locationOffset.line - 1;
|
||||
var lineNum = location.line + lineOffset;
|
||||
var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;
|
||||
var columnNum = location.column + columnOffset;
|
||||
var lines = body.split(/\r\n|[\n\r]/g);
|
||||
return "".concat(source.name, " (").concat(lineNum, ":").concat(columnNum, ")\n") + printPrefixedLines([// Lines specified like this: ["prefix", "string"],
|
||||
["".concat(lineNum - 1, ": "), lines[lineIndex - 1]], ["".concat(lineNum, ": "), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], ["".concat(lineNum + 1, ": "), lines[lineIndex + 1]]]);
|
||||
}
|
||||
|
||||
function printPrefixedLines(lines) {
|
||||
var existingLines = lines.filter(function (_ref) {
|
||||
var _ = _ref[0],
|
||||
line = _ref[1];
|
||||
return line !== undefined;
|
||||
});
|
||||
var padLen = 0;
|
||||
var _iteratorNormalCompletion3 = true;
|
||||
var _didIteratorError3 = false;
|
||||
var _iteratorError3 = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
||||
var _ref4 = _step3.value;
|
||||
var prefix = _ref4[0];
|
||||
padLen = Math.max(padLen, prefix.length);
|
||||
}
|
||||
} catch (err) {
|
||||
_didIteratorError3 = true;
|
||||
_iteratorError3 = err;
|
||||
} finally {
|
||||
try {
|
||||
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
||||
_iterator3.return();
|
||||
}
|
||||
} finally {
|
||||
if (_didIteratorError3) {
|
||||
throw _iteratorError3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return existingLines.map(function (_ref3) {
|
||||
var prefix = _ref3[0],
|
||||
line = _ref3[1];
|
||||
return lpad(padLen, prefix) + line;
|
||||
}).join('\n');
|
||||
}
|
||||
|
||||
function whitespace(len) {
|
||||
return Array(len + 1).join(' ');
|
||||
}
|
||||
|
||||
function lpad(len, str) {
|
||||
return whitespace(len - str.length) + str;
|
||||
}
|
||||
Reference in new issue
Block a user