Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

remark-lint-no-heading-indent

Package Overview
Dependencies
Maintainers
3
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

remark-lint-no-heading-indent - npm Package Compare versions

Comparing version 4.1.2 to 5.0.0

index.d.ts.map

14

index.d.ts

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

export default remarkLintNoHeadingIndent
export type Root = import('mdast').Root
declare const remarkLintNoHeadingIndent: import('unified').Plugin<
void[] | [unknown],
import('mdast').Root,
import('mdast').Root
>
export default remarkLintNoHeadingIndent;
export type Root = import('mdast').Root;
declare const remarkLintNoHeadingIndent: {
(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 headings are indented.
*
* ## What is this?
*
* This package checks the spaces before headings.
*
* ## When should I use this?
*
* You can use this package to check that headings are not indented.
* You can use this rule to check markdown code style.
*
* ## API
*
* ### `unified().use(remarkLintNoHeadingIndent)`
*
* Warn when headings are indented.
*
* ###### Parameters
*
* There are no options.
*
* ###### Returns
*
* Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
* ## Recommendation

@@ -17,56 +33,59 @@ *

* ```markdown
* # One
* ## Two
* ### Three
* #### Four
* # Mercury
* ## Venus
* ### Earth
* #### Mars
* ```
*
* …such style is uncommon, a bit hard to maintain, and it’s impossible to add a
* heading with a rank of 5 as it would form indented code instead.
* Hence, it’s recommended to not indent headings and to turn this rule on.
* …such style is uncommon,
* a bit hard to maintain,
* and it’s impossible to add a heading with a rank of 5 as it would form
* indented code instead.
* So it’s recommended to not indent headings and to turn this rule on.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats all headings without indent.
* [`remark-stringify`][github-remark-stringify] formats headings without indent.
*
* [api-remark-lint-no-heading-indent]: #unifieduseremarklintnoheadingindent
* [github-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
* [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module no-heading-indent
* @summary
* remark-lint rule to warn when headings are indented.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
*
* @example
* {"name": "ok.md"}
*
* #·Hello world
* #␠Mercury
*
* Foo
* Venus
* -----
*
* #·Hello world·#
* #␠Earth␠#
*
* Bar
* =====
* Mars
* ====
*
* @example
* {"name": "not-ok.md", "label": "input"}
* {"label": "input", "name": "not-ok.md"}
*
* ···# Hello world
* ␠␠␠# Mercury
*
* ·Foo
* -----
* ␠Venus
* ------
*
* ·# Hello world #
* ␠# Earth #
*
* ···Bar
* =====
*
* ␠␠␠Mars
* ======
* @example
* {"name": "not-ok.md", "label": "output"}
* {"label": "output", "name": "not-ok.md"}
*
* 1:4: Remove 3 spaces before this heading
* 3:2: Remove 1 space before this heading
* 6:2: Remove 1 space before this heading
* 8:4: Remove 3 spaces before this heading
* 1:4: Unexpected `3` spaces before heading, expected `0` spaces, remove `3` spaces
* 3:2: Unexpected `1` space before heading, expected `0` spaces, remove `1` space
* 6:2: Unexpected `1` space before heading, expected `0` spaces, remove `1` space
* 8:4: Unexpected `3` spaces before heading, expected `0` spaces, remove `3` spaces
*/

@@ -78,7 +97,7 @@

import {phrasing} from 'mdast-util-phrasing'
import pluralize from 'pluralize'
import {lintRule} from 'unified-lint-rule'
import plural from 'pluralize'
import {visit} from 'unist-util-visit'
import {pointStart} from 'unist-util-position'
import {generated} from 'unist-util-generated'
import {SKIP, visitParents} from 'unist-util-visit-parents'

@@ -90,21 +109,43 @@ const remarkLintNoHeadingIndent = lintRule(

},
/** @type {import('unified-lint-rule').Rule<Root, void>} */
(tree, file) => {
visit(tree, 'heading', (node, _, 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
}
const parent = parents[parents.length - 1]
const start = pointStart(node)
// Note: it’s rather complex to detect what the expected indent is in block
// quotes and lists, so let’s only do directly in root for now.
if (generated(node) || (parent && parent.type !== 'root')) {
if (
!start ||
!parent ||
node.type !== 'heading' ||
parent.type !== 'root'
) {
return
}
const diff = pointStart(node).column - 1
const actual = start.column - 1
if (diff) {
if (actual) {
file.message(
'Remove ' +
diff +
' ' +
plural('space', diff) +
' before this heading',
pointStart(node)
'Unexpected `' +
actual +
'` ' +
pluralize('space', actual) +
' before heading, expected `0` spaces, remove' +
' `' +
actual +
'` ' +
pluralize('space', actual),
{ancestors: [...parents, node], place: start}
)

@@ -111,0 +152,0 @@ }

{
"name": "remark-lint-no-heading-indent",
"version": "4.1.2",
"version": "5.0.0",
"description": "remark-lint rule to warn when headings are indented",
"license": "MIT",
"keywords": [
"heading",
"indent",
"lint",
"remark",
"lint",
"rule",
"remark-lint",
"remark-lint-rule",
"heading",
"indent"
"rule"
],
"repository": {
"type": "git",
"url": "https://github.com/remarkjs/remark-lint",
"directory": "packages/remark-lint-no-heading-indent"
},
"repository": "https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-heading-indent",
"bugs": "https://github.com/remarkjs/remark-lint/issues",

@@ -26,29 +23,34 @@ "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",
"@types/mdast": "^4.0.0",
"mdast-util-phrasing": "^4.0.0",
"pluralize": "^8.0.0",
"unified": "^10.0.0",
"unified-lint-rule": "^2.0.0",
"unist-util-generated": "^2.0.0",
"unist-util-position": "^4.0.0",
"unist-util-visit": "^4.0.0"
"unified-lint-rule": "^3.0.0",
"unist-util-position": "^5.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",
"unicorn/prefer-at": "off"
}
}
}

@@ -5,46 +5,45 @@ <!--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 headings are indented.
[`remark-lint`][github-remark-lint] rule to warn when headings are indented.
## 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(remarkLintNoHeadingIndent[, config])`](#unifieduseremarklintnoheadingindent-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [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(remarkLintNoHeadingIndent)`](#unifieduseremarklintnoheadingindent)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [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 the spaces before headings.
## When should I use this?
You can use this package to check that headings are not indented.
You can use this rule to check markdown code style.
## Presets
This rule is not included in a preset maintained here.
This plugin is not included in presets maintained here.
## Install
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]:

@@ -55,13 +54,13 @@ ```sh

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

@@ -75,18 +74,20 @@ ```

```js
import remarkLint from 'remark-lint'
import remarkLintNoHeadingIndent from 'remark-lint-no-heading-indent'
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 remarkLintNoHeadingIndent from 'remark-lint-no-heading-indent'
main()
const file = await read('example.md')
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoHeadingIndent)
.process(await read('example.md'))
await unified()
.use(remarkParse)
.use(remarkLint)
.use(remarkLintNoHeadingIndent)
.use(remarkStringify)
.process(file)
console.error(reporter(file))
}
console.error(reporter(file))
```

@@ -97,3 +98,3 @@

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

@@ -119,11 +120,18 @@

This package exports no identifiers.
The default export is `remarkLintNoHeadingIndent`.
It exports no additional [TypeScript][typescript] types.
The default export is
[`remarkLintNoHeadingIndent`][api-remark-lint-no-heading-indent].
### `unified().use(remarkLintNoHeadingIndent[, config])`
### `unified().use(remarkLintNoHeadingIndent)`
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 headings are indented.
###### Parameters
There are no options.
###### Returns
Transform ([`Transformer` from `unified`][github-unified-transformer]).
## Recommendation

@@ -136,16 +144,17 @@

```markdown
# One
## Two
### Three
#### Four
# Mercury
## Venus
### Earth
#### Mars
```
…such style is uncommon, a bit hard to maintain, and it’s impossible to add a
heading with a rank of 5 as it would form indented code instead.
Hence, it’s recommended to not indent headings and to turn this rule on.
…such style is uncommon,
a bit hard to maintain,
and it’s impossible to add a heading with a rank of 5 as it would form
indented code instead.
So it’s recommended to not indent headings and to turn this rule on.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats all headings without indent.
[`remark-stringify`][github-remark-stringify] formats headings without indent.

@@ -158,14 +167,12 @@ ## Examples

> 👉 **Note**: `·` represents a space.
```markdown
#·Hello world
#␠Mercury
Foo
Venus
-----
#·Hello world·#
#␠Earth␠#
Bar
=====
Mars
====
```

@@ -181,14 +188,12 @@

> 👉 **Note**: `·` represents a space.
```markdown
···# Hello world
␠␠␠# Mercury
·Foo
-----
␠Venus
------
·# Hello world #
␠# Earth #
···Bar
=====
␠␠␠Mars
======
```

@@ -199,6 +204,6 @@

```text
1:4: Remove 3 spaces before this heading
3:2: Remove 1 space before this heading
6:2: Remove 1 space before this heading
8:4: Remove 3 spaces before this heading
1:4: Unexpected `3` spaces before heading, expected `0` spaces, remove `3` spaces
3:2: Unexpected `1` space before heading, expected `0` spaces, remove `1` space
6:2: Unexpected `1` space before heading, expected `0` spaces, remove `1` space
8:4: Unexpected `3` spaces before heading, expected `0` spaces, remove `3` spaces
```

@@ -208,14 +213,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-heading-indent@5`,
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

@@ -226,52 +235,56 @@ 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-heading-indent]: #unifieduseremarklintnoheadingindent
[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-heading-indent.svg
[badge-chat-image]: https://img.shields.io/badge/chat-discussions-success.svg
[downloads]: https://www.npmjs.com/package/remark-lint-no-heading-indent
[badge-chat-url]: https://github.com/remarkjs/remark/discussions
[size-badge]: https://img.shields.io/bundlephobia/minzip/remark-lint-no-heading-indent.svg
[badge-coverage-image]: https://img.shields.io/codecov/c/github/remarkjs/remark-lint.svg
[size]: https://bundlephobia.com/result?p=remark-lint-no-heading-indent
[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-heading-indent.svg
[backers-badge]: https://opencollective.com/unified/backers/badge.svg
[badge-downloads-url]: https://www.npmjs.com/package/remark-lint-no-heading-indent
[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-heading-indent
[remark]: https://github.com/remarkjs/remark
[badge-size-url]: https://bundlejs.com/?q=remark-lint-no-heading-indent
[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-remark-stringify]: https://github.com/remarkjs/remark/tree/main/packages/remark-stringify
[author]: https://wooorm.com
[github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
[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