@babel/code-frame
Advanced tools
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"browser.js","sources":["../src/browser.ts"],"sourcesContent":["import {\n _codeFrameColumns,\n type NodeLocation,\n type Options,\n} from \"./common.ts\";\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\nexport function highlight(code: string) {\n return code;\n}\n"],"names":["codeFrameColumns","rawLines","loc","opts","_codeFrameColumns","highlight","code"],"mappings":";;AAQO,SAASA,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;AAEO,SAASE,SAASA,CAACC,IAAY,EAAE;AACtC,EAAA,OAAOA,IAAI,CAAA;AACb;;;;"} | ||
| {"version":3,"file":"browser.js","sources":["../src/browser.ts"],"sourcesContent":["import {\n _codeFrameColumns,\n type NodeLocation,\n type Options,\n} from \"./common.ts\";\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\nexport function highlight(code: string) {\n return code;\n}\n"],"names":["codeFrameColumns","rawLines","loc","opts","_codeFrameColumns","highlight","code"],"mappings":";;AAQO,SAASA,gBAAgBA,CAC9BC,QAAgB,EAChBC,GAAiB,EACjBC,IAAa,GAAG,EAAE,EACV;AACR,EAAA,OAAOC,iBAAiB,CAACH,QAAQ,EAAEC,GAAG,EAAEC,IAAI,CAAC;AAC/C;AAEO,SAASE,SAASA,CAACC,IAAY,EAAE;AACtC,EAAA,OAAOA,IAAI;AACb;;;;"} |
@@ -1,1 +0,1 @@ | ||
| {"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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"} | ||
| {"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 // @ts-expect-error default value\n column: 0,\n // @ts-expect-error default value\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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"} |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":["../src/defs.ts","../src/highlight.ts","../src/index.ts"],"sourcesContent":["import { styleText } from \"node:util\";\n\nexport function isColorSupported() {\n return styleText(\"red\", \"-\") !== \"-\";\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\";\ntype Formatter = (input: string) => string;\n\nexport type Defs = Record<InternalTokenType | UITokens | \"reset\", Formatter>;\n\nfunction createFormatter(format: Parameters<typeof styleText>[0]): Formatter {\n return (input: string) =>\n styleText(format, String(input ?? \"\"), { validateStream: false });\n}\n\n/**\n * Styles for token types.\n */\nexport const defs = {\n keyword: createFormatter(\"cyan\"),\n capitalized: createFormatter(\"yellow\"),\n jsxIdentifier: createFormatter(\"yellow\"),\n punctuator: createFormatter(\"yellow\"),\n number: createFormatter(\"magenta\"),\n string: createFormatter(\"green\"),\n regex: createFormatter(\"magenta\"),\n comment: createFormatter(\"gray\"),\n invalid: createFormatter([\"white\", \"bgRed\", \"bold\"]),\n\n gutter: createFormatter(\"gray\"),\n marker: createFormatter([\"red\", \"bold\"]),\n message: createFormatter([\"red\", \"bold\"]),\n\n reset: createFormatter(\"reset\"),\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 { defs, 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 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 {\n _codeFrameColumns,\n type NodeLocation,\n type Options,\n} from \"./common.ts\";\nimport { defs, isColorSupported } from \"./defs.ts\";\nimport { highlight } from \"./highlight.ts\";\n\nexport { highlight };\n\nexport type { Options };\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\n return _codeFrameColumns(\n rawLines,\n loc,\n opts,\n shouldHighlight\n ? {\n defs,\n highlight,\n }\n : undefined,\n );\n}\n"],"names":["isColorSupported","styleText","createFormatter","format","input","String","validateStream","defs","keyword","capitalized","jsxIdentifier","punctuator","number","string","regex","comment","invalid","gutter","marker","message","reset","sometimesKeywords","Set","NEWLINE","BRACKET","getTokenType","token","type","tokenValue","value","isKeyword","isStrictReservedWord","has","firstChar","charCodeAt","fromCodePoint","codePointAt","toLowerCase","test","tokenize","text","jsTokens","jsx","slice","highlight","highlighted","split","map","str","join","codeFrameColumns","rawLines","loc","opts","shouldHighlight","forceColor","highlightCode","_codeFrameColumns","undefined"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sources":["../src/defs.ts","../src/highlight.ts","../src/index.ts"],"sourcesContent":["import { styleText } from \"node:util\";\n\nexport function isColorSupported() {\n return styleText(\"red\", \"-\") !== \"-\";\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\";\ntype Formatter = (input: string) => string;\n\nexport type Defs = Record<InternalTokenType | UITokens | \"reset\", Formatter>;\n\nfunction createFormatter(format: Parameters<typeof styleText>[0]): Formatter {\n return (input: string) =>\n styleText(format, String(input ?? \"\"), { validateStream: false });\n}\n\n/**\n * Styles for token types.\n */\nexport const defs = {\n keyword: createFormatter(\"cyan\"),\n capitalized: createFormatter(\"yellow\"),\n jsxIdentifier: createFormatter(\"yellow\"),\n punctuator: createFormatter(\"yellow\"),\n number: createFormatter(\"magenta\"),\n string: createFormatter(\"green\"),\n regex: createFormatter(\"magenta\"),\n comment: createFormatter(\"gray\"),\n invalid: createFormatter([\"white\", \"bgRed\", \"bold\"]),\n\n gutter: createFormatter(\"gray\"),\n marker: createFormatter([\"red\", \"bold\"]),\n message: createFormatter([\"red\", \"bold\"]),\n\n reset: createFormatter(\"reset\"),\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 { defs, 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 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 {\n _codeFrameColumns,\n type NodeLocation,\n type Options,\n} from \"./common.ts\";\nimport { defs, isColorSupported } from \"./defs.ts\";\nimport { highlight } from \"./highlight.ts\";\n\nexport { highlight };\n\nexport type { Options };\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\n return _codeFrameColumns(\n rawLines,\n loc,\n opts,\n shouldHighlight\n ? {\n defs,\n highlight,\n }\n : undefined,\n );\n}\n"],"names":["isColorSupported","styleText","createFormatter","format","input","String","validateStream","defs","keyword","capitalized","jsxIdentifier","punctuator","number","string","regex","comment","invalid","gutter","marker","message","reset","sometimesKeywords","Set","NEWLINE","BRACKET","getTokenType","token","type","tokenValue","value","isKeyword","isStrictReservedWord","has","firstChar","charCodeAt","fromCodePoint","codePointAt","toLowerCase","test","tokenize","text","jsTokens","jsx","slice","highlight","highlighted","split","map","str","join","codeFrameColumns","rawLines","loc","opts","shouldHighlight","forceColor","highlightCode","_codeFrameColumns","undefined"],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@babel/code-frame", | ||
| "version": "8.0.0-rc.2", | ||
| "version": "8.0.0-rc.3", | ||
| "description": "Generate errors that contain a code frame that point to source locations.", | ||
@@ -20,3 +20,3 @@ "author": "The Babel Team (https://babel.dev/team)", | ||
| "dependencies": { | ||
| "@babel/helper-validator-identifier": "^8.0.0-rc.2", | ||
| "@babel/helper-validator-identifier": "^8.0.0-rc.3", | ||
| "js-tokens": "^10.0.0" | ||
@@ -23,0 +23,0 @@ }, |
34376
-1.49%