aboutsummaryrefslogtreecommitdiff
path: root/node_modules/pretty-error/lib/ParsedError.js
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/pretty-error/lib/ParsedError.js
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/pretty-error/lib/ParsedError.js')
-rw-r--r--node_modules/pretty-error/lib/ParsedError.js246
1 files changed, 246 insertions, 0 deletions
diff --git a/node_modules/pretty-error/lib/ParsedError.js b/node_modules/pretty-error/lib/ParsedError.js
new file mode 100644
index 00000000..d5bb5753
--- /dev/null
+++ b/node_modules/pretty-error/lib/ParsedError.js
@@ -0,0 +1,246 @@
+// Generated by CoffeeScript 1.8.0
+var ParsedError, prop, sysPath, _fn, _i, _len, _ref;
+
+sysPath = require('path');
+
+module.exports = ParsedError = (function() {
+ function ParsedError(error) {
+ this.error = error;
+ this._parse();
+ }
+
+ ParsedError.prototype._parse = function() {
+ var m;
+ this._trace = [];
+ this._kind = 'Error';
+ this._wrapper = '';
+ if (this.error.wrapper != null) {
+ this._wrapper = String(this.error.wrapper);
+ }
+ if (typeof this.error !== 'object') {
+ this._message = String(this.error);
+ } else {
+ this._stack = this.error.stack;
+ if (this.error.kind != null) {
+ this._kind = String(this.error.kind);
+ } else if (typeof this._stack === 'string') {
+ if (m = this._stack.match(/^([a-zA-Z0-9\_\$]+):\ /)) {
+ this._kind = m[1];
+ }
+ }
+ if (typeof this._stack === 'string') {
+ this._parseStack();
+ } else {
+ this._message = (this.error.message != null) && String(this.error.message) || '';
+ }
+ }
+ };
+
+ ParsedError.prototype._parseStack = function() {
+ var line, message, messageLines, reachedTrace, _i, _len, _ref;
+ messageLines = [];
+ reachedTrace = false;
+ _ref = this._stack.split('\n');
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ line = _ref[_i];
+ if (line.trim() === '') {
+ continue;
+ }
+ if (reachedTrace) {
+ this._trace.push(this._parseTraceItem(line));
+ } else {
+ if (line.match(/^\s*at\s.+/)) {
+ reachedTrace = true;
+ this._trace.push(this._parseTraceItem(line));
+ } else {
+ messageLines.push(line);
+ }
+ }
+ }
+ message = messageLines.join('\n');
+ if (message.substr(0, this._kind.length) === this._kind) {
+ message = message.substr(this._kind.length, message.length).replace(/^\:\s+/, '');
+ }
+ this._message = message;
+ };
+
+ ParsedError.prototype._parseTraceItem = function(text) {
+ var addr, col, d, dir, file, jsCol, jsLine, line, m, original, packageName, packages, path, r, remaining, shortenedAddr, shortenedPath, what;
+ text = text.trim();
+ if (text === '') {
+ return;
+ }
+ if (!text.match(/^at\ /)) {
+ return text;
+ }
+ text = text.replace(/^at /, '');
+ if (text === 'Error (<anonymous>)' || text === 'Error (<anonymous>:null:null)') {
+ return;
+ }
+ original = text;
+ what = null;
+ addr = null;
+ path = null;
+ dir = null;
+ file = null;
+ line = null;
+ col = null;
+ jsLine = null;
+ jsCol = null;
+ shortenedPath = null;
+ shortenedAddr = null;
+ packageName = '[current]';
+ if (m = text.match(/\(([^\)]+)\)$/)) {
+ addr = m[1].trim();
+ }
+ if (addr != null) {
+ what = text.substr(0, text.length - addr.length - 2);
+ what = what.trim();
+ }
+ if (addr == null) {
+ addr = text.trim();
+ }
+ addr = this._fixPath(addr);
+ remaining = addr;
+ if (m = remaining.match(/\,\ <js>:(\d+):(\d+)$/)) {
+ jsLine = m[1];
+ jsCol = m[2];
+ remaining = remaining.substr(0, remaining.length - m[0].length);
+ }
+ if (m = remaining.match(/:(\d+):(\d+)$/)) {
+ line = m[1];
+ col = m[2];
+ remaining = remaining.substr(0, remaining.length - m[0].length);
+ path = remaining;
+ }
+ if (path != null) {
+ file = sysPath.basename(path);
+ dir = sysPath.dirname(path);
+ if (dir === '.') {
+ dir = '';
+ }
+ path = this._fixPath(path);
+ file = this._fixPath(file);
+ dir = this._fixPath(dir);
+ }
+ if (dir != null) {
+ d = dir.replace(/[\\]{1,2}/g, '/');
+ if (m = d.match(/node_modules\/([^\/]+)(?!.*node_modules.*)/)) {
+ packageName = m[1];
+ }
+ }
+ if (jsLine == null) {
+ jsLine = line;
+ jsCol = col;
+ }
+ if (path != null) {
+ r = this._rectifyPath(path);
+ shortenedPath = r.path;
+ shortenedAddr = shortenedPath + addr.substr(path.length, addr.length);
+ packages = r.packages;
+ }
+ return {
+ original: original,
+ what: what,
+ addr: addr,
+ path: path,
+ dir: dir,
+ file: file,
+ line: parseInt(line),
+ col: parseInt(col),
+ jsLine: parseInt(jsLine),
+ jsCol: parseInt(jsCol),
+ packageName: packageName,
+ shortenedPath: shortenedPath,
+ shortenedAddr: shortenedAddr,
+ packages: packages || []
+ };
+ };
+
+ ParsedError.prototype._getMessage = function() {
+ return this._message;
+ };
+
+ ParsedError.prototype._getKind = function() {
+ return this._kind;
+ };
+
+ ParsedError.prototype._getWrapper = function() {
+ return this._wrapper;
+ };
+
+ ParsedError.prototype._getStack = function() {
+ return this._stack;
+ };
+
+ ParsedError.prototype._getArguments = function() {
+ return this.error["arguments"];
+ };
+
+ ParsedError.prototype._getType = function() {
+ return this.error.type;
+ };
+
+ ParsedError.prototype._getTrace = function() {
+ return this._trace;
+ };
+
+ ParsedError.prototype._fixPath = function(path) {
+ return path.replace(/[\\]{1,2}/g, '/');
+ };
+
+ ParsedError.prototype._rectifyPath = function(path, nameForCurrentPackage) {
+ var m, packages, parts, remaining, rest;
+ path = String(path);
+ remaining = path;
+ if (!(m = path.match(/^(.+?)\/node_modules\/(.+)$/))) {
+ return {
+ path: path,
+ packages: []
+ };
+ }
+ parts = [];
+ packages = [];
+ if (typeof nameForCurrentPackage === 'string') {
+ parts.push("[" + nameForCurrentPackage + "]");
+ packages.push("[" + nameForCurrentPackage + "]");
+ } else {
+ parts.push("[" + (m[1].match(/([^\/]+)$/)[1]) + "]");
+ packages.push(m[1].match(/([^\/]+)$/)[1]);
+ }
+ rest = m[2];
+ while (m = rest.match(/([^\/]+)\/node_modules\/(.+)$/)) {
+ parts.push("[" + m[1] + "]");
+ packages.push(m[1]);
+ rest = m[2];
+ }
+ if (m = rest.match(/([^\/]+)\/(.+)$/)) {
+ parts.push("[" + m[1] + "]");
+ packages.push(m[1]);
+ rest = m[2];
+ }
+ parts.push(rest);
+ return {
+ path: parts.join("/"),
+ packages: packages
+ };
+ };
+
+ return ParsedError;
+
+})();
+
+_ref = ['message', 'kind', 'arguments', 'type', 'stack', 'trace', 'wrapper'];
+_fn = function() {
+ var methodName;
+ methodName = '_get' + prop[0].toUpperCase() + prop.substr(1, prop.length);
+ return Object.defineProperty(ParsedError.prototype, prop, {
+ get: function() {
+ return this[methodName]();
+ }
+ });
+};
+for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ prop = _ref[_i];
+ _fn();
+}