1. eslint-plugin-no-use-extend-native
ESLint plugin to prevent use of extended native objects
eslint-plugin-no-use-extend-native
Package: eslint-plugin-no-use-extend-native
Created by: dustinspecker
Last modified: Fri, 17 Jun 2022 20:37:39 GMT
Version: 0.5.0
License: MIT
Downloads: 492,329
Repository: https://github.com/dustinspecker/eslint-plugin-no-use-extend-native

Install

npm install eslint-plugin-no-use-extend-native
yarn add eslint-plugin-no-use-extend-native

eslint-plugin-no-use-extend-native

NPM version
Build Status
Coverage Status

Code Climate
Dependencies
DevDependencies

ESLint plugin to prevent use of extended native objects

Uses Sindre Sorhus's proto-props

Install

First, install ESLint via

npm install --save-dev eslint

Then install eslint-plugin-no-use-extend-native

npm install --save-dev eslint-plugin-no-use-extend-native

Usage

In your .eslintrc file add the plugin as such:

 {
  plugins: [
    'no-use-extend-native'
  ]
}

To modify the single rule, no-use-extend-native, add the rule to your .eslintrc.* as such:

 {
  plugins: [
    'no-use-extend-native'
  ],
  rules: {
    'no-use-extend-native/no-use-extend-native': 1
  }
}

The default value is 2.

If you want the default, you can also just use the following instead of
all of the above:

 {
  extends: ['plugin:no-use-extend-native/recommended']
}

With this plugin enabled, ESLint will find issues with using extended native objects:

 const colors = require('colors');
console.log('unicorn'.green);
// => ESLint will give an error stating 'Avoid using extended native objects'

[].customFunction();
// => ESLint will give an error stating 'Avoid using extended native objects'

More examples can be seen in the tests.

Usage with no-extend-native

ESLint's no-extend-native rule verifies code is not modifying a native prototype. e.g., with the no-extend-native rule enabled, the following lines are each considered incorrect:

 String.prototype.shortHash = function() { return this.substring(0, 7); };
Object.defineProperty(Array.prototype, "times", { value: 999 });

no-use-extend-native verifies code is not using a non-native prototype. e.g., with the no-use-extend-native plugin enabled, the following line is considered incorrect:

 "50bda47b09923e045759db8e8dd01a0bacd97370".shortHash() === "50bda47";

The no-use-extend-native plugin is designed to work with ESLint's no-extend-native rule. no-extend-native ensures that native prototypes aren't extended, and should a third party library extend them, no-use-extend-native ensures those changes aren't depended upon.

LICENSE

MIT © Dustin Specker

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code