Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

eslint-plugin-functional

eslint-functional488.4kMIT8.0.0TypeScript support: included

ESLint rules to promote functional programming in TypeScript.

eslint, eslint plugin, fp, functional, functional programming, immutability, immutable

readme

eslint-logo

eslint-plugin-functional

npm version Release Coverage Status semantic-release code style: prettier MIT license GitHub Discussions

An ESLint plugin to disable mutation and promote functional programming in JavaScript and TypeScript.

Any donations would be much appreciated. 😄

Enterprise Users

eslint-plugin-functional is available as part of the Tidelift Subscription.

Tidelift is working with the maintainers of eslint-plugin-functional and a growing network of open source maintainers to ensure your open source software supply chain meets enterprise standards now and into the future. Learn more.

Getting Started

See our getting started guide.

Rulesets

The following rulesets are made available by this plugin.

Presets:

  • Strict (configs.strict)\ Enforce recommended rules designed to strictly enforce functional programming.

  • Recommended (configs.recommended)\ Has the same goal as the strict preset but a little more lenient, allowing for functional-like coding styles and nicer integration with non-functional 3rd-party libraries.

  • Lite (configs.lite)\ Good if you're new to functional programming or are converting a large codebase.

Categorized:

  • Currying (configs.currying)\ JavaScript functions support syntax that is not compatible with curried functions. To enforce currying, this syntax should be prevented.

  • No Exceptions (configs.noExceptions)\ Functional programming style does not use run-time exceptions. Instead expressions produces values to indicate errors.

  • No Mutations (configs.noMutations)\ Prevent mutating any data as that's not functional

  • No Other Paradigms (configs.noOtherParadigms)\ JavaScript is multi-paradigm, allowing not only functional, but object-oriented as well as other programming styles. To promote a functional style, prevent the use of other paradigm styles.

  • No Statements (configs.noStatements)\ In functional programming everything is an expression that produces a value. JavaScript has a lot of syntax that is just statements that does not produce a value. That syntax has to be prevented to promote a functional style.

  • Stylistic (configs.stylistic)\ Enforce code styles that can be considered to be more functional.

Other:

  • All (configs.all)\ Enables all rules defined in this plugin.

  • Off (configs.off)\ Disable all rules defined in this plugin.

  • Disable Type Checked (configs.disableTypeChecked)\ Disable all rules that require type information.

  • External Vanilla Recommended (configs.externalVanillaRecommended)\ Configures recommended vanilla ESLint rules.

  • External TypeScript Recommended (configs.externalTypeScriptRecommended)\ Configures recommended TypeScript ESLint rules. Enabling this ruleset will also enable the vanilla one.

The below section gives details on which rules are enabled by each ruleset.

Rules

💼 Configurations enabled in.\ ⚠️ Configurations set to warn in.\ 🚫 Configurations disabled in.\ ☑️ Set in the lite configuration.\ ✅ Set in the recommended configuration.\ 🔒 Set in the strict configuration.\ 🎨 Set in the stylistic configuration.\ 🔧 Automatically fixable by the --fix CLI option.\ 💡 Manually fixable by editor suggestions.\ 💭 Requires type information.\ ❌ Deprecated.

Currying

Name Description 💼 ⚠️ 🚫 🔧 💡 💭
functional-parameters Enforce functional parameters. ☑️ ✅ 🔒 badge-currying | badge-disableTypeChecked | 💭

No Exceptions

Name Description 💼 ⚠️ 🚫 🔧 💡 💭
no-promise-reject Disallow rejecting promises. | | |
no-throw-statements Disallow throwing exceptions. ☑️ ✅ 🔒 badge-noExceptions | | |
no-try-statements Disallow try-catch[-finally] and try-finally patterns. 🔒 badge-noExceptions | ☑️ ✅ |

No Mutations

