You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@babel/code-frame

Package Overview
Dependencies
Maintainers
4
Versions
95
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@babel/code-frame - npm Package Compare versions

Comparing version
8.0.0-beta.4
to
8.0.0-rc.1
+29
lib/browser.js
import { _ as _codeFrameColumns } from './common-BO7XIBW3.js';
let deprecationWarningShown = false;
function codeFrameColumns(rawLines, loc, opts = {}) {
return _codeFrameColumns(rawLines, loc, opts);
}
function browser (rawLines, lineNumber, colNumber, opts = {}) {
if (!deprecationWarningShown) {
deprecationWarningShown = true;
const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
const deprecationError = new Error(message);
deprecationError.name = "DeprecationWarning";
console.warn(new Error(message));
}
colNumber = Math.max(colNumber, 0);
const location = {
start: {
column: colNumber,
line: lineNumber
}
};
return codeFrameColumns(rawLines, location, opts);
}
function highlight(code) {
return code;
}
export { codeFrameColumns, browser as default, highlight };
//# sourceMappingURL=browser.js.map
{"version":3,"file":"browser.js","sources":["../src/browser.ts"],"sourcesContent":["import {\n _codeFrameColumns,\n type NodeLocation,\n type Options,\n} from \"./common.ts\";\n\nlet deprecationWarningShown = false;\n\nexport type { Options };\n\nexport function codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n): string {\n return _codeFrameColumns(rawLines, loc, opts);\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n rawLines: string,\n lineNumber: number,\n colNumber?: number | null,\n opts: Options = {},\n): string {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n\n const message =\n \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n\n colNumber = Math.max(colNumber, 0);\n\n const location: NodeLocation = {\n start: { column: colNumber, line: lineNumber },\n };\n\n return codeFrameColumns(rawLines, location, opts);\n}\n\nexport function highlight(code: string) {\n return code;\n}\n"],"names":["deprecationWarningShown","codeFrameColumns","rawLines","loc","opts","_codeFrameColumns","lineNumber","colNumber","message","deprecationError","Error","name","console","warn","Math","max","location","start","column","line","highlight","code"],"mappings":";;AAMA,IAAIA,uBAAuB,GAAG,KAAK,CAAA;AAI5B,SAASC,gBAAgBA,CAC9BC,QAAgB,EAChBC,GAAiB,EACjBC,IAAa,GAAG,EAAE,EACV;AACR,EAAA,OAAOC,iBAAiB,CAACH,QAAQ,EAAEC,GAAG,EAAEC,IAAI,CAAC,CAAA;AAC/C,CAAA;AAMe,gBAAA,EACbF,QAAgB,EAChBI,UAAkB,EAClBC,SAAyB,EACzBH,IAAa,GAAG,EAAE,EACV;EACR,IAAI,CAACJ,uBAAuB,EAAE;AAC5BA,IAAAA,uBAAuB,GAAG,IAAI,CAAA;IAE9B,MAAMQ,OAAO,GACX,qGAAqG,CAAA;AAEvG,IAAA,MAAMC,gBAAgB,GAAG,IAAIC,KAAK,CAACF,OAAO,CAAC,CAAA;IAC3CC,gBAAgB,CAACE,IAAI,GAAG,oBAAoB,CAAA;IAC5CC,OAAO,CAACC,IAAI,CAAC,IAAIH,KAAK,CAACF,OAAO,CAAC,CAAC,CAAA;AAClC,GAAA;EAEAD,SAAS,GAAGO,IAAI,CAACC,GAAG,CAACR,SAAS,EAAE,CAAC,CAAC,CAAA;AAElC,EAAA,MAAMS,QAAsB,GAAG;AAC7BC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,MAAM,EAAEX,SAAS;AAAEY,MAAAA,IAAI,EAAEb,UAAAA;AAAW,KAAA;GAC9C,CAAA;AAED,EAAA,OAAOL,gBAAgB,CAACC,QAAQ,EAAEc,QAAQ,EAAEZ,IAAI,CAAC,CAAA;AACnD,CAAA;AAEO,SAASgB,SAASA,CAACC,IAAY,EAAE;AACtC,EAAA,OAAOA,IAAI,CAAA;AACb;;;;"}
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
function getMarkerLines(loc, source, opts, startLineBaseZero) {
const startLoc = {
column: 0,
line: -1,
...loc.start
};
const endLoc = {
...startLoc,
...loc.end
};
const {
linesAbove = 2,
linesBelow = 3
} = opts || {};
const startLine = startLoc.line - startLineBaseZero;
const startColumn = startLoc.column;
const endLine = endLoc.line - startLineBaseZero;
const endColumn = endLoc.column;
let start = Math.max(startLine - (linesAbove + 1), 0);
let end = Math.min(source.length, endLine + linesBelow);
if (startLine === -1) {
start = 0;
}
if (endLine === -1) {
end = source.length;
}
const lineDiff = endLine - startLine;
const markerLines = {};
if (lineDiff) {
for (let i = 0; i <= lineDiff; i++) {
const lineNumber = i + startLine;
if (!startColumn) {
markerLines[lineNumber] = true;
} else if (i === 0) {
const sourceLength = source[lineNumber - 1].length;
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
} else if (i === lineDiff) {
markerLines[lineNumber] = [0, endColumn];
} else {
const sourceLength = source[lineNumber - i].length;
markerLines[lineNumber] = [0, sourceLength];
}
}
} else {
if (startColumn === endColumn) {
if (startColumn) {
markerLines[startLine] = [startColumn, 0];
} else {
markerLines[startLine] = true;
}
} else {
markerLines[startLine] = [startColumn, endColumn - startColumn];
}
}
return {
start,
end,
markerLines
};
}
function _codeFrameColumns(rawLines, loc, opts = {}, colorOpts) {
const {
defs,
highlight
} = colorOpts || {
defs: {
gutter: String,
marker: String,
message: String,
reset: String
},
highlight: String
};
const startLineBaseZero = (opts.startLine || 1) - 1;
const lines = rawLines.split(NEWLINE);
const {
start,
end,
markerLines
} = getMarkerLines(loc, lines, opts, startLineBaseZero);
const hasColumns = loc.start && typeof loc.start.column === "number";
const numberMaxWidth = String(end + startLineBaseZero).length;
const highlightedLines = highlight(rawLines);
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
const number = start + 1 + index;
const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);
const gutter = ` ${paddedNumber} |`;
const hasMarker = markerLines[number];
const lastMarkerLine = !markerLines[number + 1];
if (hasMarker) {
let markerLine = "";
if (Array.isArray(hasMarker)) {
const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
const numberOfMarkers = hasMarker[1] || 1;
markerLine = ["\n ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join("");
if (lastMarkerLine && opts.message) {
markerLine += " " + defs.message(opts.message);
}
}
return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
} else {
return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`;
}
}).join("\n");
if (opts.message && !hasColumns) {
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
}
return defs.reset(frame);
}
export { _codeFrameColumns as _ };
//# sourceMappingURL=common-BO7XIBW3.js.map
{"version":3,"file":"common-BO7XIBW3.js","sources":["../src/common.ts"],"sourcesContent":["import type { Defs } from \"./defs\";\n\ntype Location = {\n column: number;\n line: number;\n};\n\nexport type NodeLocation = {\n end?: Location;\n start: Location;\n};\n\nexport interface Options {\n /** Syntax highlight the code as JavaScript for terminals. default: false */\n highlightCode?: boolean;\n /** The number of lines to show above the error. default: 2 */\n linesAbove?: number;\n /** The number of lines to show below the error. default: 3 */\n linesBelow?: number;\n\n startLine?: number;\n /**\n * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n * overrides highlightCode.\n * default: false\n */\n forceColor?: boolean;\n /**\n * Pass in a string to be displayed inline (if possible) next to the\n * highlighted location in the code. If it can't be positioned inline,\n * it will be placed above the code frame.\n * default: nothing\n */\n message?: string;\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nexport const NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record<number, true | [number, number]>;\n\nexport function getMarkerLines(\n loc: NodeLocation,\n source: string[],\n opts: Options,\n startLineBaseZero: number,\n): {\n start: number;\n end: number;\n markerLines: MarkerLines;\n} {\n const startLoc: Location = {\n column: 0,\n line: -1,\n ...loc.start,\n };\n const endLoc: Location = {\n ...startLoc,\n ...loc.end,\n };\n const { linesAbove = 2, linesBelow = 3 } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n\n if (startLine === -1) {\n start = 0;\n }\n\n if (endLine === -1) {\n end = source.length;\n }\n\n const lineDiff = endLine - startLine;\n const markerLines: MarkerLines = {};\n\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n\n return { start, end, markerLines };\n}\n\nexport function _codeFrameColumns(\n rawLines: string,\n loc: NodeLocation,\n opts: Options = {},\n colorOpts?: {\n defs: Pick<Defs, \"gutter\" | \"marker\" | \"message\" | \"reset\">;\n highlight: (code: string) => string;\n },\n): string {\n const { defs, highlight } = colorOpts || {\n defs: {\n gutter: String,\n marker: String,\n message: String,\n reset: String,\n },\n highlight: String,\n };\n\n const startLineBaseZero = (opts.startLine || 1) - 1;\n\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(\n loc,\n lines,\n opts,\n startLineBaseZero,\n );\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end + startLineBaseZero).length;\n\n const highlightedLines = highlight(rawLines);\n\n let frame = highlightedLines\n .split(NEWLINE, end)\n .slice(start, end)\n .map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(\n -numberMaxWidth,\n );\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line\n .slice(0, Math.max(hasMarker[0] - 1, 0))\n .replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n\n markerLine = [\n \"\\n \",\n defs.gutter(gutter.replace(/\\d/g, \" \")),\n \" \",\n markerSpacing,\n defs.marker(\"^\").repeat(numberOfMarkers),\n ].join(\"\");\n\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [\n defs.marker(\">\"),\n defs.gutter(gutter),\n line.length > 0 ? ` ${line}` : \"\",\n markerLine,\n ].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n })\n .join(\"\\n\");\n\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n\n return defs.reset(frame);\n}\n"],"names":["NEWLINE","getMarkerLines","loc","source","opts","startLineBaseZero","startLoc","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","_codeFrameColumns","rawLines","colorOpts","defs","highlight","gutter","String","marker","message","reset","lines","split","hasColumns","numberMaxWidth","highlightedLines","frame","slice","map","index","number","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","join"],"mappings":"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"}
+4
-2

@@ -1,3 +0,1 @@

declare function highlight(text: string): string;
type Location = {

@@ -18,2 +16,3 @@ column: number;

linesBelow?: number;
startLine?: number;
/**

@@ -33,2 +32,5 @@ * Forcibly syntax highlight the code as JavaScript (for non-terminals);

}
declare function highlight(text: string): string;
declare function codeFrameColumns(rawLines: string, loc: NodeLocation, opts?: Options): string;

@@ -35,0 +37,0 @@ /**

@@ -1,2 +0,3 @@

import picocolors, { createColors } from 'picocolors';
import { _ as _codeFrameColumns } from './common-BO7XIBW3.js';
import { styleText } from 'node:util';
import jsTokens from 'js-tokens';

@@ -6,31 +7,27 @@ import { isKeyword, isStrictReservedWord } from '@babel/helper-validator-identifier';

function isColorSupported() {
return (typeof process === "object" && (process.env.FORCE_COLOR === "0" || process.env.FORCE_COLOR === "false") ? false : picocolors.isColorSupported
);
return styleText("red", "-") !== "-";
}
const compose = (f, g) => v => f(g(v));
function buildDefs(colors) {
return {
keyword: colors.cyan,
capitalized: colors.yellow,
jsxIdentifier: colors.yellow,
punctuator: colors.yellow,
number: colors.magenta,
string: colors.green,
regex: colors.magenta,
comment: colors.gray,
invalid: compose(compose(colors.white, colors.bgRed), colors.bold),
gutter: colors.gray,
marker: compose(colors.red, colors.bold),
message: compose(colors.red, colors.bold),
reset: colors.reset
};
function createFormatter(format) {
return input => styleText(format, String(input ?? ""), {
validateStream: false
});
}
const defsOn = buildDefs(createColors(true));
const defsOff = buildDefs(createColors(false));
function getDefs(enabled) {
return enabled ? defsOn : defsOff;
}
const defs = {
keyword: createFormatter("cyan"),
capitalized: createFormatter("yellow"),
jsxIdentifier: createFormatter("yellow"),
punctuator: createFormatter("yellow"),
number: createFormatter("magenta"),
string: createFormatter("green"),
regex: createFormatter("magenta"),
comment: createFormatter("gray"),
invalid: createFormatter(["white", "bgRed", "bold"]),
gutter: createFormatter("gray"),
marker: createFormatter(["red", "bold"]),
message: createFormatter(["red", "bold"]),
reset: createFormatter("reset")
};
const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/;
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
const BRACKET = /^[()[\]{}]$/;

@@ -134,3 +131,2 @@ const getTokenType = function (token) {

if (text === "") return "";
const defs = getDefs(true);
let highlighted = "";

@@ -142,3 +138,3 @@ for (const {

if (type in defs) {
highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join("\n");
highlighted += value.split(NEWLINE).map(str => defs[type](str)).join("\n");
} else {

@@ -152,104 +148,8 @@ highlighted += value;

let deprecationWarningShown = false;
const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
function getMarkerLines(loc, source, opts) {
const startLoc = {
column: 0,
line: -1,
...loc.start
};
const endLoc = {
...startLoc,
...loc.end
};
const {
linesAbove = 2,
linesBelow = 3
} = opts || {};
const startLine = startLoc.line;
const startColumn = startLoc.column;
const endLine = endLoc.line;
const endColumn = endLoc.column;
let start = Math.max(startLine - (linesAbove + 1), 0);
let end = Math.min(source.length, endLine + linesBelow);
if (startLine === -1) {
start = 0;
}
if (endLine === -1) {
end = source.length;
}
const lineDiff = endLine - startLine;
const markerLines = {};
if (lineDiff) {
for (let i = 0; i <= lineDiff; i++) {
const lineNumber = i + startLine;
if (!startColumn) {
markerLines[lineNumber] = true;
} else if (i === 0) {
const sourceLength = source[lineNumber - 1].length;
markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
} else if (i === lineDiff) {
markerLines[lineNumber] = [0, endColumn];
} else {
const sourceLength = source[lineNumber - i].length;
markerLines[lineNumber] = [0, sourceLength];
}
}
} else {
if (startColumn === endColumn) {
if (startColumn) {
markerLines[startLine] = [startColumn, 0];
} else {
markerLines[startLine] = true;
}
} else {
markerLines[startLine] = [startColumn, endColumn - startColumn];
}
}
return {
start,
end,
markerLines
};
}
function codeFrameColumns(rawLines, loc, opts = {}) {
const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;
const defs = getDefs(shouldHighlight);
const lines = rawLines.split(NEWLINE);
const {
start,
end,
markerLines
} = getMarkerLines(loc, lines, opts);
const hasColumns = loc.start && typeof loc.start.column === "number";
const numberMaxWidth = String(end).length;
const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;
let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
const number = start + 1 + index;
const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
const gutter = ` ${paddedNumber} |`;
const hasMarker = markerLines[number];
const lastMarkerLine = !markerLines[number + 1];
if (hasMarker) {
let markerLine = "";
if (Array.isArray(hasMarker)) {
const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
const numberOfMarkers = hasMarker[1] || 1;
markerLine = ["\n ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join("");
if (lastMarkerLine && opts.message) {
markerLine += " " + defs.message(opts.message);
}
}
return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
} else {
return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`;
}
}).join("\n");
if (opts.message && !hasColumns) {
frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
}
if (shouldHighlight) {
return defs.reset(frame);
} else {
return frame;
}
return _codeFrameColumns(rawLines, loc, opts, shouldHighlight ? {
defs,
highlight
} : undefined);
}

@@ -256,0 +156,0 @@ function index (rawLines, lineNumber, colNumber, opts = {}) {

{
"name": "@babel/code-frame",
"version": "8.0.0-beta.4",
"version": "8.0.0-rc.1",
"description": "Generate errors that contain a code frame that point to source locations.",

@@ -18,6 +18,6 @@ "author": "The Babel Team (https://babel.dev/team)",

"main": "./lib/index.js",
"browser": "./lib/browser.js",
"dependencies": {
"@babel/helper-validator-identifier": "^8.0.0-beta.4",
"js-tokens": "^10.0.0",
"picocolors": "^1.1.1"
"@babel/helper-validator-identifier": "^8.0.0-rc.1",
"js-tokens": "^10.0.0"
},

@@ -33,2 +33,3 @@ "devDependencies": {

"types": "./lib/index.d.ts",
"browser": "./lib/browser.js",
"default": "./lib/index.js"

@@ -35,0 +36,0 @@ },

Sorry, the diff of this file is not supported yet