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.3
to
8.0.0-beta.4
+94
-84
lib/index.js

@@ -36,90 +36,96 @@ import picocolors, { createColors } from 'picocolors';

const BRACKET = /^[()[\]{}]$/;
let tokenize;
{
const getTokenType = function (token) {
if (token.type === "IdentifierName") {
if (isKeyword(token.value) || isStrictReservedWord(token.value, true) || sometimesKeywords.has(token.value)) {
return "keyword";
const getTokenType = function (token) {
if (token.type === "IdentifierName") {
const tokenValue = token.value;
if (isKeyword(tokenValue) || isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {
return "keyword";
}
const firstChar = tokenValue.charCodeAt(0);
if (firstChar < 128) {
if (firstChar >= 65 && firstChar <= 90) {
return "capitalized";
}
if (token.value[0] !== token.value[0].toLowerCase()) {
} else {
const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));
if (firstChar !== firstChar.toLowerCase()) {
return "capitalized";
}
}
if (token.type === "Punctuator" && BRACKET.test(token.value)) {
}
if (token.type === "Punctuator" && BRACKET.test(token.value)) {
return "uncolored";
}
if (token.type === "Invalid" && token.value === "@") {
return "punctuator";
}
switch (token.type) {
case "NumericLiteral":
return "number";
case "StringLiteral":
case "JSXString":
case "NoSubstitutionTemplate":
return "string";
case "RegularExpressionLiteral":
return "regex";
case "Punctuator":
case "JSXPunctuator":
return "punctuator";
case "MultiLineComment":
case "SingleLineComment":
return "comment";
case "Invalid":
case "JSXInvalid":
return "invalid";
case "JSXIdentifier":
return "jsxIdentifier";
default:
return "uncolored";
}
if (token.type === "Invalid" && token.value === "@") {
return "punctuator";
}
}
};
function* tokenize(text) {
for (const token of jsTokens(text, {
jsx: true
})) {
switch (token.type) {
case "NumericLiteral":
return "number";
case "StringLiteral":
case "JSXString":
case "NoSubstitutionTemplate":
return "string";
case "RegularExpressionLiteral":
return "regex";
case "Punctuator":
case "JSXPunctuator":
return "punctuator";
case "MultiLineComment":
case "SingleLineComment":
return "comment";
case "Invalid":
case "JSXInvalid":
return "invalid";
case "JSXIdentifier":
return "jsxIdentifier";
case "TemplateHead":
yield {
type: "string",
value: token.value.slice(0, -2)
};
yield {
type: "punctuator",
value: "${"
};
break;
case "TemplateMiddle":
yield {
type: "punctuator",
value: "}"
};
yield {
type: "string",
value: token.value.slice(1, -2)
};
yield {
type: "punctuator",
value: "${"
};
break;
case "TemplateTail":
yield {
type: "punctuator",
value: "}"
};
yield {
type: "string",
value: token.value.slice(1)
};
break;
default:
return "uncolored";
yield {
type: getTokenType(token),
value: token.value
};
}
};
tokenize = function* (text) {
for (const token of jsTokens(text, {
jsx: true
})) {
switch (token.type) {
case "TemplateHead":
yield {
type: "string",
value: token.value.slice(0, -2)
};
yield {
type: "punctuator",
value: "${"
};
break;
case "TemplateMiddle":
yield {
type: "punctuator",
value: "}"
};
yield {
type: "string",
value: token.value.slice(1, -2)
};
yield {
type: "punctuator",
value: "${"
};
break;
case "TemplateTail":
yield {
type: "punctuator",
value: "}"
};
yield {
type: "string",
value: token.value.slice(1)
};
break;
default:
yield {
type: getTokenType(token),
value: token.value
};
}
}
};
}
}

@@ -146,7 +152,11 @@ function highlight(text) {

function getMarkerLines(loc, source, opts) {
const startLoc = Object.assign({
const startLoc = {
column: 0,
line: -1
}, loc.start);
const endLoc = Object.assign({}, startLoc, loc.end);
line: -1,
...loc.start
};
const endLoc = {
...startLoc,
...loc.end
};
const {

@@ -153,0 +163,0 @@ linesAbove = 2,

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

{"version":3,"file":"index.js","sources":["../src/defs.ts","../src/highlight.ts","../src/index.ts"],"sourcesContent":["import picocolors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n\nexport function isColorSupported() {\n return (\n // See https://github.com/alexeyraspopov/picocolors/issues/62\n typeof process === \"object\" &&\n (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n ? false\n : picocolors.isColorSupported\n );\n}\n\nexport type InternalTokenType =\n | \"keyword\"\n | \"capitalized\"\n | \"jsxIdentifier\"\n | \"punctuator\"\n | \"number\"\n | \"string\"\n | \"regex\"\n | \"comment\"\n | \"invalid\";\n\ntype UITokens = \"gutter\" | \"marker\" | \"message\";\n\nexport type Defs = {\n [_ in InternalTokenType | UITokens | \"reset\"]: Formatter;\n};\n\nconst compose: <T, U, V>(f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n (f, g) => v =>\n f(g(v));\n\n/**\n * Styles for token types.\n */\nfunction buildDefs(colors: Colors): Defs {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n\n reset: colors.reset,\n };\n}\n\nconst defsOn = buildDefs(createColors(true));\nconst defsOff = buildDefs(createColors(false));\n\nexport function getDefs(enabled: boolean): Defs {\n return enabled ? defsOn : defsOff;\n}\n","import type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n\nimport {\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport { getDefs, type InternalTokenType } from \"./defs.ts\";\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype Token = {\n type: InternalTokenType | \"uncolored\";\n value: string;\n};\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\nlet tokenize: (\n text: string,\n) => Generator<{ type: InternalTokenType | \"uncolored\"; value: string }>;\n\nif (process.env.BABEL_8_BREAKING) {\n /**\n * Get the type of token, specifying punctuator type.\n */\n const getTokenType = function (\n token: JSToken | JSXToken,\n ): InternalTokenType | \"uncolored\" {\n if (token.type === \"IdentifierName\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (token.value[0] !== token.value[0].toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n return \"uncolored\";\n }\n\n if (token.type === \"Invalid\" && token.value === \"@\") {\n return \"punctuator\";\n }\n\n switch (token.type) {\n case \"NumericLiteral\":\n return \"number\";\n\n case \"StringLiteral\":\n case \"JSXString\":\n case \"NoSubstitutionTemplate\":\n return \"string\";\n\n case \"RegularExpressionLiteral\":\n return \"regex\";\n\n case \"Punctuator\":\n case \"JSXPunctuator\":\n return \"punctuator\";\n\n case \"MultiLineComment\":\n case \"SingleLineComment\":\n return \"comment\";\n\n case \"Invalid\":\n case \"JSXInvalid\":\n return \"invalid\";\n\n case \"JSXIdentifier\":\n return \"jsxIdentifier\";\n\n default:\n return \"uncolored\";\n }\n };\n\n /**\n * Turn a string of JS into an array of objects.\n */\n tokenize = function* (text: string): Generator<Token> {\n for (const token of jsTokens(text, { jsx: true })) {\n switch (token.type) {\n case \"TemplateHead\":\n yield { type: \"string\", value: token.value.slice(0, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateMiddle\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateTail\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1) };\n break;\n\n default:\n yield {\n type: getTokenType(token),\n value: token.value,\n };\n }\n }\n };\n} else {\n /**\n * RegExp to test for what seems to be a JSX tag name.\n */\n const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n // The token here is defined in js-tokens@4. However we don't bother\n // typing it since the whole block will be removed in Babel 8\n const getTokenType = function (token: any, offset: number, text: string) {\n if (token.type === \"name\") {\n if (\n isKeyword(token.value) ||\n isStrictReservedWord(token.value, true) ||\n sometimesKeywords.has(token.value)\n ) {\n return \"keyword\";\n }\n\n if (\n JSX_TAG.test(token.value) &&\n (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \"</\")\n ) {\n return \"jsxIdentifier\";\n }\n\n if (token.value[0] !== token.value[0].toLowerCase()) {\n return \"capitalized\";\n }\n }\n\n if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n return \"bracket\";\n }\n\n if (\n token.type === \"invalid\" &&\n (token.value === \"@\" || token.value === \"#\")\n ) {\n return \"punctuator\";\n }\n\n return token.type;\n };\n\n tokenize = function* (text: string) {\n let match;\n while ((match = (jsTokens as any).default.exec(text))) {\n const token = (jsTokens as any).matchToToken(match);\n\n yield {\n type: getTokenType(token, match.index, text),\n value: token.value,\n };\n }\n };\n}\n\nexport function highlight(text: string) {\n if (text === \"\") return \"\";\n\n const defs = getDefs(true);\n\n let highlighted = \"\";\n\n for (const { type, value } of tokenize(text)) {\n if (type in defs) {\n highlighted += value\n .split(NEWLINE)\n .map(str => defs[type as InternalTokenType](str))\n .join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n","import { getDefs, isColorSupported } from \"./defs.ts\";\nimport { highlight } from \"./highlight.ts\";\n\nexport { highlight };\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n column: number;\n line: number;\n};\n\ntype 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 * 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\nconst 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\nfunction getMarkerLines(\n loc: NodeLocation,\n source: Array<string>,\n opts: Options,\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;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\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): string {\n const shouldHighlight =\n opts.forceColor || (isColorSupported() && opts.highlightCode);\n const defs = getDefs(shouldHighlight);\n\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end).length;\n\n const highlightedLines = shouldHighlight ? highlight(rawLines) : 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}`.slice(-numberMaxWidth);\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 if (shouldHighlight) {\n return defs.reset(frame);\n } else {\n return frame;\n }\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 if (process.emitWarning) {\n // A string is directly supplied to emitWarning, because when supplying an\n // Error object node throws in the tests because of different contexts\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\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"],"names":["isColorSupported","process","env","FORCE_COLOR","picocolors","compose","f","g","v","buildDefs","colors","keyword","cyan","capitalized","yellow","jsxIdentifier","punctuator","number","magenta","string","green","regex","comment","gray","invalid","white","bgRed","bold","gutter","marker","red","message","reset","defsOn","createColors","defsOff","getDefs","enabled","sometimesKeywords","Set","NEWLINE","BRACKET","tokenize","getTokenType","token","type","isKeyword","value","isStrictReservedWord","has","toLowerCase","test","text","jsTokens","jsx","slice","highlight","defs","highlighted","split","map","str","join","deprecationWarningShown","getMarkerLines","loc","source","opts","startLoc","Object","assign","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","codeFrameColumns","rawLines","shouldHighlight","forceColor","highlightCode","lines","hasColumns","numberMaxWidth","String","highlightedLines","frame","index","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","colNumber","emitWarning","deprecationError","Error","name","console","warn","location"],"mappings":"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"}
{"version":3,"file":"index.js","sources":["../src/defs.ts","../src/highlight.ts","../src/index.ts"],"sourcesContent":["import picocolors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n\nexport function isColorSupported() {\n return (\n // See https://github.com/alexeyraspopov/picocolors/issues/62\n typeof process === \"object\" &&\n (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n ? false\n : picocolors.isColorSupported\n );\n}\n\nexport type InternalTokenType =\n | \"keyword\"\n | \"capitalized\"\n | \"jsxIdentifier\"\n | \"punctuator\"\n | \"number\"\n | \"string\"\n | \"regex\"\n | \"comment\"\n | \"invalid\";\n\ntype UITokens = \"gutter\" | \"marker\" | \"message\";\n\nexport type Defs = Record<InternalTokenType | UITokens | \"reset\", Formatter>;\n\nconst compose: <T, U, V>(f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n (f, g) => v =>\n f(g(v));\n\n/**\n * Styles for token types.\n */\nfunction buildDefs(colors: Colors): Defs {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n\n reset: colors.reset,\n };\n}\n\nconst defsOn = buildDefs(createColors(true));\nconst defsOff = buildDefs(createColors(false));\n\nexport function getDefs(enabled: boolean): Defs {\n return enabled ? defsOn : defsOff;\n}\n","import type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nimport {\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport { getDefs, type InternalTokenType } from \"./defs.ts\";\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype Token = {\n type: InternalTokenType | \"uncolored\";\n value: string;\n};\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\n/**\n * Get the type of token, specifying punctuator type.\n */\nconst getTokenType = function (\n token: JSToken | JSXToken,\n): InternalTokenType | \"uncolored\" {\n if (token.type === \"IdentifierName\") {\n const tokenValue = token.value;\n if (\n isKeyword(tokenValue) ||\n isStrictReservedWord(tokenValue, true) ||\n sometimesKeywords.has(tokenValue)\n ) {\n return \"keyword\";\n }\n\n const firstChar = tokenValue.charCodeAt(0);\n if (firstChar < 128) {\n // ASCII characters\n if (\n firstChar >= charCodes.uppercaseA &&\n firstChar <= charCodes.uppercaseZ\n ) {\n return \"capitalized\";\n }\n } else {\n const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));\n if (firstChar !== firstChar.toLowerCase()) {\n return \"capitalized\";\n }\n }\n }\n\n if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n return \"uncolored\";\n }\n\n if (token.type === \"Invalid\" && token.value === \"@\") {\n return \"punctuator\";\n }\n\n switch (token.type) {\n case \"NumericLiteral\":\n return \"number\";\n\n case \"StringLiteral\":\n case \"JSXString\":\n case \"NoSubstitutionTemplate\":\n return \"string\";\n\n case \"RegularExpressionLiteral\":\n return \"regex\";\n\n case \"Punctuator\":\n case \"JSXPunctuator\":\n return \"punctuator\";\n\n case \"MultiLineComment\":\n case \"SingleLineComment\":\n return \"comment\";\n\n case \"Invalid\":\n case \"JSXInvalid\":\n return \"invalid\";\n\n case \"JSXIdentifier\":\n return \"jsxIdentifier\";\n\n default:\n return \"uncolored\";\n }\n};\n\n/**\n * Turn a string of JS into an array of objects.\n */\nfunction* tokenize(text: string): Generator<Token> {\n for (const token of jsTokens(text, { jsx: true })) {\n switch (token.type) {\n case \"TemplateHead\":\n yield { type: \"string\", value: token.value.slice(0, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateMiddle\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1, -2) };\n yield { type: \"punctuator\", value: \"${\" };\n break;\n\n case \"TemplateTail\":\n yield { type: \"punctuator\", value: \"}\" };\n yield { type: \"string\", value: token.value.slice(1) };\n break;\n\n default:\n yield {\n type: getTokenType(token),\n value: token.value,\n };\n }\n }\n}\n\nexport function highlight(text: string) {\n if (text === \"\") return \"\";\n\n const defs = getDefs(true);\n\n let highlighted = \"\";\n\n for (const { type, value } of tokenize(text)) {\n if (type in defs) {\n highlighted += value\n .split(NEWLINE)\n .map(str => defs[type as InternalTokenType](str))\n .join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n\n return highlighted;\n}\n","import { getDefs, isColorSupported } from \"./defs.ts\";\nimport { highlight } from \"./highlight.ts\";\n\nexport { highlight };\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n column: number;\n line: number;\n};\n\ntype 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 * 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\nconst 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\nfunction getMarkerLines(\n loc: NodeLocation,\n source: string[],\n opts: Options,\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;\n const startColumn = startLoc.column;\n const endLine = endLoc.line;\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): string {\n const shouldHighlight =\n opts.forceColor || (isColorSupported() && opts.highlightCode);\n const defs = getDefs(shouldHighlight);\n\n const lines = rawLines.split(NEWLINE);\n const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n const numberMaxWidth = String(end).length;\n\n const highlightedLines = shouldHighlight ? highlight(rawLines) : 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}`.slice(-numberMaxWidth);\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 if (shouldHighlight) {\n return defs.reset(frame);\n } else {\n return frame;\n }\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 if (process.emitWarning) {\n // A string is directly supplied to emitWarning, because when supplying an\n // Error object node throws in the tests because of different contexts\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\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"],"names":["isColorSupported","process","env","FORCE_COLOR","picocolors","compose","f","g","v","buildDefs","colors","keyword","cyan","capitalized","yellow","jsxIdentifier","punctuator","number","magenta","string","green","regex","comment","gray","invalid","white","bgRed","bold","gutter","marker","red","message","reset","defsOn","createColors","defsOff","getDefs","enabled","sometimesKeywords","Set","NEWLINE","BRACKET","getTokenType","token","type","tokenValue","value","isKeyword","isStrictReservedWord","has","firstChar","charCodeAt","String","fromCodePoint","codePointAt","toLowerCase","test","tokenize","text","jsTokens","jsx","slice","highlight","defs","highlighted","split","map","str","join","deprecationWarningShown","getMarkerLines","loc","source","opts","startLoc","column","line","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","length","lineDiff","markerLines","i","lineNumber","sourceLength","codeFrameColumns","rawLines","shouldHighlight","forceColor","highlightCode","lines","hasColumns","numberMaxWidth","highlightedLines","frame","index","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","colNumber","emitWarning","deprecationError","Error","name","console","warn","location"],"mappings":"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"}
{
"name": "@babel/code-frame",
"version": "8.0.0-beta.3",
"version": "8.0.0-beta.4",
"description": "Generate errors that contain a code frame that point to source locations.",

@@ -19,9 +19,8 @@ "author": "The Babel Team (https://babel.dev/team)",

"dependencies": {
"@babel/helper-validator-identifier": "^8.0.0-beta.3",
"js-tokens": "^8.0.0",
"@babel/helper-validator-identifier": "^8.0.0-beta.4",
"js-tokens": "^10.0.0",
"picocolors": "^1.1.1"
},
"devDependencies": {
"import-meta-resolve": "^4.1.0",
"strip-ansi": "^4.0.0"
"charcodes": "^0.2.0"
},

@@ -28,0 +27,0 @@ "engines": {