Name Description 💼 ⚠️ 🚫 🔧 💡 💭
immutable-data Enforce treating data as immutable. ☑️ ✅ 🔒 badge-noMutations | badge-disableTypeChecked | 💭
no-let Disallow mutable variables. ☑️ ✅ 🔒 badge-noMutations | | |
prefer-immutable-types Require function parameters to be typed as certain immutability ☑️ ✅ 🔒 badge-noMutations | badge-disableTypeChecked 🔧 💡 💭
prefer-readonly-type Prefer readonly types over mutable types. | badge-disableTypeChecked 🔧 | 💭
type-declaration-immutability Enforce the immutability of types based on patterns. ☑️ ✅ 🔒 badge-noMutations | badge-disableTypeChecked 🔧 💡 💭

No Other Paradigms

Name Description 💼 ⚠️ 🚫 🔧 💡 💭
no-class-inheritance Disallow inheritance in classes. ☑️ ✅ 🔒 badge-noOtherParadigms | | |
no-classes Disallow classes. ✅ 🔒 badge-noOtherParadigms | ☑️ | |
no-mixed-types Restrict types so that only members of the same kind are allowed in them. ☑️ ✅ 🔒 badge-noOtherParadigms | badge-disableTypeChecked | 💭
no-this-expressions Disallow this access. 🔒 badge-noOtherParadigms | ☑️ ✅ |

No Statements

Name Description 💼 ⚠️ 🚫 🔧 💡 💭
no-conditional-statements Disallow conditional statements. ✅ 🔒 badge-noStatements | ☑️ badge-disableTypeChecked | 💭
no-expression-statements Disallow expression statements. ✅ 🔒 badge-noStatements | ☑️ badge-disableTypeChecked | 💭
no-loop-statements Disallow imperative loops. ☑️ ✅ 🔒 badge-noStatements | | |
no-return-void Disallow functions that don't return anything. ☑️ ✅ 🔒 badge-noStatements | badge-disableTypeChecked | 💭

Stylistic

Name Description 💼 ⚠️ 🚫 🔧 💡 💭
prefer-property-signatures Prefer property signatures over method signatures. 🎨 | badge-disableTypeChecked | 💭
prefer-tacit Replaces x => f(x) with just f. | 🎨 badge-disableTypeChecked | 💡 💭
readonly-type Require consistently using either readonly keywords or Readonly<T> 🎨 | badge-disableTypeChecked 🔧 | 💭

In addition to the above rules, there are a few other rules we recommended.

These rules are what are included in the external recommended rulesets.

Vanilla Rules

  • no-var\ Without this rule, it is still possible to create mutable var variables.

  • no-param-reassign\ Don't allow function parameters to be reassigned, they should be treated as constants.

  • prefer-const\ This rule provides a helpful fixer when converting from an imperative code style to a functional one.

TypeScript Rules

Contributing

See our contributing guide.

Prior work

This project started as a port of tslint-immutable which was originally inspired by eslint-plugin-immutable.

changelog

Changelog

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

8.0.0 (2025-01-14)

Bug Fixes

BREAKING CHANGES

  • when using patterns to match against PrivateIdentifiers, their names are now prefixed with a #.

7.3.0 (2025-01-14)

Bug Fixes

  • prefer-tacit: improve suggestion message (59194b2)

Features

  • type-declaration-immutability: allow defining custom suggestion messages (037a3c7)

7.2.2 (2025-01-14)

7.2.1 (2025-01-06)

7.2.0 (2024-12-19)

