# nahoc-eslint

> Additional ESLint rules.

Latest version **0.0.2** (published 2023-11-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install nahoc-eslint
pnpm add nahoc-eslint
yarn add nahoc-eslint
bun add nahoc-eslint
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.2 |
| Published | 2023-11-07 |
| First published | 2023-11-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | ^12.22.0 \|\| ^14.17.0 \|\| >=16.0.0 |
| Dependencies | 10 |
| Unpacked size | 146.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Toru Nagashima |
| Maintainers | nahoc |
| Keywords | eslint, eslintplugin, block, scope, instanceof, isArray, static, this, rest, spread, ignore |

## Links

- npm: https://www.npmjs.com/package/nahoc-eslint
- Repository: https://github.com/nahoc/eslint-plugin-mysticatea
- Homepage: https://github.com/nahoc/eslint-plugin-mysticatea#readme
- Issues: https://github.com/nahoc/eslint-plugin-mysticatea/issues
- npm.io page: https://npm.io/package/nahoc-eslint

## Dependencies (10)

- [semver](https://npm.io/package/semver.md) ^7.5.4
- [prettier](https://npm.io/package/prettier.md) ~2.8.8
- [eslint-plugin-vue](https://npm.io/package/eslint-plugin-vue.md) ~8.7.1
- [vue-eslint-parser](https://npm.io/package/vue-eslint-parser.md) ^8.3.0
- [eslint-plugin-node](https://npm.io/package/eslint-plugin-node.md) ~11.1.0
- [eslint-plugin-prettier](https://npm.io/package/eslint-plugin-prettier.md) ~3.4.1
- [@typescript-eslint/parser](https://npm.io/package/@typescript-eslint/parser.md) ~5.62.0
- [eslint-plugin-eslint-plugin](https://npm.io/package/eslint-plugin-eslint-plugin.md) ~4.4.1
- [eslint-plugin-eslint-comments](https://npm.io/package/eslint-plugin-eslint-comments.md) ~3.2.0
- [@typescript-eslint/eslint-plugin](https://npm.io/package/@typescript-eslint/eslint-plugin.md) ~5.62.0

## Alternatives

- [eslint-plugin-sonarjs](https://npm.io/package/eslint-plugin-sonarjs.md) — 2.9M weekly downloads
- [eslint-config-expo](https://npm.io/package/eslint-config-expo.md) — 1.5M weekly downloads
- [@matter/protocol](https://npm.io/package/@matter/protocol.md) — 63.5K weekly downloads
- [@eventcatalog/linter](https://npm.io/package/@eventcatalog/linter.md) — 24.8K weekly downloads
- [@inrupt/eslint-config-base](https://npm.io/package/@inrupt/eslint-config-base.md) — 4.5K weekly downloads

## Recent versions

- 0.0.2 (latest) — 2023-11-07
- 0.0.0-semantically-released — 2023-11-07

## README

# @eslint-community/eslint-plugin-mysticatea

[![npm version](https://img.shields.io/npm/v/@eslint-community/eslint-plugin-mysticatea.svg)](https://www.npmjs.com/package/@eslint-community/eslint-plugin-mysticatea)
[![Downloads/month](https://img.shields.io/npm/dm/@eslint-community/eslint-plugin-mysticatea.svg)](http://www.npmtrends.com/@eslint-community/eslint-plugin-mysticatea)
[![Build Status](https://github.com/eslint-community/eslint-plugin-mysticatea/workflows/CI/badge.svg)](https://github.com/eslint-community/eslint-plugin-mysticatea/actions)
[![codecov](https://codecov.io/gh/eslint-community/eslint-plugin-mysticatea/branch/main/graph/badge.svg)](https://codecov.io/gh/eslint-community/eslint-plugin-mysticatea)
[![Dependency Status](https://david-dm.org/eslint-community/eslint-plugin-mysticatea.svg)](https://david-dm.org/eslint-community/eslint-plugin-mysticatea)

Additional ESLint rules and ESLint configurations for [@mysticatea](https://github.com/mysticatea).

## 💿 Installation

```
npm install --save-dev eslint @eslint-community/eslint-plugin-mysticatea
```

### Requirements

-   Node.js `^12.22.0 || ^14.17.0 || >=16.0.0` or newer versions.
-   ESLint `^6.6.0 || ^7.0.0 || ^8.0.0` or newer versions.

## 📖 Usage

Write in your ESLint configurations: http://eslint.org/docs/user-guide/configuring#using-the-configuration-from-a-plugin

### Configs

-   `plugin:nahoc-eslint/es2022` ... Basic configuration for ES2022.
-   `plugin:nahoc-eslint/es2021` ... Basic configuration for ES2021.
-   `plugin:nahoc-eslint/es2020` ... Basic configuration for ES2020.
-   `plugin:nahoc-eslint/es2019` ... Basic configuration for ES2019.
-   `plugin:nahoc-eslint/es2018` ... Basic configuration for ES2018.
-   `plugin:nahoc-eslint/es2017` ... Basic configuration for ES2017.
-   `plugin:nahoc-eslint/es2016` ... Basic configuration for ES2016.
-   `plugin:nahoc-eslint/es2015` ... Basic configuration for ES2015.
-   `plugin:nahoc-eslint/es5` ... Basic configuration for ES5.
-   `plugin:nahoc-eslint/+modules` ... Additional configuration for ES modules.
-   `plugin:nahoc-eslint/+browser` ... Additional configuration for browser environment.
-   `plugin:nahoc-eslint/+node` ... Additional configuration for Node.js environment.
-   `plugin:nahoc-eslint/+eslint-plugin` ... Additional configuration for ESLint plugins. This includes `plugin:nahoc-eslint/+node` setting.

#### Details

The main configurations `plugin:nahoc-eslint/es*` does:

-   detect bug-like code by ESLint rules.
-   enforce whitespace style by Prettier.
-   handle the `.ts` files as TypeScript then check by `typescript-eslint-parser` and `eslint-plugin-typescript`.
-   handle the `.vue` files as Vue.js SFC then check by `vue-eslint-parser` and `eslint-plugin-vue`.
-   handle the files in `test`/`tests` directory as `mocha`'s test code.
-   handle the files in `scripts` directory as Node.js environment.
-   handle the `.eslintrc.js` file as a Node.js script.
-   handle the `webpack.config.js` file as a Node.js script.
-   handle the `rollup.config.js` file as an ES module.

You can use combination of a main configuration and some additional configurations.
For examples:

##### For Node.js

```json
{
    "extends": ["plugin:nahoc-eslint/es2015", "plugin:nahoc-eslint/+node"]
}
```

> It handles `.js` files as scripts and `.mjs` files as modules.

##### For Browsers

```json
{
    "extends": ["plugin:nahoc-eslint/es2015", "plugin:nahoc-eslint/+browser"]
}
```

##### For Browsers with ES modules

```json
{
    "extends": [
        "plugin:nahoc-eslint/es2015",
        "plugin:nahoc-eslint/+modules",
        "plugin:nahoc-eslint/+browser"
    ]
}
```

##### For ESLint plugins

```json
{
    "extends": [
        "plugin:nahoc-eslint/es2015",
        "plugin:nahoc-eslint/+eslint-plugin"
    ]
}
```

### Rules

This plugin has some original rules and foreign rules.

#### Original rules

-   [nahoc-eslint/arrow-parens](docs/rules/arrow-parens.md) enforces parens of argument lists (excludes too redundant parens) (fixable).
-   [nahoc-eslint/block-scoped-var](docs/rules/block-scoped-var.md) handles variables which are declared by `var` declaration as block-scoped. It disallows redeclarations, uses from outside of the scope, shadowing.
-   [nahoc-eslint/no-instanceof-array](docs/rules/no-instanceof-array.md) disallows 'instanceof' for Array (fixable).
-   [nahoc-eslint/no-instanceof-wrapper](docs/rules/no-instanceof-wrapper.md) disallows 'instanceof' for wrapper objects (fixable).
-   [nahoc-eslint/no-literal-call](docs/rules/no-literal-call.md) disallows a call of a literal.
-   [nahoc-eslint/no-this-in-static](docs/rules/no-this-in-static.md) disallows `this`/`super` in static methods.
-   [nahoc-eslint/no-use-ignored-vars](docs/rules/no-use-ignored-vars.md) disallows a use of ignored variables.
-   [nahoc-eslint/no-useless-rest-spread](docs/rules/no-useless-rest-spread.md) disallows unnecessary rest/spread operators (fixable).
-   [nahoc-eslint/prefer-for-of](docs/rules/prefer-for-of.md) requires `for-of` statements instead of `Array#forEach` or something like (fixable).

#### Foreign rules

-   All `nahoc-eslint/eslint-comments/*` rules are imported from [eslint-plugin-eslint-comments](https://www.npmjs.com/package/eslint-plugin-eslint-comments).
-   All `nahoc-eslint/eslint-plugin/*` rules are imported from [eslint-plugin-eslint-plugin](https://www.npmjs.com/package/eslint-plugin-eslint-plugin).
-   All `nahoc-eslint/node/*` rules are imported from [eslint-plugin-node](https://www.npmjs.com/package/eslint-plugin-node).
-   All `nahoc-eslint/ts/*` rules are imported from [eslint-plugin-typescript](https://www.npmjs.com/package/eslint-plugin-typescript).
-   All `nahoc-eslint/vue/*` rules are imported from [eslint-plugin-vue](https://www.npmjs.com/package/eslint-plugin-vue).
-   The `nahoc-eslint/prettier` rule is imported from [eslint-plugin-prettier](https://www.npmjs.com/package/eslint-plugin-prettier).

> **Q:** Why don't you use those plugins directly?<br> > **A:** The combination with shareable configs and plugins has some problems because shareable configs were not designed to be used with plugins. @nzakas illustrated a way to use plugins as shareable configs together with other plugins in the discussion [eslint/eslint#3458](https://github.com/eslint/eslint/issues/3458#issuecomment-257161846). This is the way.

## 🚥 Semantic Versioning Policy

This plugin follows [semantic versioning](http://semver.org/) and [ESLint's Semantic Versioning Policy](https://github.com/eslint/eslint#semantic-versioning-policy).

## 📰 Changelog

-   [GitHub Releases](https://github.com/eslint-community/eslint-plugin-mysticatea/releases)

## ❤️ Contributing

Welcome contributing!

Please use GitHub's Issues/PRs.

### Development Tools

-   `npm test` runs tests and measures coverage.
-   `npm run clean` removes the coverage result of `npm test` command.
-   `npm run coverage` shows the coverage result of `npm test` command.
-   `npm run update` updates auto-generated files.
-   `npm run watch` runs tests and measures coverage when source code are changed.

---
_Source: https://npm.io/package/nahoc-eslint · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
