Skip to content

Commit

Permalink
convert @babel/code-frame to typescript (#12433)
Browse files Browse the repository at this point in the history
  • Loading branch information
zxbodya committed Dec 10, 2020
1 parent 1290d21 commit a46cd64
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 9 deletions.
57 changes: 57 additions & 0 deletions lib/babel-packages.js.flow
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,60 @@ declare module "@babel/helper-annotate-as-pure" {
}
): void;
}

declare module "@babel/code-frame" {
declare type Location = {
column: number,
line: number,
};
declare type NodeLocation = {
end?: Location,
start: Location,
};
declare export interface Options {
/**
* Syntax highlight the code as JavaScript for terminals. default: false
*/
highlightCode?: boolean;

/**
* The number of lines to show above the error. default: 2
*/
linesAbove?: number;

/**
* The number of lines to show below the error. default: 3
*/
linesBelow?: number;

/**
* Forcibly syntax highlight the code as JavaScript (for non-terminals);
* overrides highlightCode.
* default: false
*/
forceColor?: boolean;

/**
* Pass in a string to be displayed inline (if possible) next to the
* highlighted location in the code. If it can't be positioned inline,
* it will be placed above the code frame.
* default: nothing
*/
message?: string;
}
declare export function codeFrameColumns(
rawLines: string,
loc: NodeLocation,
opts?: Options
): string;

/**
* Create a code frame, adding line numbers, code highlighting, and pointing to a given position.
*/
declare export default function codeFrame(
rawLines: string,
lineNumber: number,
colNumber?: number | null,
opts?: Options
): string;
}
1 change: 1 addition & 0 deletions packages/babel-code-frame/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"@babel/highlight": "workspace:^7.10.4"
},
"devDependencies": {
"@types/chalk": "^2.0.0",
"chalk": "^2.0.0",
"strip-ansi": "^4.0.0"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,37 @@ import highlight, { shouldHighlight, getChalk } from "@babel/highlight";
let deprecationWarningShown = false;

type Location = {
column: number,
line: number,
column: number;
line: number;
};

type NodeLocation = {
end: Location,
start: Location,
end?: Location;
start: Location;
};

export interface Options {
/** Syntax highlight the code as JavaScript for terminals. default: false */
highlightCode?: boolean;
/** The number of lines to show above the error. default: 2 */
linesAbove?: number;
/** The number of lines to show below the error. default: 3 */
linesBelow?: number;
/**
* Forcibly syntax highlight the code as JavaScript (for non-terminals);
* overrides highlightCode.
* default: false
*/
forceColor?: boolean;
/**
* Pass in a string to be displayed inline (if possible) next to the
* highlighted location in the code. If it can't be positioned inline,
* it will be placed above the code frame.
* default: nothing
*/
message?: string;
}

/**
* Chalk styles for code frame token types.
*/
Expand All @@ -36,8 +58,12 @@ const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
function getMarkerLines(
loc: NodeLocation,
source: Array<string>,
opts: Object,
): { start: number, end: number, markerLines: Object } {
opts: Options,
): {
start: number;
end: number;
markerLines: any;
} {
const startLoc: Location = {
column: 0,
line: -1,
Expand Down Expand Up @@ -103,7 +129,7 @@ function getMarkerLines(
export function codeFrameColumns(
rawLines: string,
loc: NodeLocation,
opts: Object = {},
opts: Options = {},
): string {
const highlighted =
(opts.highlightCode || opts.forceColor) && shouldHighlight(opts);
Expand Down Expand Up @@ -178,8 +204,8 @@ export function codeFrameColumns(
export default function (
rawLines: string,
lineNumber: number,
colNumber: ?number,
opts: Object = {},
colNumber?: number | null,
opts: Options = {},
): string {
if (!deprecationWarningShown) {
deprecationWarningShown = true;
Expand Down

0 comments on commit a46cd64

Please sign in to comment.