Features

  • no-conditional-statements: add option ignoreCodePattern for ignoring if conditions (#909) (d3cf5d8)

7.1.0 (2024-10-20)

Features

7.0.3 (2024-10-20)

Bug Fixes

  • ensure default options are applied (#889) (5b57cd2)
  • functional-parameters: default options not being applied to option overrides (#888) (06f2b80)

7.0.2 (2024-08-26)

Bug Fixes

  • no-expression-statements: ignore Promise<void> when ignoreVoid is set (#866) (2e1a992)

7.0.1 (2024-08-07)

Bug Fixes

  • don't throw when typescript can't be resolved (afb05bd)

7.0.0 (2024-08-05)

Bug Fixes

  • checking of types from ts's lib are now more strict (#862) (39beb25)

Features

  • eslint 9 migration (#809) (de4e3ea)
  • functional-parameters: allow overriding options based on where the function type is declared (#803) (21396d5), closes #575
  • functional-parameters: change options in recommended and lite configs (#811) (b3cb8d9)
  • immutable-data: allows for applying overrides to the options based on the root object's type (#826) (c04e425)
  • no-classes: add options ignoreIdentifierPattern and ignoreCodePattern (#863) (18aede1), closes #851
  • no-throw-statements: replace option allowInAsyncFunctions with allowToRejectPromises (#839) (c2c589c), closes #838
  • prefer-immutable-types: allow overriding options based on where the type is declared (#804) (86fa76a), closes #800
  • prefer-immutable-types: change the options in recommeneded and lite configs (#810) (defd713)

BREAKING CHANGES

  • The minimum supported Node version is now 18.18.0 (#809)
  • The minimum supported TypeScript version is now 4.7.4 (#809)
  • The minimum supported Eslint version is now 9.0.0 (#809)
  • no-throw-statements: replace option allowInAsyncFunctions with allowToRejectPromises (#839)

6.6.3 (2024-07-11)

Bug Fixes

  • immutable-data: ignoreAccessorPattern can now handle NonNullExpressions and ChainExpressions (#849) (f6ff69b), closes #840

6.6.2 (2024-07-11)

Bug Fixes

  • no-conditional-statements: allow continue and break statements with labels to be considered "returning" (#846) (969b77b)
  • no-expression-statements: arrow functions cannot be self returning (#847) (7217fa4)
  • no-promise-reject: new Promises and throw statements are now also checked (#848) (fbe27ad)

6.6.1 (2024-07-06)

6.6.0 (2024-06-19)

Features

  • prefer-immutable-types: allow for changing suggestion messages (#828) (822cc33)

6.5.2 (2024-06-19)

6.5.1 (2024-04-15)

Bug Fixes

  • prefer-tacit: don't check member functions by default (#808) (4e6c3a9), closes #805

6.5.0 (2024-04-15)

Features

6.4.1 (2024-04-14)

Bug Fixes

  • prefer-tacit: handling functions that don't map to directly to an eslint node (#802) (423e249)

6.4.0 (2024-04-01)

Bug Fixes

  • type-declaration-immutability: replace fixer with suggestions for recommended and lite configs (ae62abb)

Features

  • type-declaration-immutability: add support for in-editor suggestions (7a0a790), closes #797

6.3.2 (2024-04-01)

Bug Fixes

  • readonly-type: empty object types should not trigger reports (fc6a394), closes #796

6.3.1 (2024-04-01)

Bug Fixes

  • improve types for flat configs (68e6450)

6.3.0 (2024-03-25)

Features

  • immutable-data: add option for ignoreNonConstDeclarations to treatParametersAsConst (#794) (059591a), closes #724

6.2.3 (2024-03-25)

Bug Fixes

  • no-mixed-types: handle more than just property signatures, check the type of type references (#793) (55bd794), closes #734

6.2.2 (2024-03-25)

Bug Fixes

  • immutable-data: ignore casting when evaluating the expressions (#792) (50e789a), closes #790

6.2.1 (2024-03-24)

Bug Fixes

6.2.0 (2024-03-22)

Bug Fixes

  • type-declaration-immutability: some (hopefully all) maximum call stack size exceeded errors (61c561c), closes #767

Features

6.2.0-next.3 (2024-03-14)

Features

  • move flat configs to new "flat" subpackage (1d3533f)

6.2.0-next.2 (2024-03-14)

Bug Fixes

6.2.0-next.1 (2024-03-13)

Features

  • add support for flat configs (901d52a)

6.1.1 (2024-03-11)

Bug Fixes

  • immutable-data: handle immediate mutation of arrays generated from strings (b003d1c), closes #759

6.1.0 (2024-03-10)

Bug Fixes

  • immutable-data: treat Object.entries({}).sort() as immediate mutation (245886f), closes #773

Features

  • new config to disable all rules that require type info (af30f15)

6.0.1 (2024-02-23)

Bug Fixes

  • typos in function names (05b2f9c)

6.0.0 (2023-07-30)

Features

  • functional-parameters: add option to ignore getters and setters (9c89b9e)
  • immutable-data: add new option ignoreNonConstDeclarations (ecde24a), closes #691
  • no-expression-statements: add option to ignore self returning functions (894fb91), closes #611
  • prefer-immutable-types: use suggestions instead of a fixer by default (#598) (3fb9028)
  • remove assumeTypes option (6be5862)
  • add sanity checks to type immutablity override settings (d3ce5b0)
  • replace ignorePattern option with ignoreIdentifierPattern and ignoreCodePattern (48d8eba), closes #467

Build System

  • increase minimum supported TypeScript version to 4.3.5 (aefe6b2)

BREAKING CHANGES

  • replace ignorePattern option with ignoreIdentifierPattern and ignoreCodePattern
  • increase minimum supported TypeScript version to 4.3.5
  • remove assumeTypes option
  • prefer-immutable-types: The fixer config no longer inherits as many options as before; be sure to be explicit in your configs.

5.0.8 (2023-04-15)

Bug Fixes

  • prefer-immutable-types: support private identifier (#634) (6349a92)

5.0.7 (2023-03-21)

5.0.6 (2023-03-11)

Bug Fixes

  • type-declaration-immutability: only allow strings to be given for identifiers (#573) (e9f2f90)

5.0.5 (2023-03-07)

Bug Fixes

  • no-expression-statements: allow yield expressions (#570) (81c26de)

5.0.4 (2023-02-06)

Bug Fixes

  • prefer-immutable-types: inheriting of config options (b528bc7)

5.0.3 (2023-02-06)

Bug Fixes

  • add missing dependency "@typescript-eslint/type-utils" (7bd4d03)

5.0.2 (2023-02-04)

Bug Fixes

  • prefer-immutable-types: handling of destructuring assignment (e390f54)

5.0.1 (2023-02-02)

Bug Fixes

  • improve calculation of immutability involving intersections (75cd708), closes #525

5.0.0 (2023-01-29)

Bug Fixes

  • drop dependency on tsutils (7a63d89)
  • fix meta data and improve doc generation (1f50625)
  • no-mixed-types: add support for TypeLiteral inside Readonly<> (1da622d), closes #500
  • prefer-immutable-types: fix string[] to readonly string[] (a6a27ff)
  • prefer-immutable-types: improve the fixer (4bba113)
  • prefer-tacit: use suggestions instead of a fixer and improve how that suggestion works (8473743)
  • type-declaration-immutability: don't strip whitespace formatting from node text (8dcaa4d)

Build System

  • bump minimum supported version of node to 16.10 (23b45d2)
  • bump minimum supported version of TypeScript to 4.0.2 (405102b)

Features

  • add new strict ruleset and reduce strictness of the recommended ruleset (26424e0)
  • functional-parameters: add option to ignore lambda function expressions (044e54b)
  • no-classes: rename rule from no-class (76a8e2d)
  • no-conditional-statements: rename rule from no-conditional-statement (82b21fa)
  • no-expression-statements: rename rule from no-expression-statement (d0f9e98)
  • no-loop-statements: rename rule from no-loop-statement (683209d)
  • no-method-signature: rename to prefer-property-signatures & move it to stylistic ruleset (da2259f)
  • no-mixed-types: rename rule from no-mixed-type (392f9e8)
  • no-this-expression: remove no-this-expression from recommended and lite rulesets (bbd798b)
  • no-this-expressions: rename rule from no-this-expression (10c3bb6)
  • no-throw-statements: rename rule from no-throw-statement (4be92c8)
  • no-try-statements: rename rule from no-try-statement (e88828a)
  • prefer-immutable-types: add fixer for class properties (5e047c2)
  • prefer-immutable-types: add support for a fixer (195ee1a)
  • prefer-immutable-types: create rule (2552d55)
  • prefer-immutable-types: improve ignore options (8a35e52)
  • prefer-property-signatures: rename ignoreIfReadonly to ignoreIfReadonlyWrapped (86f354b)
  • prefer-readonly-type: deprecated this rule (82816a0)
  • readonly-type: create rule (64af937)
  • remove @typescript-eslint/prefer-readonly-parameter-types from external-recommended (72aa204)
  • rename many of the options (b47e983)
  • rename ruleset no-object-orientation to no-other-paradigms (7ec10c6)
  • split external-recommended rulesets into vanilla and typescript variants (1e7f77a)
  • type-declaration-immutability: add fixer support (2189397)
  • type-declaration-immutability: create rule (941e774)
  • update ruleset configurations (c195d8e)

BREAKING CHANGES

  • rename many of the options
  • no-try-statements: rename rule from no-try-statement
  • no-throw-statements: rename rule from no-throw-statement
  • no-this-expressions: rename rule from no-this-expression
  • no-mixed-types: rename rule from no-mixed-type
  • no-loop-statements: rename rule from no-loop-statement
  • no-expression-statements: rename rule from no-expression-statement
  • no-conditional-statements: rename rule from no-conditional-statement
  • no-classes: rename rule from no-class
  • no-this-expression: remove no-this-expression from recommended and lite rulesets
  • prefer-property-signatures: rename ignoreIfReadonly to ignoreIfReadonlyWrapped and set it to false by default
  • rename ruleset no-object-orientation to no-other-paradigms
  • add new strict ruleset and reduce strictness of the recommended ruleset
  • update ruleset configurations
  • split external-recommended rulesets into vanilla and typescript variants
  • remove @typescript-eslint/prefer-readonly-parameter-types from external-recommended
  • no-method-signature: rename to prefer-property-signatures & move it to stylistic ruleset
  • bump minimum supported version of TypeScript to 4.0.2
  • bump minimum supported version of node to 16.10

4.4.1 (2022-10-03)

Bug Fixes

  • prefer-tacit: handling of member expressions and be more strict with optional parameters (a277c2a), closes #486

4.4.0 (2022-09-20)

Features

  • functional-parameters: add support for ignoring selector prefixes (af3cbcc), closes #207 #244

4.3.2 (2022-09-19)

4.3.1 (2022-09-14)

Bug Fixes

  • no-return-void: check additional ts function types (3db661d)

4.3.0 (2022-09-08)

Bug Fixes

  • prefer-tacit: assign callee to a new variable when autofixing function declarations (4467d1b)

Features

  • prefer-tacit: support autofixing function calls with type parameters (#415) (e752ced)

4.2.2 (2022-07-22)

Bug Fixes

  • typos and tighten a sentence (9da0455)

4.2.1 (2022-04-06)

4.2.0 (2022-02-06)

Features

  • no-throw-statements: add an option to allow throw statements within async functions (#330) (7cee76b)

4.1.1 (2022-01-08)

Bug Fixes

4.1.0 (2022-01-08)

Features

  • no-let: add option to allow lets inside of for loop initializers (#306) (71769f3)

4.0.2 (2021-10-24)

Bug Fixes

  • get the coorect identifier text of values in object expressions (#285) (a267af6)
  • off config no longer contains "overrides" (#286) (5ad533d)

4.0.1 (2021-10-24)

Bug Fixes

  • ignore pattern - "id" and "key" values are only used if defined (77d6dd6)

4.0.0 (2021-10-17)

Bug Fixes

  • bring rule meta data "recommended" into line with the recommend config (3c4a042)

chore

  • remove deprecated rule: prefer-type-literal (3a54331)
  • remove deprecated stylitic ruleset (2b96760)
  • update minimum required node version to 12 (97acb3f)

Features

  • add an off preset (686b7fe)
  • add stylistic rules to lite and recommended rule sets (b81b4c7)
  • external-recommended: update recommended external rules (353acb3)
  • no-return-void: implicit types are now checked by default (2adbe14)
  • prefer-tacit: disable prefer-tacit by default in recommended and lite configs (6f9204d)

BREAKING CHANGES

  • no-return-void: implicit types are now checked by default
  • external-recommended: update recommended external rules
  • rule "prefer-type-literal" has been removed.
  • removed stylitic ruleset in favor of stylistic ruleset
  • Node ^12.22.0 or ^14.17.0 or >=16.0.0 is now required

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Generated by auto-changelog.

v3.7.2

Fixed

  • fix(no-conditional-statements): break/continue are no longer treated as returning inside of a switch #272

v3.7.1 - 2021-09-20

Fixed

  • fix(no-conditional-statements): branch with break/continue statements now treated as returning branch #269

v3.7.0 - 2021-08-28

Commits

  • refactor: change implementation to not to be selector-based as requested 8350384
  • feat(no-method-signature): properly handle Readonly&lt;{TSMethodSignature}&gt; 18d178f
  • feat: add option ignoreIfReadonly 2d4963b

v3.6.0 - 2021-08-13

Merged

  • Use pull_request_target #254

Fixed

  • feat(no-expression-statements): add option ignoreVoid #71
  • docs: update tslint migration guide #214

v3.5.0 - 2021-08-01

Commits

  • feat(no-return-void): add option to allow for checking implicit return types 6fb1604
  • docs: update readme for using with typescript ba8fe86
  • build(deps-dev): bump tsutils from 3.17.1 to 3.21.0 1c921ea

v3.4.1 - 2021-07-31

Commits

  • feat(no-conditional-statements): allow switches that exhaust all types 35a72f1

v3.4.0 - 2021-07-31

Merged

  • docs: enable github discussions and remove link to spectrum #238

Fixed

  • fix(prefer-tacit): cannot read property 'type' of undefined #221 #194
  • fix(prefer-readonly-type): allow inline mutable return types #98
  • fix(prefer-readonly-type): computed property fixer #200

v3.3.0 - 2021-07-27

Fixed

  • feat(no-conditional-statements): support never-returning functions for option allowReturningBranches #99

v3.2.2 - 2021-07-23

Fixed

  • fix(prefer-type-literal): deprecated rule #170

v3.2.1 - 2021-01-01

Merged

  • build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.9.1 to 4.11.1 #175
  • build(deps-dev): bump @rollup/plugin-typescript from 8.0.0 to 8.1.0 #164
  • build(deps): bump @typescript-eslint/experimental-utils from 4.9.1 to 4.11.0 #162
  • build(deps-dev): bump eslint from 7.15.0 to 7.16.0 #163
  • build(deps-dev): bump @typescript-eslint/parser from 4.9.1 to 4.11.0 #165
  • build(deps-dev): bump rollup from 2.34.2 to 2.35.1 #166
  • Automerge dependabot updates #167
  • chore: configure github settings #161
  • refactor: general tidy up of code and configs #149

v3.1.0 - 2020-10-08

Commits

  • feat(prefer-readonly-type): add option ignoreCollections ad53072
  • docs(prefer-type-literal): remove mention of removed option allowLocalMutation from docs c4b4051

v3.0.2 - 2020-08-23

Merged

  • improvement(prefer-type-literal): remove option allowLocalMutation #148
  • build(deps-dev): add peer dependencies #147
  • build(deps-peer): update typescript #146
  • build(deps-dev): update jest #145
  • build(deps-dev): bump eslint #144
  • build(deps-dev): bump typescript from 3.7.4 to 4.0.2 #141
  • build(deps-dev): bump lint-staged from 9.5.0 to 10.2.11 #135
  • build(deps-dev): bump rollup-plugin-typescript2 from 0.25.3 to 0.27.2 #139
  • build(deps-dev): bump shelljs from 0.8.3 to 0.8.4 #140
  • build(deps-dev): bump rollup from 1.29.0 to 2.26.5 #138
  • build(deps-dev): bump rimraf from 3.0.0 to 3.0.2 #137
  • build(deps-dev): bump husky from 4.0.6 to 4.2.5 #134
  • build(deps-dev): bump eslint-plugin-prettier from 3.1.2 to 3.1.4 #133
  • build(deps-dev): bump eslint-plugin-jsdoc from 20.1.0 to 30.2.4 #132
  • build(deps-dev): bump eslint-plugin-jest from 23.4.0 to 23.20.0 #131
  • build(deps-dev): bump babel-eslint from 10.0.3 to 10.1.0 #126
  • build(deps-dev): bump eslint-plugin-import from 2.20.0 to 2.22.0 #130
  • build(deps-dev): bump eslint-plugin-eslint-plugin from 2.2.0 to 2.3.0 #129
  • build(deps-dev): bump eslint-config-prettier from 6.9.0 to 6.11.0 #128
  • build(deps-dev): bump codecov from 3.7.1 to 3.7.2 #127
  • build(deps-dev): bump auto-changelog from 1.16.2 to 2.2.0 #125
  • build(deps-dev): bump @typescript-eslint/parser from 2.15.0 to 2.34.0 #124
  • build(deps-dev): bump @typescript-eslint/eslint-plugin from 2.15.0 to 2.34.0 #123
  • build(deps-dev): bump @types/estree from 0.0.42 to 0.0.45 #119
  • build(deps-dev): bump @types/jest from 24.0.25 to 26.0.10 #121
  • build(deps-dev): bump @types/glob from 7.1.1 to 7.1.3 #120
  • build(deps-dev): bump @types/eslint from 6.1.3 to 7.2.1 #118
  • build(deps): bump escape-string-regexp from 2.0.0 to 4.0.0 #117
  • Faster CI #142
  • fix(prefer-readonly-type): add support for mapped types #107
  • fix(immutable-data): add support for ignoring exceptions for update expressions #108
  • fix(type guard): cast with as as the type guard doesn't seem to be working correctly anymore #111
  • improvement(no-mixed-types): rule violations now mark the type as wrong, not members of the type #93
  • Reduce use of .reduce() #92

Fixed

  • improvement(prefer-type-literal): remove option allowLocalMutation #87
  • fix(prefer-readonly-type): add support for mapped types #106
  • fix(immutable-data): add support for ignoring exceptions for UpdateExpression #97

v3.0.1 - 2020-01-12

Commits

  • docs(changelog): update changelog for v3.0.0 d248311
  • build: auto changelog changes are now part of the same git commit as the release 7c369c8
  • docs(readme): fix issue with svg image not displaying on npmjs aa4f573

v3.0.0 - 2020-01-12

Merged

  • set up auto-changelog so we don't have to do it manually #90
  • Dependency Update. #89
  • Examples of correct/incorrect code for each rule #60
  • docs: rename 'allow-pattern.md' to 'ignore-pattern.md' #88
  • Prettier readme #85
  • Additional tests #86

Commits

  • Breaking change: build(dep): update all dependencies ce90405

v2.0.0 - 2019-12-29

Merged

  • build(deps): bump handlebars from 4.1.2 to 4.5.3 #84
  • Do not enforce a parameter count by default in the lite ruleset #83
  • Add a section to explicitly list all the rulesets #77
  • no longer include external recommended rules in the rulesets; put them in their own ruleset #80

Fixed

  • Breaking change: feat(functional-parameters): do not enforce a parameter count by default in the lite ruleset #79

Commits

  • fix: fix config type infor 0c4e097

v1.0.3 - 2019-12-29

Merged

  • Local mutation in a function now only refers to within the function's body #78
  • no-mixed-interface rule does not exist anymore #81

Fixed

  • fix(prefer-readonly-type): local mutation in a function only refers to within the function's body #75

v1.0.2 - 2019-12-11

Merged

  • feat(no-expression-statements): allow specifying directive prologues #74

Fixed

  • fix(no-expression-statements): allow specifying directive prologues #68

v1.0.1 - 2019-12-11

Merged

  • fix(typeguards): only assume types if type information is not avaliable #73
  • docs(readme): change tslint-immutable to eslint-plugin-functional #66 #69
  • docs(readme): fix typos #70

Fixed

  • fix(typeguards): only assume types if type information is not avaliable #72

v1.0.0 - 2019-10-14

Merged

  • Upgrade typescript-eslint packages #65
  • Rename to no-mutations #62

v1.0.0-rc.2 - 2019-08-07

Fixed

  • fix(prefer-readonly-type): index signatures in type literals can now be ignored #56

v1.0.0-rc.1 - 2019-08-07

Merged

  • fix(immutable-data): Implement option ignoreImmediateMutation #59
  • Rename Options #55
  • Fix #56 #57
  • tslint migration guide #54
  • Rename Rules #53

Fixed

  • Merge pull request #57 from jonaskello/issue-56 #56

v0.5.3 - 2019-08-03

Fixed

  • fix(immutable-data): ignore call expressions on ignored arrays #56

v0.5.2 - 2019-07-31

Merged

  • Ignore Pattern Improvements #52

v0.5.1 - 2019-07-30

Merged

  • feat(no-try): Add options allowCatch and allowFinally. #50

Fixed

  • build: Remove @typescript-eslint as a dependency and thus remove typescript as a dependency. #49

v0.5.0 - 2019-07-29

Merged

  • Refactor out the checkNode function for createRule. #48
  • Text matching of MemberExpression nodes now includes the property name #47
  • Test configs #43
  • feat(no-mixed-types): no-mixed-interface -> no-mixed-types #42
  • feat(configs): Create additional configs for each category of rules. #40
  • feat(functional-parameters): Add option to allow iifes #39
  • new rule: prefer-type #38

Fixed

  • feat(functional-parameters): Add option to allow iifes #37

Commits

  • Breaking change: feat(ignore options): text matching MemberExpression nodes should include the property name f4ab878

v0.4.0 - 2019-07-19

Merged

  • Rename the package #36

v0.3.0 - 2019-07-19

Merged

  • ReadonlySet and ReadonlyMap #30
  • prefer-readonly-types #29
  • no-return-void #28
  • functional-parameters #27
  • feat(readonly-keyword) Add support for parameter properties #26
  • no-conditional-statements #23
  • chore: Remove no-delete rule. #21
  • new rule: immutable-data #22

Fixed

  • feat(immutable-data): Prevent object mutation methods. #16

v0.2.1 - 2019-07-12

Merged

  • Remove no-let fixer #14

v0.2.0 - 2019-07-12

Merged

  • docs: Update supported rules. #8
  • Make the code more functional #9
  • Added ignoreAccessorPattern, ignorePattern now uses Regex matching #7
  • Ignore option fix #6
  • Consistent file casing #5
  • WIP: Port docs for each rule #3

Fixed

  • Breaking change: feat(ignore-option): Add ignoreAccessorPattern option to deal with accessors and switch ignorePatter #4

Commits

  • chore(no-array-mutation): Port of rule. 48d6c71

v0.1.0 - 2019-07-01

Merged

  • Update readme for eslint #2