summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/node_modules/vfile-message/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/eslint/node_modules/vfile-message/index.js')
-rw-r--r--tools/node_modules/eslint/node_modules/vfile-message/index.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/node_modules/vfile-message/index.js b/tools/node_modules/eslint/node_modules/vfile-message/index.js
new file mode 100644
index 0000000000..89417cf240
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/vfile-message/index.js
@@ -0,0 +1,94 @@
+'use strict';
+
+var stringify = require('unist-util-stringify-position');
+
+module.exports = VMessage;
+
+/* Inherit from `Error#`. */
+function VMessagePrototype() {}
+VMessagePrototype.prototype = Error.prototype;
+VMessage.prototype = new VMessagePrototype();
+
+/* Message properties. */
+var proto = VMessage.prototype;
+
+proto.file = '';
+proto.name = '';
+proto.reason = '';
+proto.message = '';
+proto.stack = '';
+proto.fatal = null;
+proto.column = null;
+proto.line = null;
+
+/* Construct a new VMessage.
+ *
+ * Note: We cannot invoke `Error` on the created context,
+ * as that adds readonly `line` and `column` attributes on
+ * Safari 9, thus throwing and failing the data. */
+function VMessage(reason, position, origin) {
+ var parts;
+ var range;
+ var location;
+
+ if (typeof position === 'string') {
+ origin = position;
+ position = null;
+ }
+
+ parts = parseOrigin(origin);
+ range = stringify(position) || '1:1';
+
+ location = {
+ start: {line: null, column: null},
+ end: {line: null, column: null}
+ };
+
+ /* Node. */
+ if (position && position.position) {
+ position = position.position;
+ }
+
+ if (position) {
+ /* Position. */
+ if (position.start) {
+ location = position;
+ position = position.start;
+ } else {
+ /* Point. */
+ location.start = position;
+ }
+ }
+
+ if (reason.stack) {
+ this.stack = reason.stack;
+ reason = reason.message;
+ }
+
+ this.message = reason;
+ this.name = range;
+ this.reason = reason;
+ this.line = position ? position.line : null;
+ this.column = position ? position.column : null;
+ this.location = location;
+ this.source = parts[0];
+ this.ruleId = parts[1];
+}
+
+function parseOrigin(origin) {
+ var result = [null, null];
+ var index;
+
+ if (typeof origin === 'string') {
+ index = origin.indexOf(':');
+
+ if (index === -1) {
+ result[1] = origin;
+ } else {
+ result[0] = origin.slice(0, index);
+ result[1] = origin.slice(index + 1);
+ }
+ }
+
+ return result;
+}