Socket
Socket
Sign inDemoInstall

remark-lint-no-emphasis-as-heading

Package Overview
Dependencies
Maintainers
3
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

remark-lint-no-emphasis-as-heading - npm Package Compare versions

Comparing version 3.1.2 to 4.0.0

index.d.ts.map

15

index.d.ts

@@ -1,7 +0,8 @@

export default remarkLintNoEmphasisAsHeading
export type Root = import('mdast').Root
declare const remarkLintNoEmphasisAsHeading: import('unified').Plugin<
void[] | [unknown],
import('mdast').Root,
import('mdast').Root
>
export default remarkLintNoEmphasisAsHeading;
export type Root = import('mdast').Root;
export type RootContent = import('mdast').RootContent;
declare const remarkLintNoEmphasisAsHeading: {
(config?: unknown): ((tree: import("mdast").Root, file: import("vfile").VFile, next: import("unified").TransformCallback<import("mdast").Root>) => undefined) | undefined;
readonly name: string;
};
//# sourceMappingURL=index.d.ts.map
/**
* remark-lint rule to warn when emphasis or strong are used instead of a
* heading.
*
* ## What is this?
*
* This package checks emphasis and strong.
*
* ## When should I use this?
*
* You can use this package to check that headings are used to introduce
* paragraphs instead of “fake” headings made with emphasis or strong.
* You can use this package to check that headings are used.
*
* ## API
*
* ### `unified().use(remarkLintNoEmphasisAsHeading)`
*
* Warn when emphasis or strong are used instead of a heading.
*
* ###### Parameters
*
* There are no options.
*
* ###### Returns
*
* Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
* ## Recommendation
*
* While not always the case, typically emphasis or strong around the text
* in a paragraph is used as a “faux” heading.
* While not always the case,
* typically emphasis or strong around the text in a paragraph is used as a
* “faux” heading.
* It’s recommended to use actual headings instead.
*
* [api-remark-lint-no-emphasis-as-heading]: #unifieduseremarklintnoemphasisasheading
* [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module no-emphasis-as-heading
* @summary
* remark-lint rule to warn when emphasis or strong are used to introduce
* a paragraph.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
*
* @example
* {"name": "ok.md"}
*
* # Foo
* # Mercury
*
* Bar.
* **Mercury** is the first planet from the Sun and the smallest in the Solar
* System.
*
* @example
* {"name": "not-ok.md", "label": "input"}
* {"label": "input", "name": "not-ok.md"}
*
* *Foo*
* **Mercury**
*
* Bar.
* **Mercury** is the first planet from the Sun and the smallest in the Solar
* System.
*
* __Qux__
* *Venus*
*
* Quux.
*
* **Venus** is the second planet from the Sun.
* @example
* {"name": "not-ok.md", "label": "output"}
* {"label": "output", "name": "not-ok.md"}
*
* 1:1-1:6: Don’t use emphasis to introduce a section, use a heading
* 5:1-5:8: Don’t use emphasis to introduce a section, use a heading
* 1:1-1:12: Unexpected strong introducing a section, expected a heading instead
* 6:1-6:8: Unexpected emphasis introducing a section, expected a heading instead
*/

@@ -51,7 +70,8 @@

* @typedef {import('mdast').Root} Root
* @typedef {import('mdast').RootContent} RootContent
*/
import {phrasing} from 'mdast-util-phrasing'
import {lintRule} from 'unified-lint-rule'
import {visit} from 'unist-util-visit'
import {generated} from 'unist-util-generated'
import {SKIP, visitParents} from 'unist-util-visit-parents'

