Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
remark-breaks
Advanced tools
The remark-breaks package is a plugin for the remark markdown processor that automatically converts hard line breaks in markdown text into HTML `<br>` tags. This can be particularly useful for ensuring that line breaks in markdown are preserved in the rendered HTML output.
Automatic Line Break Conversion
This feature allows you to automatically convert hard line breaks in markdown text into HTML `<br>` tags. In the example, the markdown text 'Hello\nWorld' will be converted to 'Hello<br>World' in the HTML output.
const remark = require('remark');
const breaks = require('remark-breaks');
const markdown = 'Hello\nWorld';
remark()
.use(breaks)
.process(markdown, function (err, file) {
if (err) throw err;
console.log(String(file));
});
The remark-gfm package adds support for GitHub Flavored Markdown (GFM) to remark. It includes features like strikethrough, tables, task lists, and automatic URL linking. While it does not specifically focus on line breaks, it provides a broader set of markdown enhancements compared to remark-breaks.
The remark-html package is used to convert markdown to HTML. It does not specifically handle line breaks but can be used in conjunction with other plugins like remark-breaks to achieve the desired output. It provides a more general solution for converting markdown to HTML.
remark plugin to support hard breaks without needing spaces or escapes
(turns enters into <br>
s).
This package is a unified (remark) plugin to turn soft line endings
(enters) into hard breaks (<br>
s)
This plugin is useful if you want to display user content closer to how it was
authored, because when a user includes a line ending, it’ll show as such.
GitHub does this in a few places (comments, issues, PRs, and releases), but it’s
not semantic according to HTML and not compliant to markdown.
Markdown already has two ways to include hard breaks, namely trailing spaces and
escapes (note that ␠
represents a normal space):
lorem␠␠
ipsum
lorem\
ipsum
Both will turn into <br>
s.
If you control who authors content or can document how markdown works, it’s
recommended to use escapes instead.
This package is ESM only. In Node.js (version 16+), install with npm:
npm install remark-breaks
In Deno with esm.sh
:
import remarkBreaks from 'https://esm.sh/remark-breaks@4'
In browsers with esm.sh
:
<script type="module">
import remarkBreaks from 'https://esm.sh/remark-breaks@4?bundle'
</script>
Say we have the following file example.md
(note: there are no spaces after
a
):
Mars is
the fourth planet
…and a module example.js
:
import rehypeStringify from 'rehype-stringify'
import remarkBreaks from 'remark-breaks'
import remarkParse from 'remark-parse'
import remarkRehype from 'remark-rehype'
import {read} from 'to-vfile'
import {unified} from 'unified'
const file = await unified()
.use(remarkParse)
.use(remarkBreaks)
.use(remarkRehype)
.use(rehypeStringify)
.process(await read('example.md'))
console.log(String(file))
…then running node example.js
yields:
<p>Mars is<br>
the fourth planet</p>
👉 Note: Without
remark-breaks
, you’d get:
<p>Mars is the fourth planet</p>
This package exports no identifiers.
The default export is remarkBreaks
.
unified().use(remarkBreaks)
Support hard breaks without needing spaces or escapes (turns enters into
<br>
s).
There are no parameters.
Transform (Transformer
).
This plugin looks for markdown line endings (\r
, \n
, and \r\n
) preceded
by zero or more spaces and tabs.
This plugin adds mdast Break
nodes to the syntax tree.
These are the same nodes that represent breaks with spaces or escapes.
This package is fully typed with TypeScript. It exports no additional types.
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of
Node.
This means we try to keep the current release line, remark-breaks@^4
,
compatible with Node.js 16.
This plugin works with unified
version 6+ and remark
version 7+.
Use of remark-breaks
does not involve rehype (hast) or user
content so there are no openings for cross-site scripting (XSS)
attacks.
remark-gfm
— support GFM (autolink literals, footnotes, strikethrough, tables,
tasklists)remark-github
— link references to commits, issues, and users, in the same way that
GitHub doesremark-directive
— support directivesremark-frontmatter
— support frontmatter (YAML, TOML, and more)remark-math
— support mathSee contributing.md
in remarkjs/.github
for ways
to get started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.
FAQs
remark plugin to add break support, without needing spaces
The npm package remark-breaks receives a total of 203,603 weekly downloads. As such, remark-breaks popularity was classified as popular.
We found that remark-breaks demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.