eslint-plugin-rxjs-x
v0.6.1
Published
ESLint v9+ plugin for RxJS
Downloads
8,107
Maintainers
Readme
eslint-plugin-rxjs-x
This ESLint plugin is intended to prevent issues with RxJS.
Most of these rules require TypeScript typed linting and are indicated as such below.
Migrating from eslint-plugin-rxjs
This project is a fork of eslint-plugin-rxjs
initially started to support the new ESLint flat config format.
There are some breaking changes:
- The old
.eslintrc
format is not supported.- If you need to continue using this old format, use the original
eslint-plugin-rxjs
or a different fork.
- If you need to continue using this old format, use the original
- The plugin namespace specified in the
recommended
config was changed fromrxjs
torxjs-x
.- e.g. In your ESLint config,
rxjs/no-subject-value
should be renamed torxjs-x/no-subject-value
.
- e.g. In your ESLint config,
- The rule
rxjs/no-ignored-observable
is renamed torxjs-x/no-floating-observables
.
A complete description of all changes are documented in the CHANGELOG file.
Install
See typescript-eslint's Getting Started for a full ESLint setup guide.
Then use the recommended
configuration in your eslint.config.mjs
and enable typed linting:
// @ts-check
import tseslint from 'typescript-eslint';
import rxjsX from 'eslint-plugin-rxjs-x';
export default tseslint.config({
extends: [
...tseslint.configs.recommended,
rxjsX.configs.recommended,
],
languageOptions: {
parserOptions: {
projectService: true,
},
},
});
The above example uses typescript-eslint
's built-in config to set up the TypeScript parser for us.
Enabling projectService
then turns on typed linting.
See Linting with Type Information for details.
Configs
| | Name |
| :- | :------------ |
| ✅ | recommended
|
| 🔒 | strict
|
Rules
The package includes the following rules.
💼 Configurations enabled in.
✅ Set in the recommended
configuration.
🔒 Set in the strict
configuration.
🔧 Automatically fixable by the --fix
CLI option.
💡 Manually fixable by editor suggestions.
💭 Requires type information.
❌ Deprecated.
| Name | Description | 💼 | 🔧 | 💡 | 💭 | ❌ |
| :--------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- | :--- | :- | :- | :- | :- |
| ban-observables | Disallow banned observable creators. | | | | | |
| ban-operators | Disallow banned operators. | | | | 💭 | |
| finnish | Enforce Finnish notation. | | | | 💭 | |
| just | Require the use of just
instead of of
. | | 🔧 | | | |
| macro | Require the use of the RxJS Tools Babel macro. | | 🔧 | | | ❌ |
| no-async-subscribe | Disallow passing async
functions to subscribe
. | ✅ 🔒 | | | 💭 | |
| no-compat | Disallow the rxjs-compat
package. | | | | | ❌ |
| no-connectable | Disallow operators that return connectable observables. | | | | 💭 | |
| no-create | Disallow the static Observable.create
function. | ✅ 🔒 | | | 💭 | |
| no-cyclic-action | Disallow cyclic actions in effects and epics. | | | | 💭 | |
| no-explicit-generics | Disallow unnecessary explicit generic type arguments. | | | | | |
| no-exposed-subjects | Disallow public and protected subjects. | 🔒 | | | 💭 | |
| no-finnish | Disallow Finnish notation. | | | | 💭 | |
| no-floating-observables | Require Observables to be handled appropriately. | 🔒 | | | 💭 | |
| no-ignored-default-value | Disallow using firstValueFrom
, lastValueFrom
, first
, and last
without specifying a default value. | 🔒 | | | 💭 | |
| no-ignored-error | Disallow calling subscribe
without specifying an error handler. | 🔒 | | | 💭 | |
| no-ignored-notifier | Disallow observables not composed from the repeatWhen
or retryWhen
notifier. | ✅ 🔒 | | | 💭 | |
| no-ignored-replay-buffer | Disallow using ReplaySubject
, publishReplay
or shareReplay
without specifying the buffer size. | ✅ 🔒 | | | | |
| no-ignored-subscribe | Disallow calling subscribe
without specifying arguments. | | | | 💭 | |
| no-ignored-subscription | Disallow ignoring the subscription returned by subscribe
. | | | | 💭 | |
| no-ignored-takewhile-value | Disallow ignoring the value within takeWhile
. | ✅ 🔒 | | | | |
| no-implicit-any-catch | Disallow implicit any
error parameters in catchError
operators. | ✅ 🔒 | 🔧 | 💡 | 💭 | |
| no-index | Disallow importing index modules. | ✅ 🔒 | | | | |
| no-internal | Disallow importing internal modules. | ✅ 🔒 | 🔧 | 💡 | | |
| no-misused-observables | Disallow Observables in places not designed to handle them. | 🔒 | | | 💭 | |
| no-nested-subscribe | Disallow calling subscribe
within a subscribe
callback. | ✅ 🔒 | | | 💭 | |
| no-redundant-notify | Disallow sending redundant notifications from completed or errored observables. | ✅ 🔒 | | | 💭 | |
| no-sharereplay | Disallow unsafe shareReplay
usage. | ✅ 🔒 | | | | |
| no-subclass | Disallow subclassing RxJS classes. | 🔒 | | | 💭 | |
| no-subject-unsubscribe | Disallow calling the unsubscribe
method of subjects. | ✅ 🔒 | | | 💭 | |
| no-subject-value | Disallow accessing the value
property of a BehaviorSubject
instance. | | | | 💭 | |
| no-subscribe-handlers | Disallow passing handlers to subscribe
. | | | | 💭 | |
| no-subscribe-in-pipe | Disallow calling of subscribe
within any RxJS operator inside a pipe
. | ✅ 🔒 | | | 💭 | |
| no-tap | Disallow the tap
operator. | | | | | ❌ |
| no-topromise | Disallow use of the toPromise
method. | ✅ 🔒 | | 💡 | 💭 | |
| no-unbound-methods | Disallow passing unbound methods. | ✅ 🔒 | | | 💭 | |
| no-unsafe-catch | Disallow unsafe catchError
usage in effects and epics. | | | | 💭 | |
| no-unsafe-first | Disallow unsafe first
/take
usage in effects and epics. | | | | 💭 | |
| no-unsafe-subject-next | Disallow unsafe optional next
calls. | ✅ 🔒 | | | 💭 | |
| no-unsafe-switchmap | Disallow unsafe switchMap
usage in effects and epics. | | | | 💭 | |
| no-unsafe-takeuntil | Disallow applying operators after takeUntil
. | ✅ 🔒 | | | 💭 | |
| prefer-observer | Disallow passing separate handlers to subscribe
and tap
. | ✅ 🔒 | 🔧 | 💡 | 💭 | |
| prefer-root-operators | Disallow importing operators from rxjs/operators
. | ✅ 🔒 | 🔧 | 💡 | | |
| suffix-subjects | Enforce the use of a suffix in subject identifiers. | | | | 💭 | |
| throw-error | Enforce passing only Error
values to throwError
. | ✅ 🔒 | | | 💭 | |