summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/node_modules/slice-ansi/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/eslint/node_modules/slice-ansi/index.js')
-rwxr-xr-xtools/node_modules/eslint/node_modules/slice-ansi/index.js50
1 files changed, 10 insertions, 40 deletions
diff --git a/tools/node_modules/eslint/node_modules/slice-ansi/index.js b/tools/node_modules/eslint/node_modules/slice-ansi/index.js
index 634ee9c7be..65a1aef5c8 100755
--- a/tools/node_modules/eslint/node_modules/slice-ansi/index.js
+++ b/tools/node_modules/eslint/node_modules/slice-ansi/index.js
@@ -1,5 +1,7 @@
'use strict';
const isFullwidthCodePoint = require('is-fullwidth-code-point');
+const astralRegex = require('astral-regex');
+const ansiStyles = require('ansi-styles');
const ESCAPES = [
'\u001B',
@@ -7,55 +9,23 @@ const ESCAPES = [
];
const END_CODE = 39;
-const ASTRAL_REGEX = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
-
-const ESCAPE_CODES = new Map([
- [0, 0],
- [1, 22],
- [2, 22],
- [3, 23],
- [4, 24],
- [7, 27],
- [8, 28],
- [9, 29],
- [30, 39],
- [31, 39],
- [32, 39],
- [33, 39],
- [34, 39],
- [35, 39],
- [36, 39],
- [37, 39],
- [90, 39],
- [40, 49],
- [41, 49],
- [42, 49],
- [43, 49],
- [44, 49],
- [45, 49],
- [46, 49],
- [47, 49]
-]);
const wrapAnsi = code => `${ESCAPES[0]}[${code}m`;
module.exports = (str, begin, end) => {
- const arr = Array.from(str.normalize());
+ const arr = [...str.normalize()];
end = typeof end === 'number' ? end : arr.length;
let insideEscape = false;
- let escapeCode;
+ let escapeCode = null;
let visible = 0;
let output = '';
- for (const item of arr.entries()) {
- const i = item[0];
- const x = item[1];
-
+ for (const [i, x] of arr.entries()) {
let leftEscape = false;
- if (ESCAPES.indexOf(x) !== -1) {
+ if (ESCAPES.includes(x)) {
insideEscape = true;
const code = /\d[^m]*/.exec(str.slice(i, i + 4));
escapeCode = code === END_CODE ? null : code;
@@ -68,17 +38,17 @@ module.exports = (str, begin, end) => {
++visible;
}
- if (!ASTRAL_REGEX.test(x) && isFullwidthCodePoint(x.codePointAt())) {
+ if (!astralRegex({exact: true}).test(x) && isFullwidthCodePoint(x.codePointAt())) {
++visible;
}
if (visible > begin && visible <= end) {
output += x;
- } else if (visible === begin && !insideEscape && escapeCode !== undefined && escapeCode !== END_CODE) {
+ } else if (visible === begin && !insideEscape && escapeCode !== null && escapeCode !== END_CODE) {
output += wrapAnsi(escapeCode);
} else if (visible >= end) {
- if (escapeCode !== undefined) {
- output += wrapAnsi(ESCAPE_CODES.get(parseInt(escapeCode, 10)) || END_CODE);
+ if (escapeCode !== null) {
+ output += wrapAnsi(ansiStyles.codes.get(parseInt(escapeCode, 10)) || END_CODE);
}
break;
}