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

remark-lint-no-tabs

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-tabs - npm Package Compare versions

Comparing version 3.1.2 to 4.0.0

index.d.ts.map

14

index.d.ts

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

export default remarkLintNoTabs
export type Root = import('mdast').Root
declare const remarkLintNoTabs: import('unified').Plugin<
void[] | [unknown],
import('mdast').Root,
import('mdast').Root
>
export default remarkLintNoTabs;
export type Root = import('mdast').Root;
declare const remarkLintNoTabs: {
(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 tabs are used.
*
* ## What is this?
*
* This package checks for tabs.
*
* ## When should I use this?
*
* You can use this package to check that tabs are not used.
* You can use this package to check tabs.
*
* ## API
*
* ### `unified().use(remarkLintNoTabs)`
*
* Warn when tabs are used.
*
* ###### Parameters
*
* There are no options.
*
* ###### Returns
*
* Transform ([`Transformer` from `unified`][github-unified-transformer]).
*
* ## Recommendation
*
* Regardless of the debate in other languages of whether to use tabs vs.
* spaces, when it comes to markdown, tabs do not work as expected.
* Largely around contains such as block quotes and lists.
* Regardless of the debate in other languages of whether to use tabs versus
* spaces,
* when it comes to markdown,
* tabs do not work as expected.
* Largely around things such as block quotes, lists, and indented code.
*
* Take for example block quotes: `>\ta` gives a paragraph with the text `a`
* in a blockquote, so one might expect that `>\t\ta` results in indented code
* with the text `a` in a block quote.
* in a blockquote,
* so one might expect that `>\t\ta` results in indented code with the text `a`
* in a block quote.
*

@@ -37,7 +57,10 @@ * ```markdown

*
* Because markdown uses a hardcoded tab size of 4, the first tab could be
* represented as 3 spaces (because there’s a `>` before).
* Because markdown uses a hardcoded tab size of 4,
* the first tab could be represented as 3 spaces (because there’s a `>`
* before).
* One of those “spaces” is taken because block quotes allow the `>` to be
* followed by one space, leaving 2 spaces.
* The next tab can be represented as 4 spaces, so together we have 6 spaces.
* followed by one space,
* leaving 2 spaces.
* The next tab can be represented as 4 spaces,
* so together we have 6 spaces.
* The indented code uses 4 spaces, so there are two spaces left, which are

@@ -51,44 +74,26 @@ * shown in the indented code.

*
* [api-remark-lint-no-tabs]: #unifieduseremarklintnotabs
* [github-unified-transformer]: https://github.com/unifiedjs/unified#transformer
*
* @module no-tabs
* @summary
* remark-lint rule to warn when tabs are used.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
*
* @example
* {"name": "ok.md"}
*
* Foo Bar
* ␠␠␠␠mercury()
*
* ····Foo
*
* @example
* {"name": "not-ok.md", "label": "input", "positionless": true}
* {"label": "input", "name": "not-ok.md", "positionless": true}
*
* »Here's one before a code block.
* ␉mercury()
*
* Here's a tab:», and here is another:».
*
* And this is in `inline»code`.
*
* >»This is in a block quote.
*
* *»And…
*
* »1.»in a list.
*
* And this is a tab as the last character.»
*
* Venus␉and Earth.
* @example
* {"name": "not-ok.md", "label": "output"}
* {"label": "output", "name": "not-ok.md"}
*
* 1:1: Use spaces instead of tabs
* 3:14: Use spaces instead of tabs
* 3:37: Use spaces instead of tabs
* 5:23: Use spaces instead of tabs
* 7:2: Use spaces instead of tabs
* 9:2: Use spaces instead of tabs
* 11:1: Use spaces instead of tabs
* 11:4: Use spaces instead of tabs
* 13:41: Use spaces instead of tabs
* 1:1: Unexpected tab (`\t`), expected spaces
* 3:6: Unexpected tab (`\t`), expected spaces
*/

@@ -108,4 +113,9 @@

},
/** @type {import('unified-lint-rule').Rule<Root, void>} */
(_, file) => {
/**
* @param {Root} _
* Tree.
* @returns {undefined}
* Nothing.
*/
function (_, file) {
const value = String(file)

@@ -116,4 +126,6 @@ const toPoint = location(file).toPoint

while (index !== -1) {
// @ts-expect-error: assume we have a correct point.
file.message('Use spaces instead of tabs', toPoint(index))
file.message('Unexpected tab (`\\t`), expected spaces', {
place: toPoint(index)
})
index = value.indexOf('\t', index + 1)

@@ -120,0 +132,0 @@ }

{
"name": "remark-lint-no-tabs",
"version": "3.1.2",
"version": "4.0.0",
"description": "remark-lint rule to warn when hard tabs are used instead of spaces",
"license": "MIT",
"keywords": [
"lint",
"remark",
"lint",
"remark-lint",
"remark-lint-rule",
"rule",
"remark-lint-rule",
"tab"
],
"repository": {
"type": "git",
"url": "https://github.com/remarkjs/remark-lint",
"directory": "packages/remark-lint-no-tabs"
},
"repository": "https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-tabs",
"bugs": "https://github.com/remarkjs/remark-lint/issues",

@@ -25,26 +22,30 @@ "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",
"vfile-location": "^4.0.0"
"@types/mdast": "^4.0.0",
"unified-lint-rule": "^3.0.0",
"vfile-location": "^5.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,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 tabs are used.
[`remark-lint`][github-remark-lint] rule to warn when tabs are used.
## 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(remarkLintNoTabs[, config])`](#unifieduseremarklintnotabs-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(remarkLintNoTabs)`](#unifieduseremarklintnotabs)
* [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 for tabs.
## When should I use this?
You can use this package to check that tabs are not used.
You can use this package to check tabs.
## 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 remarkLintNoTabs from 'https://esm.sh/remark-lint-no-tabs@3'
import remarkLintNoTabs from 'https://esm.sh/remark-lint-no-tabs@4'
```
In browsers with [`esm.sh`][esmsh]:
In browsers with [`esm.sh`][esm-sh]:
```html
<script type="module">
import remarkLintNoTabs from 'https://esm.sh/remark-lint-no-tabs@3?bundle'
import remarkLintNoTabs from 'https://esm.sh/remark-lint-no-tabs@4?bundle'
</script>

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

```js
import remarkLint from 'remark-lint'
import remarkLintNoTabs from 'remark-lint-no-tabs'
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 remarkLintNoTabs from 'remark-lint-no-tabs'
main()
const file = await read('example.md')
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoTabs)
.process(await read('example.md'))
await unified()
.use(remarkParse)
.use(remarkLint)
.use(remarkLintNoTabs)
.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-tabs example.md
remark --frail --use remark-lint --use remark-lint-no-tabs .
```

@@ -119,19 +120,30 @@

This package exports no identifiers.
The default export is `remarkLintNoTabs`.
It exports no additional [TypeScript][typescript] types.
The default export is
[`remarkLintNoTabs`][api-remark-lint-no-tabs].
### `unified().use(remarkLintNoTabs[, config])`
### `unified().use(remarkLintNoTabs)`
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 tabs are used.
###### Parameters
There are no options.
###### Returns
Transform ([`Transformer` from `unified`][github-unified-transformer]).
## Recommendation
Regardless of the debate in other languages of whether to use tabs vs.
spaces, when it comes to markdown, tabs do not work as expected.
Largely around contains such as block quotes and lists.
Regardless of the debate in other languages of whether to use tabs versus
spaces,
when it comes to markdown,
tabs do not work as expected.
Largely around things such as block quotes, lists, and indented code.
Take for example block quotes: `>\ta` gives a paragraph with the text `a`
in a blockquote, so one might expect that `>\t\ta` results in indented code
with the text `a` in a block quote.
in a blockquote,
so one might expect that `>\t\ta` results in indented code with the text `a`
in a block quote.

@@ -156,7 +168,10 @@ ```markdown

Because markdown uses a hardcoded tab size of 4, the first tab could be
represented as 3 spaces (because there’s a `>` before).
Because markdown uses a hardcoded tab size of 4,
the first tab could be represented as 3 spaces (because there’s a `>`
before).
One of those “spaces” is taken because block quotes allow the `>` to be
followed by one space, leaving 2 spaces.
The next tab can be represented as 4 spaces, so together we have 6 spaces.
followed by one space,
leaving 2 spaces.
The next tab can be represented as 4 spaces,
so together we have 6 spaces.
The indented code uses 4 spaces, so there are two spaces left, which are

@@ -176,8 +191,4 @@ shown in the indented code.

> 👉 **Note**: `·` represents a space.
```markdown
Foo Bar
····Foo
␠␠␠␠mercury()
```

@@ -193,18 +204,6 @@

> 👉 **Note**: `»` represents a tab.
```markdown
»Here's one before a code block.
␉mercury()
Here's a tab:», and here is another:».
And this is in `inline»code`.
>»This is in a block quote.
*»And…
»1.»in a list.
And this is a tab as the last character.»
Venus␉and Earth.
```

@@ -215,11 +214,4 @@

```text
1:1: Use spaces instead of tabs
3:14: Use spaces instead of tabs
3:37: Use spaces instead of tabs
5:23: Use spaces instead of tabs
7:2: Use spaces instead of tabs
9:2: Use spaces instead of tabs
11:1: Use spaces instead of tabs
11:4: Use spaces instead of tabs
13:41: Use spaces instead of tabs
1:1: Unexpected tab (`\t`), expected spaces
3:6: Unexpected tab (`\t`), expected spaces
```

@@ -229,14 +221,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-tabs@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

@@ -247,52 +243,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-tabs]: #unifieduseremarklintnotabs
[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-tabs.svg
[badge-chat-image]: https://img.shields.io/badge/chat-discussions-success.svg
[downloads]: https://www.npmjs.com/package/remark-lint-no-tabs
[badge-chat-url]: https://github.com/remarkjs/remark/discussions
[size-badge]: https://img.shields.io/bundlephobia/minzip/remark-lint-no-tabs.svg
[badge-coverage-image]: https://img.shields.io/codecov/c/github/remarkjs/remark-lint.svg
[size]: https://bundlephobia.com/result?p=remark-lint-no-tabs
[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-tabs.svg
[backers-badge]: https://opencollective.com/unified/backers/badge.svg
[badge-downloads-url]: https://www.npmjs.com/package/remark-lint-no-tabs
[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-tabs
[remark]: https://github.com/remarkjs/remark
[badge-size-url]: https://bundlejs.com/?q=remark-lint-no-tabs
[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