@parcel/codeframe 2.8.3 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/codeframe.js +47 -54
- package/lib/codeframe.js.map +1 -1
- package/package.json +3 -4
package/lib/codeframe.js
CHANGED
@@ -35740,9 +35740,9 @@ $5f04f11630a6945d$exports = ({ onlyFirst: onlyFirst = false } = {})=>{
|
|
35740
35740
|
$5e2cf9f740fe0527$exports = (string)=>typeof string === "string" ? string.replace($5f04f11630a6945d$exports(), "") : string;
|
35741
35741
|
|
35742
35742
|
|
35743
|
-
var $
|
35743
|
+
var $55a95b67e18839c0$exports = {};
|
35744
35744
|
/* eslint-disable yoda */ "use strict";
|
35745
|
-
const $
|
35745
|
+
const $55a95b67e18839c0$var$isFullwidthCodePoint = (codePoint)=>{
|
35746
35746
|
if (Number.isNaN(codePoint)) return false;
|
35747
35747
|
// Code points are derived from:
|
35748
35748
|
// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
|
@@ -35764,8 +35764,8 @@ const $e19c725c5553b196$var$isFullwidthCodePoint = (codePoint)=>{
|
|
35764
35764
|
0x20000 <= codePoint && codePoint <= 0x3FFFD)) return true;
|
35765
35765
|
return false;
|
35766
35766
|
};
|
35767
|
-
$
|
35768
|
-
$
|
35767
|
+
$55a95b67e18839c0$exports = $55a95b67e18839c0$var$isFullwidthCodePoint;
|
35768
|
+
$55a95b67e18839c0$exports.default = $55a95b67e18839c0$var$isFullwidthCodePoint;
|
35769
35769
|
|
35770
35770
|
|
35771
35771
|
var $aaafc2d9fc2c7f45$exports = {};
|
@@ -35777,9 +35777,10 @@ $aaafc2d9fc2c7f45$exports = function() {
|
|
35777
35777
|
|
35778
35778
|
|
35779
35779
|
const $ae1b0396e51a6d8c$var$stringWidth = (string)=>{
|
35780
|
-
string = string.replace($aaafc2d9fc2c7f45$exports(), " ");
|
35781
35780
|
if (typeof string !== "string" || string.length === 0) return 0;
|
35782
35781
|
string = $5e2cf9f740fe0527$exports(string);
|
35782
|
+
if (string.length === 0) return 0;
|
35783
|
+
string = string.replace($aaafc2d9fc2c7f45$exports(), " ");
|
35783
35784
|
let width = 0;
|
35784
35785
|
for(let i = 0; i < string.length; i++){
|
35785
35786
|
const code = string.codePointAt(i);
|
@@ -35789,7 +35790,7 @@ const $ae1b0396e51a6d8c$var$stringWidth = (string)=>{
|
|
35789
35790
|
if (code >= 0x300 && code <= 0x36F) continue;
|
35790
35791
|
// Surrogates
|
35791
35792
|
if (code > 0xFFFF) i++;
|
35792
|
-
width += $
|
35793
|
+
width += $55a95b67e18839c0$exports(code) ? 2 : 1;
|
35793
35794
|
}
|
35794
35795
|
return width;
|
35795
35796
|
};
|
@@ -35800,33 +35801,6 @@ $ae1b0396e51a6d8c$exports.default = $ae1b0396e51a6d8c$var$stringWidth;
|
|
35800
35801
|
|
35801
35802
|
var $0ae586f9cf7cb410$exports = {};
|
35802
35803
|
"use strict";
|
35803
|
-
var $0926ce0154f25409$exports = {};
|
35804
|
-
/* eslint-disable yoda */ "use strict";
|
35805
|
-
const $0926ce0154f25409$var$isFullwidthCodePoint = (codePoint)=>{
|
35806
|
-
if (Number.isNaN(codePoint)) return false;
|
35807
|
-
// Code points are derived from:
|
35808
|
-
// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
|
35809
|
-
if (codePoint >= 0x1100 && (codePoint <= 0x115F || // Hangul Jamo
|
35810
|
-
codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
|
35811
|
-
codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
|
35812
|
-
// CJK Radicals Supplement .. Enclosed CJK Letters and Months
|
35813
|
-
0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
|
35814
|
-
0x3250 <= codePoint && codePoint <= 0x4DBF || // CJK Unified Ideographs .. Yi Radicals
|
35815
|
-
0x4E00 <= codePoint && codePoint <= 0xA4C6 || // Hangul Jamo Extended-A
|
35816
|
-
0xA960 <= codePoint && codePoint <= 0xA97C || // Hangul Syllables
|
35817
|
-
0xAC00 <= codePoint && codePoint <= 0xD7A3 || // CJK Compatibility Ideographs
|
35818
|
-
0xF900 <= codePoint && codePoint <= 0xFAFF || // Vertical Forms
|
35819
|
-
0xFE10 <= codePoint && codePoint <= 0xFE19 || // CJK Compatibility Forms .. Small Form Variants
|
35820
|
-
0xFE30 <= codePoint && codePoint <= 0xFE6B || // Halfwidth and Fullwidth Forms
|
35821
|
-
0xFF01 <= codePoint && codePoint <= 0xFF60 || 0xFFE0 <= codePoint && codePoint <= 0xFFE6 || // Kana Supplement
|
35822
|
-
0x1B000 <= codePoint && codePoint <= 0x1B001 || // Enclosed Ideographic Supplement
|
35823
|
-
0x1F200 <= codePoint && codePoint <= 0x1F251 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
|
35824
|
-
0x20000 <= codePoint && codePoint <= 0x3FFFD)) return true;
|
35825
|
-
return false;
|
35826
|
-
};
|
35827
|
-
$0926ce0154f25409$exports = $0926ce0154f25409$var$isFullwidthCodePoint;
|
35828
|
-
$0926ce0154f25409$exports.default = $0926ce0154f25409$var$isFullwidthCodePoint;
|
35829
|
-
|
35830
35804
|
|
35831
35805
|
var $84440f8e6725c936$exports = {};
|
35832
35806
|
"use strict";
|
@@ -35901,7 +35875,7 @@ $0ae586f9cf7cb410$exports = (string, begin, end)=>{
|
|
35901
35875
|
if (!isInsideEscape && !leftEscape) visible++;
|
35902
35876
|
if (!$84440f8e6725c936$exports({
|
35903
35877
|
exact: true
|
35904
|
-
}).test(character) && $
|
35878
|
+
}).test(character) && $55a95b67e18839c0$exports(character.codePointAt())) {
|
35905
35879
|
visible++;
|
35906
35880
|
if (typeof end !== "number") stringEnd++;
|
35907
35881
|
}
|
@@ -35923,7 +35897,9 @@ const $796233c1fee0ccb8$var$DEFAULT_TERMINAL_WIDTH = 80;
|
|
35923
35897
|
const $796233c1fee0ccb8$var$highlightSyntax = (txt, lang)=>{
|
35924
35898
|
if (lang) try {
|
35925
35899
|
return (0, (/*@__PURE__*/$parcel$interopDefault($9786466eb6148e3d$exports))).highlight(lang, txt).value;
|
35926
|
-
} catch (e) {
|
35900
|
+
} catch (e) {
|
35901
|
+
// fallback for unknown languages...
|
35902
|
+
}
|
35927
35903
|
return (0, (/*@__PURE__*/$parcel$interopDefault($9786466eb6148e3d$exports))).highlightAuto(txt).value;
|
35928
35904
|
};
|
35929
35905
|
function $796233c1fee0ccb8$export$2e2bcd8739ae039(code, highlights, inputOpts = {}) {
|
@@ -35939,18 +35915,21 @@ function $796233c1fee0ccb8$export$2e2bcd8739ae039(code, highlights, inputOpts =
|
|
35939
35915
|
before: 1,
|
35940
35916
|
after: 2
|
35941
35917
|
}
|
35942
|
-
};
|
35918
|
+
};
|
35919
|
+
// Highlights messages and prefixes when colors are enabled
|
35943
35920
|
const highlighter = (s, bold)=>{
|
35944
35921
|
if (opts.useColor) {
|
35945
35922
|
let redString = (0, ($parcel$interopDefault($dGKPK$chalk))).red(s);
|
35946
35923
|
return bold ? (0, ($parcel$interopDefault($dGKPK$chalk))).bold(redString) : redString;
|
35947
35924
|
}
|
35948
35925
|
return s;
|
35949
|
-
};
|
35926
|
+
};
|
35927
|
+
// Prefix lines with the line number
|
35950
35928
|
const lineNumberPrefixer = (params)=>{
|
35951
35929
|
let { lineNumber: lineNumber , lineNumberLength: lineNumberLength , isHighlighted: isHighlighted } = params;
|
35952
35930
|
return `${isHighlighted ? highlighter(">") : " "} ${lineNumber ? lineNumber.padStart(lineNumberLength, " ") : " ".repeat(lineNumberLength)} | `;
|
35953
|
-
};
|
35931
|
+
};
|
35932
|
+
// Make columns/lines start at 1
|
35954
35933
|
let originalHighlights = highlights;
|
35955
35934
|
highlights = highlights.map((h)=>{
|
35956
35935
|
return {
|
@@ -35964,9 +35943,11 @@ function $796233c1fee0ccb8$export$2e2bcd8739ae039(code, highlights, inputOpts =
|
|
35964
35943
|
},
|
35965
35944
|
message: h.message
|
35966
35945
|
};
|
35967
|
-
});
|
35946
|
+
});
|
35947
|
+
// Find first and last highlight
|
35968
35948
|
let firstHighlight = highlights.length > 1 ? highlights.sort((a, b)=>a.start.line - b.start.line)[0] : highlights[0];
|
35969
|
-
let lastHighlight = highlights.length > 1 ? highlights.sort((a, b)=>b.end.line - a.end.line)[0] : highlights[0];
|
35949
|
+
let lastHighlight = highlights.length > 1 ? highlights.sort((a, b)=>b.end.line - a.end.line)[0] : highlights[0];
|
35950
|
+
// Calculate first and last line index of codeframe
|
35970
35951
|
let startLine = firstHighlight.start.line - opts.padding.before;
|
35971
35952
|
startLine = startLine < 0 ? 0 : startLine;
|
35972
35953
|
let endLineIndex = lastHighlight.end.line + opts.padding.after;
|
@@ -35978,16 +35959,21 @@ function $796233c1fee0ccb8$export$2e2bcd8739ae039(code, highlights, inputOpts =
|
|
35978
35959
|
endLineIndex = Math.min(maxLine, lastHighlight.end.line + opts.padding.after);
|
35979
35960
|
tail = originalHighlights.filter((h)=>h.start.line > endLineIndex);
|
35980
35961
|
}
|
35981
|
-
let lineNumberLength = (endLineIndex + 1).toString(10).length;
|
35962
|
+
let lineNumberLength = (endLineIndex + 1).toString(10).length;
|
35963
|
+
// Split input into lines and highlight syntax
|
35982
35964
|
let lines = code.split($796233c1fee0ccb8$var$NEWLINE);
|
35983
|
-
let syntaxHighlightedLines = (opts.syntaxHighlighting ? $796233c1fee0ccb8$var$highlightSyntax(code, opts.language) : code).replace($796233c1fee0ccb8$var$TAB_REPLACE_REGEX, $796233c1fee0ccb8$var$TAB_REPLACEMENT).split($796233c1fee0ccb8$var$NEWLINE);
|
35965
|
+
let syntaxHighlightedLines = (opts.syntaxHighlighting ? $796233c1fee0ccb8$var$highlightSyntax(code, opts.language) : code).replace($796233c1fee0ccb8$var$TAB_REPLACE_REGEX, $796233c1fee0ccb8$var$TAB_REPLACEMENT).split($796233c1fee0ccb8$var$NEWLINE);
|
35966
|
+
// Loop over all lines and create codeframe
|
35984
35967
|
let resultLines = [];
|
35985
35968
|
for(let currentLineIndex = startLine; currentLineIndex < syntaxHighlightedLines.length; currentLineIndex++){
|
35986
35969
|
if (currentLineIndex > endLineIndex) break;
|
35987
|
-
if (currentLineIndex > syntaxHighlightedLines.length - 1) break;
|
35988
|
-
|
35970
|
+
if (currentLineIndex > syntaxHighlightedLines.length - 1) break;
|
35971
|
+
// Find highlights that need to get rendered on the current line
|
35972
|
+
let lineHighlights = highlights.filter((highlight)=>highlight.start.line <= currentLineIndex && highlight.end.line >= currentLineIndex).sort((a, b)=>(a.start.line < currentLineIndex ? 0 : a.start.column) - (b.start.line < currentLineIndex ? 0 : b.start.column));
|
35973
|
+
// Check if this line has a full line highlight
|
35989
35974
|
let isWholeLine = lineHighlights.length && !!lineHighlights.find((h)=>h.start.line < currentLineIndex && h.end.line > currentLineIndex);
|
35990
|
-
let lineLengthLimit = opts.terminalWidth > lineNumberLength + 7 ? opts.terminalWidth - (lineNumberLength + 5) : 10;
|
35975
|
+
let lineLengthLimit = opts.terminalWidth > lineNumberLength + 7 ? opts.terminalWidth - (lineNumberLength + 5) : 10;
|
35976
|
+
// Split the line into line parts that will fit the provided terminal width
|
35991
35977
|
let colOffset = 0;
|
35992
35978
|
let lineEndCol = lineLengthLimit;
|
35993
35979
|
let syntaxHighlightedLine = syntaxHighlightedLines[currentLineIndex];
|
@@ -35999,7 +35985,8 @@ function $796233c1fee0ccb8$export$2e2bcd8739ae039(code, highlights, inputOpts =
|
|
35999
35985
|
colOffset = colOffset > 0 ? colOffset : 0;
|
36000
35986
|
lineEndCol = colOffset + lineLengthLimit;
|
36001
35987
|
syntaxHighlightedLine = (0, (/*@__PURE__*/$parcel$interopDefault($0ae586f9cf7cb410$exports)))(syntaxHighlightedLine, colOffset, lineEndCol);
|
36002
|
-
}
|
35988
|
+
}
|
35989
|
+
// Write the syntax highlighted line part
|
36003
35990
|
resultLines.push(lineNumberPrefixer({
|
36004
35991
|
lineNumber: (currentLineIndex + 1).toString(10),
|
36005
35992
|
lineNumberLength: lineNumberLength,
|
@@ -36015,18 +36002,21 @@ function $796233c1fee0ccb8$export$2e2bcd8739ae039(code, highlights, inputOpts =
|
|
36015
36002
|
for(let highlightIndex = 0; highlightIndex < lineHighlights.length; highlightIndex++){
|
36016
36003
|
// Set highlight to current highlight
|
36017
36004
|
highlight = lineHighlights[highlightIndex];
|
36018
|
-
highlightHasEnded = false;
|
36005
|
+
highlightHasEnded = false;
|
36006
|
+
// Calculate the startColumn and get the real width by doing a substring of the original
|
36019
36007
|
// line and replacing tabs with our tab replacement to support tab handling
|
36020
36008
|
let startCol = 0;
|
36021
36009
|
if (highlight.start.line === currentLineIndex && highlight.start.column > colOffset) startCol = lines[currentLineIndex].substring(colOffset, highlight.start.column).replace($796233c1fee0ccb8$var$TAB_REPLACE_REGEX, $796233c1fee0ccb8$var$TAB_REPLACEMENT).length;
|
36022
|
-
|
36010
|
+
// Calculate the endColumn and get the real width by doing a substring of the original
|
36023
36011
|
// line and replacing tabs with our tab replacement to support tab handling
|
36024
36012
|
let endCol = lineWidth - 1;
|
36025
36013
|
if (highlight.end.line === currentLineIndex) {
|
36026
|
-
endCol = lines[currentLineIndex].substring(colOffset, highlight.end.column).replace($796233c1fee0ccb8$var$TAB_REPLACE_REGEX, $796233c1fee0ccb8$var$TAB_REPLACEMENT).length;
|
36014
|
+
endCol = lines[currentLineIndex].substring(colOffset, highlight.end.column).replace($796233c1fee0ccb8$var$TAB_REPLACE_REGEX, $796233c1fee0ccb8$var$TAB_REPLACEMENT).length;
|
36015
|
+
// If the endCol is too big for this line part, trim it so we can handle it in the next one
|
36027
36016
|
if (endCol > lineWidth) endCol = lineWidth - 1;
|
36028
36017
|
highlightHasEnded = true;
|
36029
|
-
}
|
36018
|
+
}
|
36019
|
+
// If endcol is smaller than lastCol it overlaps with another highlight and is no longer visible, we can skip those
|
36030
36020
|
if (endCol >= lastCol) {
|
36031
36021
|
let characters = endCol - startCol + 1;
|
36032
36022
|
if (startCol > lastCol) // startCol is before lastCol, so add spaces as padding before the highlight indicators
|
@@ -36034,12 +36024,15 @@ function $796233c1fee0ccb8$export$2e2bcd8739ae039(code, highlights, inputOpts =
|
|
36034
36024
|
else if (lastCol > startCol) // If last column is larger than the start, there's overlap in highlights
|
36035
36025
|
// This line adjusts the characters count to ensure we don't add too many characters
|
36036
36026
|
characters += startCol - lastCol;
|
36037
|
-
|
36038
|
-
highlightLine += highlighter("^".repeat(characters));
|
36027
|
+
// Append the highlight indicators
|
36028
|
+
highlightLine += highlighter("^".repeat(characters));
|
36029
|
+
// Set the lastCol equal to character count between start of line part and highlight end-column
|
36039
36030
|
lastCol = endCol + 1;
|
36040
|
-
}
|
36031
|
+
}
|
36032
|
+
// There's no point in processing more highlights if we reached the end of the line
|
36041
36033
|
if (endCol >= lineEndCol - 1) break;
|
36042
|
-
}
|
36034
|
+
}
|
36035
|
+
// Append the highlight message if the current highlights ends on this line part
|
36043
36036
|
if (highlight && highlight.message && highlightHasEnded) highlightLine += " " + highlighter(highlight.message, true);
|
36044
36037
|
}
|
36045
36038
|
if (highlightLine) resultLines.push(lineNumberPrefixer({
|