Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
babel-code-frame
Advanced tools
Package description
The babel-code-frame package is a utility that allows developers to generate a string representing a code frame that highlights a specific portion of the code, typically used to point out syntax errors or other code issues. It can be used to enhance error messages with a visual context of where the issue is located in the source code.
Highlighting code
This feature allows you to highlight a specific part of the code. In the provided code sample, it highlights the word 'Foo' in the given rawLines string.
const { codeFrameColumns } = require('babel-code-frame');
const rawLines = `class Foo {\n constructor()\n}`;
const location = { start: { line: 1, column: 16 }, end: { line: 1, column: 19 } };
const result = codeFrameColumns(rawLines, location, { highlightCode: true });
console.log(result);
Chalk is a popular npm package used for styling terminal strings. While it doesn't generate code frames, it can be used in conjunction with other tools to highlight specific parts of the text in the terminal, similar to how babel-code-frame highlights code.
ansi-styles is a package that provides ANSI escape codes for styling strings in the terminal. Like chalk, it can be used to style and highlight text but does not provide code frame generation.
Cardinal is a syntax highlighter for JavaScript code that can be used in the terminal. It provides functionality similar to babel-code-frame's highlighting feature but is focused on syntax highlighting rather than pinpointing specific code locations.
Readme
Generate errors that contain a code frame that point to source locations.
npm install --save-dev babel-code-frame
import { codeFrameColumns } from 'babel-code-frame';
const rawLines = `class Foo {
constructor()
}`;
const location = { start: { line: 2, column: 16 } };
const result = codeFrameColumns(rawLines, location, { /* options */ });
console.log(result);
1 | class Foo {
> 2 | constructor()
| ^
3 | }
If the column number is not known, you may omit it.
You can also pass an end
hash in location
.
import { codeFrameColumns } from 'babel-code-frame';
const rawLines = `class Foo {
constructor() {
console.log("hello");
}
}`;
const location = { start: { line: 2, column: 17 }, end: { line: 4, column: 3 } };
const result = codeFrameColumns(rawLines, location, { /* options */ });
console.log(result);
1 | class Foo {
> 2 | constructor() {
| ^
> 3 | console.log("hello");
| ^^^^^^^^^^^^^^^^^^^^^^^^^
> 4 | }
| ^^^
5 | };
highlightCode
boolean
, defaults to false
.
Toggles syntax highlighting the code as JavaScript for terminals.
linesAbove
number
, defaults to 2
.
Adjust the number of lines to show above the error.
linesBelow
number
, defaults to 3
.
Adjust the number of lines to show below the error.
forceColor
boolean
, defaults to false
.
Enable this to forcibly syntax highlight the code as JavaScript (for non-terminals); overrides highlightCode
.
Prior to version 7, the only API exposed by this module was for a single line and optional column pointer. The old API will now log a deprecation warning.
The new API takes a location
object, similar to what is available in an AST.
This is an example of the deprecated (but still available) API:
import codeFrame from 'babel-code-frame';
const rawLines = `class Foo {
constructor()
}`;
const lineNumber = 2;
const colNumber = 16;
const result = codeFrame(rawLines, lineNumber, colNumber, { /* options */ });
console.log(result);
To get the same highlighting using the new API:
import { codeFrameColumns } from 'babel-code-frame';
const rawLines = `class Foo {
constructor() {
console.log("hello");
}
}`;
const location = { start: { line: 2, column: 16 } };
const result = codeFrameColumns(rawLines, location, { /* options */ });
console.log(result);
FAQs
Generate errors that contain a code frame that point to source locations.
The npm package babel-code-frame receives a total of 4,084,789 weekly downloads. As such, babel-code-frame popularity was classified as popular.
We found that babel-code-frame demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.