npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

eslint-plugin-es-roikoren

v3.0.0

Published

[![Test Status](https://github.com/roikoren755/eslint-plugin-es/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/roikoren755/eslint-plugin-es/actions/workflows/ci.yml?query=branch%3Amain) [![codecov](https://codecov.io/gh/roikoren755/es

Downloads

295

Readme

eslint-plugin-es-roikoren

Test Status codecov

Bugs Code Smells Maintainability Rating Reliability Rating Security Rating Technical Debt Vulnerabilities

Snyk Vulnerabilities for GitHub Repo

npm NPM npm npm bundle size

GitHub issues GitHub pull requests GitHub code size in bytes Lines of code GitHub top language

A re-implementation of eslint-plugin-es in TypeScript.

Disclaimer

First off, I would like to deeply thank @mistycatea and everyone else involved in the original eslint-plugin-es. None of this would have been possible without them, and all credit should go to them.

This package is an attempt to migrate eslint-plugin-es to be written in TypeScript, and to use the great @typescript-eslint repository for plugin development.

Below is taken verbatim from eslint-plugin-es, and will be updated as needed.

🏁 Goal

Espree, the default parser of ESLint, has supported ecmaVersion option. However, the error messages of new syntax are not readable (e.g., "unexpected token" or something like).

When we use this plugin along with the latest ecmaVersion option value, it tells us the readable error message for the new syntax, such as "ES2020 BigInt is forbidden." Plus, this plugin lets us disable each syntactic feature individually.

💿 Installation

Use npm or a compatible tool.

npm install --save-dev eslint eslint-plugin-es-roikoren

yarn add -D eslint eslint-plugin-es-roikoren

IMPORTANT

If you installed eslint globally, you should install this plugin in the same way.

Requirements

  • Node.js 12.22.0 or newer.
  • ESLint 7.0.0 or newer.

📖 Usage

Configure your .eslintrc.* file.

For example, to enable only Rest/Spread Properties in ES2018, as similar to legacy experimentalObjectRestSpread option:

{
  "plugins": ["es-roikoren"],
  "parserOptions": {
    "ecmaVersion": 2018
  },
  "rules": {
    "es-roikoren/no-async-iteration": "error",
    "es-roikoren/no-malformed-template-literals": "error",
    "es-roikoren/no-regexp-lookbehind-assertions": "error",
    "es-roikoren/no-regexp-named-capture-groups": "error",
    "es-roikoren/no-regexp-s-flag": "error",
    "es-roikoren/no-regexp-unicode-property-escapes": "error"
  }
}

Presets

This plugin provides the following configs.

| Config ID | Description | |:----------|:------------| | plugin:es-roikoren/restrict-to-es2020 | disallow new stuff that ES2020 doesn't include. | | plugin:es-roikoren/restrict-to-es2019 | disallow new stuff that ES2019 doesn't include. | | plugin:es-roikoren/restrict-to-es2018 | disallow new stuff that ES2018 doesn't include. | | plugin:es-roikoren/restrict-to-es2017 | disallow new stuff that ES2017 doesn't include. | | plugin:es-roikoren/restrict-to-es2016 | disallow new stuff that ES2016 doesn't include. | | plugin:es-roikoren/restrict-to-es2015 | disallow new stuff that ES2015 doesn't include. | | plugin:es-roikoren/restrict-to-es5 | disallow new stuff that ES5 doesn't include. | | plugin:es-roikoren/restrict-to-es3 | disallow new stuff that ES3 doesn't include. | | plugin:es-roikoren/no-new-in-es2021 | disallow the new stuff in ES2021. | | plugin:es-roikoren/no-new-in-es2020 | disallow the new stuff in ES2020. | | plugin:es-roikoren/no-new-in-es2019 | disallow the new stuff in ES2019. | | plugin:es-roikoren/no-new-in-es2018 | disallow the new stuff in ES2018. | | plugin:es-roikoren/no-new-in-es2017 | disallow the new stuff in ES2017. | | plugin:es-roikoren/no-new-in-es2016 | disallow the new stuff in ES2016. | | plugin:es-roikoren/no-new-in-es2015 | disallow the new stuff in ES2015. | | plugin:es-roikoren/no-new-in-es5 | disallow the new stuff in ES5. | | plugin:es-roikoren/no-new-in-esnext | disallow the new stuff to be planned for the next yearly ECMAScript snapshot.⚠️ This config will be changed in the minor versions of this plugin. | | plugin:es-roikoren/typescript | turn off rules for stuff that TypeScript transpiles correctly, regardless of target ES version. |

For example:

{
  "parserOptions": {
    "ecmaVersion": 2021
  },
  "extends": [
    "eslint:recommended",
    "plugin:es-roikoren/restrict-to-es2018"
  ],
  "rules": {
    "es-roikoren/no-rest-spread-properties": "off"
  }
}

The aggressive mode

This plugin never reports prototype methods by default. Because it's hard to know the type of objects, it will cause false positives.

If you configured the aggressive mode, this plugin reports prototype methods even if the rules couldn't know the type of objects. For example:

settings.es.aggressive = true means the aggressive mode.

{
  "plugins": ["es-roikoren"],
  "rules": {
    "es-roikoren/no-string-prototype-codepointat": "error"
  },

  "settings": {
    "es": { "aggressive": true }
  }
}

If using this plugin and TypeScript, this plugin reports prototype methods by default because we can easily know types. For example:

{
  "plugins": ["es-roikoren"],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "project": "tsconfig.json"
  },
  "rules": {
    "es-roikoren/no-string-prototype-codepointat": "error"
  }
}

If you configured the aggressive mode, this plugin reports prototype methods on any types as well.

{
  "plugins": ["es-roikoren"],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "project": "tsconfig.json"
  },
  "rules": {
    "es-roikoren/no-string-prototype-codepointat": "error"
  },
  "settings": {
    "es": { "aggressive": true }
  }
}