From a8ef00f43feeffa64f86b89d5f01e06e73692b3c Mon Sep 17 00:00:00 2001 From: Arctic Ice Studio Date: Sat, 27 Jan 2018 11:47:15 +0100 Subject: [PATCH] Add React specific rules GH-3 --- README.md | 10 +- src/README.md | 8 +- src/SUMMARY.md | 359 ++++++++++-------- src/assets/react-logo.png | Bin 0 -> 216799 bytes src/rules/arrays.md | 2 +- src/rules/arrow_functions.md | 18 +- src/rules/blocks.md | 12 +- src/rules/classes_and_constructors.md | 8 +- src/rules/commas.md | 6 +- src/rules/comments.md | 4 +- .../comparison_operators_and_equality.md | 20 +- src/rules/destructuring.md | 8 +- src/rules/ecmascript_5_compatibility.md | 4 +- src/rules/functions.md | 36 +- src/rules/index.md | 10 + src/rules/iterators_and_generators.md | 6 +- src/rules/modules.md | 20 +- src/rules/naming_conventions.md | 16 +- src/rules/objects.md | 14 +- src/rules/properties.md | 8 +- src/rules/react/accessibility_a11y.md | 100 +++++ src/rules/react/blocks.md | 40 ++ src/rules/react/classes_and_constructors.md | 59 +++ src/rules/react/higher_order_components.md | 67 ++++ src/rules/react/index.md | 23 ++ src/rules/react/methods.md | 153 ++++++++ src/rules/react/naming_conventions.md | 86 +++++ src/rules/react/ordering.md | 152 ++++++++ src/rules/react/props.md | 295 ++++++++++++++ src/rules/react/strings.md | 23 ++ src/rules/react/tags.md | 47 +++ src/rules/react/whitespace.md | 54 +++ src/rules/references.md | 10 +- src/rules/semicolons.md | 4 +- src/rules/standard_library.md | 6 +- src/rules/strings.md | 18 +- src/rules/testing.md | 2 +- src/rules/type_casting_and_coercion.md | 10 +- src/rules/variables.md | 18 +- src/rules/whitespace.md | 48 +-- 40 files changed, 1473 insertions(+), 311 deletions(-) create mode 100644 src/assets/react-logo.png create mode 100644 src/rules/index.md create mode 100644 src/rules/react/accessibility_a11y.md create mode 100644 src/rules/react/blocks.md create mode 100644 src/rules/react/classes_and_constructors.md create mode 100644 src/rules/react/higher_order_components.md create mode 100644 src/rules/react/index.md create mode 100644 src/rules/react/methods.md create mode 100644 src/rules/react/naming_conventions.md create mode 100644 src/rules/react/ordering.md create mode 100644 src/rules/react/props.md create mode 100644 src/rules/react/strings.md create mode 100644 src/rules/react/tags.md create mode 100644 src/rules/react/whitespace.md diff --git a/README.md b/README.md index ef42d86..1b17580 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,9 @@ A style guide establishes and enforces style to improve the intelligibility and ### Getting Started The [project documentation][docs] contains chapters to learn about -the [comprehensive base rule set][docs-rules] including [ECMAScript +6 (ES 2015+) styles][docs-rules-ecmascript_6+_styles], the development [requirements][docs-dev-requirements] and [how to build][docs-dev-building] the style guide documentation. +the [comprehensive base rule set][docs-rules] including [ECMAScript +6 (ES 2015+)][docs-rules-ecmascript_6+_styles] and [React][docs-rules-react] specific styles like e.g. [Higher-Order Components][docs-rules-react-hoc], the [component methods & properties ordering][docs-rules-react-ordering-methods_and_properties] and [props][docs-rules-react-props]. + +The development chapters contain information about the [requirements][docs-dev-requirements] and [how to build][docs-dev-building] the style guide documentation. ### Contributing @@ -42,5 +44,9 @@ The guide also includes information about [minimal, complete, and verifiable exa [docs-dev-contributing-styleguides]: https://arcticicestudio.github.io/styleguide-javascript/development/contributing.html#styleguides [docs-dev-contributing-versioning]: https://arcticicestudio.github.io/styleguide-javascript/development/contributing.html#versioning [docs-dev-requirements]: https://arcticicestudio.github.io/styleguide-javascript/development/requirements.html -[docs-rules]: https://arcticicestudio.github.io/styleguide-javascript/rules/types.html +[docs-rules]: https://arcticicestudio.github.io/styleguide-javascript/rules/index.html [docs-rules-ecmascript_6+_styles]: https://arcticicestudio.github.io/styleguide-javascript/rules/ecmascript_6+_styles.html +[docs-rules-react]: https://arcticicestudio.github.io/styleguide-javascript/rules/react/index.html +[docs-rules-react-hoc]: https://arcticicestudio.github.io/styleguide-javascript/rules/react/higher_order_components.html +[docs-rules-react-ordering-methods_and_properties]: https://arcticicestudio.github.io/styleguide-javascript/rules/react/ordering.html#component-methods-and-properties +[docs-rules-react-props]: https://arcticicestudio.github.io/styleguide-javascript/rules/react/props.html diff --git a/src/README.md b/src/README.md index fe62c7e..0058d88 100644 --- a/src/README.md +++ b/src/README.md @@ -16,7 +16,7 @@ A style guide establishes and enforces style to improve the intelligibility and ### Getting Started -This style guide provides the [comprehensive base rule set][rules] including [ECMAScript +6 (ES 2015+) styles][rules-ecmascript_6+_styles]. +This style guide provides the [comprehensive base rule set][rules] including [ECMAScript +6 (ES 2015+)][rules-ecmascript_6+_styles] and [React][rules-react] specific styles like e.g. [Higher-Order Components][rules-react-hoc], the [component methods & properties ordering][rules-react-ordering-methods_and_properties] and [props][rules-react-props]. The development chapters contain information about the [requirements][dev-requirements] and [how to build][dev-building] this style guide documentation. @@ -44,5 +44,9 @@ The guide also includes information about [minimal, complete, and verifiable exa [dev-contributing-styleguides]: development/contributing.md#styleguides [dev-contributing-versioning]: development/contributing.md#versioning [dev-requirements]: development/requirements.md -[rules]: rules/types.md +[rules]: rules/index.md [rules-ecmascript_6+_styles]: rules/ecmascript_6+_styles.md +[rules-react]: rules/react/index.md +[rules-react-hoc]: rules/react/higher_order_components.md +[rules-react-ordering-methods_and_properties]: rules/react/ordering.md#component-methods-and-properties +[rules-react-props]: rules/react/props.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index f416011..463fcf7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -3,164 +3,207 @@ ### Introduction - [Overview](README.md) -### Base Rules - - [Types](rules/types.md) - - [Primitives](rules/types.md#primitives) - - [Complex](rules/types.md#complex) - - [References](rules/references.md) - - [Prefer `const`](rules/references.md#prefer-const) - - [Disallow `var`](rules/references.md#disallow-var) - - [Block Scope](rules/references.md#block-scope) - - [Objects](rules/objects.md) - - [Now `new`](rules/objects.md#no-new) - - [ES6 Computed Properties](rules/objects.md#es6-computed-properties) - - [ES6 Object Shorthand](rules/objects.md#es6-object-shorthand) - - [ES6 Object Concise](rules/objects.md#es6-object-concise) - - [Grouped Shorthand](rules/objects.md#grouped-shorthand) - - [Quoted Properties](rules/objects.md#quoted-properties) - - [Prototype Builtins](rules/objects.md#prototype-builtins) - - [Rest Spread](rules/objects.md#rest-spread) - - [Arrays](rules/arrays.md) - - [Literals](rules/arrays.md#literals) - - [Push](rules/arrays.md#push) - - [ES6 Array Spreads](rules/arrays.md#es6-array-spreads) - - [Prefer spreads over `from`](rules/arrays.md#prefer-spreads-over-from) - - [Prefer `from` over spreads for mapping of iterables](rules/arrays.md#prefer-from-over-spreads-for-mapping-of-iterables) - - [Callback Return](rules/arrays.md#callback-return) - - [Line Breaks](rules/arrays.md#line-breaks) - - [Destructuring](rules/destructuring.md) - - [Objects](rules/destructuring.md#objects) - - [Arrays](rules/destructuring.md#arrays) - - [Prefer object destructuring over array for multiple return values](rules/destructuring.md#prefer-object-destructuring-over-array-for-multiple-return-values) - - [Strings](rules/strings.md) - - [Quotes](rules/strings.md#quotes) - - [Line Length](rules/strings.md#line-length) - - [ES6 Template Literals](rules/strings.md#es6-template-literals) - - [No `eval()`](rules/strings.md#no-eval) - - [Escaping](rules/strings.md#escaping) - - [Functions](rules/functions.md) - - [Declaration](rules/functions.md#declaration) - - [IIFE](rules/functions.md#iife) - - [Block Declaration](rules/functions.md#block-declaration) - - [Prevent `arguments` Shadow](rules/functions.md#prevent-arguments-shadow) - - [ES6 Rest](rules/functions.md#es6-rest) - - [ES6 Default Parameters](rules/functions.md#es6-default-parameters) - - [Default Side Effects](rules/functions.md#default-side-effects) - - [Default Parameter Ordering](rules/functions.md#default-parameter-ordering) - - [Constructor](rules/functions.md#constructor) - - [Signature Spacing](rules/functions.md#signature-spacing) - - [Parameter Mutation](rules/functions.md#parameter-mutation) - - [Parameter Reassign](rules/functions.md#parameter-reassign) - - [ES6 Spread](rules/functions.md#es6-spread) - - [Signature Invocation Indentation](rules/functions.md#signature-invocation-indentation) - - [Arrow Functions](rules/arrow_functions.md) - - [Anonymous Functions](rules/arrow_functions.md#anonymous-functions) - - [Implicit Return](rules/arrow_functions.md#implicit-return) - - [Parentheses Wrap](rules/arrow_functions.md#parentheses-wrap) - - [Single Argument Parentheses](rules/arrow_functions.md#single-argument-parentheses) - - [Comparison Operators Confusion](rules/arrow_functions.md#comparison-operators-confusion) - - [Classes & Constructors](rules/classes_and_constructors.md) - - [Prefer `class`](rules/classes_and_constructors.md#prefer-class) - - [Inheritance](rules/classes_and_constructors.md#inheritance) - - [Chaining](rules/classes_and_constructors.md#chaining) - - [Custom String Representation](rules/classes_and_constructors.md#custom-string-representation) - - [Unnecessary Default Constructor](rules/classes_and_constructors.md#unnecessary-default-constructor) - - [No Duplicate Members](rules/classes_and_constructors.md#no-duplicate-members) - - [Modules](rules/modules.md) - - [Use `import` and `export`](rules/modules.md#use-import-and-export) - - [No Wildcard Import](rules/modules.md#no-wildcard-import) - - [No Export From Import](rules/modules.md#no-export-from-import) - - [No Duplicate Imports](rules/modules.md#no-duplicate-imports) - - [No Mutable Exports](rules/modules.md#no-mutable-exports) - - [Prefer Default Export](rules/modules.md#prefer-default-export) - - [Imports First](rules/modules.md#imports-first) - - [Multiline Import Indentation](rules/modules.md#multiline-import-indentation) - - [No Webpack Loader Syntax](rules/modules.md#no-webpack-loader-syntax) - - [Iterators and Generators](rules/iterators_and-generators.md) - - [No Iterators](rules/iterators_and-generators.md#no-iterators) - - [No Generators](rules/iterators_and-generators.md#no-generators) - - [Spacing](rules/iterators_and-generators.md#spacing) - - [Properties](rules/properties.md) - - [Dot Notation](rules/properties.md#dot-notation) - - [Bracket Notation](rules/properties.md#bracket-notation) - - [Exponentiation Operator](rules/properties.md#exponentiation-operator) - - [Variables](rules/variables.md) - - [Declaration](rules/variables.md#declaration) - - [Declaration Separation](rules/variables.md#declaration-separation) - - [Grouping](rules/variables.md#grouping) - - [Assignment](rules/variables.md#assignment) - - [No Chain Assignment](rules/variables.md#no-chain-assignment) - - [No Unary Increment and Decrement](rules/variables.md#no-unary-increment-and-decrement) - - [Hoisting](rules/hoisting.md) - - [Overview](rules/hoisting.md#overview) - - [Anonymous Function Expressions](rules/hoisting.md#anonymous-function-expressions) - - [Named Function Expressions](rules/hoisting.md#named-function-expressions) - - [Function Declaration](rules/hoisting.md#function-declaration) - - [Comparison Operators & Equality](rules/comparison_operators_and_equality.md) - - [Equality Syntax](rules/comparison_operators_and_equality.md#equality-syntax) - - [Conditional Statements](rules/comparison_operators_and_equality.md#conditional-statements) - - [Shortcuts](rules/comparison_operators_and_equality.md#shortcuts) - - [Switch Blocks](rules/comparison_operators_and_equality.md#switch-blocks) - - [Nested Ternaries](rules/comparison_operators_and_equality.md#nested-ternaries) - - [Avoid Unneeded Ternary](rules/comparison_operators_and_equality.md#avoid-unneeded-ternary) - - [No Mixed Operators](rules/comparison_operators_and_equality.md#no-mixed-operators) - - [Blocks](rules/blocks.md) - - [Braces](rules/blocks.md#braces) - - [Brace Style](rules/blocks.md#brace-style) - - [No `else` Return](rules/blocks.md#no-else-return) - - [Control Statements](rules/control_statements.md) - - [Indentation](rules/control_statements.md#indentation) - - [Comments](rules/comments.md) - - [Multi Line](rules/comments.md#multi-line) - - [Single Line](rules/comments.md#single-line) - - [Spacing](rules/comments.md#spacing) - - [Whitespace](rules/whitespace.md) - - [Indentation Character](rules/whitespace.md#indentation-character) - - [Before Blocks](rules/whitespace.md#before-blocks) - - [Around Keywords](rules/whitespace.md#around-keywords) - - [Infix Operator Spacing](rules/whitespace.md#infix-operator-spacing) - - [Newline](rules/whitespace.md#newline) - - [Chains](rules/whitespace.md#chains) - - [After Blocks](rules/whitespace.md#after-blocks) - - [Padded Blocks](rules/whitespace.md#padded-blocks) - - [Inside Parentheses](rules/whitespace.md#inside-parentheses) - - [Inside Brackets](rules/whitespace.md#inside-brackets) - - [Inside Braces](rules/whitespace.md#inside-braces) - - [Maximum Line Length](rules/whitespace.md#maximum-line-length) - - [Commas](rules/commas.md) - - [Leading and Trailing](rules/commas.md#leading-and-trailing) - - [Semicolons](rules/semicolons.md) - - [Type Casting & Coercion](rules/type_casting_and_coercion.md) - - [Explicitness](rules/type_casting_and_coercion.md#explicitness) - - [No Primitive Wrapper Instances](rules/type_casting_and_coercion.md#no-primitive-wrapper-instances) - - [Strings](rules/type_casting_and_coercion.md#strings) - - [Numbers](rules/type_casting_and_coercion.md#numbers) - - [Booleans](rules/type_casting_and_coercion.md#booleans) - - [Bitshift](rules/type_casting_and_coercion.md#Bitshift) - - [Naming Conventions](rules/naming_conventions.md) - - [Descriptive](rules/naming_conventions.md#descriptive) - - [camelCase](rules/naming_conventions.md#camelcase) - - [PascalCase](rules/naming_conventions.md#pascalcase) - - [Underscores](rules/naming_conventions.md#underscores) - - [No `this` Self References](rules/naming_conventions.md#no-this-self-references) - - [Filename Export Matching](rules/naming_conventions.md#filename-export-matching) - - [Function Default Export](rules/naming_conventions.md#function-default-export) - - [Singleton Export](rules/naming_conventions.md#singleton-export) - - [Acronyms And Initialisms](rules/naming_conventions.md#acronyms-and-initialisms) - - [Accessors](rules/accessors.md) - - [Ignore Properties](rules/accessors.md#ignore-properties) - - [Getter And Setter](rules/accessors.md#getter-and-setter) - - [Boolean Prefix](rules/accessors.md#boolean-prefix) - - [Events](rules/events.md) - - [Hash](rules/events.md#hash) - - [ECMAScript 5 Compatibility](rules/ecmascript_5_compatibility.md) - - [ECMAScript 6+ (ES 2015+) Styles](rules/ecmascript_6+_styles.md) - - [TC39 Proposals](rules/ecmascript_6+_styles.md#tc39-proposals) - - [Standard Library](rules/standard_library.md) - - [Number `isNaN`](rules/standard_library.md#number-isnan) - - [Number `isFinite`](rules/standard_library.md#number-isfinite) - - [Testing](rules/testing.md) - - [General Principles](rules/testing.md#general-principles) +### Rules + - [Overview](rules/index.md) + - [Base](rules/types.md) + - [Types](rules/types.md) + - [Primitives](rules/types.md#primitives) + - [Complex](rules/types.md#complex) + - [References](rules/references.md) + - [Prefer `const`](rules/references.md#prefer-const) + - [Disallow `var`](rules/references.md#disallow-var) + - [Block Scope](rules/references.md#block-scope) + - [Objects](rules/objects.md) + - [Now `new`](rules/objects.md#no-new) + - [ES6 Computed Properties](rules/objects.md#es6-computed-properties) + - [ES6 Object Shorthand](rules/objects.md#es6-object-shorthand) + - [ES6 Object Concise](rules/objects.md#es6-object-concise) + - [Grouped Shorthand](rules/objects.md#grouped-shorthand) + - [Quoted Properties](rules/objects.md#quoted-properties) + - [Prototype Builtins](rules/objects.md#prototype-builtins) + - [Rest Spread](rules/objects.md#rest-spread) + - [Arrays](rules/arrays.md) + - [Literals](rules/arrays.md#literals) + - [Push](rules/arrays.md#push) + - [ES6 Array Spreads](rules/arrays.md#es6-array-spreads) + - [Prefer spreads over `from`](rules/arrays.md#prefer-spreads-over-from) + - [Mapping Over Iterables](rules/arrays.md#mapping-over-iterables) + - [Callback Return](rules/arrays.md#callback-return) + - [Line Breaks](rules/arrays.md#line-breaks) + - [Destructuring](rules/destructuring.md) + - [Objects](rules/destructuring.md#objects) + - [Arrays](rules/destructuring.md#arrays) + - [Multiple Return Values](rules/destructuring.md#multiple-return-values) + - [Strings](rules/strings.md) + - [Quotes](rules/strings.md#quotes) + - [Line Length](rules/strings.md#line-length) + - [ES6 Template Literals](rules/strings.md#es6-template-literals) + - [No `eval()`](rules/strings.md#no-eval) + - [Escaping](rules/strings.md#escaping) + - [Functions](rules/functions.md) + - [Declaration](rules/functions.md#declaration) + - [IIFE](rules/functions.md#iife) + - [Block Declaration](rules/functions.md#block-declaration) + - [Prevent `arguments` Shadow](rules/functions.md#prevent-arguments-shadow) + - [ES6 Rest](rules/functions.md#es6-rest) + - [ES6 Default Parameters](rules/functions.md#es6-default-parameters) + - [Default Side Effects](rules/functions.md#default-side-effects) + - [Default Parameter Ordering](rules/functions.md#default-parameter-ordering) + - [Constructor](rules/functions.md#constructor) + - [Signature Spacing](rules/functions.md#signature-spacing) + - [Parameter Mutation](rules/functions.md#parameter-mutation) + - [Parameter Reassign](rules/functions.md#parameter-reassign) + - [ES6 Spread](rules/functions.md#es6-spread) + - [Signature Invocation Indentation](rules/functions.md#signature-invocation-indentation) + - [Arrow Functions](rules/arrow_functions.md) + - [Anonymous Functions](rules/arrow_functions.md#anonymous-functions) + - [Implicit Return](rules/arrow_functions.md#implicit-return) + - [Parentheses Wrap](rules/arrow_functions.md#parentheses-wrap) + - [Single Argument Parentheses](rules/arrow_functions.md#single-argument-parentheses) + - [Comparison Operators Confusion](rules/arrow_functions.md#comparison-operators-confusion) + - [Classes & Constructors](rules/classes_and_constructors.md) + - [Prefer `class`](rules/classes_and_constructors.md#prefer-class) + - [Inheritance](rules/classes_and_constructors.md#inheritance) + - [Chaining](rules/classes_and_constructors.md#chaining) + - [Custom String Representation](rules/classes_and_constructors.md#custom-string-representation) + - [Unnecessary Default Constructor](rules/classes_and_constructors.md#unnecessary-default-constructor) + - [No Duplicate Members](rules/classes_and_constructors.md#no-duplicate-members) + - [Modules](rules/modules.md) + - [Use `import` and `export`](rules/modules.md#use-import-and-export) + - [No Wildcard Import](rules/modules.md#no-wildcard-import) + - [No Export From Import](rules/modules.md#no-export-from-import) + - [No Duplicate Imports](rules/modules.md#no-duplicate-imports) + - [No Mutable Exports](rules/modules.md#no-mutable-exports) + - [Prefer Default Export](rules/modules.md#prefer-default-export) + - [Imports First](rules/modules.md#imports-first) + - [Multiline Import Indentation](rules/modules.md#multiline-import-indentation) + - [No Webpack Loader Syntax](rules/modules.md#no-webpack-loader-syntax) + - [Iterators and Generators](rules/iterators_and_generators.md) + - [No Iterators](rules/iterators_and_generators.md#no-iterators) + - [No Generators](rules/iterators_and_generators.md#no-generators) + - [Spacing](rules/iterators_and_generators.md#spacing) + - [Properties](rules/properties.md) + - [Dot Notation](rules/properties.md#dot-notation) + - [Bracket Notation](rules/properties.md#bracket-notation) + - [Exponentiation Operator](rules/properties.md#exponentiation-operator) + - [Variables](rules/variables.md) + - [Declaration](rules/variables.md#declaration) + - [Declaration Separation](rules/variables.md#declaration-separation) + - [Grouping](rules/variables.md#grouping) + - [Assignment](rules/variables.md#assignment) + - [No Chain Assignment](rules/variables.md#no-chain-assignment) + - [No Unary Increment and Decrement](rules/variables.md#no-unary-increment-and-decrement) + - [Hoisting](rules/hoisting.md) + - [Overview](rules/hoisting.md#overview) + - [Anonymous Function Expressions](rules/hoisting.md#anonymous-function-expressions) + - [Named Function Expressions](rules/hoisting.md#named-function-expressions) + - [Function Declaration](rules/hoisting.md#function-declaration) + - [Comparison Operators & Equality](rules/comparison_operators_and_equality.md) + - [Equality Syntax](rules/comparison_operators_and_equality.md#equality-syntax) + - [Conditional Statements](rules/comparison_operators_and_equality.md#conditional-statements) + - [Shortcuts](rules/comparison_operators_and_equality.md#shortcuts) + - [Switch Blocks](rules/comparison_operators_and_equality.md#switch-blocks) + - [Nested Ternaries](rules/comparison_operators_and_equality.md#nested-ternaries) + - [Avoid Unneeded Ternary](rules/comparison_operators_and_equality.md#avoid-unneeded-ternary) + - [No Mixed Operators](rules/comparison_operators_and_equality.md#no-mixed-operators) + - [Blocks](rules/blocks.md) + - [Braces](rules/blocks.md#braces) + - [Brace Style](rules/blocks.md#brace-style) + - [No `else` Return](rules/blocks.md#no-else-return) + - [Control Statements](rules/control_statements.md) + - [Indentation](rules/control_statements.md#indentation) + - [Comments](rules/comments.md) + - [Multi Line](rules/comments.md#multi-line) + - [Single Line](rules/comments.md#single-line) + - [Spacing](rules/comments.md#spacing) + - [Whitespace](rules/whitespace.md) + - [Indentation Character](rules/whitespace.md#indentation-character) + - [Before Blocks](rules/whitespace.md#before-blocks) + - [Around Keywords](rules/whitespace.md#around-keywords) + - [Infix Operator Spacing](rules/whitespace.md#infix-operator-spacing) + - [Newline](rules/whitespace.md#newline) + - [Chains](rules/whitespace.md#chains) + - [After Blocks](rules/whitespace.md#after-blocks) + - [Padded Blocks](rules/whitespace.md#padded-blocks) + - [Inside Parentheses](rules/whitespace.md#inside-parentheses) + - [Inside Brackets](rules/whitespace.md#inside-brackets) + - [Inside Braces](rules/whitespace.md#inside-braces) + - [Maximum Line Length](rules/whitespace.md#maximum-line-length) + - [Commas](rules/commas.md) + - [Leading and Trailing](rules/commas.md#leading-and-trailing) + - [Semicolons](rules/semicolons.md) + - [Type Casting & Coercion](rules/type_casting_and_coercion.md) + - [Explicitness](rules/type_casting_and_coercion.md#explicitness) + - [No Primitive Wrapper Instances](rules/type_casting_and_coercion.md#no-primitive-wrapper-instances) + - [Strings](rules/type_casting_and_coercion.md#strings) + - [Numbers](rules/type_casting_and_coercion.md#numbers) + - [Booleans](rules/type_casting_and_coercion.md#booleans) + - [Bitshift](rules/type_casting_and_coercion.md#Bitshift) + - [Naming Conventions](rules/naming_conventions.md) + - [Descriptive](rules/naming_conventions.md#descriptive) + - [camelCase](rules/naming_conventions.md#camelcase) + - [PascalCase](rules/naming_conventions.md#pascalcase) + - [Underscores](rules/naming_conventions.md#underscores) + - [No `this` Self References](rules/naming_conventions.md#no-this-self-references) + - [Filename Export Matching](rules/naming_conventions.md#filename-export-matching) + - [Function Default Export](rules/naming_conventions.md#function-default-export) + - [Singleton Export](rules/naming_conventions.md#singleton-export) + - [Acronyms And Initialisms](rules/naming_conventions.md#acronyms-and-initialisms) + - [Accessors](rules/accessors.md) + - [Ignore Properties](rules/accessors.md#ignore-properties) + - [Getter And Setter](rules/accessors.md#getter-and-setter) + - [Boolean Prefix](rules/accessors.md#boolean-prefix) + - [Events](rules/events.md) + - [Hash](rules/events.md#hash) + - [ECMAScript 5 Compatibility](rules/ecmascript_5_compatibility.md) + - [ECMAScript 6+ (ES 2015+) Styles](rules/ecmascript_6+_styles.md) + - [TC39 Proposals](rules/ecmascript_6+_styles.md#tc39-proposals) + - [Standard Library](rules/standard_library.md) + - [Number `isNaN`](rules/standard_library.md#number-isnan) + - [Number `isFinite`](rules/standard_library.md#number-isfinite) + - [Testing](rules/testing.md) + - [General Principles](rules/testing.md#general-principles) + - [React](rules/react/index.md) + - [Accessibility A11Y](rules/react/accessibility_a11y.md) + - [`img` Alternate Text](rules/react/accessibility_a11y.md#img-alternate-text) + - [No Redundant `img` Alternate Text](rules/react/accessibility_a11y.md#no-redundant-img-alternate-text) + - [Valid ARIA Roles](rules/react/accessibility_a11y.md#valid-aria-roles) + - [No `accessKey`](rules/react/accessibility_a11y.md#no-accesskey) + - [Blocks](rules/react/blocks.md) + - [Wrap Multiline JSX](rules/react/blocks.md#wrap-multiline-jsx) + - [Classes & Constructors](rules/react/classes_and_constructors.md) + - [`class` And Stateless](rules/react/classes_and_constructors.md#class-and-stateless) + - [Higher-Order Components](rules/react/higher_order_components.md) + - [Display Name](rules/react/higher_order_components.md#display-name) + - [Methods](rules/react/methods.md) + - [Prefer Arrow Functions Over `bind`](rules/react/methods.md#prefer-arrow-functions-over-bind) + - [No Binding Or Arrow Functions In Render](rules/react/methods.md#no-binding-or-arrow-functions-in-render) + - [No Underscore Prefix](rules/react/methods.md#no-underscore-prefix) + - [Render Return](rules/react/methods.md#render-return) + - [Naming Conventions](rules/react/naming_conventions.md) + - [One Component Per File](rules/react/naming_conventions.md#one-component-per-file) + - [JSX File Extension](rules/react/naming_conventions.md#jsx-file-extension) + - [File And Component Folder](rules/react/naming_conventions.md#file-and-component-folder) + - [References](rules/react/naming_conventions.md#references) + - [Ordering](rules/react/ordering.md) + - [Component Methods And Properties](rules/react/ordering.md#component-methods-and-properties) + - [Props](rules/react/props.md) + - [Indentation](rules/react/props.md#indentation) + - [Avoid DOM Names](rules/react/props.md#avoid-dom-names) + - [Capitalization](rules/react/props.md#capitalization) + - [Boolean Attributes Notation](rules/react/props.md#boolean-attributes-notation) + - [No Index As `key`](rules/react/props.md#no-index-as-key) + - [Explicit Default Props](rules/react/props.md#explicit-default-props) + - [Spread Props](rules/react/props.md#spread-props) + - [Ref Callbacks](rules/react/props.md#ref-callbacks) + - [Strings](rules/react/strings.md) + - [Quotes](rules/react/strings.md#quotes) + - [Tags](rules/react/tags.md) + - [Self-Closing](rules/react/tags.md#self-closing) + - [Closing Bracket Indentation](rules/react/tags.md#closing-bracket-indentation) + - [Whitespace](rules/react/whitespace.md) + - [Self-Closing Tags](rules/react/whitespace.md#self-closing-tags) + - [Curly Braces Padding](rules/react/whitespace.md#curly-braces-padding) ### Development - [Requirements](development/requirements.md) diff --git a/src/assets/react-logo.png b/src/assets/react-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac3e7b4b8d36a5307e279b88bcf8b4858831275 GIT binary patch literal 216799 zcmZ^Le>~IqANU)Ub0wcUpG#4kPruI9NHst5tIl;!LgmL8MyX`WkF03J%ysFy5=Em7 zbwV~w7>2Q{4w)bMG4pfWW#;#4Giz=5zSj5geLOzq^L;(;4`+M+{_%SLc;)sfHz(~c z^}mE5NZa}6AJ0IL?r#vZA?1q=;5XM|*Xcvhw~+IX$2_l-XNN{q(T zZO66ZnSUCbkHviK#Ql=qu%a3C;H32GNb`|S@e+Y)-+4VMaOUGu-C<4$VJ-l1`4wQ;V=I2Uc}r%iEXNVgJW14_OZdp&$2ixcHcKfmu&ioQsK z9`FqAcuw-5@Z;eVbDXHF$+8Nxbxo3jkc_+DE;4|#=kO~a@33MM7`js?Mo%myxD)vDE_`> z0+8CUui3>($A5YQi>ySJjn3E^_82!Pm-po1ah_IO%UQp=8e|8R4)*ye;X#Sh}1*jmvBV0kNJPo zO{!;>ep7>df&>#5@bjZ+>pzgo1x>}SV=*5NO3gCj(}h}a@rt?%W)|FeITtN!*T0 zcf!YGbwBQ)hRt9(qCb#tMq-W3RB<}_zM*-sjX9!aeQ~l@9CR#e^f-K?ha(z9vDDj;imQQ{T+W$g3G?W?-EI{S&)BV_z zSQSx%M?%{N2Jgf{iPN6+fnhzBaY~IB-{R>KULbb0rL5I z-$2ntTpXS30~-b69fd_llyHWr(ib44|N9X6Z_5$MIQcqzt0#ZW{-H0@;Y9u19wp#4 z?|_0zOC~ZX{B7{@aVE_4C6RaKW1lSEgF9H-yDFSGb2Lyeem)1oTxw7*?;$Kd>)eL3ri^$ zM=kN*sX+&}IU4!|qXJ;>))6Y45!`Aj|2O2DYq2TXDrnj=dWUAsGGANv zGu<{1IsZ2HE(G3-ZwtVG3^BR3bBS5Mo8 zLr_-OZW~VOUQTA(-uJO52JgpLB`IjUovH%Z@G||p*fV<~Wr5&3HOS4y4~L&izfgz# zi;P#ONS0B(gt-5i7jEZZ-QvNzBD?WH1T|%edP3-b{jSOF_43!OySoc4|SV zU@;{mgeNC-t_^&jQNZC+_??(G9@FXHkk5Yvf(`KT z+nlJubp#z}4`G{rxx4Vi`c=Tn%d3sYDL<>8@hQKkx(JCv?E^f5Z*A#C8lHkhl#q;0 zj#Z}|j@aS1k8xV48ePPa7()1|;Cqi)y9uF&Hq0d37aeR#Y|26CfB+fp3rjcy3vnN_ zymwd_a0-?(XVU&BqDl@bPx|1cBMC4`m*L$vLTw*(~9<(64M> zDE*;LC2fs84r>d;v}ozp6q~_Njt!?^w|Y}^g?7^rOX>4{nIYcnVtIsK=m&7=ZJx4Q zRG}ToNwQ@k8!QuDK6M{lDAgA|;RWkJCtqjUVOp}Nd?($H+5dt02}`vZ&O(p|S04xS z^C|k``&$038Kf89uv^@w;VS9(5Om~{jET0spx)^Gj33^Dq$@58AFhUkATOBv6ydAD z?i6{JzBrYK0XJ2M0d`0~>O9^5K;o#;1JlvWkVTYg$nK|(4{}6$BW9y6wdEbf<_VsK z6Q7uf^-$T4l8Hucs_vfmevaK7`1nWUn`ArF~2*&W3<$mRz#oW z#fCx9&=bB6<-)6V1izmL6-aH|QK3Xd)2xG+aINc12VDk5_NN>d=a@f0#P&*K%Odkz zUhIrL?`?kQ?z5P9%bQVk?c*RfBA5S=^YP9@gVu1iG5vvo1ho%hJ@k1)>&-+U*gAXO z*B$F#oT?d2&7EVSR&fkLKD)rh(L^>+bdfx$3LK@GH+!-JVrg5UClqk8BJX9fBGx(2 zbfq3blLGKGPy(+yTaK~Q>H?o-RPy4VUz8a!x!TbFe9{ty|4d6^m|D3UaB3eTP)Juz z^R@<}RxST08I^hZ%3M;zqiRB=m-|6E6*#%P41O&?TXJ!Qw@)Pt5OKYt4lRFjMsJ=m zl@k>i)^ZI``w!&voq+!dK3=9T&Yu^?Ix}NW2p_7biB<3O#!Z>={Ye?UjR{n9r#|Ze zh7_$%WK@xIsm2MPuTyzIwv)0(1p`@l8t~9nr+~t@r1D>C`QOVp%um`L2#b}Ve4zuO6~ljkQ~=Y9 zNr-WIOmJK-wHQCbMCh%8g&>cE6I~-_uU#HjyHQ9>c$yiMneH2ofH}F3*}+1WKmC~f z&`*jAR)IQsjBTu2^MzR`LGDSnEth_;K`gyEkdM5V&5HHyjVL}}Txzour9?2=fTr3x7S67H{crVTF0dJ9i>a4gLV z@_L#Ui@TMPF=>y2GPxUJXUu@tN55jLQCO-wN9XX{`ov4ow>JV!zP6-gyG4 zun)vAa6-Duz0SIKU}Cp!&7^54?g*%9yjF-6ZV%<0lexiieoDv{}<i>TXBB;BpOvo}@1$&5HTHewPwU?6&NWS`|MQ(pzLKL?pJy7WWct|e}h zlH|-+P-zee+?4xtuOm)$^W~RH_;@B_*J{;3Lyqjfb!%Eooe{j$Lli!dNBtTCmolgP zg}m^d`yIN?AtpiZMEAtu ziC@9*RG>=WY>&D?|BPoap(E(?7En*2{fVG!OHFYd8`YROQKjwI}jy zz=NuMY43jNB-2gJ=cw`))!qBPH0@c~)EIB(->YGW?bpH=pBs;6u`XP59yDZ@SX|8D zQNJOsFEg>>rgGiKM)o)l6>?@rW9ce|SfpzQ+pI5@GoR7BJ5(+m1O+0KyC1@$;owRJ zsm(s^+1$W!`UAUIn$K#QP-#c1$KJ?e0T249M&9f@RDKha3xlxd+Q9$ebg$oX?*4T6 zV*9Oh6|;eW4Hz*iaOu7`g@Lo5GP$OZuEqILeeol$`ifnlPFK-Fx=MY-a`$ULty`07 z>TFYGEbwHjF%btK-Gdi9(Xyk`nDkw9lTGy%(l1r&=CNjP@xr`b*Y2VSP%gw56Zq35v%Q~4(FRvK+6()TqQ~GFC_Ks zjr`#MpkOeA3Ti?G9GVG&)gjoob+2=O?)H@bDD+aP^2*|n_i|V_vCfZg*&|?b32F$s ztZ5LHtuN}TK@@{rnmCev%mjL7TWd> zPm5S>TH;^Tq!CP;v@Y;q#xq=4ivfDKjRYltE*B_g1S!!82|stoEi#eq*?5}DEP?n} zpXj!h|ACBWvhWrzrp-u#nu7e3A1cn#6*y^3(ysP|LMiyw>T?IvVy;``W9odTcdxSe z+aAiv3|)6FQJ!C*#ekyG{xc7 zh3lP>^+}3wAzWuQP?;5&q##Y_36K0AY^ekDjEY!V95MfD^s*nl{))O#-5ELF;NciO z#}ui!?G{IN;hxC*{trlb<{`akLZNh8(?{Pi2i&Q14J*4tt&bE*2UYTEW&+HN%vvAi zjBIGy9w?YV;2SqUTl$paiD&b2)B_UjMr@->KtdDTRJq&OKQ+5xF~Q4~(ite|Y5lic zim};D!|3i%Ujxyr!OQ@Bqe{kyCVDd6V;ZeYolnp=(I05w8@E6cyc3(B8)J0)XC73} z#y^qnQxPd>`L3)&%YSReu7C#P1OzN*cIkI0(+2Q~Zi}rIUUBZ`$3_XcDvrxi__Qx>!n84+_6)UEJi~9UtTJfKV&!Qx=jK6|sWsE91_o>;1Lc88IqA0}}^s zgVH!6KV{)AM?Sd9$?lh5Q{nGGJk06j*e^A^La_$oBsAlSkgLf$zstb`<`gs9`QTam z9E(R&(F1V`%@C|JO>%iqRZr_p-Mc_YhOSz&SBjN-U;`K-hHhdbCEQ%?7tqNbWlBB= zXwArvD#tc7UE+>;#jGbRB8z26+L9lEV6W$NQ}|*|6k1yrlx*FQRG*(zUjT{>N0hH4 z$_q4`!6*+Ht%StoWP-7U4Z2NE;rF7gE07kPR2nzaWzTzI&%%*XDOII<3c@$p#;EJP z+zoQ{tJp?wC_2;F{W)pl-m=(y*(GHOo{P3FMWRjzZ!YmQ3~)3&NHQGsBF)_Wxv@LVxRYvZMm3LkPKxnn%cr|j zJQN=ExNGVw7elY;i*71gGsGrVZ79Q$USBP5cvvuiQw}t6!O7N@-eMd0#p)yG+hO}4Ob%#Ps2K&lkxyhZ?Zw9nZp`A`M8?rDc~0bT+|O@Zo=UMKA8{k zY`mvOs?lxD=r(gs)G6(OyuK(VZ)dIPMTYo-QTFl>S~j?Dc@derSs34|!pbMVH$2@M zsB}k6 zJr>E z_&8Z#G@&p0_3?!a-cGAfSj=S23dvFBRcB_OiOFL5Gv+#6^~J<=?^X8iUyjs08hllcby%l{;&n zHEkb^Re)-8x0FJ1cMEbqF+?*L^krHi*lO@`L2Syv8OB2Oa#n4wT3D#2#QumXnGQ4| zOkIyj=f^iTZTEo1%*FpodYK9)G%PgEj}C?foq@>4q_}5I!zI#wHBT=v795fOQ5pZq zjb7gfdU|hcAusQ^SIGsbzWAONSvw3BSUetrH!@gFh`1w|lSok6yrW;$v4e5-8NbYe!sx+myQleT;BlRf0+z1rL@ zdZ|UW33wr0v{!BWhXUCidm^9uA!eQ66OWiFnl>$|^1jRrPG&+5Yap$vvJ(Mx+x$f) zHaN!{wql={y(b_5q}}IAe`RA;(WAqZ5;7;BOA-=BGO8=e4v*f z8z>A`xvk5VD!1Dv-Wjfqb3~2EeGV9ddn%ZBD%fHVOW$VDpY9fkjo z78x-$ZGgQbysx(B@@{U4am0KB_1V6~n_xzJEu8RFnt5Pv+|~FKOYy>YDt=uyhs?1{ z+&GMO)|Q>j&IW4&t%=t-1|b>ePglfCEA|Bh1l#*yWPILEjgxJeOzMTccqeCvsn7HL z0jl&m*rC|s)dfDVBJ)_Oy-E=R`9%PBNVMq2`VvpJe8z)uOt|w;@?d&4rtK+w;;t6? z!c^-gK$N$b!v0NrV0(PKY%WW*}QJ@Jjn*ZHW`Vz-z%b{amSTaP4J)U zNH(o6m99k=^TT2C1$*T>_P>u`DZhy$YM;-j%3zv1E!uy%|G5}@1KAGJ$-9wG##LF9 zzYi66QuvixbQ!78lbup4{1z7DXzvl66=UNQG&XlegTGzq68XC+)hVYY^%^E%-!QtM)_k<1D%Gn(VN5lTu z?LG%9h8f6)!-?X?`efWCq3TGc>;kf3c&U8xpyhZ71}}t;+AF8w~xeEU$Qn3-PadSf*r<6Xp13y;^lnBi{g?A z6f;EyBWohmx0 zRqmd?U_C?+P?4sOSmgbI!91S)gGycQU*T)WTl!_O++udf6| z?7n1qgT=Ibb5|66+=e3(4WwjXoIMkO_8)*7$$FGVdzE!Kh+ro|94 zng#~0qzLz*=*qjv)=$AMn(3t0e^R+Om(9%AIkJ13^hL#=P7tc3A8x@8j{E9n=JGKu zY`g=0wFZdPDw6zaV@!o} zn6ZyRlI~HJYk@o+7v-pM7J@~Cyc`f~bglnvl5Lnew)$jtxBR|}k12j+=bjw<&*DKz z2GhuTHWCaUfKws8_a3-`R9J8_Z!Op_mK_H35Ln^KphbGkjsVB-QTcO6Jx88-;x_-B zrr}2EPL(FPrZ+QTo}d+r`&2lXI3^JsDWY$Qp+`4Hw@jt?>WFhz@XP@O|iIEuw}ra@-z%G$(fb6S_^H?-`$l+pW# zv`bkGH}BZeooRV8sEK|(z7UD>4;i0erdXZ)iH*|DZ0AoE57(~YloY_Os|{>Gk(zAj z(sxPD`sE49)=c?b^c4ef`(u6=Gv&zsyAOw%Nc++FD*B}WPw;vHES`lsH>Vw*c%+-z z!@tymjdciL9S%W{O865aW+*ckN4LqPnzJILp|_*kj6DrGjvA0>z8dyx7jjdL+=6oG zKWpQ>va<8mf8F{`!CzXNE{tEL>GV8CI3zG)Q1eank(FCRyaf%;iIH?{O z&~~I)x8;+#(Ya?~$mYKN)id#xXTyuf=XEoO0DtyOBb5nsS#c71WT{&cb@ddWg$*U$ z>I2Kf1Fw+v4FSrFVCQCRFew0Zx>{|eTM8SC&Fdugg9kF2Y$MbU)o3P{dbk2!$2i%1^}xgop_=ALH3@=F8l`r@oQd+{+2WBom9SfB*gztPpZ%x z4B?H!GVl6^pANR~kGFuYfPHWBK%Mk{(#^x;E%S#OKE^+l2CK{!NpJSwavS?Y@`v8wS9%<+g6U5{?wa12VGo2*%9cAy8Q6;=HqD%^Ht38HQ zeo1+Q%p8ws%V8QF+Mmn;TR_uEdnq#Aji%h3yht)_+HR4!tv4>_ELcTLPbcMfiTbtL zmd;sDzyQQ*bY+`BSjyJ}bS>seblIT!(ihe1i`(aIj^24I1y6PGMwtGy$Z&s{Fo!i8 znqwe-pj>vvlh007l6&Kq_3G}-TC7GIv_!8DSJx}nt2Pd#nN2iG2yJDR7885mqwqH~Qx5JgF_u1J8T!m7DTF{*tI_&gg$2$N82I~s z?LDy$=bliShAB6H3lzh2tLC}vx9PT73aP~;hWV4Qc&aI6^V4`hSHbH2VKo|Lap`~#~jdYzOoof z2WuFU5rMO~f2D+DTO|ET`K=JwAou;@jyXf}uhwGB8Zq-S3pbivx}MnnHtH1p@?%!V z+j@(MkDslOewM2A_vHwwb+_$et8!No|7#* zw6SvgX_(%%(H)Pu9iWz7v~Maq-n9Kl;y{-|vaGDxoAvrn2Im|}WWK1;X1EBQRL0-? zADcJFG@fMEFslKrsvp=eDnD7b-}o{2BG}0^Z?#}&R$tB4YezVGQ}|yoQ%uXgNh*#W zHNGSa=ZX3m*~G+S|Kb->n7S-wqh&x=)( z)A98z`zc1uj4VxrJl?GHk>>ar|JvZo3edOO@gfRm0VBM=)(?K2<9}% zmPl_Jx{h&9@+qoib|Mzp>8ml@Na~8H5{r{Ln2p8;$aa|ac%r9U-irv}+( z2Gc60sJ^k;KOo2Q`@}l@ltONQ^t`_vD(F>5hZnN5ai2p%<+Fyj(IQ<#J^5oTW@i>Raet0p|Ahu8lg#-TbDLmw_-MR6dS@$U9zc0V*$^;&+-rRLpd1s z35lXmwAA-C-pj^e)SFp)G_fSkF-ycy>v$@mXW4kBsO+MBzE3zj9`snmn(k89$P}^q zu+J1HyU*agViBf+%&Owo_x-CS^%x?vucdteja|MVsa5~0fb35&EU6H9rfgXqNj?-4 zBcrjdg~7+v<}WuD2)1dEU6DT-UAAFdk+haa*2(_v!~PA)i(kb4B%!F^=j#)kh6p=k&{02GP9Js<3Q7Mdq9eaVz~k&={~)ogjJpMo#`3!H;oeLN zD+uofbI9!*NM37%_Vf^)_dfW5c1Gpg#P5LE1`ENTC4zrM;uG&I`L{VUtuGgBE8-&H z;U1=;SVMni0qcoEO?IQzC{?9wymz|umge>S%+d+6znyoG8oqQ;>A-E>A6;cB0FOF3 zn}+c~1vJp~85va@v65-8^&7b24z&&{U2=;Ptm46>XM&$JY|~MJ*l-k(^Vr02ktD86 zG21=Kq=pIb0O6D64~rTn;`K~iPii} zQI(pZGmUEE5CE|Ki4X5BsDGi@-_zfY^OR5y{$`S5GU}8(m|K}+<4yan?39O_;n;RR z1Qz9O=e^o3g0wo?Ic%e!X|%>mZ}`AI#Ya1DAUlt1kTLqz9u#i+Ic$z4%Mks#z_tW$ zmw0pN4Xm}ZoDSzdn0}$sAi5k7G=Ih$ZVV~GQgB+$`U0r3(Ek=1+%+AII z&sc{MmwK)<^IT;O)8DN3{zEVVXw9HI<|xf7qldfU9e3D9PPCG_VG6#O^`$GramJde zxZCr5t}>hK$t<|sLe8qr5pU?XN$yQItIBEiqU|j^Xs5H!VYIK09O9+=oOf$Lr3qleF6dHwgs>nL1ZpQk1MPbG?L zGVAJs39`o;^_{O{5M-|=C6c#5AGcWKp-OAvwz0OJOuHidaqDkwaO03X|HY@QK5+$y zs#WaYd1r%_u#W>8+%;A`-Hy91%bTQMi*9%U#5F$1f5R8#G+l1pNad!*S7nEggb#n3 zsjQmO*`#JrmSwbctj*6)hia(u%=7>y$3ye_znKN7K)W+z|C(m_W{I3M$cg$TCJ~`^ z45Z}uavfzNw-0^R&|hF%g@+|NUTn42ASYm^9|Ex;LNQ$;=A>WPGej1aqFe!0+%yz2hJP&XnpWK??0k$B zi!{4trYq(G7;zGxM91(}ZNJVeO)Fja8SHZT+;|SaYChOrf^;_tclg1dc-xN=C>GhE1T-{<@?=s4nuf*KY|6ic*3?854S#HCq*}$U83=L z1;dqinA%{v&ZfvcrG?fh6ho8M@*a4c)6;6?NGmdN@U}ZcG^@y-p_|am9E{+|Mile0 zf6|;So@m!)wRBE$LOt$H`rgfvrlmz(uN0NB>Q>jzkPX*2F-i8mc5Xykk-)e_V5Vuc z5AH?_d&8$9(rD*eD>VCclHZc0l_S8vcdIp=?2JjzO~If$_EMZwL*bdAim&sO%eezS zDl6Q{2+tBVsdcy{cc(jq0~eH_MU7Lq3o_KDbV3n+hgw5{iO_J2?C(Cby!E@)625nk zD9*@sPF|Dj1lG3t-ovm5zf2%vJ%SfLOl+oBXGetF3H5`FJV$R0dWQ!xA3(8>Mg3~v z4dh|I)>{AQ65kU!y`7oz;JjOBwFle=7W|YARt|7Cogx(55z`SiNFGs(KFVpw9g`eU z-~LdCe}o@0QG28W|7V#5fTkqwCk zs8yiC$yq4`Lf(6meyFvxQ?h^nv{xhh=`D6f&G0C#&|2rYp$Y5CP^+{$N1BnFub;ni ziuvGHQ+lpp5RW3fHn)=zt>ml1BxT#!rT}*j!V^`-j?%4DOcNCKrKL#V5xRZiHnk3q z}bqWQqExz1CSNjUltHEhtcAt?_&g9_73I5oec;0xl8XBi>me z7*^}>=EQi<$nH%)^v}2MGz@B>%rV0{+Np@I#(r(L4j~@823tBSu~NAK&~`Q&wgi-u z4em1dY%!oy%S6JtB z)L(xMw7ViZ7oiFd*90!!5Xnq}G|?UG4OS7{uJjcjJGWJ+peH9f>)1wiw8A0p6y2cU z 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 BqVxa& literal 0 HcmV?d00001 diff --git a/src/rules/arrays.md b/src/rules/arrays.md index b8087a9..0f18eba 100644 --- a/src/rules/arrays.md +++ b/src/rules/arrays.md @@ -88,7 +88,7 @@ const winter = ["snow", "frost"]; const nodes = [...winter]; ``` -## Prefer `from` over spreads for mapping of iterables +## Mapping Over Iterables Use [`Array.from`][mdn-array-from] instead of spread `...` for mapping over iterables. This avoids creating an intermediate array. diff --git a/src/rules/arrow_functions.md b/src/rules/arrow_functions.md index 34cc65a..b87e45f 100644 --- a/src/rules/arrow_functions.md +++ b/src/rules/arrow_functions.md @@ -4,7 +4,7 @@ Use arrow function notation for anonymous functions e.g. when passing an inline When dealing with a fairly complicated function, it is recommended to move that logic out into its own named function expression. -> ESLint: [prefer-arrow-callback][eslint-prefer-arrow-callback] and [arrow-spacing][eslint-arrow-spacing] +> ESLint: [prefer-arrow-callback][eslint/prefer-arrow-callback] and [arrow-spacing][eslint/arrow-spacing] ###### Examples @@ -30,7 +30,7 @@ When dealing with a fairly complicated function, it is recommended to move that If the function body consists of a single statement returning an [expression][mdn-expressions_and_operators] without side effects, omit the braces and use the implicit return. Otherwise use a `return` statement. This rule is syntactic sugar and significantly increases the readability when multiple functions are chained together. -> ESLint: [arrow-parens][eslint-arrow-parens] and [arrow-body-style][eslint-arrow-body-style] +> ESLint: [arrow-parens][eslint/arrow-parens] and [arrow-body-style][eslint/arrow-body-style] ###### Examples @@ -117,7 +117,7 @@ In case the expression spans over multiple lines, wrap it in parentheses for bet If a function takes a single argument and doesn't use braces, omit the parentheses. Otherwise, always include parentheses around arguments for clarity and consistency. -> ESLint: [arrow-parens][eslint-arrow-parens] +> ESLint: [arrow-parens][eslint/arrow-parens] ###### Examples @@ -150,7 +150,7 @@ If a function takes a single argument and doesn't use braces, omit the parenthes Avoid confusing arrow function syntax `=>` with comparison operators (`<=`, `>=`). -> ESLint: [no-confusing-arrow][eslint-no-confusing-arrow] +> ESLint: [no-confusing-arrow][eslint/no-confusing-arrow] ###### Examples @@ -177,9 +177,9 @@ const elementDensity = element => { }; ``` -[eslint-arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style -[eslint-arrow-parens]: https://eslint.org/docs/rules/arrow-parens -[eslint-arrow-spacing]: https://eslint.org/docs/rules/arrow-spacing -[eslint-no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow -[eslint-prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback +[eslint/arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style +[eslint/arrow-parens]: https://eslint.org/docs/rules/arrow-parens +[eslint/arrow-spacing]: https://eslint.org/docs/rules/arrow-spacing +[eslint/no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow +[eslint/prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback [mdn-expressions_and_operators]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions diff --git a/src/rules/blocks.md b/src/rules/blocks.md index dfcfc70..408c3f5 100644 --- a/src/rules/blocks.md +++ b/src/rules/blocks.md @@ -2,7 +2,7 @@ Use braces with all multi-line blocks. -> ESLint: [nonblock-statement-body-position][eslint-nonblock-statement-body-position] +> ESLint: [nonblock-statement-body-position][eslint/nonblock-statement-body-position] ###### Examples @@ -39,7 +39,7 @@ function snow() { When using multi-line blocks with `if` and `else`, put the `else` on the same line as the `if` block's closing brace. -> ESLint: [brace-style][eslint-brace-style] +> ESLint: [brace-style][eslint/brace-style] ###### Examples @@ -70,7 +70,7 @@ if (winter) { If an `if` block always executes a `return` statement, the subsequent `else` block is unnecessary. A `return` in an `else if` block following an `if` block that contains a `return` can be separated into multiple `if` blocks. -> ESLint: [no-else-return][eslint-no-else-return] +> ESLint: [no-else-return][eslint/no-else-return] ###### Examples @@ -144,6 +144,6 @@ function winter(snow) { } ``` -[eslint-brace-style]: https://eslint.org/docs/rules/brace-style -[eslint-no-else-return]: https://eslint.org/docs/rules/no-else-return -[eslint-nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position +[eslint/brace-style]: https://eslint.org/docs/rules/brace-style +[eslint/no-else-return]: https://eslint.org/docs/rules/no-else-return +[eslint/nonblock-statement-body-position]: https://eslint.org/docs/rules/nonblock-statement-body-position diff --git a/src/rules/classes_and_constructors.md b/src/rules/classes_and_constructors.md index 7b1a8c0..deef2d4 100644 --- a/src/rules/classes_and_constructors.md +++ b/src/rules/classes_and_constructors.md @@ -134,7 +134,7 @@ class Snow { Classes have a default constructor if one is not specified. An empty constructor function or one that just delegates to a parent class is unnecessary. -> ESLint: [no-useless-constructor][eslint-no-useless-constructor] +> ESLint: [no-useless-constructor][eslint/no-useless-constructor] ###### Examples @@ -173,7 +173,7 @@ class Snowball extends Snow { Avoid duplicate class members. Duplicate class member declarations will silently prefer the last one - having duplicates is almost certainly a bug. -> ESLint: [no-dupe-class-members][eslint-no-dupe-class-members] +> ESLint: [no-dupe-class-members][eslint/no-dupe-class-members] ###### Examples @@ -200,5 +200,5 @@ class Snow { } ``` -[eslint-no-dupe-class-members]: https://eslint.org/docs/rules/no-dupe-class-members -[eslint-no-useless-constructor]: https://eslint.org/docs/rules/no-useless-constructor +[eslint/no-dupe-class-members]: https://eslint.org/docs/rules/no-dupe-class-members +[eslint/no-useless-constructor]: https://eslint.org/docs/rules/no-useless-constructor diff --git a/src/rules/commas.md b/src/rules/commas.md index f30b386..4c22844 100644 --- a/src/rules/commas.md +++ b/src/rules/commas.md @@ -12,7 +12,7 @@ function snow(...flakes,) {} // SyntaxError: parameter after rest parameter (...flakes,) => {} // SyntaxError: expected closing parenthesis, got ',' ``` -> ESLint: [comma-style][eslint-comma-style] and [comma-dangle][eslint-comma-dangle] +> ESLint: [comma-style][eslint/comma-style] and [comma-dangle][eslint/comma-dangle] ###### Examples @@ -72,8 +72,8 @@ const winter = { ``` -[eslint-comma-dangle]: https://eslint.org/docs/rules/comma-dangle -[eslint-comma-style]: https://eslint.org/docs/rules/comma-style +[eslint/comma-dangle]: https://eslint.org/docs/rules/comma-dangle +[eslint/comma-style]: https://eslint.org/docs/rules/comma-style [json-notation]: https://www.json.org [mdn-trailing_commas]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas [mdn-trailing_commas-illegal]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Trailing_commas#Illegal_trailing_commas diff --git a/src/rules/comments.md b/src/rules/comments.md index 02acc97..db0b395 100644 --- a/src/rules/comments.md +++ b/src/rules/comments.md @@ -85,7 +85,7 @@ function getWinterElement() { Start all comments with a space to make it easier to read. -> ESLint: [spaced-comment][eslint-spaced-comment] +> ESLint: [spaced-comment][eslint/spaced-comment] ###### Examples @@ -131,4 +131,4 @@ function getElement(season) { ## -[eslint-spaced-comment]: https://eslint.org/docs/rules/spaced-comment +[eslint/spaced-comment]: https://eslint.org/docs/rules/spaced-comment diff --git a/src/rules/comparison_operators_and_equality.md b/src/rules/comparison_operators_and_equality.md index 4d74f23..e990c78 100644 --- a/src/rules/comparison_operators_and_equality.md +++ b/src/rules/comparison_operators_and_equality.md @@ -2,7 +2,7 @@ Use `===` and `!==` instead of `==` and `!=`. -> ESLint: [eqeqeq][eslint-eqeqeq] +> ESLint: [eqeqeq][eslint/eqeqeq] ###### References @@ -99,7 +99,7 @@ if (snowflakes.length > 0) { Use braces to create blocks in `case` and `default` clauses that contain lexical declarations like e.g. `let`, `const`, `function`, and `class`. Lexical declarations are visible in the entire `switch` block but only get initialized when assigned, which only happens when its `case` is reached. This causes problems when multiple `case` clauses attempt to define the same thing. -> ESLint: [no-case-declarations][eslint-no-case-declarations] +> ESLint: [no-case-declarations][eslint/no-case-declarations] ###### Examples @@ -154,7 +154,7 @@ switch (winter) { Ternaries should not be nested and generally be single line expressions. -> ESLint: [no-nested-ternary][eslint-no-nested-ternary] +> ESLint: [no-nested-ternary][eslint/no-nested-ternary] ###### Examples @@ -189,7 +189,7 @@ const winter = snow > frost ? "snow" : maybeIce; Avoid unneeded ternary statements. -> ESLint: [no-unneeded-ternary][eslint-no-unneeded-ternary] +> ESLint: [no-unneeded-ternary][eslint/no-unneeded-ternary] ###### Examples @@ -213,7 +213,7 @@ const snow = !negativeTemperature; When mixing operators, enclose them in parentheses. The only exception is the standard arithmetic operators (`+`, `-`, `*`, `/`) since their precedence is broadly understood. This improves readability and clarifies the developer's intention. -> ESLint: [no-mixed-operators][eslint-no-mixed-operators] +> ESLint: [no-mixed-operators][eslint/no-mixed-operators] ###### Examples @@ -254,9 +254,9 @@ if (winter || (frost && snow)) { const season = winter + frost / snow * ice; ``` -[eslint-eqeqeq]: https://eslint.org/docs/rules/eqeqeq -[eslint-no-case-declarations]: https://eslint.org/docs/rules/no-case-declarations -[eslint-no-mixed-operators]: https://eslint.org/docs/rules/no-mixed-operators -[eslint-no-nested-ternary]: https://eslint.org/docs/rules/no-nested-ternary -[eslint-no-unneeded-ternary]: https://eslint.org/docs/rules/no-unneeded-ternary +[eslint/eqeqeq]: https://eslint.org/docs/rules/eqeqeq +[eslint/no-case-declarations]: https://eslint.org/docs/rules/no-case-declarations +[eslint/no-mixed-operators]: https://eslint.org/docs/rules/no-mixed-operators +[eslint/no-nested-ternary]: https://eslint.org/docs/rules/no-nested-ternary +[eslint/no-unneeded-ternary]: https://eslint.org/docs/rules/no-unneeded-ternary [ref-truth_equality_and_javascript]: https://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/#more-2108 diff --git a/src/rules/destructuring.md b/src/rules/destructuring.md index 5760c09..b62998a 100644 --- a/src/rules/destructuring.md +++ b/src/rules/destructuring.md @@ -2,7 +2,7 @@ Use object destructuring when accessing and using multiple properties of an object. Destructuring avoids the usage of temporary references for those properties. -> ESLint: [prefer-destructuring][eslint-prefer-destructuring] +> ESLint: [prefer-destructuring][eslint/prefer-destructuring] ###### Examples @@ -38,7 +38,7 @@ function getSeasonElement({ name, element }) { Use array destructuring. -> ESLint: [prefer-destructuring][eslint-prefer-destructuring] +> ESLint: [prefer-destructuring][eslint/prefer-destructuring] ###### Examples @@ -59,7 +59,7 @@ const winter = ["snow", "frost", "ice"]; const [snow, frost] = winter; ``` -## Prefer object destructuring over array for multiple return values +## Multiple Return Values Use object destructuring for multiple return values instead of array destructuring. New properties can not be added over time or the order of item can not be changed without breaking call sites. @@ -89,4 +89,4 @@ function processElements(elements) { const { snow, ice } = processElements(elements); ``` -[eslint-prefer-destructuring]: https://eslint.org/docs/rules/prefer-destructuring +[eslint/prefer-destructuring]: https://eslint.org/docs/rules/prefer-destructuring diff --git a/src/rules/ecmascript_5_compatibility.md b/src/rules/ecmascript_5_compatibility.md index 5d7ede3..756a3e4 100644 --- a/src/rules/ecmascript_5_compatibility.md +++ b/src/rules/ecmascript_5_compatibility.md @@ -1,3 +1,3 @@ -Refer to the [ECMAScript 5 Compatibility Table][es_comp_table-5]. +Refer to the [ECMAScript 5 Compatibility Table][comp_table-es5]. -[es_comp_table-5]: http://kangax.github.io/compat-table/es5/ +[comp_table-es5]: http://kangax.github.io/compat-table/es5 diff --git a/src/rules/functions.md b/src/rules/functions.md index b62e746..c35ac67 100644 --- a/src/rules/functions.md +++ b/src/rules/functions.md @@ -4,7 +4,7 @@ Use named function expressions instead of function declarations. Function declar Functions which definition is too large or complex should be extracted into a own module. Make sure to explicitly name the expression, regardless of whether or not the name is inferred from the containing variable which is often the case in modern browsers or when using compilers such as [Babel][babel]. This eliminates any assumptions made about the call stack of errors. -> ESLint: [func-style][eslint-func-style] +> ESLint: [func-style][eslint/func-style] ###### Examples @@ -35,7 +35,7 @@ const winter = function longUniqueMoreDescriptiveLexicalWinter() { Wrap immediately invoked function expressions ([IIFE][mdn-iife]) in parentheses. An immediately invoked function expression is a single unit - wrapping both it, and its invocation parens, in parens, cleanly expresses this. Note that in a world with modules everywhere, an IIFE is almost never needed. -> ESLint: [wrap-iife][eslint-wrap-iife] +> ESLint: [wrap-iife][eslint/wrap-iife] ###### Examples @@ -53,7 +53,7 @@ Never declare a function in a non-function block (`if`, `while`, etc). Assign th **Note:** *ECMA-262* defines a block as a list of statements. A function declaration is not a statement! -> ESLint: [no-loop-func][eslint-no-loop-func] +> ESLint: [no-loop-func][eslint/no-loop-func] ###### Examples @@ -104,7 +104,7 @@ function season(name, elements, args) { Never use `arguments` and use rest syntax `...` instead. The rest `...` operator is explicit about which arguments to pull. Also rest arguments are a real Array, and not merely Array-like like `arguments`. -> ESLint: [prefer-rest-params][eslint-prefer-rest-params] +> ESLint: [prefer-rest-params][eslint/prefer-rest-params] ###### Examples @@ -209,7 +209,7 @@ function winter(name, elements = {}) { Never use the `Function` constructor to create a new function. Creating a function in this way evaluates a string similarly to [`eval()`][mdn-eval], which opens vulnerabilities. -> ESLint: [no-new-func][eslint-no-new-func] +> ESLint: [no-new-func][eslint/no-new-func] ###### Examples @@ -227,7 +227,7 @@ const subtract = Function("snow", "frost", "return snow - frost"); Use spacing in a function signature. -> ESLint: [space-before-function-paren][eslint-space-before-function-paren] and [space-before-blocks][eslint-space-before-blocks] +> ESLint: [space-before-function-paren][eslint/space-before-function-paren] and [space-before-blocks][eslint/space-before-blocks] ###### Examples @@ -259,7 +259,7 @@ const snow = function flake() {}; Never mutate parameters. Manipulating objects passed in as parameters can cause unwanted variable side effects in the original caller. -> ESLint: [no-param-reassign][eslint-no-param-reassign] +> ESLint: [no-param-reassign][eslint/no-param-reassign] ###### Examples @@ -283,7 +283,7 @@ function snow(flake) { Never reassign parameters. It can lead to unexpected behavior, especially when accessing the `arguments` object. It can also cause optimization issues, especially in [V8][v8]. -> ESLint: [no-param-reassign][eslint-no-param-reassign] +> ESLint: [no-param-reassign][eslint/no-param-reassign] ###### Examples @@ -322,7 +322,7 @@ function snow(flake = 1) { Use of the spread operator `...` to call variadic functions. It's cleaner, avoids the supply of a context and also prevents the compose of `new` with `apply`. -> ESLint: [prefer-spread][eslint-prefer-spread] +> ESLint: [prefer-spread][eslint/prefer-spread] ###### Examples @@ -391,15 +391,15 @@ console.log( ``` [babel]: https://babeljs.io -[eslint-func-style]: https://eslint.org/docs/rules/func-style -[eslint-no-loop-func]: https://eslint.org/docs/rules/no-loop-func -[eslint-no-new-func]: https://eslint.org/docs/rules/no-new-func -[eslint-no-param-reassign]: https://eslint.org/docs/rules/no-param-reassign -[eslint-prefer-rest-params]: https://eslint.org/docs/rules/prefer-rest-params -[eslint-prefer-spread]: https://eslint.org/docs/rules/prefer-spread -[eslint-space-before-blocks]: https://eslint.org/docs/rules/space-before-blocks -[eslint-space-before-function-paren]: https://eslint.org/docs/rules/space-before-function-paren -[eslint-wrap-iife]: https://eslint.org/docs/rules/wrap-iife +[eslint/func-style]: https://eslint.org/docs/rules/func-style +[eslint/no-loop-func]: https://eslint.org/docs/rules/no-loop-func +[eslint/no-new-func]: https://eslint.org/docs/rules/no-new-func +[eslint/no-param-reassign]: https://eslint.org/docs/rules/no-param-reassign +[eslint/prefer-rest-params]: https://eslint.org/docs/rules/prefer-rest-params +[eslint/prefer-spread]: https://eslint.org/docs/rules/prefer-spread +[eslint/space-before-blocks]: https://eslint.org/docs/rules/space-before-blocks +[eslint/space-before-function-paren]: https://eslint.org/docs/rules/space-before-function-paren +[eslint/wrap-iife]: https://eslint.org/docs/rules/wrap-iife [mdn-eval]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval [mdn-iife]: https://developer.mozilla.org/en-US/docs/Glossary/IIFE [v8]: https://developers.google.com/v8 diff --git a/src/rules/index.md b/src/rules/index.md new file mode 100644 index 0000000..26deb57 --- /dev/null +++ b/src/rules/index.md @@ -0,0 +1,10 @@ +There are two sections with chapters about + +* the comprehensive base rules including [ECMAScript +6 (ES 2015+)][rules-ecmascript_6+_styles] +* [React][rules-react] specific rules like e.g. [Higher-Order Components][rules-react-hoc], the [component methods & properties ordering][rules-react-ordering-methods_and_properties] and [props][rules-react-props]. + +[rules-ecmascript_6+_styles]: ecmascript_6+_styles.md +[rules-react]: react/index.md +[rules-react-hoc]: react/higher_order_components.md +[rules-react-ordering-methods_and_properties]: react/ordering.md#component-methods-and-properties +[rules-react-props]: react/props.md diff --git a/src/rules/iterators_and_generators.md b/src/rules/iterators_and_generators.md index be8dd4e..36ccc1e 100644 --- a/src/rules/iterators_and_generators.md +++ b/src/rules/iterators_and_generators.md @@ -21,7 +21,7 @@ to iterate over arrays, and to produce arrays to iterate over objects. -> ESLint: [no-iterator][eslint-no-iterator] and [no-restricted-syntax][eslint-no-restricted-syntax] +> ESLint: [no-iterator][eslint/no-iterator] and [no-restricted-syntax][eslint/no-restricted-syntax] ###### Examples @@ -148,5 +148,5 @@ const snow = function* () {} [no-generators]: #no-generators -[eslint-no-iterator]: https://eslint.org/docs/rules/no-iterator -[eslint-no-restricted-syntax]: https://eslint.org/docs/rules/no-restricted-syntax +[eslint/no-iterator]: https://eslint.org/docs/rules/no-iterator +[eslint/no-restricted-syntax]: https://eslint.org/docs/rules/no-restricted-syntax diff --git a/src/rules/modules.md b/src/rules/modules.md index 1d48704..0bcc768 100644 --- a/src/rules/modules.md +++ b/src/rules/modules.md @@ -68,7 +68,7 @@ export default snow; Only import from a path in one place. The code maintainability is more difficult when having multiple lines that import from the same path. -> ESlint: [no-duplicate-imports][eslint-no-duplicate-imports] +> ESlint: [no-duplicate-imports][eslint/no-duplicate-imports] ###### Examples @@ -97,7 +97,7 @@ import winter, { Do not export mutable bindings. Mutation should be avoided in general, but in particular when exporting mutable bindings. While this technique may be needed for some special cases, in general, only constant references should be exported. -> ESLint: [import/no-mutable-exports][eslint-plugin-import-no-mutable-exports] +> ESLint: [import/no-mutable-exports][eslint-plugin-import/no-mutable-exports] ###### Examples @@ -119,7 +119,7 @@ export { season }; Prefer default export over named export for modules with a single export to increase the code readability and maintainability. -> ESLint: [import/prefer-default-export][eslint-plugin-import-prefer-default-export] +> ESLint: [import/prefer-default-export][eslint-plugin-import/prefer-default-export] ###### Examples @@ -139,7 +139,7 @@ export default function snow() {} Put all `import` above non-import statements. Since `import` statements are hoisted, keeping them all at the top prevents surprising behavior. -> ESLint: [import/first][eslint-plugin-import-first] +> ESLint: [import/first][eslint-plugin-import/import-first] ###### Examples @@ -189,7 +189,7 @@ import { Disallow Webpack loader syntax in module import statements. Using Webpack syntax in the imports couples the code to a module bundler. Prefer using the loader syntax in the Webpack configuration `webpack.config.js`. -> ESlint: [import/no-webpack-loader-syntax][eslint-plugin-import-no-webpack-loader-syntax] +> ESlint: [import/no-webpack-loader-syntax][eslint-plugin-import/no-webpack-loader-syntax] ###### Examples @@ -207,8 +207,8 @@ import snow from "snow.scss"; import frost from "frost.css"; ``` -[eslint-no-duplicate-imports]: https://eslint.org/docs/rules/no-duplicate-imports -[eslint-plugin-import-first]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md -[eslint-plugin-import-no-mutable-exports]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md -[eslint-plugin-import-no-webpack-loader-syntax]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md -[eslint-plugin-import-prefer-default-export]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md +[eslint/no-duplicate-imports]: https://eslint.org/docs/rules/no-duplicate-imports +[eslint-plugin-import/import-first]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md +[eslint-plugin-import/no-mutable-exports]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md +[eslint-plugin-import/no-webpack-loader-syntax]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md +[eslint-plugin-import/prefer-default-export]: https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md diff --git a/src/rules/naming_conventions.md b/src/rules/naming_conventions.md index 6ab1b69..0463a47 100644 --- a/src/rules/naming_conventions.md +++ b/src/rules/naming_conventions.md @@ -2,7 +2,7 @@ Avoid single letter names. Be descriptive with naming. -> ESLint: [id-length][eslint-id-length] +> ESLint: [id-length][eslint/id-length] ###### Examples @@ -26,7 +26,7 @@ function snow() { Use [camelCase][wikipedia-camel_case] when naming objects, functions, and instances. -> ESLint: [camelcase][eslint-camelcase] +> ESLint: [camelcase][eslint/camelcase] ###### Examples @@ -50,7 +50,7 @@ function snow() {} Use [PascalCase][wikipedia-pascal_case] when naming constructors and classes. -> ESLint: [new-cap][eslint-new-cap] +> ESLint: [new-cap][eslint/new-cap] ###### Examples @@ -84,7 +84,7 @@ const snowball = new Snow({ Do not use trailing or leading underscores. JavaScript does not have the concept of privacy in terms of properties or methods. Although a leading underscore is a common convention to mean *private*, in fact, these properties are fully public, and as such, are part of the public API contract. This convention might lead developers to wrongly think that a change won't count as breaking, or that tests aren't needed. -> ESLint: [no-underscore-dangle][eslint-no-underscore-dangle] +> ESLint: [no-underscore-dangle][eslint/no-underscore-dangle] ###### Examples @@ -298,10 +298,10 @@ const requests = [ [camelcase]: #camelcase [pascalcase]: #pascalcase -[eslint-camelcase]: https://eslint.org/docs/rules/camelcase -[eslint-id-length]: https://eslint.org/docs/rules/id-length -[eslint-new-cap]: https://eslint.org/docs/rules/new-cap -[eslint-no-underscore-dangle]: https://eslint.org/docs/rules/no-underscore-dangle +[eslint/camelcase]: https://eslint.org/docs/rules/camelcase +[eslint/id-length]: https://eslint.org/docs/rules/id-length +[eslint/new-cap]: https://eslint.org/docs/rules/new-cap +[eslint/no-underscore-dangle]: https://eslint.org/docs/rules/no-underscore-dangle [mdn-function-bind]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind [wikipedia-acronym]: https://en.wikipedia.org/wiki/Acronym [wikipedia-camel_case]: https://en.wikipedia.org/wiki/Camel_case diff --git a/src/rules/objects.md b/src/rules/objects.md index 79900d8..3cd51ee 100644 --- a/src/rules/objects.md +++ b/src/rules/objects.md @@ -2,7 +2,7 @@ Use the literal syntax for object creation. -> ESLint: [no-new-object][eslint-no-new-object] +> ESLint: [no-new-object][eslint/no-new-object] ###### Examples @@ -56,7 +56,7 @@ const obj = { Use object method shorthand. -> ESLint: [object-shorthand][eslint-object-shorthand] +> ESLint: [object-shorthand][eslint/object-shorthand] ###### Examples @@ -88,7 +88,7 @@ const snow = { Use property value shorthand. It is shorter to write and descriptive. -> ESLint: [object-shorthand][eslint-object-shorthand] +> ESLint: [object-shorthand][eslint/object-shorthand] ###### Examples @@ -150,7 +150,7 @@ const obj = { Only quote properties that are invalid identifiers. In general we consider it subjectively easier to read. It improves syntax highlighting and is also more easily optimized by many JS engines. -> ESLint: [quote-props][eslint-quote-props] +> ESLint: [quote-props][eslint/quote-props] ###### Examples @@ -263,8 +263,8 @@ import has from "has"; console.log(has.call(object, key)); ``` -[eslint-no-new-object]: https://eslint.org/docs/rules/no-new-object -[eslint-object-shorthand]: https://eslint.org/docs/rules/object-shorthand -[eslint-quote-props]: https://eslint.org/docs/rules/quote-props +[eslint/no-new-object]: https://eslint.org/docs/rules/no-new-object +[eslint/object-shorthand]: https://eslint.org/docs/rules/object-shorthand +[eslint/quote-props]: https://eslint.org/docs/rules/quote-props [mdn-object-assign]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign [npm-pkg-has]: https://www.npmjs.com/package/has diff --git a/src/rules/properties.md b/src/rules/properties.md index 0db51eb..f57b810 100644 --- a/src/rules/properties.md +++ b/src/rules/properties.md @@ -2,7 +2,7 @@ Use [dot notation][mdn-property_accessors-dot_notation] when accessing properties. -> ESLint: [dot-notation][eslint-dot-notation] +> ESLint: [dot-notation][eslint/dot-notation] ###### Examples @@ -53,7 +53,7 @@ const isFalling = getProp("falling"); Use exponentiation operator `**` when calculating exponentiations. -> ESLint: [no-restricted-properties][eslint-no-restricted-properties] +> ESLint: [no-restricted-properties][eslint/no-restricted-properties] ###### Examples @@ -69,7 +69,7 @@ const binary = Math.pow(2, 10); const binary = 2 ** 10; ``` -[eslint-dot-notation]: https://eslint.org/docs/rules/dot-notation -[eslint-no-restricted-properties]: https://eslint.org/docs/rules/no-restricted-properties +[eslint/dot-notation]: https://eslint.org/docs/rules/dot-notation +[eslint/no-restricted-properties]: https://eslint.org/docs/rules/no-restricted-properties [mdn-property_accessors-dot_notation]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors#Dot_notation [mdn-property_accessors-bracket_notation]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors#Bracket_notation diff --git a/src/rules/react/accessibility_a11y.md b/src/rules/react/accessibility_a11y.md new file mode 100644 index 0000000..906672d --- /dev/null +++ b/src/rules/react/accessibility_a11y.md @@ -0,0 +1,100 @@ +## `img` Alternate Text + +Always include an `alt` prop on `` tags. If the image is presentational, `alt` can be an empty string or the `` must have `role="presentation"`. + +> ESLint: [jsx-a11y/alt-text][eslint-jsx-a11y/alt-text] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx +Falling snow +``` + +```jsx + +``` + +```jsx + +``` + +## No Redundant `img` Alternate Text + +Do not use words like "image", "photo", or "picture" in `` `alt` props. Screenreaders already announce `img` elements as images, so there is no need to include this information in the `alt` text. + +> ESLint: [jsx-a11y/img-redundant-alt][eslint-jsx-a11y/img-redundant-alt] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +Picture of falling snow +``` + +⇡ **Correct** code for this rule: + +```jsx +Falling snow +``` + +## Valid ARIA Roles + +Use only valid, non-abstract [ARIA roles][ref-w3-aria_roles]. + +> ESLint: [jsx-a11y/aria-role][eslint-jsx-a11y/aria-role] + +###### Examples + +⇣ **Incorrect** code for this rule: + +Invalid ARIA role: + +```jsx +
+``` +Abstract ARIA role: + +```jsx +
+``` + +⇡ **Correct** code for this rule: + +```jsx +
+``` + +## No `accessKey` + +Do not use `accessKey` on elements. Inconsistencies between keyboard shortcuts and keyboard commands used by people using screenreaders and keyboards complicate accessibility. + +> ESLint: [jsx-a11y/no-access-key][eslint-jsx-a11y/no-access-key] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +
+``` + +⇡ **Correct** code for this rule: + +```jsx +
+``` + +[eslint-jsx-a11y/no-access-key]: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-access-key.md +[eslint-jsx-a11y/aria-role]: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-role.md +[eslint-jsx-a11y/alt-text]: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/alt-text.md +[eslint-jsx-a11y/img-redundant-alt]: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/img-redundant-alt.md +[ref-w3-aria_roles]: https://www.w3.org/TR/wai-aria/roles#role_definition diff --git a/src/rules/react/blocks.md b/src/rules/react/blocks.md new file mode 100644 index 0000000..6fb4552 --- /dev/null +++ b/src/rules/react/blocks.md @@ -0,0 +1,40 @@ +## Wrap Multiline JSX + +Prevent missing parentheses around multiline JSX when they span more than one line. This prevents syntax errors and improves the readability and convenience. + +> ESLint:[react/jsx-wrap-multilines][eslint-react/jsx-wrap-multilines] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +render() { + return + + ; +} +``` + +⇡ **Correct** code for this rule: + +```jsx +render() { + return ( + + + + ); +} +``` + +Only omit parentheses for single line JSX: + +```jsx +render() { + const snowFlakes = ; + return {snowFlakes}; +} +``` + +[eslint-react/jsx-wrap-multilines]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-wrap-multilines.md diff --git a/src/rules/react/classes_and_constructors.md b/src/rules/react/classes_and_constructors.md new file mode 100644 index 0000000..df078bc --- /dev/null +++ b/src/rules/react/classes_and_constructors.md @@ -0,0 +1,59 @@ +## `class` And Stateless + +Do not use `React.createElement` unless initializing the app from a file that is not [JSX][rules-react-jsx-syntax]! + +If the component has internal state and/or refs, use `class extends React.Component`. If no state or refs is used, prefer normal functions (not arrow functions) over classes. + +> ESLint: [react/prefer-es6-class][eslint-react/prefer-es6-class] and [react/prefer-stateless-function][eslint-react/prefer-stateless-function] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +const Snow = React.createClass({ + render() { + return
{this.state.snowflakes}
; + } +}); +``` + +No state or refs: + +```jsx +class Snow extends React.Component { + render() { + return
{this.props.snowflakes}
; + } +} +``` + +```jsx +// Relying on function name inference is discouraged. +const Snow = ({ snowflakes }) => ( +
{snowflakes}
+); +``` + +⇡ **Correct** code for this rule: + +```jsx +class Snow extends React.Component { + render() { + return
{this.state.snowflakes}
; + } +} +``` + +No state or refs: + +```jsx +function Snow({ snowflakes }) { + return
{snowflakes}
; +} +``` + +[rules-react-jsx-syntax]: index.md#jsx-syntax + +[eslint-react/prefer-es6-class]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md +[eslint-react/prefer-stateless-function]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md diff --git a/src/rules/react/higher_order_components.md b/src/rules/react/higher_order_components.md new file mode 100644 index 0000000..5f59093 --- /dev/null +++ b/src/rules/react/higher_order_components.md @@ -0,0 +1,67 @@ +## Display Name + +Use a composite of the [higher-order component][react-docs-hoc]'s (HOC) name and the passed-in component's name as the `displayName` on the generated component. A component's `displayName` may be used by developer tools or in error messages, and having a value that clearly expresses this relationship helps to better understand and debug the code. + +###### Examples + +A higher-order component `withSnow()`, when passed a component `Winter` should produce a component with a `displayName` of `withSnow(Winter)`. + +⇣ **Incorrect** code for this rule: + +```jsx +import React, {Component} from "react"; +import PropTypes from "prop-types"; + +export const withSnow = ComposedComponent => class WithSnow extends Component { + constructor(props) { + super(); + } + + static propTypes = { + children: PropTypes.any + }; + + static defaultProps = {}; + + render() { + const {children, ...passThroughProps} = this.props; + return ( + + {children} + + ); + } +} +``` + +⇡ **Correct** code for this rule: + +```jsx +import React, {Component} from "react"; +import PropTypes from "prop-types" + +export const withSnow = ComposedComponent => class WithSnow extends Component { + constructor(props) { + super(); + } + + static displayName = `WithSnow(${ComposedComponent.displayName || ComposedComponent.name || Component.name})`; + + static propTypes = { + children: PropTypes.any + }; + + static defaultProps = {}; + + render() { + const {children, ...passThroughProps} = this.props; + return ( + + {children} + + ); + } +} +``` + +[react-docs-hoc]: https://reactjs.org/docs/higher-order-components.html diff --git a/src/rules/react/index.md b/src/rules/react/index.md new file mode 100644 index 0000000..dbc1341 --- /dev/null +++ b/src/rules/react/index.md @@ -0,0 +1,23 @@ +

+ +

This section contains specific rules for React

+ +## JSX Syntax + +Always use [JSX syntax][react-docs-jsx]. + +## No Mixins + +**Do not use mixins!** + +Mixins introduce implicit dependencies, cause name clashes, and cause snowballing complexity. Most use cases for mixins can be accomplished in better ways via components, higher-order components, or utility modules. Facebook announced that [mixins are considered to be harmful][react-blog-mixins_harmful]. + +## No `isMounted` + +**Do not use `isMounted`!** + +[`isMounted` is an anti-pattern][react-blog-ismounted_antipattern], it is not available when using ES6 classes, and is going to be officially deprecated. + +[react-blog-ismounted_antipattern]: https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html +[react-blog-mixins_harmful]: https://reactjs.org/blog/2016/07/13/mixins-considered-harmful.html +[react-docs-jsx]: https://reactjs.org/docs/introducing-jsx.html diff --git a/src/rules/react/methods.md b/src/rules/react/methods.md new file mode 100644 index 0000000..e42ffa2 --- /dev/null +++ b/src/rules/react/methods.md @@ -0,0 +1,153 @@ +## Prefer Arrow Functions Over `bind` + +[Arrow functions][mdn-arrow_functions] can be an attractive alternative to function expressions for callbacks or function arguments. They are automatically bound to their surrounding scope/context. This provides an alternative to the pre-ES6 standard of explicitly binding function expressions to achieve similar behavior. + +Additionally, arrow functions are + +* less verbose, and easier to reason about which improves the readability of the code. +* bound lexically regardless of where or when they are invoked. + +Anyway, please note that there are some differences between arrow functions and binding: + +* **Arrow functions are always anonymous**, which means e.g. it is not possible to reliably call them recursively since there is no reliable lexical name to use. +* **Arrow functions actually create lexical bindings for `this`, `super`, and `arguments`**. Only `this` is bound by `.bind()`. +**Arrow functions cannot be used in `new` expressions**, while `.bind()` bound functions can. + +> ESLint: [prefer-arrow-callback][eslint/prefer-arrow-callback] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +XXX +``` + +⇡ **Correct** code for this rule: + +```jsx +XXX +``` + +###### References + +* [Differences between `bind()` and fat arrow functions (GitHub issue comment)][ref-gh-getify/you-dont-know-js/513_comment] + +## No Binding Or Arrow Functions In Render + +Do not use `.bind()` or [arrow functions][mdn-arrow_functions] in `render`. A `bind` call or arrow function in a JSX prop will create a brand new function on every single render which is bad for performance, as it will result in the garbage collector being invoked way more than is necessary. It may also cause unnecessary re-renders if a brand new function is passed as a prop to a component that uses reference equality check on the prop to determine if it should update. + +> ESLint: [react/jsx-no-bind][eslint-react/jsx-no-bind] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +class Snow extends React.Component { + onSnowflakeClick() { + // ... + } + + render() { + return
; + } +} +``` + +⇡ **Correct** code for this rule: + +```jsx +class Snow extends React.Component { + constructor(props) { + super(props); + + this.onSnowflakeClick = this.onSnowflakeClick.bind(this); + } + + onSnowflakeClick() { + // ... + } + + render() { + return
; + } +} +``` + +⇢ **Recommended** code for this rule: + +```jsx +class Snow extends React.Component { + onSnowflakeClick = () => { + // ... + } + + render() { + return
; + } +} +``` + +###### References + +* [Why arrow functions and bind in React's Render are problematic][ref-medium-arrow_funcs_bind_render] +* [Arrow functions vs. bind()][ref-2ality-arrow_func_vs_bind] + +## No Underscore Prefix + +Do not use underscore prefix for internal methods of a React component. Underscore prefixes are sometimes used as a convention in other languages to denote privacy. But, unlike those languages, there is no native support for privacy in JavaScript, everything is public. Regardless of the intentions, adding underscore prefixes to properties does not actually make them private, and any property (underscore-prefixed or not) should be treated as being public. See issues #1024, and #490 for a more in-depth discussion. + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +class Snow extends React.Component { + _onFalling() { + // ... + } +} +``` + +⇡ **Correct** code for this rule: + +```jsx +class Snow extends React.Component { + onFalling() { + // ... + } +} +``` + +## Render Return + +Be sure to return a value in the `render` function. + +> ESLint: [react/require-render-return][eslint-react/require-render-return] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +render() { + (
); +} +``` + +⇡ **Correct** code for this rule: + +```jsx +render() { + return (
); +} +``` + +[eslint/prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback +[eslint-react/require-render-return]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/require-render-return.md +[eslint-react/jsx-no-bind]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md +[mdn-arrow_functions]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions +[ref-medium-arrow_funcs_bind_render]: https://medium.freecodecamp.org/why-arrow-functions-and-bind-in-reacts-render-are-problematic-f1c08b060e36 +[ref-2ality-arrow_func_vs_bind]: http://2ality.com/2016/02/arrow-functions-vs-bind.html +[ref-gh-getify/you-dont-know-js/513_comment]: https://github.com/getify/You-Dont-Know-JS/issues/513#issuecomment-130300480 diff --git a/src/rules/react/naming_conventions.md b/src/rules/react/naming_conventions.md new file mode 100644 index 0000000..cfe288e --- /dev/null +++ b/src/rules/react/naming_conventions.md @@ -0,0 +1,86 @@ +## One Component Per File + +Only include one [React component][react-docs-component] per file. However, multiple [stateless functions or pure components][react-docs-stateless_functions] are allowed per file. + +> ESLint: [react/no-multi-comp][eslint-react/no-multi-comp] + +## JSX File Extension + +Always use `.jsx` file extension for files with [JSX syntax][rules-react-jsx-syntax]. + +## File And Component Folder + +The name of the file and the folder of components should exactly (case sensitive) match the name of the main (exported) component using [PascalCase][wikipedia-pascal_case]. + +> ESLint: [react/jsx-pascal-case][eslint-react/jsx-pascal-case] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +// snow/Snow.jsx +export default class Snow extends React.Component { + // ... +} +``` + +```jsx +// Snow/snow.jsx +export default class Snow extends React.Component { + // ... +} +``` + +```jsx +// Snow/Frost.jsx +export default class Snow extends React.Component { + // ... +} +``` + +⇡ **Correct** code for this rule: + +```jsx +// Snow/Snow.jsx +export default class Snow extends React.Component { + // ... +} +``` + +## References + +Use [PascalCase][wikipedia-pascal_case] for components and [camelCase][wikipedia-camel_case] for their instances. + +> ESLint: [react/jsx-pascal-case][eslint-react/jsx-pascal-case] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +import snowFlake from "./SnowFlake"; +``` + +```jsx +const SnowFlake = ; +``` + +⇡ **Correct** code for this rule: + +```jsx +import SnowFlake from "./SnowFlake"; +``` + +```jsx +const snowFlake = ; +``` + +[rules-react-jsx-syntax]: index.md#jsx-syntax + +[eslint-react/jsx-pascal-case]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-pascal-case.md +[eslint-react/no-multi-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md#ignorestateless +[react-docs-component]: https://reactjs.org/docs/react-component.html +[react-docs-stateless_functions]: https://reactjs.org/docs/components-and-props.html#stateless-functions +[wikipedia-camel_case]: https://en.wikipedia.org/wiki/Camel_case +[wikipedia-pascal_case]: https://en.wikipedia.org/wiki/PascalCase diff --git a/src/rules/react/ordering.md b/src/rules/react/ordering.md new file mode 100644 index 0000000..4542080 --- /dev/null +++ b/src/rules/react/ordering.md @@ -0,0 +1,152 @@ +## Component Methods And Properties + +When creating React components it is more convenient to always follow the same organization for methods and properties order to easier find lifecycle methods, event handlers, static properties and `render` related elements: + +1. Static methods and properties: +2. Lifecycle methods and properties: + 2.1. `displayName` + 2.2. `propTypes` + 2.3. `contextTypes` + 2.7. `childContextTypes` + 2.5. `statics` + 2.6. `defaultProps` + 2.7. Optional `static` methods + 2.8. `constructor` (classes) + 2.9. `getDefaultProps` + 2.10. `getInitialState` + 2.11. `state` + 2.12. `getChildContext` + 2.13. `componentWillMount` + 2.14. `componentDidMount` + 2.15. `componentWillReceiveProps` + 2.16. `shouldComponentUpdate` + 2.17. `componentWillUpdate` + 2.18. `componentDidUpdate` + 2.19. `componentWillUnmount` +3. Custom methods: + 3.1. *Click and Event Handlers* like e.g. `onClickSubmit()` or `onChangeValue()` + 3.2. *Getter and Setter* methods for `render` like e.g. `getSelectReason()` or `getFooterContent()` + 3.3. Any custom method like e.g. `calculateSnowflakes()` + 3.4. Optional `render` methods like `renderSnowflakes()` or `renderWinterForest()` +4. `render` + +> ESLint: [react/sort-comp][eslint-react/sort-comp] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +import React, { Component } from "react"; +import PropTypes from "prop-types"; + +const propTypes = { + density: PropTypes.number.isRequired, + season: PropTypes.string +}; + +class Snow extends React.Component { + constructor() { + super(); + this.state = { + // ... + }; + } + + componentWillReceiveProps() { + // ... + } + + componentDidMount() { + // ... + } + + renderSnowflakes() { + // ... + } + + calculateDensity() { + // ... + } + + onChangeSeason() { + // ... + } + + static isFalling() { + return true; + } + + static defaultProps = { + season: "Winter" + } + + render() { + return
{this.props.season}
; + } +} + +Snow.propTypes = propTypes; + +export default Snow; +``` + +⇡ **Correct** code for this rule: + +```jsx +import React, { Component } from "react"; +import PropTypes from "prop-types"; + +export default class Snow extends React.Component { + static propTypes = { + density: PropTypes.number.isRequired, + season: PropTypes.string + }; + + static defaultProps = { + season: "Winter" + }; + + static isFalling() { + return true; + } + + constructor() { + super(); + this.state = { + // ... + }; + } + + componentDidMount() { + // ... + } + + componentWillReceiveProps() { + // ... + } + + onChangeSeason = () => { + // ... + } + + calculateDensity = () => { + // ... + } + + renderSnowflakes = () => { + // ... + } + + render() { + return
{this.props.season}
; + } +} +``` + +###### References + +* [React on ES6+][ref-babel-react_es6_plus] + +[eslint-react/sort-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/sort-comp.md +[ref-babel-react_es6_plus]: https://babeljs.io/blog/2015/06/07/react-on-es6-plus#property-initializers diff --git a/src/rules/react/props.md b/src/rules/react/props.md new file mode 100644 index 0000000..5c4be78 --- /dev/null +++ b/src/rules/react/props.md @@ -0,0 +1,295 @@ +## Indentation + +Indent props for readability and according to the [line length][rules-base-whitespace-maxlen]. + +> ESLint: [react/jsx-closing-bracket-location][eslint-react/jsx-closing-bracket-location] and [react/jsx-closing-tag-location][eslint-react/jsx-closing-tag-location] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +```jsx + + + +``` + +## Avoid DOM Names + +Avoid using DOM [component props][react-docs-comp_and_props] names for different purposes. `props` are expected to be like `style` and `className` to mean one specific thing. Varying this API for a subset of the app makes the code less readable and less maintainable, and may cause bugs. + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +## Capitalization + +Always use [camelCase][wikipedia-camel_case] for prop names. + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +## Boolean Attributes Notation + +Omit the value of the prop when it is explicitly `true`. + +> ESLint: [react/jsx-boolean-value][eslint-react/jsx-boolean-value] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +⇢ **Recommended** code for this rule: + +```jsx + +``` + +## No Index As `key` + +Avoid using an array index as `key` prop, always use a unique ID. + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +{snow.map((snowflake, index) => + +)} +``` + +⇡ **Correct** code for this rule: + +```jsx +{snow.map(snowflake => ( + +))} +``` + +###### References: + +* [Index as a key is an anti-pattern][ref-medium-index_key_anti_pattern] + +## Explicit Default Props + +Always define explicit [`defaultProps`][react-docs-typechecking_proptypes] for all non-required props. [`propTypes`][npm-prop-types] are a form of documentation, and providing `defaultProps` means the reader of the code doesn't have to assume as much. In addition, it can mean that the code can omit certain type checks. + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +function Snow({ density, season, snowflakes }) { + return
{density}{season}{snowflakes}
; +} +Snow.propTypes = { + density: PropTypes.number.isRequired, + season: PropTypes.string, + snowflakes: PropTypes.node +}; +``` + +⇡ **Correct** code for this rule: + +```jsx +function Snow({ density, season, snowflakes }) { + return
{density}{season}{snowflakes}
; +} +Snow.propTypes = { + density: PropTypes.number.isRequired, + season: PropTypes.string, + snowflakes: PropTypes.node +}; +Snow.defaultProps = { + season: "winter", + snowflakes: null +}; +``` + +## Spread Props + +Use spread props sparingly. Otherwise unnecessary props can be passed down to components. For React v15.6.1 and older, this can result in passing down [invalid HTML attributes to the DOM][react-blog-dom_attr_react_16]. + +### Exceptions + +#### Higher-Order Components + +[HOCs][higher_order_components] that proxy down props and hoist [`propTypes`][npm-prop-types]. + +```jsx +import React, {Component} from "react"; +import PropTypes from "prop-types"; + +export const withSnow = ComposedComponent => class WithSnow extends Component { + + static propTypes = { + season: PropTypes.string, + isFalling: PropTypes.bool + }; + + render() { + return + } +} +``` + +```jsx +function withSnow(ComposedComponent) { + return class WithSnow extends React.Component { + WithSnow.propTypes = { + season: PropTypes.string, + isFalling: PropTypes.bool + }; + + render() { + return + } + } +} +``` + +#### Spreading Explicitly Known Props + +Spreading objects with known, explicit props. This can be particularly useful when testing React components with [Mocha][mocha]'s `beforeEach` construct. + +```jsx +export default function Snow { + const props = { + season: "", + isFalling: false + } + + return (
); +} +``` + +Filter out unnecessary props when possible to help prevent bugs e.g. by using helper libraries like [prop-types-exact][npm-prop-types-exact]. + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx +render() { + const { irrelevantProp, ...relevantProps } = this.props; + return +} +``` + +⇡ **Correct** code for this rule: + +```jsx +render() { + const { irrelevantProp, ...relevantProps } = this.props; + return +} +``` + +## Ref Callbacks + +If it is necessary to use [refs][react-docs-refs_and:dom], always use ref callbacks. + +> ESLint: [react/no-string-refs][eslint-react/no-string-refs] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + { this.snowRef = ref; }} +/> +``` + +[higher_order_components]: higher_order_components.md + +[eslint-react/no-string-refs]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md +[eslint-react/jsx-boolean-value]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-boolean-value.md +[eslint-react/jsx-closing-bracket-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md +[eslint-react/jsx-closing-tag-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md +[mocha]: https://mochajs.org +[npm-prop-types]: https://www.npmjs.com/package/prop-types +[npm-prop-types-exact]: https://www.npmjs.com/package/prop-types-exact +[react-docs-comp_and_props]: https://reactjs.org/docs/components-and-props.html +[react-docs-typechecking_proptypes]: https://reactjs.org/docs/typechecking-with-proptypes.html +[react-docs-refs_and:dom]: https://reactjs.org/docs/refs-and-the-dom.html +[react-blog-dom_attr_react_16]: https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html +[ref-medium-index_key_anti_pattern]: https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318 +[wikipedia-camel_case]: https://en.wikipedia.org/wiki/Camel_case diff --git a/src/rules/react/strings.md b/src/rules/react/strings.md new file mode 100644 index 0000000..4c873b9 --- /dev/null +++ b/src/rules/react/strings.md @@ -0,0 +1,23 @@ +## Quotes + +Always use [double quotes][rules-base-strings-quotes] (`""`) for JSX attributes. Regular HTML attributes also typically use double quotes instead of single, so JSX attributes mirror this convention. + +> ESLint: [jsx-quotes][eslint/jsx-quotes] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +[rules-base-strings-quotes]: ../strings.md#quotes + +[eslint/jsx-quotes]: https://eslint.org/docs/rules/jsx-quotes diff --git a/src/rules/react/tags.md b/src/rules/react/tags.md new file mode 100644 index 0000000..4f6f9fc --- /dev/null +++ b/src/rules/react/tags.md @@ -0,0 +1,47 @@ +## Self-Closing + +Always self-close tags that have no children. + +> ESLint: [react/self-closing-comp][eslint-react/self-closing-comp] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +## Closing Bracket Indentation + +If a component has multi-line properties, close its tag on a new line. + +> ESLint: [react/jsx-closing-bracket-location][eslint-react/jsx-closing-bracket-location] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +[eslint-react/jsx-closing-bracket-location]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md +[eslint-react/self-closing-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md diff --git a/src/rules/react/whitespace.md b/src/rules/react/whitespace.md new file mode 100644 index 0000000..38a7084 --- /dev/null +++ b/src/rules/react/whitespace.md @@ -0,0 +1,54 @@ +## Self-Closing Tags + +Always include a single space in self-closing tags. + +> ESLint: [react/jsx-tag-spacing][eslint-react/jsx-tag-spacing] and [no-multi-spaces][eslint/no-multi-spaces] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +```jsx + +``` + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +## Curly Braces Padding + +Do not pad JSX curly braces with spaces. + +> ESLint: [react/jsx-curly-spacing][eslint-react/jsx-curly-spacing] + +###### Examples + +⇣ **Incorrect** code for this rule: + +```jsx + +``` + +⇡ **Correct** code for this rule: + +```jsx + +``` + +[rules-base-whitespace-maxlen]: ../whitespace.md#maximum-line-length + +[eslint/no-multi-spaces]: https://eslint.org/docs/rules/no-multi-spaces +[eslint-react/jsx-curly-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-spacing.md +[eslint-react/jsx-tag-spacing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-tag-spacing.md diff --git a/src/rules/references.md b/src/rules/references.md index ae1c751..7a36bdd 100644 --- a/src/rules/references.md +++ b/src/rules/references.md @@ -2,7 +2,7 @@ Use `const` for all references and avoid using `var`. -> ESLint: [prefer-const][eslint-prefer-const] and [no-const-assign][eslint-no-const-assign] +> ESLint: [prefer-const][eslint/prefer-const] and [no-const-assign][eslint/no-const-assign] This ensures that references are not reassigned, which can lead to bugs and difficult to comprehend code. @@ -26,7 +26,7 @@ const ice = 2; Use `let` instead of `var` to reassign references. -> ESLint: [no-var][eslint-no-var] +> ESLint: [no-var][eslint/no-var] `let` is block-scoped rather than function-scoped like `var`. @@ -65,6 +65,6 @@ console.log(snow); // ReferenceError: snow is not defined console.log(ice); // ReferenceError: ice is not defined ``` -[eslint-no-const-assign]: https://eslint.org/docs/rules/no-const-assign -[eslint-no-var]: https://eslint.org/docs/rules/no-var -[eslint-prefer-const]: https://eslint.org/docs/rules/prefer-const +[eslint/no-const-assign]: https://eslint.org/docs/rules/no-const-assign +[eslint/no-var]: https://eslint.org/docs/rules/no-var +[eslint/prefer-const]: https://eslint.org/docs/rules/prefer-const diff --git a/src/rules/semicolons.md b/src/rules/semicolons.md index 5919fa5..f29c6a3 100644 --- a/src/rules/semicolons.md +++ b/src/rules/semicolons.md @@ -5,7 +5,7 @@ Always use semicolons! When JavaScript encounters a line break without a semicol * [ECMAScript 2018 Specification][ref-ecma262-automatic_semicolon_insertion] * [StackOverflow: "Semicolon before self-invoking function?"][ref-stackoverflow-self-invoking-function] -> ESLint: [semi][eslint-semi] +> ESLint: [semi][eslint/semi] ###### Examples @@ -57,7 +57,7 @@ function winter() { } ``` -[eslint-semi]: https://eslint.org/docs/rules/semi +[eslint/semi]: https://eslint.org/docs/rules/semi [mdn-lexical_grammar-automatic_semicolon_insertion]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Automatic_semicolon_insertion [ref-ecma262-automatic_semicolon_insertion]: https://tc39.github.io/ecma262/#sec-automatic-semicolon-insertion [ref-stackoverflow-self-invoking-function]: https://stackoverflow.com/questions/7365172/semicolon-before-self-invoking-function/7365214#7365214 diff --git a/src/rules/standard_library.md b/src/rules/standard_library.md index 1ac8301..c0201be 100644 --- a/src/rules/standard_library.md +++ b/src/rules/standard_library.md @@ -4,7 +4,7 @@ The [Standard Library][mdn-global_objects] contains utilities that are functiona Use `Number.isNaN` instead of global `isNaN`. The global `isNaN` coerces non-numbers to numbers, returning true for anything that coerces to `NaN`. If this behavior is desired, make it explicit. -> ESLint: [no-restricted-globals][eslint-no-restricted-globals] +> ESLint: [no-restricted-globals][eslint/no-restricted-globals] ###### Examples @@ -26,7 +26,7 @@ Number.isNaN(Number("1.2.3")); // true Use `Number.isFinite` instead of global `isFinite`. The global `isFinite` coerces non-numbers to numbers, returning true for anything that coerces to a finite number. If this behavior is desired, make it explicit. -> ESLint: [no-restricted-globals][eslint-no-restricted-globals] +> ESLint: [no-restricted-globals][eslint/no-restricted-globals] ###### Examples @@ -43,5 +43,5 @@ Number.isFinite("2e3"); // false Number.isFinite(parseInt("2e3", 10)); // true ``` -[eslint-no-restricted-globals]: https://eslint.org/docs/rules/no-restricted-globals +[eslint/no-restricted-globals]: https://eslint.org/docs/rules/no-restricted-globals [mdn-global_objects]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects diff --git a/src/rules/strings.md b/src/rules/strings.md index b1c2da1..bde84c5 100644 --- a/src/rules/strings.md +++ b/src/rules/strings.md @@ -10,7 +10,7 @@ Use double quotes `""` for strings: Some users argument that single quotes can be used for inline HTML without the need to escape characters. We don't agree to this statement because inline HTML is normally a anti-pattern and templates should be used instead. -> ESLint: [quotes][eslint-quotes] +> ESLint: [quotes][eslint/quotes] ###### Examples @@ -61,7 +61,7 @@ const message = "Cupcake ipsum candy pudding soufflé chocolate. Croissant muffi When programmatically building up strings, use [template literals][mdn-template-literals] (previoudly called *template strings* in ES2015 specification) instead of concatenation. Template literals provide a readable, concise syntax with support for embedded expressions. They allow the usage of features like multi-line strings and string interpolation. -> ESLint: [prefer-template][eslint-prefer-template] and [template-curly-spacing][eslint-template-curly-spacing] +> ESLint: [prefer-template][eslint/prefer-template] and [template-curly-spacing][eslint/template-curly-spacing] ###### Examples @@ -97,13 +97,13 @@ function printSeason(name) { Never use [`eval()`][mdn-eval] on a string, it opens too many vulnerabilities. -> ESLint: [no-eval][eslint-no-eval] +> ESLint: [no-eval][eslint/no-eval] ## Escaping Do not unnecessarily escape characters in strings. Backslashes harm readability and should only be used when necessary. -> ESLint: [no-useless-escape][eslint-no-useless-escape] +> ESLint: [no-useless-escape][eslint/no-useless-escape] ###### Examples @@ -124,11 +124,11 @@ const winter = `snowy and '${state}'`; const winter = `I'm in love with the '${seasonName}' season!`; ``` -[eslint-no-eval]: https://eslint.org/docs/rules/no-eval -[eslint-no-useless-escape]: https://eslint.org/docs/rules/no-useless-escape -[eslint-prefer-template]: https://eslint.org/docs/rules/prefer-template -[eslint-quotes]: https://eslint.org/docs/rules/quotes -[eslint-template-curly-spacing]: https://eslint.org/docs/rules/template-curly-spacing +[eslint/no-eval]: https://eslint.org/docs/rules/no-eval +[eslint/no-useless-escape]: https://eslint.org/docs/rules/no-useless-escape +[eslint/prefer-template]: https://eslint.org/docs/rules/prefer-template +[eslint/quotes]: https://eslint.org/docs/rules/quotes +[eslint/template-curly-spacing]: https://eslint.org/docs/rules/template-curly-spacing [json]: https://www.json.org [mdn-eval]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval [mdn-template-literals]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals diff --git a/src/rules/testing.md b/src/rules/testing.md index 68177e1..f45f762 100644 --- a/src/rules/testing.md +++ b/src/rules/testing.md @@ -17,8 +17,8 @@ * [JavaScript Unit Testing Guide][ref-gh-js_unit_testing_guide] -[ref-gh-js_unit_testing_guide]: https://github.com/mawrkus/js-unit-testing-guide [mocha]: https://mochajs.org [jasmine]: https://jasmine.github.io [jest]: http://facebook.github.io/jest +[ref-gh-js_unit_testing_guide]: https://github.com/mawrkus/js-unit-testing-guide [sinon.js]: http://sinonjs.org diff --git a/src/rules/type_casting_and_coercion.md b/src/rules/type_casting_and_coercion.md index bebfcac..7b217a2 100644 --- a/src/rules/type_casting_and_coercion.md +++ b/src/rules/type_casting_and_coercion.md @@ -4,7 +4,7 @@ Perform type coercion at the beginning of the statement. ## No Primitive Wrapper Instances -> ESlint: [no-new-wrappers][eslint-no-new-wrappers] +> ESlint: [no-new-wrappers][eslint/no-new-wrappers] ### Strings @@ -44,7 +44,7 @@ const snow = String(this.snowflakes); Use `Number` for type casting and `parseInt` always with a radix for parsing strings. -> ESLint: [radix][eslint-radix] and [no-new-wrappers][eslint-no-new-wrappers] +> ESLint: [radix][eslint/radix] and [no-new-wrappers][eslint/no-new-wrappers] ###### Examples @@ -84,7 +84,7 @@ const snow = parseInt(snowflakes, 10); ## Booleans -> ESLint: [no-new-wrappers][eslint-no-new-wrappers] +> ESLint: [no-new-wrappers][eslint/no-new-wrappers] ###### Examples @@ -134,8 +134,8 @@ const snow = snowflakes >> 0; * [StackOverflow: "Bitshift in JavaScript"][ref-stackoverflow-bitshift] -[eslint-no-new-wrappers]: https://eslint.org/docs/rules/no-new-wrappers -[eslint-radix]: https://eslint.org/docs/rules/radix +[eslint/no-new-wrappers]: https://eslint.org/docs/rules/no-new-wrappers +[eslint/radix]: https://eslint.org/docs/rules/radix [ref-bitshift-coercion_vs_casting]: https://jsperf.com/coercion-vs-casting/3 [ref-es5-bitshift]: https://es5.github.io/#x11.7 [ref-es5-numbers_64_bit]: https://es5.github.io/#x4.3.19 diff --git a/src/rules/variables.md b/src/rules/variables.md index 64c895b..096bbd1 100644 --- a/src/rules/variables.md +++ b/src/rules/variables.md @@ -2,7 +2,7 @@ Always use `const` or `let` to declare variables to avoid polluting the global namespace, otherwise this will result in global variables. -> ESLint: [no-undef][eslint-no-undef] and [prefer-const][eslint-prefer-const] +> ESLint: [no-undef][eslint/no-undef] and [prefer-const][eslint/prefer-const] ###### Examples @@ -22,7 +22,7 @@ const snow = new Snow(); Use one `const` or `let` declaration per variable. It simplifies the addition of new variable declarations and increases the code readability and maintainability. This also allows to step through each declaration with the debugger, instead of jumping through all of them at once. -> ESLint: [one-var][eslint-one-var] +> ESLint: [one-var][eslint/one-var] ###### Examples @@ -123,7 +123,7 @@ function checkWinterSeason(season) { Don't chain variable assignments. Chaining variable assignments creates implicit global variables. -> ESLint: [no-multi-assign][eslint-no-multi-assign] +> ESLint: [no-multi-assign][eslint/no-multi-assign] ###### Examples @@ -169,7 +169,7 @@ Avoid using unary increments and decrements (`++`, `--`). Per ESLint documentati Exceptions are final expression in `for` loops which can be configured for ESLint by enabling the `allowForLoopAfterthoughts` option. -> ESLint: [no-plusplus][eslint-no-plusplus] +> ESLint: [no-plusplus][eslint/no-plusplus] ###### Examples @@ -204,8 +204,8 @@ const total = snowflakes.reduce((a, b) => a + b, 0); const allFlakes = snowflakes.filter(Boolean).length; ``` -[eslint-no-multi-assign]: https://eslint.org/docs/rules/no-multi-assign -[eslint-no-plusplus]: https://eslint.org/docs/rules/no-plusplus -[eslint-no-undef]: https://eslint.org/docs/rules/no-undef -[eslint-one-var]: https://eslint.org/docs/rules/one-var -[eslint-prefer-const]: https://eslint.org/docs/rules/prefer-const +[eslint/no-multi-assign]: https://eslint.org/docs/rules/no-multi-assign +[eslint/no-plusplus]: https://eslint.org/docs/rules/no-plusplus +[eslint/no-undef]: https://eslint.org/docs/rules/no-undef +[eslint/one-var]: https://eslint.org/docs/rules/one-var +[eslint/prefer-const]: https://eslint.org/docs/rules/prefer-const diff --git a/src/rules/whitespace.md b/src/rules/whitespace.md index 22ef8c5..1fefb9f 100644 --- a/src/rules/whitespace.md +++ b/src/rules/whitespace.md @@ -2,7 +2,7 @@ Always use spaces characters where two (2) spaces are used for indentation. The usage of tab characters is disallowed. A tab could be a different number of columns depending on the environment, but a space is always one column. Adhering to this rule increases the code readability and maintainability significantly. -> ESLint: [indent][eslint-indent] +> ESLint: [indent][eslint/indent] ###### Examples @@ -38,7 +38,7 @@ function winter() { Place one (1) space before the leading brace. -> ESLint: [space-before-blocks][eslint-space-before-blocks] +> ESLint: [space-before-blocks][eslint/space-before-blocks] ###### Examples @@ -76,7 +76,7 @@ winter.set("snow", { Place one (1) space before the opening parenthesis in control statements (`if`, `while` etc.). Place no space between the argument list and the function name in function calls and declarations. -> ESLint: [keyword-spacing][eslint-keyword-spacing] +> ESLint: [keyword-spacing][eslint/keyword-spacing] ###### Examples @@ -112,7 +112,7 @@ function snow() { Set off operators with spaces. -> ESLint: [space-infix-ops][eslint-space-infix-ops] +> ESLint: [space-infix-ops][eslint/space-infix-ops] ###### Examples @@ -132,7 +132,7 @@ const snowflakes = snow + 5; End files with a single [newline][ref-wikipedia-newline] character. Prefer the *LF* [control character][ref-wikipedia-control_character] (\*nix based OS) and avoid the usage of *CRLF* characters (mostly Microsoft Windows based OS). -> ESlint: [eol-last][eslint-eol-last] +> ESlint: [eol-last][eslint/eol-last] ###### Examples @@ -160,7 +160,7 @@ export default snow;¬ Use indentation when making long method chains. Use a leading dot, which emphasizes that the line is a method call, not a new statement. -> ESLint: [newline-per-chained-call][eslint-newline-per-chained-call] and [no-whitespace-before-property][eslint-no-whitespace-before-property] +> ESLint: [newline-per-chained-call][eslint/newline-per-chained-call] and [no-whitespace-before-property][eslint/no-whitespace-before-property] ###### Examples @@ -271,7 +271,7 @@ return winter; Do not pad blocks with blank lines. -> ESLint: [padded-blocks][eslint-padded-blocks] +> ESLint: [padded-blocks][eslint/padded-blocks] ###### Examples @@ -332,7 +332,7 @@ class Winter { Do not add spaces inside parentheses. -> ESLint: [space-in-parens][eslint-space-in-parens] +> ESLint: [space-in-parens][eslint/space-in-parens] ###### Examples @@ -368,7 +368,7 @@ if (winter) { Do not add spaces inside brackets. -> ESLint: [array-bracket-spacing][eslint-array-bracket-spacing] +> ESLint: [array-bracket-spacing][eslint/array-bracket-spacing] ###### Examples @@ -390,7 +390,7 @@ console.log(winter[0]); Add spaces inside curly braces. -> ESlint: [object-curly-spacing][eslint-object-curly-spacing] +> ESlint: [object-curly-spacing][eslint/object-curly-spacing] ###### Examples @@ -412,7 +412,7 @@ Avoid having lines of code that are longer than 100 characters including whitesp Note that the [rule for long strings][strings-line_length] is exempt from this rule, and should not be broken up. -> ESLint: [max-len][eslint-max-len] +> ESLint: [max-len][eslint/max-len] ###### Examples @@ -448,17 +448,17 @@ season({ [strings-line_length]: strings.md#line-length -[eslint-array-bracket-spacing]: https://eslint.org/docs/rules/array-bracket-spacing -[eslint-eol-last]: https://eslint.org/docs/rules/eol-last -[eslint-indent]: https://eslint.org/docs/rules/indent -[eslint-keyword-spacing]: https://eslint.org/docs/rules/keyword-spacing -[eslint-max-len]: https://eslint.org/docs/rules/max-len -[eslint-newline-per-chained-call]: https://eslint.org/docs/rules/newline-per-chained-call -[eslint-no-whitespace-before-property]: https://eslint.org/docs/rules/no-whitespace-before-property -[eslint-object-curly-spacing]: https://eslint.org/docs/rules/object-curly-spacing -[eslint-padded-blocks]: https://eslint.org/docs/rules/padded-blocks -[eslint-space-before-blocks]: https://eslint.org/docs/rules/space-before-blocks -[eslint-space-in-parens]: https://eslint.org/docs/rules/space-in-parens -[eslint-space-infix-ops]: https://eslint.org/docs/rules/space-infix-ops -[ref-wikipedia-newline]: https://en.wikipedia.org/wiki/Newline +[eslint/array-bracket-spacing]: https://eslint.org/docs/rules/array-bracket-spacing +[eslint/eol-last]: https://eslint.org/docs/rules/eol-last +[eslint/indent]: https://eslint.org/docs/rules/indent +[eslint/keyword-spacing]: https://eslint.org/docs/rules/keyword-spacing +[eslint/max-len]: https://eslint.org/docs/rules/max-len +[eslint/newline-per-chained-call]: https://eslint.org/docs/rules/newline-per-chained-call +[eslint/no-whitespace-before-property]: https://eslint.org/docs/rules/no-whitespace-before-property +[eslint/object-curly-spacing]: https://eslint.org/docs/rules/object-curly-spacing +[eslint/padded-blocks]: https://eslint.org/docs/rules/padded-blocks +[eslint/space-before-blocks]: https://eslint.org/docs/rules/space-before-blocks +[eslint/space-in-parens]: https://eslint.org/docs/rules/space-in-parens +[eslint/space-infix-ops]: https://eslint.org/docs/rules/space-infix-ops [ref-wikipedia-control_character]: https://en.wikipedia.org/wiki/Control_character +[ref-wikipedia-newline]: https://en.wikipedia.org/wiki/Newline