@@ -63,28 +83,47 @@ const remarkLintNoEmphasisAsHeading = lintRule(

},
/** @type {import('unified-lint-rule').Rule<Root, void>} */
(tree, file) => {
visit(tree, 'paragraph', (node, index, parent) => {
/**
* @param {Root} tree
* Tree.
* @returns {undefined}
* Nothing.
*/
function (tree, file) {
visitParents(tree, function (node, parents) {
// Do not walk into phrasing.
if (phrasing(node)) {
return SKIP
}
if (node.type !== 'paragraph') return
const parent = parents.at(-1)
if (!node.position || !parent) {
return
}
// Next sibling needs to be a paragraph.
const siblings = /** @type {Array<RootContent>} */ (parent.children)
const next = parent.children[siblings.indexOf(node) + 1]
if (!next || next.type !== 'paragraph') {
return
}
// Only child is emphasis/strong.
const head = node.children[0]
if (
parent &&
typeof index === 'number' &&
!generated(node) &&
node.children.length === 1 &&
(head.type === 'emphasis' || head.type === 'strong')
node.children.length !== 1 ||
(head.type !== 'emphasis' && head.type !== 'strong')
) {
const previous = parent.children[index - 1]
const next = parent.children[index + 1]
return
}
if (
(!previous || previous.type !== 'heading') &&
next &&
next.type === 'paragraph'
) {
file.message(
'Don’t use emphasis to introduce a section, use a heading',
node
)
}
}
file.message(
'Unexpected ' +
head.type +
' introducing a section, expected a heading instead',
{ancestors: [...parents, node, head], place: node.position}
)
})

@@ -91,0 +130,0 @@ }

{
"name": "remark-lint-no-emphasis-as-heading",
"version": "3.1.2",
"version": "4.0.0",
"description": "remark-lint rule to warn when emphasis or importance is used instead of a heading",
"license": "MIT",
"keywords": [
"emphasis",
"heading",
"lint",
"remark",
"lint",
"rule",
"remark-lint",
"remark-lint-rule",
"emphasis",
"heading"
"rule"
],
"repository": {
"type": "git",
"url": "https://github.com/remarkjs/remark-lint",
"directory": "packages/remark-lint-no-emphasis-as-heading"
},
"repository": "https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-emphasis-as-heading",
"bugs": "https://github.com/remarkjs/remark-lint/issues",

@@ -26,27 +23,31 @@ "funding": {

"contributors": [
"Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
"Titus Wormer <tituswormer@gmail.com>"
],
"sideEffects": false,
"type": "module",
"main": "index.js",
"types": "index.d.ts",
"exports": "./index.js",
"files": [
"index.d.ts",
"index.d.ts.map",
"index.js"
],
"dependencies": {
"@types/mdast": "^3.0.0",
"unified": "^10.0.0",
"unified-lint-rule": "^2.0.0",
"unist-util-generated": "^2.0.0",
"unist-util-visit": "^4.0.0"
"@types/mdast": "^4.0.0",
"mdast-util-phrasing": "^4.0.0",
"unified-lint-rule": "^3.0.0",
"unist-util-visit-parents": "^6.0.0"
},
"scripts": {},
"xo": false,
"typeCoverage": {
"atLeast": 100,
"detail": true,
"strict": true,
"ignoreCatch": true
"ignoreCatch": true,
"strict": true
},
"xo": {
"prettier": true,
"rules": {
"capitalized-comments": "off"
}
}
}

@@ -5,44 +5,41 @@ <!--This file is generated-->

[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Size][size-badge]][size]
[![Sponsors][sponsors-badge]][collective]
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
[![Build][badge-build-image]][badge-build-url]
[![Coverage][badge-coverage-image]][badge-coverage-url]
[![Downloads][badge-downloads-image]][badge-downloads-url]
[![Size][badge-size-image]][badge-size-url]
[![Sponsors][badge-funding-sponsors-image]][badge-funding-url]
[![Backers][badge-funding-backers-image]][badge-funding-url]
[![Chat][badge-chat-image]][badge-chat-url]
[`remark-lint`][mono] rule to warn when emphasis or strong are used to introduce
a paragraph.
[`remark-lint`][github-remark-lint] rule to warn when emphasis or strong are used instead of a
heading.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoEmphasisAsHeading[, config])`](#unifieduseremarklintnoemphasisasheading-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoEmphasisAsHeading)`](#unifieduseremarklintnoemphasisasheading)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
This package checks emphasis and strong.
## When should I use this?
You can use this package to check that headings are used to introduce
paragraphs instead of “fake” headings made with emphasis or strong.
You can use this package to check that headings are used.
## Presets
This rule is included in the following presets:
This plugin is included in the following presets:
| Preset | Setting |
| Preset | Options |
| - | - |

@@ -53,4 +50,5 @@ | [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |

This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
This package is [ESM only][github-gist-esm].
In Node.js (version 16+),
install with [npm][npm-install]:

@@ -61,13 +59,13 @@ ```sh

In Deno with [`esm.sh`][esmsh]:
In Deno with [`esm.sh`][esm-sh]:
```js
import remarkLintNoEmphasisAsHeading from 'https://esm.sh/remark-lint-no-emphasis-as-heading@3'
import remarkLintNoEmphasisAsHeading from 'https://esm.sh/remark-lint-no-emphasis-as-heading@4'
```
In browsers with [`esm.sh`][esmsh]:
In browsers with [`esm.sh`][esm-sh]:
```html
<script type="module">
import remarkLintNoEmphasisAsHeading from 'https://esm.sh/remark-lint-no-emphasis-as-heading@3?bundle'
import remarkLintNoEmphasisAsHeading from 'https://esm.sh/remark-lint-no-emphasis-as-heading@4?bundle'
</script>

@@ -81,18 +79,20 @@ ```

```js
import remarkLint from 'remark-lint'
import remarkLintNoEmphasisAsHeading from 'remark-lint-no-emphasis-as-heading'
import remarkParse from 'remark-parse'
import remarkStringify from 'remark-stringify'
import {read} from 'to-vfile'
import {unified} from 'unified'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoEmphasisAsHeading from 'remark-lint-no-emphasis-as-heading'
main()
const file = await read('example.md')
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoEmphasisAsHeading)
.process(await read('example.md'))
await unified()
.use(remarkParse)
.use(remarkLint)
.use(remarkLintNoEmphasisAsHeading)
.use(remarkStringify)
.process(file)
console.error(reporter(file))
}
console.error(reporter(file))
```

@@ -103,3 +103,3 @@

```sh
remark --use remark-lint --use remark-lint-no-emphasis-as-heading example.md
remark --frail --use remark-lint --use remark-lint-no-emphasis-as-heading .
```

@@ -125,15 +125,23 @@

This package exports no identifiers.
The default export is `remarkLintNoEmphasisAsHeading`.
It exports no additional [TypeScript][typescript] types.
The default export is
[`remarkLintNoEmphasisAsHeading`][api-remark-lint-no-emphasis-as-heading].
### `unified().use(remarkLintNoEmphasisAsHeading[, config])`
### `unified().use(remarkLintNoEmphasisAsHeading)`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
Warn when emphasis or strong are used instead of a heading.
###### Parameters
There are no options.
###### Returns
Transform ([`Transformer` from `unified`][github-unified-transformer]).
## Recommendation
While not always the case, typically emphasis or strong around the text
in a paragraph is used as a “faux” heading.
While not always the case,
typically emphasis or strong around the text in a paragraph is used as a
“faux” heading.
It’s recommended to use actual headings instead.

@@ -148,5 +156,6 @@

```markdown
# Foo
# Mercury
Bar.
**Mercury** is the first planet from the Sun and the smallest in the Solar
System.
```

@@ -163,9 +172,10 @@

```markdown
*Foo*
**Mercury**
Bar.
**Mercury** is the first planet from the Sun and the smallest in the Solar
System.
__Qux__
*Venus*
Quux.
**Venus** is the second planet from the Sun.
```

@@ -176,4 +186,4 @@

```text
1:1-1:6: Don’t use emphasis to introduce a section, use a heading
5:1-5:8: Don’t use emphasis to introduce a section, use a heading
1:1-1:12: Unexpected strong introducing a section, expected a heading instead
6:1-6:8: Unexpected emphasis introducing a section, expected a heading instead
```

@@ -183,14 +193,18 @@

Projects maintained by the unified collective are compatible with all maintained
Projects maintained by the unified collective are compatible with maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
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-lint-no-emphasis-as-heading@4`,
compatible with Node.js 16.
## Contribute
See [`contributing.md`][contributing] in [`remarkjs/.github`][health] for ways
See [`contributing.md`][github-dotfiles-contributing] in [`remarkjs/.github`][github-dotfiles-health] for ways
to get started.
See [`support.md`][support] for ways to get help.
See [`support.md`][github-dotfiles-support] for ways to get help.
This project has a [code of conduct][coc].
This project has a [code of conduct][github-dotfiles-coc].
By interacting with this repository, organization, or community you agree to

