0.1.0 • Published 2 years ago
@fluffyfox/eslint-plugin v0.1.0
@dimensiondev/eslint-plugin
Installation
You'll first need to install eslint:
npm install --save-dev eslint
Next, install @dimensiondev/eslint-plugin
:
# for stable version
npm install --save-dev @dimensiondev/eslint-plugin
# for unstable version
npm install --save-dev @dimensiondev/eslint-plugin --registry=https://npm.dimension.im
Usage
Add @dimensiondev
to the plugins section of your .eslintrc
configuration file.
{
"$schema": "https://dimensiondev.github.io/eslint-plugin/src/schema.json",
"plugins": ["@dimensiondev"],
"rules": {
"@dimensiondev/array/no-implicit-sort": "error",
"@dimensiondev/array/no-unneeded-flat-map": "error",
"@dimensiondev/array/prefer-from": "error",
"@dimensiondev/browser/no-persistent-storage": "error",
"@dimensiondev/browser/no-set-html": "error",
"unicorn/prefer-dom-node-dataset": "off",
"@dimensiondev/browser/prefer-dataset": "error",
"unicorn/prefer-add-event-listener": "off",
"unicorn/no-invalid-remove-event-listener": "off",
"@dimensiondev/browser/prefer-event-target": "error",
"unicorn/prefer-keyboard-event-key": "off",
"@dimensiondev/browser/prefer-keyboard-event-key": "error",
"@dimensiondev/browser/prefer-location-assign": "error",
"unicorn/prefer-dom-node-append": "off",
"unicorn/prefer-dom-node-remove": "off",
"unicorn/prefer-modern-dom-apis": "off",
"@dimensiondev/browser/prefer-modern-dom-apis": "error",
"unicorn/prefer-query-selector": "off",
"@dimensiondev/browser/prefer-query-selector": "error",
"unicorn/prefer-dom-node-text-content": "off",
"@dimensiondev/browser/prefer-text-content": "error",
"@dimensiondev/jsx/no-class-component": "error",
"@dimensiondev/jsx/no-logical": "off",
"@dimensiondev/jsx/no-set-html": "error",
"@dimensiondev/jsx/no-template-literal": "error",
"@dimensiondev/jsx/no-unneeded-nested": "error",
"@dimensiondev/jsx/prefer-test-id": "off",
"@dimensiondev/string/no-data-url": "error",
"@dimensiondev/string/no-interpolation": "error",
"@dimensiondev/string/no-locale-case": "error",
"@dimensiondev/string/no-simple-template-literal": "error",
"@dimensiondev/string/no-unneeded-to-string": "error",
"@dimensiondev/type/no-bigint": "off",
"@dimensiondev/type/no-const-enum": "off",
"@dimensiondev/type/no-empty-literal": "off",
"@dimensiondev/type/no-force-cast-via-top-type": "error",
"unicorn/no-instanceof-array": "off",
"@dimensiondev/type/no-instanceof-wrapper": "error",
"@dimensiondev/type/no-number-constructor": "error",
"@dimensiondev/type/no-wrapper-type-reference": "error",
"@dimensiondev/type/prefer-return-type-annotation": "error",
"@dimensiondev/unicode/no-bidi": "off",
"@dimensiondev/unicode/no-invisible": "error",
"@dimensiondev/unicode/specific-set": "off",
"@dimensiondev/ban-eslint-disable": "error",
"@dimensiondev/no-builtin-base64": "error",
"@dimensiondev/no-default-error": "error",
"@dimensiondev/no-for-in": "error",
"@dimensiondev/no-redundant-variable": "error",
"@dimensiondev/no-single-return": "error",
"@dimensiondev/no-then": "error",
"@dimensiondev/no-timer": "off",
"@dimensiondev/no-top-level": "off",
"@dimensiondev/no-unsafe-date": "error",
"@dimensiondev/prefer-default-export": "off",
"@dimensiondev/prefer-early-return": "error",
"@dimensiondev/prefer-fetch": "error",
"@dimensiondev/prefer-timer-id": "error"
}
}
Supported Rules
Key: :white_check_mark: = recommended, :wrench: = fixable, :bulb: = suggestions, :gear: = configurable, :thought_balloon: = requires type information
- array/no-implicit-sort :white_check_mark: :thought_balloon:\
Enforce
Array#sort
provide comparator function - array/no-unneeded-flat-map :white_check_mark: :wrench:\
Disallow
Array#flatMap((x) => x)
when simpler alternatives exist - array/prefer-from :white_check_mark: :wrench:\
Prefer
new Array(...)
overArray.from(...)
- browser/no-persistent-storage :white_check_mark:\ Disallow use browser persistent storage
- browser/no-set-html :white_check_mark:\
Disallow use
Element#{inner,outer}HTML
- browser/prefer-dataset :white_check_mark: :wrench: :thought_balloon:\
Prefer
Element#dataset
overElement#{get,set,has,remove}Attribute
- browser/prefer-event-target :white_check_mark: :wrench: :thought_balloon:\
Prefer
EventTarget#{add,remove}EventListener()
overon
-functions - browser/prefer-keyboard-event-key :white_check_mark: :wrench: :thought_balloon:\
Prefer
KeyboardEvent#key
overKeyboardEvent#{keyCode,charCode,which}
- browser/prefer-location-assign :white_check_mark: :wrench:\
Prefer
location.assign(...)
overlocation.*
- browser/prefer-modern-dom-apis :white_check_mark: :wrench: :thought_balloon:\ Prefer Modern DOM APIs
- browser/prefer-query-selector :white_check_mark: :wrench: :thought_balloon:\
Prefer
Element#querySelector
overElement#getElementById
- browser/prefer-text-content :white_check_mark: :bulb: :thought_balloon:\
Prefer
Element#textContent
overElement#innerText
- jsx/no-class-component :white_check_mark:\ Disallow React Class Component
- jsx/no-logical :gear:\ Limit the complexity of JSX logic expression
- jsx/no-set-html :white_check_mark:\
Disallow use
dangerouslySetInnerHTML
jsx attribute - jsx/no-template-literal :white_check_mark: :wrench:\ Disallow use template-literal in JSX
- jsx/no-unneeded-nested :white_check_mark: :wrench:\ Reduce unneeded JSXFragment nested
- jsx/prefer-test-id :gear:\
Enforces
data-test-id
attribute is present on interactive DOM elements to help with UI testing - string/no-data-url :white_check_mark:\ Disallow use Data URL
- string/no-interpolation :white_check_mark:\ Disallow simple string interpolation
- string/no-locale-case :white_check_mark: :wrench:\
Disallow use
String#toLocale{Upper,Lower}Case()
- string/no-simple-template-literal :white_check_mark: :wrench:\ Disallow simple template-literal
- string/no-unneeded-to-string :white_check_mark: :wrench: :thought_balloon:\
Disallow
String#toString()
when simpler alternatives exist - type/no-bigint :thought_balloon:\ Disallow use BigInt
- type/no-const-enum :wrench:\ Disallow use constants enumerate
- type/no-empty-literal :gear:\ Disallow empty {array,object} literal
- type/no-force-cast-via-top-type :white_check_mark:\
Disallowing cast a type
T
to unrelated or incompatible typeQ
viaT as any as Q
- type/no-instanceof-wrapper :white_check_mark: :wrench:\
Disallow
instanceof
for wrapper objects - type/no-number-constructor :white_check_mark:\
Disallow use
Number
constructor - type/no-wrapper-type-reference :white_check_mark: :wrench:\ Disallow wrapper type for type reference
- type/prefer-return-type-annotation :white_check_mark: :wrench:\ Enforce Move return type annotation to function return type
- unicode/no-bidi :wrench:\ Detect and stop Trojan Source attacks
- unicode/no-invisible :white_check_mark: :wrench:\ Disallow invisible characters
- unicode/specific-set :wrench: :gear:\ Limit the range of literal characters
- ban-eslint-disable :white_check_mark: :gear:\
Ban
eslint-disable
comment directive - no-builtin-base64 :white_check_mark: :wrench:\ Disallow use built-in base64 function
- no-default-error :white_check_mark: :thought_balloon:\ Restrict the usage of default (unextended) error
- no-for-in :white_check_mark:\ Disallow use for-in
- no-redundant-variable :white_check_mark: :wrench:\ Disallow redundant variable
- no-single-return :white_check_mark:\ Disallow single-return
- no-then :white_check_mark:\
Disallow
Promise#then(...)
- no-timer \ Disallow use timer function
- no-top-level :gear:\ Disallow side-effect at module top-level
- no-unsafe-date :white_check_mark: :thought_balloon:\ Disallow use unsafe Date methods
- prefer-default-export :gear:\ Enforce default export location at top or bottom
- prefer-early-return :white_check_mark: :wrench: :gear:\ Prefer early returns over full-body conditional wrapping in function declarations
- prefer-fetch :white_check_mark:\ Enforce fetch
- prefer-timer-id :white_check_mark: :bulb:\ Enforce best practice with timer function
LICENSE
0.1.0
2 years ago