@@ -201,52 +215,54 @@ abide by its terms.

[MIT][license] © [Titus Wormer][author]
[MIT][file-license] © [Titus Wormer][author]
[build-badge]: https://github.com/remarkjs/remark-lint/workflows/main/badge.svg
[api-remark-lint-no-emphasis-as-heading]: #unifieduseremarklintnoemphasisasheading
[build]: https://github.com/remarkjs/remark-lint/actions
[author]: https://wooorm.com
[coverage-badge]: https://img.shields.io/codecov/c/github/remarkjs/remark-lint.svg
[badge-build-image]: https://github.com/remarkjs/remark-lint/workflows/main/badge.svg
[coverage]: https://codecov.io/github/remarkjs/remark-lint
[badge-build-url]: https://github.com/remarkjs/remark-lint/actions
[downloads-badge]: https://img.shields.io/npm/dm/remark-lint-no-emphasis-as-heading.svg
[badge-chat-image]: https://img.shields.io/badge/chat-discussions-success.svg
[downloads]: https://www.npmjs.com/package/remark-lint-no-emphasis-as-heading
[badge-chat-url]: https://github.com/remarkjs/remark/discussions
[size-badge]: https://img.shields.io/bundlephobia/minzip/remark-lint-no-emphasis-as-heading.svg
[badge-coverage-image]: https://img.shields.io/codecov/c/github/remarkjs/remark-lint.svg
[size]: https://bundlephobia.com/result?p=remark-lint-no-emphasis-as-heading
[badge-coverage-url]: https://codecov.io/github/remarkjs/remark-lint
[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
[badge-downloads-image]: https://img.shields.io/npm/dm/remark-lint-no-emphasis-as-heading.svg
[backers-badge]: https://opencollective.com/unified/backers/badge.svg
[badge-downloads-url]: https://www.npmjs.com/package/remark-lint-no-emphasis-as-heading
[collective]: https://opencollective.com/unified
[badge-funding-backers-image]: https://opencollective.com/unified/backers/badge.svg
[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg
[badge-funding-sponsors-image]: https://opencollective.com/unified/sponsors/badge.svg
[chat]: https://github.com/remarkjs/remark/discussions
[badge-funding-url]: https://opencollective.com/unified
[unified]: https://github.com/unifiedjs/unified
[badge-size-image]: https://img.shields.io/bundlejs/size/remark-lint-no-emphasis-as-heading
[remark]: https://github.com/remarkjs/remark
[badge-size-url]: https://bundlejs.com/?q=remark-lint-no-emphasis-as-heading
[mono]: https://github.com/remarkjs/remark-lint
[esm-sh]: https://esm.sh
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[file-license]: https://github.com/remarkjs/remark-lint/blob/main/license
[esmsh]: https://esm.sh
[github-dotfiles-coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[npm]: https://docs.npmjs.com/cli/install
[github-dotfiles-contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[health]: https://github.com/remarkjs/.github
[github-dotfiles-health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[github-dotfiles-support]: https://github.com/remarkjs/.github/blob/main/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[github-gist-esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[github-remark-lint]: https://github.com/remarkjs/remark-lint
[license]: https://github.com/remarkjs/remark-lint/blob/main/license
[github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
[author]: https://wooorm.com
[npm-install]: https://docs.npmjs.com/cli/install
[typescript]: https://www.typescriptlang.org
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc