diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 00000000..aec8fd53 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,3 @@ +{ + "line-length": false +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8c95e7b7..72fdeaee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1 +1,3 @@ -There's nothing here, yet. Thanks for looking. I'll eventually get around to filling this out. \ No newline at end of file +# Contributing + +There's nothing here, yet. Thanks for looking. I'll eventually get around to filling this out. diff --git a/README.md b/README.md index 21c75f5d..c6bb1774 100644 --- a/README.md +++ b/README.md @@ -36,10 +36,22 @@ export default tseslint.config({ }); ``` +## Configs + + + +| | Name | +| :- | :------------ | +| βœ… | `recommended` | + + + ## Rules The package includes the following rules. + + πŸ’Ό Configurations enabled in.\ βœ… Set in the `recommended` configuration.\ πŸ”§ Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\ @@ -47,46 +59,48 @@ The package includes the following rules. πŸ’­ Requires [type information](https://typescript-eslint.io/linting/typed-linting).\ ❌ Deprecated. -| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | -| :--------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- | :- | :- | :- | :- | :- | -| [ban-observables](docs/rules/ban-observables.md) | Forbids the use of banned observables. | | | | | | -| [ban-operators](docs/rules/ban-operators.md) | Forbids the use of banned operators. | | | | | | -| [finnish](docs/rules/finnish.md) | Enforces the use of Finnish notation. | | | | πŸ’­ | | -| [just](docs/rules/just.md) | Enforces the use of a `just` alias for `of`. | | πŸ”§ | | | | -| [macro](docs/rules/macro.md) | Enforces the use of the RxJS Tools Babel macro. | | πŸ”§ | | | | -| [no-async-subscribe](docs/rules/no-async-subscribe.md) | Forbids passing `async` functions to `subscribe`. | βœ… | | | πŸ’­ | | -| [no-compat](docs/rules/no-compat.md) | Forbids importation from locations that depend upon `rxjs-compat`. | | | | | | -| [no-connectable](docs/rules/no-connectable.md) | Forbids operators that return connectable observables. | | | | πŸ’­ | | -| [no-create](docs/rules/no-create.md) | Forbids the calling of `Observable.create`. | βœ… | | | πŸ’­ | | -| [no-cyclic-action](docs/rules/no-cyclic-action.md) | Forbids effects and epics that re-emit filtered actions. | | | | πŸ’­ | | -| [no-explicit-generics](docs/rules/no-explicit-generics.md) | Forbids explicit generic type arguments. | | | | | | -| [no-exposed-subjects](docs/rules/no-exposed-subjects.md) | Forbids exposed (i.e. non-private) subjects. | | | | πŸ’­ | | -| [no-finnish](docs/rules/no-finnish.md) | Forbids the use of Finnish notation. | | | | πŸ’­ | | -| [no-ignored-error](docs/rules/no-ignored-error.md) | Forbids the calling of `subscribe` without specifying an error handler. | | | | πŸ’­ | | -| [no-ignored-notifier](docs/rules/no-ignored-notifier.md) | Forbids observables not composed from the `repeatWhen` or `retryWhen` notifier. | βœ… | | | πŸ’­ | | -| [no-ignored-observable](docs/rules/no-ignored-observable.md) | Forbids the ignoring of observables returned by functions. | | | | πŸ’­ | | -| [no-ignored-replay-buffer](docs/rules/no-ignored-replay-buffer.md) | Forbids using `ReplaySubject`, `publishReplay` or `shareReplay` without specifying the buffer size. | βœ… | | | | | -| [no-ignored-subscribe](docs/rules/no-ignored-subscribe.md) | Forbids the calling of `subscribe` without specifying arguments. | | | | πŸ’­ | | -| [no-ignored-subscription](docs/rules/no-ignored-subscription.md) | Forbids ignoring the subscription returned by `subscribe`. | | | | πŸ’­ | | -| [no-ignored-takewhile-value](docs/rules/no-ignored-takewhile-value.md) | Forbids ignoring the value within `takeWhile`. | βœ… | | | | | -| [no-implicit-any-catch](docs/rules/no-implicit-any-catch.md) | Forbids implicit `any` error parameters in `catchError` operators. | βœ… | πŸ”§ | πŸ’‘ | πŸ’­ | | -| [no-index](docs/rules/no-index.md) | Forbids the importation from index modules. | βœ… | | | | | -| [no-internal](docs/rules/no-internal.md) | Forbids the importation of internals. | βœ… | πŸ”§ | πŸ’‘ | | | -| [no-nested-subscribe](docs/rules/no-nested-subscribe.md) | Forbids the calling of `subscribe` within a `subscribe` callback. | βœ… | | | πŸ’­ | | -| [no-redundant-notify](docs/rules/no-redundant-notify.md) | Forbids redundant notifications from completed or errored observables. | βœ… | | | πŸ’­ | | -| [no-sharereplay](docs/rules/no-sharereplay.md) | Forbids using the `shareReplay` operator. | βœ… | | | | | -| [no-subclass](docs/rules/no-subclass.md) | Forbids subclassing RxJS classes. | | | | πŸ’­ | | -| [no-subject-unsubscribe](docs/rules/no-subject-unsubscribe.md) | Forbids calling the `unsubscribe` method of a subject instance. | βœ… | | | πŸ’­ | | -| [no-subject-value](docs/rules/no-subject-value.md) | Forbids accessing the `value` property of a `BehaviorSubject` instance. | | | | πŸ’­ | | -| [no-subscribe-handlers](docs/rules/no-subscribe-handlers.md) | Forbids the passing of handlers to `subscribe`. | | | | πŸ’­ | | -| [no-tap](docs/rules/no-tap.md) | Forbids the use of the `tap` operator. | | | | | ❌ | -| [no-topromise](docs/rules/no-topromise.md) | Forbids the use of the `toPromise` method. | | | | πŸ’­ | | -| [no-unbound-methods](docs/rules/no-unbound-methods.md) | Forbids the passing of unbound methods. | βœ… | | | πŸ’­ | | -| [no-unsafe-catch](docs/rules/no-unsafe-catch.md) | Forbids unsafe `catchError` usage in effects and epics. | | | | πŸ’­ | | -| [no-unsafe-first](docs/rules/no-unsafe-first.md) | Forbids unsafe `first`/`take` usage in effects and epics. | | | | πŸ’­ | | -| [no-unsafe-subject-next](docs/rules/no-unsafe-subject-next.md) | Forbids unsafe optional `next` calls. | βœ… | | | πŸ’­ | | -| [no-unsafe-switchmap](docs/rules/no-unsafe-switchmap.md) | Forbids unsafe `switchMap` usage in effects and epics. | | | | πŸ’­ | | -| [no-unsafe-takeuntil](docs/rules/no-unsafe-takeuntil.md) | Forbids the application of operators after `takeUntil`. | βœ… | | | πŸ’­ | | -| [prefer-observer](docs/rules/prefer-observer.md) | Forbids the passing separate handlers to `subscribe` and `tap`. | | πŸ”§ | πŸ’‘ | πŸ’­ | | -| [suffix-subjects](docs/rules/suffix-subjects.md) | Enforces the use of a suffix in subject identifiers. | | | | πŸ’­ | | -| [throw-error](docs/rules/throw-error.md) | Enforces the passing of `Error` values to error notifications. | | | | πŸ’­ | | +| NameΒ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β  | Description | πŸ’Ό | πŸ”§ | πŸ’‘ | πŸ’­ | ❌ | +| :--------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- | :- | :- | :- | :- | :- | +| [ban-observables](docs/rules/ban-observables.md) | Disallow banned observable creators. | | | | | | +| [ban-operators](docs/rules/ban-operators.md) | Disallow banned operators. | | | | | | +| [finnish](docs/rules/finnish.md) | Enforce Finnish notation. | | | | πŸ’­ | | +| [just](docs/rules/just.md) | Require the use of `just` instead of `of`. | | πŸ”§ | | | | +| [macro](docs/rules/macro.md) | Require the use of the RxJS Tools Babel macro. | | πŸ”§ | | | | +| [no-async-subscribe](docs/rules/no-async-subscribe.md) | Disallow passing `async` functions to `subscribe`. | βœ… | | | πŸ’­ | | +| [no-compat](docs/rules/no-compat.md) | Disallow the `rxjs-compat` package. | | | | | | +| [no-connectable](docs/rules/no-connectable.md) | Disallow operators that return connectable observables. | | | | πŸ’­ | | +| [no-create](docs/rules/no-create.md) | Disallow the static `Observable.create` function. | βœ… | | | πŸ’­ | | +| [no-cyclic-action](docs/rules/no-cyclic-action.md) | Disallow cyclic actions in effects and epics. | | | | πŸ’­ | | +| [no-explicit-generics](docs/rules/no-explicit-generics.md) | Disallow unnecessary explicit generic type arguments. | | | | | | +| [no-exposed-subjects](docs/rules/no-exposed-subjects.md) | Disallow public and protected subjects. | | | | πŸ’­ | | +| [no-finnish](docs/rules/no-finnish.md) | Disallow Finnish notation. | | | | πŸ’­ | | +| [no-ignored-error](docs/rules/no-ignored-error.md) | Disallow calling `subscribe` without specifying an error handler. | | | | πŸ’­ | | +| [no-ignored-notifier](docs/rules/no-ignored-notifier.md) | Disallow observables not composed from the `repeatWhen` or `retryWhen` notifier. | βœ… | | | πŸ’­ | | +| [no-ignored-observable](docs/rules/no-ignored-observable.md) | Disallow ignoring observables returned by functions. | | | | πŸ’­ | | +| [no-ignored-replay-buffer](docs/rules/no-ignored-replay-buffer.md) | Disallow using `ReplaySubject`, `publishReplay` or `shareReplay` without specifying the buffer size. | βœ… | | | | | +| [no-ignored-subscribe](docs/rules/no-ignored-subscribe.md) | Disallow calling `subscribe` without specifying arguments. | | | | πŸ’­ | | +| [no-ignored-subscription](docs/rules/no-ignored-subscription.md) | Disallow ignoring the subscription returned by `subscribe`. | | | | πŸ’­ | | +| [no-ignored-takewhile-value](docs/rules/no-ignored-takewhile-value.md) | Disallow ignoring the value within `takeWhile`. | βœ… | | | | | +| [no-implicit-any-catch](docs/rules/no-implicit-any-catch.md) | Disallow implicit `any` error parameters in `catchError` operators. | βœ… | πŸ”§ | πŸ’‘ | πŸ’­ | | +| [no-index](docs/rules/no-index.md) | Disallow importing index modules. | βœ… | | | | | +| [no-internal](docs/rules/no-internal.md) | Disallow importing internal modules. | βœ… | πŸ”§ | πŸ’‘ | | | +| [no-nested-subscribe](docs/rules/no-nested-subscribe.md) | Disallow calling `subscribe` within a `subscribe` callback. | βœ… | | | πŸ’­ | | +| [no-redundant-notify](docs/rules/no-redundant-notify.md) | Disallow sending redundant notifications from completed or errored observables. | βœ… | | | πŸ’­ | | +| [no-sharereplay](docs/rules/no-sharereplay.md) | Disallow unsafe `shareReplay` usage. | βœ… | | | | | +| [no-subclass](docs/rules/no-subclass.md) | Disallow subclassing RxJS classes. | | | | πŸ’­ | | +| [no-subject-unsubscribe](docs/rules/no-subject-unsubscribe.md) | Disallow calling the `unsubscribe` method of subjects. | βœ… | | | πŸ’­ | | +| [no-subject-value](docs/rules/no-subject-value.md) | Disallow accessing the `value` property of a `BehaviorSubject` instance. | | | | πŸ’­ | | +| [no-subscribe-handlers](docs/rules/no-subscribe-handlers.md) | Disallow passing handlers to `subscribe`. | | | | πŸ’­ | | +| [no-tap](docs/rules/no-tap.md) | Disallow the `tap` operator. | | | | | ❌ | +| [no-topromise](docs/rules/no-topromise.md) | Disallow use of the `toPromise` method. | | | | πŸ’­ | | +| [no-unbound-methods](docs/rules/no-unbound-methods.md) | Disallow passing unbound methods. | βœ… | | | πŸ’­ | | +| [no-unsafe-catch](docs/rules/no-unsafe-catch.md) | Disallow unsafe `catchError` usage in effects and epics. | | | | πŸ’­ | | +| [no-unsafe-first](docs/rules/no-unsafe-first.md) | Disallow unsafe `first`/`take` usage in effects and epics. | | | | πŸ’­ | | +| [no-unsafe-subject-next](docs/rules/no-unsafe-subject-next.md) | Disallow unsafe optional `next` calls. | βœ… | | | πŸ’­ | | +| [no-unsafe-switchmap](docs/rules/no-unsafe-switchmap.md) | Disallow unsafe `switchMap` usage in effects and epics. | | | | πŸ’­ | | +| [no-unsafe-takeuntil](docs/rules/no-unsafe-takeuntil.md) | Disallow applying operators after `takeUntil`. | βœ… | | | πŸ’­ | | +| [prefer-observer](docs/rules/prefer-observer.md) | Disallow passing separate handlers to `subscribe` and `tap`. | | πŸ”§ | πŸ’‘ | πŸ’­ | | +| [suffix-subjects](docs/rules/suffix-subjects.md) | Enforce the use of a suffix in subject identifiers. | | | | πŸ’­ | | +| [throw-error](docs/rules/throw-error.md) | Enforce passing only `Error` values to error notifications. | | | | πŸ’­ | | + + diff --git a/docs/rules/ban-observables.md b/docs/rules/ban-observables.md index df0571f6..a03d9a20 100644 --- a/docs/rules/ban-observables.md +++ b/docs/rules/ban-observables.md @@ -1,4 +1,6 @@ -# Avoid banned observable creators (`ban-observables`) +# Disallow banned observable creators (`rxjs-x/ban-observables`) + + This rule can be configured so that developers can ban any observable creators they want to avoid in their project. diff --git a/docs/rules/ban-operators.md b/docs/rules/ban-operators.md index c242095e..372ec147 100644 --- a/docs/rules/ban-operators.md +++ b/docs/rules/ban-operators.md @@ -1,4 +1,6 @@ -# Avoid banned operators (`ban-operators`) +# Disallow banned operators (`rxjs-x/ban-operators`) + + This rule can be configured so that developers can ban any operators they want to avoid in their project. diff --git a/docs/rules/finnish.md b/docs/rules/finnish.md index 941494da..f9d75846 100644 --- a/docs/rules/finnish.md +++ b/docs/rules/finnish.md @@ -1,4 +1,8 @@ -# Use Finnish notation (`finnish`) +# Enforce Finnish notation (`rxjs-x/finnish`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule enforces the use of Finnish notation - i.e. the `$` suffix. @@ -18,6 +22,21 @@ const answer$ = of(42, 54); ## Options + + +| Name | Type | +| :----------- | :------ | +| `functions` | Boolean | +| `methods` | Boolean | +| `names` | Object | +| `parameters` | Boolean | +| `properties` | Boolean | +| `strict` | Boolean | +| `types` | Object | +| `variables` | Boolean | + + + This rule accepts a single option which is an object with properties that determine whether Finnish notation is enforced for `functions`, `methods`, `parameters`, `properties` and `variables`. It also contains: - `names` and `types` properties that determine whether of not Finnish notation is to be enforced for specific names or types. diff --git a/docs/rules/just.md b/docs/rules/just.md index a1759309..157cfd73 100644 --- a/docs/rules/just.md +++ b/docs/rules/just.md @@ -1,11 +1,11 @@ -# Use `just` instead of `of` (`just`) +# Require the use of `just` instead of `of` (`rxjs-x/just`) -This rule enforces the use of `just` instead of `of`. Some other languages with Rx implementations use the former and this rule is for developers who have that preference. +πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). -## Options + -This rule has no options. +This rule enforces the use of `just` instead of `of`. Some other languages with Rx implementations use the former and this rule is for developers who have that preference. ## Further reading -- [Rename `of` to `just`](https://github.com/ReactiveX/rxjs/issues/3747) \ No newline at end of file +- [Rename `of` to `just`](https://github.com/ReactiveX/rxjs/issues/3747) diff --git a/docs/rules/macro.md b/docs/rules/macro.md index cc16e63a..c1f269ef 100644 --- a/docs/rules/macro.md +++ b/docs/rules/macro.md @@ -1,7 +1,7 @@ -# Use the RxJS Tools macro (`macro`) +# Require the use of the RxJS Tools Babel macro (`rxjs-x/macro`) -This rule ensures that modules that import `rxjs` also import the Babel macro for [RxJS Tools](https://rxjs.tools). +πŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). -## Options + -This rule has no options. +This rule ensures that modules that import `rxjs` also import the Babel macro for [RxJS Tools](https://rxjs.tools). diff --git a/docs/rules/no-async-subscribe.md b/docs/rules/no-async-subscribe.md index e26d503a..c19cf915 100644 --- a/docs/rules/no-async-subscribe.md +++ b/docs/rules/no-async-subscribe.md @@ -1,4 +1,10 @@ -# Avoid passing async functions to `subscribe` (`no-async-subscribe`) +# Disallow passing `async` functions to `subscribe` (`rxjs-x/no-async-subscribe`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if async functions are passed to `subscribe`. @@ -18,10 +24,6 @@ import { of } from "rxjs"; of(42).subscribe(() => console.log(value)); ``` -## Options - -This rule has no options. - ## Further reading - [Why does this rule exist?](https://stackoverflow.com/q/71559135) diff --git a/docs/rules/no-compat.md b/docs/rules/no-compat.md index 00ddc9b9..27f2d5ec 100644 --- a/docs/rules/no-compat.md +++ b/docs/rules/no-compat.md @@ -1,10 +1,8 @@ -# Avoid the `rxjs-compat` package (`no-compat`) +# Disallow the `rxjs-compat` package (`rxjs-x/no-compat`) -This rule prevents the use of `rxjs-compat`. + -## Options - -This rule has no options. +This rule prevents importing from locations that depend upon the `rxjs-compat` package. ## Further reading diff --git a/docs/rules/no-connectable.md b/docs/rules/no-connectable.md index 0a2a9204..c7be7d76 100644 --- a/docs/rules/no-connectable.md +++ b/docs/rules/no-connectable.md @@ -1,7 +1,7 @@ -# Avoid connectable observables (`no-connectable`) +# Disallow operators that return connectable observables (`rxjs-x/no-connectable`) -This rule prevents the use of connectable observables. +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). -## Options + -This rule has no options. \ No newline at end of file +This rule prevents the use of connectable observables. diff --git a/docs/rules/no-create.md b/docs/rules/no-create.md index da1dbeb4..3d6afe37 100644 --- a/docs/rules/no-create.md +++ b/docs/rules/no-create.md @@ -1,4 +1,10 @@ -# Avoid the static `create` function (`no-create`) +# Disallow the static `Observable.create` function (`rxjs-x/no-create`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule prevents the use of the static `create` function in `Observable`. Developers should use `new` and the constructor instead. @@ -23,7 +29,3 @@ const answers = new Observable(subscriber => { subscriber.complete(); }); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-cyclic-action.md b/docs/rules/no-cyclic-action.md index 53b8482f..526ecf58 100644 --- a/docs/rules/no-cyclic-action.md +++ b/docs/rules/no-cyclic-action.md @@ -1,4 +1,8 @@ -# Avoid cyclic actions in effects and epics (`no-cyclic-action`) +# Disallow cyclic actions in effects and epics (`rxjs-x/no-cyclic-action`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures for effects and epics that emit actions that would pass their `ofType` filter. Such actions are cyclic and, upon emission, immediately re-trigger the effect or epic. @@ -22,7 +26,7 @@ actions.pipe( ); ``` -This rule can be used with effects _and epics_, so it makes __no attempt__ to discern whether or not dispatching is disabled for an NgRx effect. That is, code like this will effect (πŸ™ˆ) a failure: +This rule can be used with effects _and epics_, so it makes **no attempt** to discern whether or not dispatching is disabled for an NgRx effect. That is, code like this will effect (πŸ™ˆ) a failure: ```ts someEffect = createEffect(() => @@ -50,6 +54,14 @@ Or you can use an ESLint [inline comment](https://eslint.org/docs/user-guide/con ## Options + + +| Name | Type | +| :----------- | :----- | +| `observable` | String | + + + This rule accepts a single option which is an object with an `observable` property that is a regular expression used to match an effect or epic's actions observable. The default `observable` regular expression should match most effect and epic action sources. ```json diff --git a/docs/rules/no-explicit-generics.md b/docs/rules/no-explicit-generics.md index 7d2a6b6c..029ff4c2 100644 --- a/docs/rules/no-explicit-generics.md +++ b/docs/rules/no-explicit-generics.md @@ -1,4 +1,6 @@ -# Avoid unnecessary explicit type arguments (`no-explicit-generics`) +# Disallow unnecessary explicit generic type arguments (`rxjs-x/no-explicit-generics`) + + This rule prevents the use of explicit type arguments when the type arguments can be inferred. @@ -17,7 +19,3 @@ Examples of **correct** code for this rule: import { BehaviorSubject } from "rxjs"; const subject = new BehaviorSubject(42); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-exposed-subjects.md b/docs/rules/no-exposed-subjects.md index e597fa17..e6d54c38 100644 --- a/docs/rules/no-exposed-subjects.md +++ b/docs/rules/no-exposed-subjects.md @@ -1,6 +1,10 @@ -# Avoid public and protected subjects (`no-exposed-subjects`) +# Disallow public and protected subjects (`rxjs-x/no-exposed-subjects`) -This rule prevents the public or protected subjects. Developers should instead expose observables via the subjects' `toObservable` method. +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + + +This rule prevents exposed (i.e. non-private) subjects. Developers should instead expose observables via the subjects' `toObservable` method. ## Rule details @@ -27,6 +31,14 @@ class Answers { ## Options + + +| Name | Type | +| :--------------- | :------ | +| `allowProtected` | Boolean | + + + This rule accepts a single option which is an object with an `allowProtected` property that determines whether or not protected subjects are allowed. By default, they are not. ```json diff --git a/docs/rules/no-finnish.md b/docs/rules/no-finnish.md index 5bc7c9a1..f13a7261 100644 --- a/docs/rules/no-finnish.md +++ b/docs/rules/no-finnish.md @@ -1,4 +1,8 @@ -# Avoid Finnish notation (`no-finnish`) +# Disallow Finnish notation (`rxjs-x/no-finnish`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule prevents the use of Finnish notation. @@ -16,10 +20,6 @@ Examples of **correct** code for this rule: const answers = of(42, 54); ``` -## Options - -This rule has no options. - ## Further reading -- [Observables and Finnish Notation](https://medium.com/@benlesh/observables-and-finnish-notation-df8356ed1c9b) \ No newline at end of file +- [Observables and Finnish Notation](https://medium.com/@benlesh/observables-and-finnish-notation-df8356ed1c9b) diff --git a/docs/rules/no-ignored-error.md b/docs/rules/no-ignored-error.md index da94bcb8..09fe9bc0 100644 --- a/docs/rules/no-ignored-error.md +++ b/docs/rules/no-ignored-error.md @@ -1,4 +1,8 @@ -# Enforce the passing of error handlers (`no-ignored-error`) +# Disallow calling `subscribe` without specifying an error handler (`rxjs-x/no-ignored-error`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule enforces the passing of an error handler to `subscribe` calls. @@ -31,7 +35,3 @@ source.subscribe({ error: (error) => console.error(error) }); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-ignored-notifier.md b/docs/rules/no-ignored-notifier.md index fff175d8..6c3529b2 100644 --- a/docs/rules/no-ignored-notifier.md +++ b/docs/rules/no-ignored-notifier.md @@ -1,4 +1,10 @@ -# Ensure `repeatWhen` or `retryWhen` notifiers are used (`no-ignored-notifier`) +# Disallow observables not composed from the `repeatWhen` or `retryWhen` notifier (`rxjs-x/no-ignored-notifier`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if the notifier passed to a `repeatWhen` or `retryWhen` callback is not used. @@ -24,7 +30,3 @@ const repeating = source.pipe( repeatWhen(notifications => notifications.pipe(take(3))) ); ``` - -## Options - -This rule has no options. diff --git a/docs/rules/no-ignored-observable.md b/docs/rules/no-ignored-observable.md index 45df0619..000564ea 100644 --- a/docs/rules/no-ignored-observable.md +++ b/docs/rules/no-ignored-observable.md @@ -1,4 +1,8 @@ -# Use returned observables (`no-ignored-observable`) +# Disallow ignoring observables returned by functions (`rxjs-x/no-ignored-observable`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + The effects failures if an observable returned by a function is neither assigned to a variable or property or passed to a function. @@ -17,7 +21,3 @@ Examples of **correct** code for this rule: import { of } from "rxjs"; const answers = of(42, 54); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-ignored-replay-buffer.md b/docs/rules/no-ignored-replay-buffer.md index 7b245a2b..6dd92333 100644 --- a/docs/rules/no-ignored-replay-buffer.md +++ b/docs/rules/no-ignored-replay-buffer.md @@ -1,4 +1,8 @@ -# Avoid unbounded replay buffers (`no-ignored-replay-buffer`) +# Disallow using `ReplaySubject`, `publishReplay` or `shareReplay` without specifying the buffer size (`rxjs-x/no-ignored-replay-buffer`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + + This rule effects failures if the buffer size of a replay buffer is not explicitly specified. @@ -22,7 +26,3 @@ const subject = new ReplaySubject(1); import { ReplaySubject } from "rxjs"; const subject = new ReplaySubject(Infinity); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-ignored-subscribe.md b/docs/rules/no-ignored-subscribe.md index 42f904dd..b557975c 100644 --- a/docs/rules/no-ignored-subscribe.md +++ b/docs/rules/no-ignored-subscribe.md @@ -1,4 +1,8 @@ -# Enforce the passing of handlers to `subscribe` (`no-ignored-subscribe`) +# Disallow calling `subscribe` without specifying arguments (`rxjs-x/no-ignored-subscribe`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures whenever `subscribe` is called without handlers. @@ -22,7 +26,3 @@ import { of } from "rxjs"; of(42, 54).subscribe((value) => console.log(value)); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-ignored-subscription.md b/docs/rules/no-ignored-subscription.md index d4a5227b..2e09c6c1 100644 --- a/docs/rules/no-ignored-subscription.md +++ b/docs/rules/no-ignored-subscription.md @@ -1,4 +1,8 @@ -# Use returned subscriptions (`no-ignored-subscription`) +# Disallow ignoring the subscription returned by `subscribe` (`rxjs-x/no-ignored-subscription`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + The effects failures if an subscription returned by call to `subscribe` is neither assigned to a variable or property or passed to a function. @@ -27,7 +31,3 @@ const numbers = new Observable(subscriber => { interval(1e3).subscribe(subscriber); }); ``` - -## Options - -This rule has no options. diff --git a/docs/rules/no-ignored-takewhile-value.md b/docs/rules/no-ignored-takewhile-value.md index 70d91445..cea5d850 100644 --- a/docs/rules/no-ignored-takewhile-value.md +++ b/docs/rules/no-ignored-takewhile-value.md @@ -1,4 +1,8 @@ -# Avoid unused `takeWhile` values (`no-ignored-takewhile-value`) +# Disallow ignoring the value within `takeWhile` (`rxjs-x/no-ignored-takewhile-value`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + + This rule effects failures if the value received by a `takeWhile` callback is not used in an expression. @@ -20,7 +24,3 @@ import { takeWhile } from "rxjs/operators"; const whilst = source.pipe(takeWhile(value => value)); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-implicit-any-catch.md b/docs/rules/no-implicit-any-catch.md index 4eb295c2..e8a7705b 100644 --- a/docs/rules/no-implicit-any-catch.md +++ b/docs/rules/no-implicit-any-catch.md @@ -1,6 +1,14 @@ -# Use type-safe error handlers (`no-implicit-any-catch`) +# Disallow implicit `any` error parameters in `catchError` operators (`rxjs-x/no-implicit-any-catch`) -This rule requires an explicit type annotation for error parameters in error handlers. It's similar to the TypeScript [`no-implicit-any-catch`](https://github.com/typescript-eslint/typescript-eslint/blob/e01204931e460f5e6731abc443c88d666ca0b07a/packages/eslint-plugin/docs/rules/no-implicit-any-catch.md) rule, but is for observables - not `try`/`catch` statements. +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ”§πŸ’‘ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix) and manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions). + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + + +This rule requires an explicit type annotation for error parameters in error handlers. It's similar to the typescript-eslint [`use-unknown-in-catch-callback-variable`](https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable/) rule or the TSConfig [`useUnknownInCatchVariables`](https://www.typescriptlang.org/tsconfig/#useUnknownInCatchVariables) option, but is for observables - not `try`/`catch` statements. ## Rule details @@ -62,6 +70,14 @@ throwError(() => new Error("Kaboom!")).pipe( ## Options + + +| Name | Type | +| :----------------- | :------ | +| `allowExplicitAny` | Boolean | + + + This rule accepts a single option which is an object with an `allowExplicitAny` property that determines whether or not the error variable can be explicitly typed as `any`. By default, the use of explicit `any` is forbidden. ```json diff --git a/docs/rules/no-index.md b/docs/rules/no-index.md index 6aa60f33..d1e96af0 100644 --- a/docs/rules/no-index.md +++ b/docs/rules/no-index.md @@ -1,4 +1,8 @@ -# Avoid importing index modules (`no-index`) +# Disallow importing index modules (`rxjs-x/no-index`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + + This rule effects failures if an index module is specified as the import location. @@ -15,7 +19,3 @@ Examples of **correct** code for this rule: ```ts import { of } from "rxjs"; ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-internal.md b/docs/rules/no-internal.md index 73c8feab..8c04bdb8 100644 --- a/docs/rules/no-internal.md +++ b/docs/rules/no-internal.md @@ -1,4 +1,10 @@ -# Avoid importing internal modules (`no-internal`) +# Disallow importing internal modules (`rxjs-x/no-internal`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ”§πŸ’‘ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix) and manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions). + + This rule effects failures if an internal module is specified as the import location. @@ -15,7 +21,3 @@ Examples of **correct** code for this rule: ```ts import { of } from "rxjs"; ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-nested-subscribe.md b/docs/rules/no-nested-subscribe.md index 57f660fa..9a1ed6cc 100644 --- a/docs/rules/no-nested-subscribe.md +++ b/docs/rules/no-nested-subscribe.md @@ -1,4 +1,10 @@ -# Avoid nested `subscribe` calls (`no-nested-subscribe`) +# Disallow calling `subscribe` within a `subscribe` callback (`rxjs-x/no-nested-subscribe`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if `subscribe` is called within a `subscribe` handler. @@ -24,7 +30,3 @@ of(42, 54).pipe( mergeMap((value) => timer(1e3).pipe(mapTo(value))) ).subscribe((value) => console.log(value)); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-redundant-notify.md b/docs/rules/no-redundant-notify.md index 4450d644..081049bf 100644 --- a/docs/rules/no-redundant-notify.md +++ b/docs/rules/no-redundant-notify.md @@ -1,4 +1,10 @@ -# Avoid sending redundant notifications (`no-redundant-notify`) +# Disallow sending redundant notifications from completed or errored observables (`rxjs-x/no-redundant-notify`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if an attempt is made to send a notification to an observer after a `complete` or `error` notification has already been sent. @@ -26,7 +32,3 @@ const subject = new Subject(); subject.next(42); subject.error(new Error("Kaboom!")); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-sharereplay.md b/docs/rules/no-sharereplay.md index f50110c2..6828f4fb 100644 --- a/docs/rules/no-sharereplay.md +++ b/docs/rules/no-sharereplay.md @@ -1,11 +1,23 @@ -# Avoid `shareReplay` (`no-sharereplay`) +# Disallow unsafe `shareReplay` usage (`rxjs-x/no-sharereplay`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + + This rule effects failures if the `shareReplay` operator is used - or if it is used without specifying a `config` argument. -The behaviour of `shareReplay` has changed several times - see the blog post linked below. +The behavior of `shareReplay` has changed several times - see the blog post linked below. ## Options + + +| Name | Type | +| :------------ | :------ | +| `allowConfig` | Boolean | + + + This rule accepts a single option which is an object with an `allowConfig` property that that determines whether `shareReplay` is allow if a config argument is specified. By default, `allowConfig` is `true`. ```json diff --git a/docs/rules/no-subclass.md b/docs/rules/no-subclass.md index 5274790f..80a1a664 100644 --- a/docs/rules/no-subclass.md +++ b/docs/rules/no-subclass.md @@ -1,7 +1,7 @@ -# Avoid subclassing RxJS classes (`no-subclass`) +# Disallow subclassing RxJS classes (`rxjs-x/no-subclass`) -This rule effects failures if an RxJS class is subclassed. Developers are encouraged to avoid subclassing RxJS classes, as some public and protected implementation details might change in the future. +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). -## Options + -This rule has no options. \ No newline at end of file +This rule effects failures if an RxJS class is subclassed. Developers are encouraged to avoid subclassing RxJS classes, as some public and protected implementation details might change in the future. diff --git a/docs/rules/no-subject-unsubscribe.md b/docs/rules/no-subject-unsubscribe.md index 09443065..dda9b824 100644 --- a/docs/rules/no-subject-unsubscribe.md +++ b/docs/rules/no-subject-unsubscribe.md @@ -1,11 +1,13 @@ -# Avoid calling `unsubscribe` on subjects (`no-subject-unsubscribe`) +# Disallow calling the `unsubscribe` method of subjects (`rxjs-x/no-subject-unsubscribe`) -This rule effects failures if the `unsubscribe` method is called on subjects. The method behaves differently to the `unsubsribe` method on subscriptions and is often an error. +πŸ’Ό This rule is enabled in the βœ… `recommended` config. -## Options +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). -This rule has no options. + + +This rule effects failures if the `unsubscribe` method is called on subjects. The method behaves differently to the `unsubscribe` method on subscriptions and is often an error. ## Further reading -- [Closed Subjects](https://ncjamieson.com/closed-subjects/) \ No newline at end of file +- [Closed Subjects](https://ncjamieson.com/closed-subjects/) diff --git a/docs/rules/no-subject-value.md b/docs/rules/no-subject-value.md index 7454f08b..f7fb9e50 100644 --- a/docs/rules/no-subject-value.md +++ b/docs/rules/no-subject-value.md @@ -1,7 +1,7 @@ -# Avoid using a behavior subject's value (`no-subject-value`) +# Disallow accessing the `value` property of a `BehaviorSubject` instance (`rxjs-x/no-subject-value`) -This rule effects an error if the `value` property - or `getValue` method - of a `BehaviorSubject` is used. +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). -## Options + -This rule has no options. \ No newline at end of file +This rule effects an error if the `value` property - or `getValue` method - of a `BehaviorSubject` is used. diff --git a/docs/rules/no-subscribe-handlers.md b/docs/rules/no-subscribe-handlers.md index 2293ffe0..0b2742e9 100644 --- a/docs/rules/no-subscribe-handlers.md +++ b/docs/rules/no-subscribe-handlers.md @@ -1,4 +1,8 @@ -# Forbid the passing of handlers to `subscribe` (`no-subscribe-handlers`) +# Disallow passing handlers to `subscribe` (`rxjs-x/no-subscribe-handlers`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures whenever `subscribe` is called with handlers. @@ -13,7 +17,6 @@ import { tap } from "rxjs/operators"; of(42, 54).subscribe((value) => console.log(value)); ``` - ```ts import { of } from "rxjs"; import { tap } from "rxjs/operators"; @@ -25,7 +28,6 @@ of(42, 54).subscribe({ Examples of **correct** code for this rule: - ```ts import { of } from "rxjs"; @@ -33,7 +35,3 @@ of(42, 54) .pipe(tap((value) => console.log(value))) .subscribe(); ``` - -## Options - -This rule has no options. diff --git a/docs/rules/no-tap.md b/docs/rules/no-tap.md index 2e109752..4eaf6690 100644 --- a/docs/rules/no-tap.md +++ b/docs/rules/no-tap.md @@ -1,7 +1,7 @@ -# Avoid `tap` (`no-tap`) +# Disallow the `tap` operator (`rxjs-x/no-tap`) -This rule effects failures if the `tap` operator is used. +❌ This rule is deprecated. It was replaced by [`rxjs-x/ban-operators`](ban-operators.md). -## Options + -This rule has no options. \ No newline at end of file +This rule effects failures if the `tap` operator is used. diff --git a/docs/rules/no-topromise.md b/docs/rules/no-topromise.md index 804df867..1b1d2c60 100644 --- a/docs/rules/no-topromise.md +++ b/docs/rules/no-topromise.md @@ -1,7 +1,7 @@ -# Avoid `toPromise` (`no-topromise`) +# Disallow use of the `toPromise` method (`rxjs-x/no-topromise`) -This rule effects failures if the `toPromise` method is used. +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). -## Options + -This rule has no options. \ No newline at end of file +This rule effects failures if the `toPromise` method is used. diff --git a/docs/rules/no-unbound-methods.md b/docs/rules/no-unbound-methods.md index 1d8fd6ba..f896809b 100644 --- a/docs/rules/no-unbound-methods.md +++ b/docs/rules/no-unbound-methods.md @@ -1,4 +1,10 @@ -# Avoid using unbound methods as callbacks (`no-unbound-methods`) +# Disallow passing unbound methods (`rxjs-x/no-unbound-methods`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if unbound methods are passed as callbacks. @@ -6,7 +12,6 @@ This rule effects failures if unbound methods are passed as callbacks. Examples of **incorrect** code for this rule: - ```ts return this.http .get("https://api.some.com/things/1") @@ -18,7 +23,6 @@ return this.http Examples of **correct** code for this rule: - ```ts return this.http .get("https://api.some.com/things/1") @@ -28,7 +32,6 @@ return this.http ); ``` - ```ts return this.http .get("https://api.some.com/things/1") @@ -38,10 +41,6 @@ return this.http ); ``` -## Options - -This rule has no options. - ## Further reading - [Avoiding unbound methods](https://ncjamieson.com/avoiding-unbound-methods/) diff --git a/docs/rules/no-unsafe-catch.md b/docs/rules/no-unsafe-catch.md index 243625e0..c1bcca4e 100644 --- a/docs/rules/no-unsafe-catch.md +++ b/docs/rules/no-unsafe-catch.md @@ -1,4 +1,8 @@ -# Avoid completing effects and epics (`no-unsafe-catch`) +# Disallow unsafe `catchError` usage in effects and epics (`rxjs-x/no-unsafe-catch`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if `catchError` is used in an effect or epic in a manner that will complete the outermost observable. @@ -38,6 +42,14 @@ actions.pipe( ## Options + + +| Name | Type | +| :----------- | :----- | +| `observable` | String | + + + This rule accepts a single option which is an object with an `observable` property that is a regular expression used to match an effect or epic's actions observable. The default `observable` regular expression should match most effect and epic action sources. ```json diff --git a/docs/rules/no-unsafe-first.md b/docs/rules/no-unsafe-first.md index d65f7449..aacd8b38 100644 --- a/docs/rules/no-unsafe-first.md +++ b/docs/rules/no-unsafe-first.md @@ -1,9 +1,21 @@ -# Avoid completing effects and epics (`no-unsafe-first`) +# Disallow unsafe `first`/`take` usage in effects and epics (`rxjs-x/no-unsafe-first`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if `first` is used in an effect or epic in a manner that will complete the outermost observable. ## Options + + +| Name | Type | +| :----------- | :----- | +| `observable` | String | + + + This rule accepts a single option which is an object with an `observable` property that is a regular expression used to match an effect or epic's actions observable. The default `observable` regular expression should match most effect and epic action sources. ```json diff --git a/docs/rules/no-unsafe-subject-next.md b/docs/rules/no-unsafe-subject-next.md index 41e23e7e..ff51ddad 100644 --- a/docs/rules/no-unsafe-subject-next.md +++ b/docs/rules/no-unsafe-subject-next.md @@ -1,4 +1,10 @@ -# Avoid passing `undefined` to `next` (`no-unsafe-subject-next`) +# Disallow unsafe optional `next` calls (`rxjs-x/no-unsafe-subject-next`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if `next` is called without an argument and the subject's value type is not `void`. @@ -24,7 +30,3 @@ subject.next(); const subject = new Subject(); subject.next(0); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/docs/rules/no-unsafe-switchmap.md b/docs/rules/no-unsafe-switchmap.md index ebd9e687..d6d7f776 100644 --- a/docs/rules/no-unsafe-switchmap.md +++ b/docs/rules/no-unsafe-switchmap.md @@ -1,9 +1,23 @@ -# Avoid `switchMap` bugs in effects and epics (`no-unsafe-switchmap`) +# Disallow unsafe `switchMap` usage in effects and epics (`rxjs-x/no-unsafe-switchmap`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if `switchMap` is used in effects or epics that perform actions other than reads. For a detailed explanation, see the blog post linked below. ## Options + + +| Name | +| :----------- | +| `allow` | +| `disallow` | +| `observable` | + + + This rule accepts a single option which is an object with `allow`, `disallow` and `observable` properties. The `observable` property is a regular expression used to match an effect or epic's actions observable. The default `observable` regular expression should match most effect and epic action sources. diff --git a/docs/rules/no-unsafe-takeuntil.md b/docs/rules/no-unsafe-takeuntil.md index dc49e751..992ef54d 100644 --- a/docs/rules/no-unsafe-takeuntil.md +++ b/docs/rules/no-unsafe-takeuntil.md @@ -1,4 +1,10 @@ -# Avoid `takeUntil` subscription leaks (`no-unsafe-takeuntil`) +# Disallow applying operators after `takeUntil` (`rxjs-x/no-unsafe-takeuntil`) + +πŸ’Ό This rule is enabled in the βœ… `recommended` config. + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures whenever `takeUntil` is used in observable compositions that can leak subscriptions. @@ -24,6 +30,15 @@ const combined = source ## Options + + +| Name | Type | +| :------ | :------- | +| `alias` | String[] | +| `allow` | String[] | + + + This rule accepts a single option which is an object with `alias` and `allow` properties. The `alias` property is an array of names of operators that should be treated similarly to `takeUntil` and the `allow` property is an array of names of operators that are safe to use after `takeUntil`. By default, the `allow` property contains all of the built-in operators that are safe to use after `takeUntil`. diff --git a/docs/rules/prefer-observer.md b/docs/rules/prefer-observer.md index e24f18bc..5c97c363 100644 --- a/docs/rules/prefer-observer.md +++ b/docs/rules/prefer-observer.md @@ -1,4 +1,10 @@ -# Avoid separate handlers (`prefer-observer`) +# Disallow passing separate handlers to `subscribe` and `tap` (`rxjs-x/prefer-observer`) + +πŸ”§πŸ’‘ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix) and manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions). + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if `subscribe` - or `tap` - is called with separate handlers instead of an observer. @@ -22,6 +28,14 @@ of(42, 54).subscribe({ ## Options + + +| Name | Type | +| :---------- | :------ | +| `allowNext` | Boolean | + + + This rule accepts a single option which is an object with an `allowNext` property that determines whether a single `next` callback is allowed. By default, `allowNext` is `true`. ```json diff --git a/docs/rules/suffix-subjects.md b/docs/rules/suffix-subjects.md index 5b522b4f..4083dada 100644 --- a/docs/rules/suffix-subjects.md +++ b/docs/rules/suffix-subjects.md @@ -1,4 +1,8 @@ -# Identify subjects (`suffix-subjects`) +# Enforce the use of a suffix in subject identifiers (`rxjs-x/suffix-subjects`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule effects failures if subject variables, properties and parameters don't conform to a naming scheme that identifies them as subjects. @@ -18,6 +22,18 @@ const answersSubject = new Subject(); ## Options + + +| Name | Type | +| :----------- | :------ | +| `parameters` | Boolean | +| `properties` | Boolean | +| `suffix` | String | +| `types` | Object | +| `variables` | Boolean | + + + This rule accepts a single option which is an object with properties that determine whether Finnish notation is enforced for `parameters`, `properties` and `variables`. It also contains a `types` property that determine whether of not the naming convention is to be enforced for specific types and a `suffix` property. The default (Angular-friendly) configuration looks like this: diff --git a/docs/rules/throw-error.md b/docs/rules/throw-error.md index 030db6ee..2764f87c 100644 --- a/docs/rules/throw-error.md +++ b/docs/rules/throw-error.md @@ -1,4 +1,8 @@ -# Avoid throwing non-Error values (`throw-error`) +# Enforce passing only `Error` values to error notifications (`rxjs-x/throw-error`) + +πŸ’­ This rule requires [type information](https://typescript-eslint.io/linting/typed-linting). + + This rule forbids throwing values that are neither `Error` nor `DOMException` instances. @@ -43,7 +47,3 @@ throwError(new Error("Kaboom!")); import { throwError } from "rxjs"; throwError(() => new Error("Kaboom!")); ``` - -## Options - -This rule has no options. \ No newline at end of file diff --git a/package.json b/package.json index 0a1263f4..336b3ab5 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,11 @@ ], "scripts": { "build": "tsup", - "lint": "eslint", + "lint": "yarn lint-js && yarn lint-docs && yarn lint-eslint-docs", + "lint-js": "eslint", + "lint-docs": "markdownlint-cli2 \"*/**.md\" \"#node_modules\"", + "lint-eslint-docs": "yarn build && eslint-doc-generator --check", + "docs": "eslint-doc-generator", "release": "bumpp && yarn run build", "test": "vitest", "coverage": "vitest run --coverage", @@ -73,9 +77,11 @@ "bumpp": "^9.8.0", "eslint": "^9.13.0", "eslint-config-flat-gitignore": "^0.3.0", + "eslint-doc-generator": "^1.7.1", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import-x": "^4.4.0", "eslint-plugin-n": "^17.12.0", + "markdownlint-cli2": "^0.14.0", "rxjs": "^7.0.0", "tsup": "^8.3.5", "tsx": "^4.19.2", diff --git a/src/rules/ban-observables.ts b/src/rules/ban-observables.ts index 26540818..32401e9f 100644 --- a/src/rules/ban-observables.ts +++ b/src/rules/ban-observables.ts @@ -8,7 +8,7 @@ export const banObservablesRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids the use of banned observables.', + description: 'Disallow banned observable creators.', }, messages: { forbidden: 'RxJS observable is banned: {{name}}{{explanation}}.', diff --git a/src/rules/ban-operators.ts b/src/rules/ban-operators.ts index 8ed3b3ab..dfd522c9 100644 --- a/src/rules/ban-operators.ts +++ b/src/rules/ban-operators.ts @@ -8,7 +8,7 @@ export const banOperatorsRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids the use of banned operators.', + description: 'Disallow banned operators.', }, messages: { forbidden: 'RxJS operator is banned: {{name}}{{explanation}}.', diff --git a/src/rules/finnish.ts b/src/rules/finnish.ts index 25167014..e054a6ea 100644 --- a/src/rules/finnish.ts +++ b/src/rules/finnish.ts @@ -20,7 +20,7 @@ export const finnishRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Enforces the use of Finnish notation.', + description: 'Enforce Finnish notation.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/just.ts b/src/rules/just.ts index 766b96a7..ab15a9a1 100644 --- a/src/rules/just.ts +++ b/src/rules/just.ts @@ -5,7 +5,7 @@ export const justRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Enforces the use of a `just` alias for `of`.', + description: 'Require the use of `just` instead of `of`.', }, fixable: 'code', messages: { diff --git a/src/rules/macro.ts b/src/rules/macro.ts index 7dcaeb61..0d404cb1 100644 --- a/src/rules/macro.ts +++ b/src/rules/macro.ts @@ -8,7 +8,7 @@ export const macroRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Enforces the use of the RxJS Tools Babel macro.', + description: 'Require the use of the RxJS Tools Babel macro.', }, fixable: 'code', messages: { diff --git a/src/rules/no-async-subscribe.ts b/src/rules/no-async-subscribe.ts index 740d9edd..522b72f7 100644 --- a/src/rules/no-async-subscribe.ts +++ b/src/rules/no-async-subscribe.ts @@ -6,7 +6,7 @@ export const noAsyncSubscribeRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids passing `async` functions to `subscribe`.', + description: 'Disallow passing `async` functions to `subscribe`.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-compat.ts b/src/rules/no-compat.ts index 6efb56bb..aec188f1 100644 --- a/src/rules/no-compat.ts +++ b/src/rules/no-compat.ts @@ -6,7 +6,7 @@ export const noCompatRule = ruleCreator({ meta: { docs: { description: - 'Forbids importation from locations that depend upon `rxjs-compat`.', + 'Disallow the `rxjs-compat` package.', }, messages: { forbidden: '\'rxjs-compat\'-dependent import locations are forbidden.', diff --git a/src/rules/no-connectable.ts b/src/rules/no-connectable.ts index 6b508732..cf8d51dc 100644 --- a/src/rules/no-connectable.ts +++ b/src/rules/no-connectable.ts @@ -6,7 +6,7 @@ export const noConnectableRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids operators that return connectable observables.', + description: 'Disallow operators that return connectable observables.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-create.ts b/src/rules/no-create.ts index ffa5135e..5123f8da 100644 --- a/src/rules/no-create.ts +++ b/src/rules/no-create.ts @@ -6,7 +6,7 @@ export const noCreateRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the calling of `Observable.create`.', + description: 'Disallow the static `Observable.create` function.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-cyclic-action.ts b/src/rules/no-cyclic-action.ts index 5656f931..057c31fc 100644 --- a/src/rules/no-cyclic-action.ts +++ b/src/rules/no-cyclic-action.ts @@ -18,7 +18,7 @@ export const noCyclicActionRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids effects and epics that re-emit filtered actions.', + description: 'Disallow cyclic actions in effects and epics.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-explicit-generics.ts b/src/rules/no-explicit-generics.ts index bb6acba3..199867e5 100644 --- a/src/rules/no-explicit-generics.ts +++ b/src/rules/no-explicit-generics.ts @@ -6,7 +6,7 @@ export const noExplicitGenericsRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids explicit generic type arguments.', + description: 'Disallow unnecessary explicit generic type arguments.', }, messages: { forbidden: 'Explicit generic type arguments are forbidden.', diff --git a/src/rules/no-exposed-subjects.ts b/src/rules/no-exposed-subjects.ts index 402dd2c2..5c5af5b7 100644 --- a/src/rules/no-exposed-subjects.ts +++ b/src/rules/no-exposed-subjects.ts @@ -11,7 +11,7 @@ export const noExposedSubjectsRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids exposed (i.e. non-private) subjects.', + description: 'Disallow public and protected subjects.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-finnish.ts b/src/rules/no-finnish.ts index b41faf7e..da3e662c 100644 --- a/src/rules/no-finnish.ts +++ b/src/rules/no-finnish.ts @@ -9,7 +9,7 @@ export const noFinnishRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the use of Finnish notation.', + description: 'Disallow Finnish notation.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-ignored-error.ts b/src/rules/no-ignored-error.ts index 5d603355..01b5f357 100644 --- a/src/rules/no-ignored-error.ts +++ b/src/rules/no-ignored-error.ts @@ -7,7 +7,7 @@ export const noIgnoredErrorRule = ruleCreator({ meta: { docs: { description: - 'Forbids the calling of `subscribe` without specifying an error handler.', + 'Disallow calling `subscribe` without specifying an error handler.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-ignored-notifier.ts b/src/rules/no-ignored-notifier.ts index 6c0b0779..c94d177a 100644 --- a/src/rules/no-ignored-notifier.ts +++ b/src/rules/no-ignored-notifier.ts @@ -11,7 +11,7 @@ export const noIgnoredNotifierRule = ruleCreator({ meta: { docs: { description: - 'Forbids observables not composed from the `repeatWhen` or `retryWhen` notifier.', + 'Disallow observables not composed from the `repeatWhen` or `retryWhen` notifier.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-ignored-observable.ts b/src/rules/no-ignored-observable.ts index 7e65b18c..b3be02ff 100644 --- a/src/rules/no-ignored-observable.ts +++ b/src/rules/no-ignored-observable.ts @@ -6,7 +6,7 @@ export const noIgnoredObservableRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the ignoring of observables returned by functions.', + description: 'Disallow ignoring observables returned by functions.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-ignored-replay-buffer.ts b/src/rules/no-ignored-replay-buffer.ts index 5ec52078..f3d07aed 100644 --- a/src/rules/no-ignored-replay-buffer.ts +++ b/src/rules/no-ignored-replay-buffer.ts @@ -6,7 +6,7 @@ export const noIgnoredReplayBufferRule = ruleCreator({ meta: { docs: { description: - 'Forbids using `ReplaySubject`, `publishReplay` or `shareReplay` without specifying the buffer size.', + 'Disallow using `ReplaySubject`, `publishReplay` or `shareReplay` without specifying the buffer size.', recommended: true, }, messages: { diff --git a/src/rules/no-ignored-subscribe.ts b/src/rules/no-ignored-subscribe.ts index b9717aee..a885df11 100644 --- a/src/rules/no-ignored-subscribe.ts +++ b/src/rules/no-ignored-subscribe.ts @@ -7,7 +7,7 @@ export const noIgnoredSubscribeRule = ruleCreator({ meta: { docs: { description: - 'Forbids the calling of `subscribe` without specifying arguments.', + 'Disallow calling `subscribe` without specifying arguments.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-ignored-subscription.ts b/src/rules/no-ignored-subscription.ts index 32d5dd96..0116c461 100644 --- a/src/rules/no-ignored-subscription.ts +++ b/src/rules/no-ignored-subscription.ts @@ -6,7 +6,7 @@ export const noIgnoredSubscriptionRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids ignoring the subscription returned by `subscribe`.', + description: 'Disallow ignoring the subscription returned by `subscribe`.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-ignored-takewhile-value.ts b/src/rules/no-ignored-takewhile-value.ts index 906ccfb3..607ea30a 100644 --- a/src/rules/no-ignored-takewhile-value.ts +++ b/src/rules/no-ignored-takewhile-value.ts @@ -11,7 +11,7 @@ export const noIgnoredTakewhileValueRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids ignoring the value within `takeWhile`.', + description: 'Disallow ignoring the value within `takeWhile`.', recommended: true, }, messages: { diff --git a/src/rules/no-implicit-any-catch.ts b/src/rules/no-implicit-any-catch.ts index 9a4cef3d..db602fa2 100644 --- a/src/rules/no-implicit-any-catch.ts +++ b/src/rules/no-implicit-any-catch.ts @@ -39,7 +39,7 @@ export const noImplicitAnyCatchRule = ruleCreator({ meta: { docs: { description: - 'Forbids implicit `any` error parameters in `catchError` operators.', + 'Disallow implicit `any` error parameters in `catchError` operators.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-index.ts b/src/rules/no-index.ts index d810c1fd..5cde4a8c 100644 --- a/src/rules/no-index.ts +++ b/src/rules/no-index.ts @@ -5,7 +5,7 @@ export const noIndexRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the importation from index modules.', + description: 'Disallow importing index modules.', recommended: true, }, messages: { diff --git a/src/rules/no-internal.ts b/src/rules/no-internal.ts index 40065c48..b6c73d3e 100644 --- a/src/rules/no-internal.ts +++ b/src/rules/no-internal.ts @@ -8,7 +8,7 @@ export const noInternalRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the importation of internals.', + description: 'Disallow importing internal modules.', recommended: true, }, fixable: 'code', diff --git a/src/rules/no-nested-subscribe.ts b/src/rules/no-nested-subscribe.ts index 780fa99f..d6ce255f 100644 --- a/src/rules/no-nested-subscribe.ts +++ b/src/rules/no-nested-subscribe.ts @@ -7,7 +7,7 @@ export const noNestedSubscribeRule = ruleCreator({ meta: { docs: { description: - 'Forbids the calling of `subscribe` within a `subscribe` callback.', + 'Disallow calling `subscribe` within a `subscribe` callback.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-redundant-notify.ts b/src/rules/no-redundant-notify.ts index 16276a24..d14a28f6 100644 --- a/src/rules/no-redundant-notify.ts +++ b/src/rules/no-redundant-notify.ts @@ -17,7 +17,7 @@ export const noRedundantNotifyRule = ruleCreator({ meta: { docs: { description: - 'Forbids redundant notifications from completed or errored observables.', + 'Disallow sending redundant notifications from completed or errored observables.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-sharereplay.ts b/src/rules/no-sharereplay.ts index d684a791..9b856593 100644 --- a/src/rules/no-sharereplay.ts +++ b/src/rules/no-sharereplay.ts @@ -9,7 +9,7 @@ export const noSharereplayRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids using the `shareReplay` operator.', + description: 'Disallow unsafe `shareReplay` usage.', recommended: true, }, messages: { diff --git a/src/rules/no-subclass.ts b/src/rules/no-subclass.ts index f7f0850e..193e1d4d 100644 --- a/src/rules/no-subclass.ts +++ b/src/rules/no-subclass.ts @@ -6,7 +6,7 @@ export const noSubclassRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids subclassing RxJS classes.', + description: 'Disallow subclassing RxJS classes.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-subject-unsubscribe.ts b/src/rules/no-subject-unsubscribe.ts index b4b6ab7a..43f70cfb 100644 --- a/src/rules/no-subject-unsubscribe.ts +++ b/src/rules/no-subject-unsubscribe.ts @@ -7,7 +7,7 @@ export const noSubjectUnsubscribeRule = ruleCreator({ meta: { docs: { description: - 'Forbids calling the `unsubscribe` method of a subject instance.', + 'Disallow calling the `unsubscribe` method of subjects.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-subject-value.ts b/src/rules/no-subject-value.ts index e97cb8bc..d77c23bf 100644 --- a/src/rules/no-subject-value.ts +++ b/src/rules/no-subject-value.ts @@ -7,7 +7,7 @@ export const noSubjectValueRule = ruleCreator({ meta: { docs: { description: - 'Forbids accessing the `value` property of a `BehaviorSubject` instance.', + 'Disallow accessing the `value` property of a `BehaviorSubject` instance.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-subscribe-handlers.ts b/src/rules/no-subscribe-handlers.ts index 7daae6ad..8a1c9f46 100644 --- a/src/rules/no-subscribe-handlers.ts +++ b/src/rules/no-subscribe-handlers.ts @@ -6,7 +6,7 @@ export const noSubscribeHandlersRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the passing of handlers to `subscribe`.', + description: 'Disallow passing handlers to `subscribe`.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-tap.ts b/src/rules/no-tap.ts index c3ef0763..65952b58 100644 --- a/src/rules/no-tap.ts +++ b/src/rules/no-tap.ts @@ -6,7 +6,7 @@ export const noTapRule = ruleCreator({ meta: { deprecated: true, docs: { - description: 'Forbids the use of the `tap` operator.', + description: 'Disallow the `tap` operator.', }, messages: { forbidden: 'The tap operator is forbidden.', diff --git a/src/rules/no-topromise.ts b/src/rules/no-topromise.ts index 742cc4db..7b2e4071 100644 --- a/src/rules/no-topromise.ts +++ b/src/rules/no-topromise.ts @@ -6,7 +6,7 @@ export const noTopromiseRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the use of the `toPromise` method.', + description: 'Disallow use of the `toPromise` method.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-unbound-methods.ts b/src/rules/no-unbound-methods.ts index 53d33bdc..acf378c6 100644 --- a/src/rules/no-unbound-methods.ts +++ b/src/rules/no-unbound-methods.ts @@ -9,7 +9,7 @@ export const noUnboundMethodsRule = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids the passing of unbound methods.', + description: 'Disallow passing unbound methods.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-unsafe-catch.ts b/src/rules/no-unsafe-catch.ts index 4b95cefc..da766fb1 100644 --- a/src/rules/no-unsafe-catch.ts +++ b/src/rules/no-unsafe-catch.ts @@ -17,7 +17,7 @@ export const noUnsafeCatchRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids unsafe `catchError` usage in effects and epics.', + description: 'Disallow unsafe `catchError` usage in effects and epics.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-unsafe-first.ts b/src/rules/no-unsafe-first.ts index 48bfdb5e..06432b2f 100644 --- a/src/rules/no-unsafe-first.ts +++ b/src/rules/no-unsafe-first.ts @@ -12,7 +12,7 @@ export const noUnsafeFirstRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids unsafe `first`/`take` usage in effects and epics.', + description: 'Disallow unsafe `first`/`take` usage in effects and epics.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-unsafe-subject-next.ts b/src/rules/no-unsafe-subject-next.ts index 28685a01..3205a17f 100644 --- a/src/rules/no-unsafe-subject-next.ts +++ b/src/rules/no-unsafe-subject-next.ts @@ -11,7 +11,7 @@ export const noUnsafeSubjectNext = ruleCreator({ defaultOptions: [], meta: { docs: { - description: 'Forbids unsafe optional `next` calls.', + description: 'Disallow unsafe optional `next` calls.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/no-unsafe-switchmap.ts b/src/rules/no-unsafe-switchmap.ts index 7435f7b1..099fc22f 100644 --- a/src/rules/no-unsafe-switchmap.ts +++ b/src/rules/no-unsafe-switchmap.ts @@ -19,7 +19,7 @@ export const noUnsafeSwitchmapRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids unsafe `switchMap` usage in effects and epics.', + description: 'Disallow unsafe `switchMap` usage in effects and epics.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/no-unsafe-takeuntil.ts b/src/rules/no-unsafe-takeuntil.ts index 38efed8d..78ceb2d6 100644 --- a/src/rules/no-unsafe-takeuntil.ts +++ b/src/rules/no-unsafe-takeuntil.ts @@ -17,7 +17,7 @@ export const noUnsafeTakeuntilRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Forbids the application of operators after `takeUntil`.', + description: 'Disallow applying operators after `takeUntil`.', recommended: true, requiresTypeChecking: true, }, diff --git a/src/rules/prefer-observer.ts b/src/rules/prefer-observer.ts index 0acc5387..344c98d5 100644 --- a/src/rules/prefer-observer.ts +++ b/src/rules/prefer-observer.ts @@ -19,7 +19,7 @@ export const preferObserverRule = ruleCreator({ meta: { docs: { description: - 'Forbids the passing separate handlers to `subscribe` and `tap`.', + 'Disallow passing separate handlers to `subscribe` and `tap`.', requiresTypeChecking: true, }, fixable: 'code', diff --git a/src/rules/suffix-subjects.ts b/src/rules/suffix-subjects.ts index f5bcf5b3..7e2cd9cb 100644 --- a/src/rules/suffix-subjects.ts +++ b/src/rules/suffix-subjects.ts @@ -18,7 +18,7 @@ export const suffixSubjectsRule = ruleCreator({ defaultOptions, meta: { docs: { - description: 'Enforces the use of a suffix in subject identifiers.', + description: 'Enforce the use of a suffix in subject identifiers.', requiresTypeChecking: true, }, messages: { diff --git a/src/rules/throw-error.ts b/src/rules/throw-error.ts index 3f7fec48..88094db0 100644 --- a/src/rules/throw-error.ts +++ b/src/rules/throw-error.ts @@ -9,7 +9,7 @@ export const throwErrorRule = ruleCreator({ meta: { docs: { description: - 'Enforces the passing of `Error` values to error notifications.', + 'Enforce passing only `Error` values to error notifications.', requiresTypeChecking: true, }, messages: { diff --git a/yarn.lock b/yarn.lock index 5c45ffd3..265196ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,6 +15,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.0.0": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-string-parser@npm:7.25.9" @@ -694,6 +705,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + "@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" @@ -937,6 +957,20 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@sindresorhus/merge-streams@npm:^2.1.0": + version: 2.3.0 + resolution: "@sindresorhus/merge-streams@npm:2.3.0" + checksum: 10c0/69ee906f3125fb2c6bb6ec5cdd84e8827d93b49b3892bce8b62267116cc7e197b5cccf20c160a1d32c26014ecd14470a72a5e3ee37a58f1d6dadc0db1ccf3894 + languageName: node + linkType: hard + "@stylistic/eslint-plugin@npm:^2.10.1": version: 2.10.1 resolution: "@stylistic/eslint-plugin@npm:2.10.1" @@ -966,7 +1000,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.15": +"@types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db @@ -982,6 +1016,13 @@ __metadata: languageName: node linkType: hard +"@types/semver@npm:^7.3.12": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa + languageName: node + linkType: hard + "@typescript-eslint/eslint-plugin@npm:8.12.2": version: 8.12.2 resolution: "@typescript-eslint/eslint-plugin@npm:8.12.2" @@ -1039,6 +1080,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.12.2, @typescript-eslint/scope-manager@npm:^8.12.2": version: 8.12.2 resolution: "@typescript-eslint/scope-manager@npm:8.12.2" @@ -1064,6 +1115,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf + languageName: node + linkType: hard + "@typescript-eslint/types@npm:8.12.2": version: 8.12.2 resolution: "@typescript-eslint/types@npm:8.12.2" @@ -1071,6 +1129,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.12.2": version: 8.12.2 resolution: "@typescript-eslint/typescript-estree@npm:8.12.2" @@ -1104,6 +1180,34 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:^5.38.1": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:8.12.2": version: 8.12.2 resolution: "@typescript-eslint/visitor-keys@npm:8.12.2" @@ -1305,6 +1409,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.11.2": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -1328,6 +1444,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + "ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" @@ -1359,6 +1482,13 @@ __metadata: languageName: node linkType: hard +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -1380,6 +1510,13 @@ __metadata: languageName: node linkType: hard +"boolean@npm:^3.2.0": + version: 3.2.0 + resolution: "boolean@npm:3.2.0" + checksum: 10c0/6a0dc9668f6f3dda42a53c181fcbdad223169c8d87b6c4011b87a8b14a21770efb2934a778f063d7ece17280f8c06d313c87f7b834bb1dd526a867ffcd00febf + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -1399,7 +1536,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": +"braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -1601,6 +1738,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^10.0.0": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + languageName: node + linkType: hard + "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -1636,6 +1780,23 @@ __metadata: languageName: node linkType: hard +"cosmiconfig@npm:^8.0.0": + version: 8.3.6 + resolution: "cosmiconfig@npm:8.3.6" + dependencies: + import-fresh: "npm:^3.3.0" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.2.0" + path-type: "npm:^4.0.0" + peerDependencies: + typescript: ">=4.9.5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -1689,6 +1850,13 @@ __metadata: languageName: node linkType: hard +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + "defu@npm:^6.1.4": version: 6.1.4 resolution: "defu@npm:6.1.4" @@ -1703,6 +1871,22 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + "doctrine@npm:^3.0.0": version: 3.0.0 resolution: "doctrine@npm:3.0.0" @@ -1712,6 +1896,15 @@ __metadata: languageName: node linkType: hard +"dot-prop@npm:^7.2.0": + version: 7.2.0 + resolution: "dot-prop@npm:7.2.0" + dependencies: + type-fest: "npm:^2.11.2" + checksum: 10c0/2621702a01e7a47730e3a8e2938a406afc79b62fbb77bd1394e786ff13776673904bf0a4fc6b812eb9849ec71034e9fc1019a9e0bbe91f84010d8a8088cd41a9 + languageName: node + linkType: hard + "dotenv@npm:^16.4.5": version: 16.4.5 resolution: "dotenv@npm:16.4.5" @@ -1759,6 +1952,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -1773,6 +1973,15 @@ __metadata: languageName: node linkType: hard +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + "esbuild@npm:^0.21.3": version: 0.21.5 resolution: "esbuild@npm:0.21.5" @@ -2056,6 +2265,30 @@ __metadata: languageName: node linkType: hard +"eslint-doc-generator@npm:^1.7.1": + version: 1.7.1 + resolution: "eslint-doc-generator@npm:1.7.1" + dependencies: + "@typescript-eslint/utils": "npm:^5.38.1" + ajv: "npm:^8.11.2" + boolean: "npm:^3.2.0" + commander: "npm:^10.0.0" + cosmiconfig: "npm:^8.0.0" + deepmerge: "npm:^4.2.2" + dot-prop: "npm:^7.2.0" + jest-diff: "npm:^29.2.1" + json-schema-traverse: "npm:^1.0.0" + markdown-table: "npm:^3.0.3" + no-case: "npm:^3.0.4" + type-fest: "npm:^3.0.0" + peerDependencies: + eslint: ">= 7" + bin: + eslint-doc-generator: dist/bin/eslint-doc-generator.js + checksum: 10c0/91d7eb0d72536a346e56951ea5e3217093331830a4511e223a32ba39d7f588e9d148065721900b11e7e3d0bfff58f902f9a576970fe70df7e4e2f0f23e8d425c + languageName: node + linkType: hard + "eslint-import-resolver-node@npm:^0.3.9": version: 0.3.9 resolution: "eslint-import-resolver-node@npm:0.3.9" @@ -2174,9 +2407,11 @@ __metadata: decamelize: "npm:^5.0.1" eslint: "npm:^9.13.0" eslint-config-flat-gitignore: "npm:^0.3.0" + eslint-doc-generator: "npm:^1.7.1" eslint-import-resolver-typescript: "npm:^3.6.3" eslint-plugin-import-x: "npm:^4.4.0" eslint-plugin-n: "npm:^17.12.0" + markdownlint-cli2: "npm:^0.14.0" rxjs: "npm:^7.0.0" ts-api-utils: "npm:^1.3.0" tslib: "npm:^2.1.0" @@ -2192,6 +2427,16 @@ __metadata: languageName: unknown linkType: soft +"eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + "eslint-scope@npm:^8.1.0": version: 8.2.0 resolution: "eslint-scope@npm:8.2.0" @@ -2202,7 +2447,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 @@ -2295,6 +2540,13 @@ __metadata: languageName: node linkType: hard +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -2356,7 +2608,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.3.2": +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -2383,6 +2635,13 @@ __metadata: languageName: node linkType: hard +"fast-uri@npm:^3.0.1": + version: 3.0.3 + resolution: "fast-uri@npm:3.0.3" + checksum: 10c0/4b2c5ce681a062425eae4f15cdc8fc151fd310b2f69b1f96680677820a8b49c3cd6e80661a406e19d50f0c40a3f8bffdd458791baf66f4a879d80be28e10a320 + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.13.0 resolution: "fastq@npm:1.13.0" @@ -2592,6 +2851,34 @@ __metadata: languageName: node linkType: hard +"globby@npm:14.0.2": + version: 14.0.2 + resolution: "globby@npm:14.0.2" + dependencies: + "@sindresorhus/merge-streams": "npm:^2.1.0" + fast-glob: "npm:^3.3.2" + ignore: "npm:^5.2.4" + path-type: "npm:^5.0.0" + slash: "npm:^5.1.0" + unicorn-magic: "npm:^0.1.0" + checksum: 10c0/3f771cd683b8794db1e7ebc8b6b888d43496d93a82aad4e9d974620f578581210b6c5a6e75ea29573ed16a1345222fab6e9b877a8d1ed56eeb147e09f69c6f78 + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + "graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -2672,14 +2959,14 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.3.1, ignore@npm:^5.3.2": +"ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1, ignore@npm:^5.3.2": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 languageName: node linkType: hard -"import-fresh@npm:^3.2.1": +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -2713,6 +3000,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -2850,6 +3144,25 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:^29.2.1": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + "jiti@npm:^1.21.6": version: 1.21.6 resolution: "jiti@npm:1.21.6" @@ -2866,7 +3179,14 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^4.1.0": +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: @@ -2891,6 +3211,13 @@ __metadata: languageName: node linkType: hard +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" @@ -2898,6 +3225,13 @@ __metadata: languageName: node linkType: hard +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -2905,7 +3239,7 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:^3.3.1": +"jsonc-parser@npm:3.3.1, jsonc-parser@npm:^3.3.1": version: 3.3.1 resolution: "jsonc-parser@npm:3.3.1" checksum: 10c0/269c3ae0a0e4f907a914bf334306c384aabb9929bd8c99f909275ebd5c2d3bc70b9bcd119ad794f339dec9f24b6a4ee9cd5a8ab2e6435e730ad4075388fc2ab6 @@ -2952,6 +3286,15 @@ __metadata: languageName: node linkType: hard +"linkify-it@npm:^5.0.0": + version: 5.0.0 + resolution: "linkify-it@npm:5.0.0" + dependencies: + uc.micro: "npm:^2.0.0" + checksum: 10c0/ff4abbcdfa2003472fc3eb4b8e60905ec97718e11e33cca52059919a4c80cc0e0c2a14d23e23d8c00e5402bc5a885cdba8ca053a11483ab3cc8b3c7a52f88e2d + languageName: node + linkType: hard + "load-tsconfig@npm:^0.2.3": version: 0.2.5 resolution: "load-tsconfig@npm:0.2.5" @@ -2989,6 +3332,15 @@ __metadata: languageName: node linkType: hard +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -3045,6 +3397,78 @@ __metadata: languageName: node linkType: hard +"markdown-it@npm:14.1.0": + version: 14.1.0 + resolution: "markdown-it@npm:14.1.0" + dependencies: + argparse: "npm:^2.0.1" + entities: "npm:^4.4.0" + linkify-it: "npm:^5.0.0" + mdurl: "npm:^2.0.0" + punycode.js: "npm:^2.3.1" + uc.micro: "npm:^2.1.0" + bin: + markdown-it: bin/markdown-it.mjs + checksum: 10c0/9a6bb444181d2db7016a4173ae56a95a62c84d4cbfb6916a399b11d3e6581bf1cc2e4e1d07a2f022ae72c25f56db90fbe1e529fca16fbf9541659dc53480d4b4 + languageName: node + linkType: hard + +"markdown-table@npm:^3.0.3": + version: 3.0.4 + resolution: "markdown-table@npm:3.0.4" + checksum: 10c0/1257b31827629a54c24a5030a3dac952256c559174c95ce3ef89bebd6bff0cb1444b1fd667b1a1bb53307f83278111505b3e26f0c4e7b731e0060d435d2d930b + languageName: node + linkType: hard + +"markdownlint-cli2-formatter-default@npm:0.0.5": + version: 0.0.5 + resolution: "markdownlint-cli2-formatter-default@npm:0.0.5" + peerDependencies: + markdownlint-cli2: ">=0.0.4" + checksum: 10c0/7041a5833846d895054cf273c8e75efc13a03bbc88679cd48ea77240318232e883846037e984358a3ad3825fbb602d83492417ed6e36051bc5b603c4bedb3622 + languageName: node + linkType: hard + +"markdownlint-cli2@npm:^0.14.0": + version: 0.14.0 + resolution: "markdownlint-cli2@npm:0.14.0" + dependencies: + globby: "npm:14.0.2" + js-yaml: "npm:4.1.0" + jsonc-parser: "npm:3.3.1" + markdownlint: "npm:0.35.0" + markdownlint-cli2-formatter-default: "npm:0.0.5" + micromatch: "npm:4.0.8" + bin: + markdownlint-cli2: markdownlint-cli2.js + checksum: 10c0/cf2c65de97887a51e2ad756779fd90cabc6b26d09c07aed43422c142e0b2406a8a1e84e17cbf8590a72812e65d5a16e106d7110e392bb7f5fb154a09245bb985 + languageName: node + linkType: hard + +"markdownlint-micromark@npm:0.1.10": + version: 0.1.10 + resolution: "markdownlint-micromark@npm:0.1.10" + checksum: 10c0/1a392a3d92c01093244c15f69a658e68eeffe26b96218189509184246e19be9f64c7937241a5911f1ff2bd721f0d60f32242a46a9b3b6ab505ef22b8dbb66918 + languageName: node + linkType: hard + +"markdownlint@npm:0.35.0": + version: 0.35.0 + resolution: "markdownlint@npm:0.35.0" + dependencies: + markdown-it: "npm:14.1.0" + markdownlint-micromark: "npm:0.1.10" + checksum: 10c0/32330f6e6c2a35e3505f4bdae5211c0b8bd9130604a0d93bb22506835447065a4efd9d3ecefaa7f7c6744628f8427fe98296b71948d2d1502a46917863235717 + languageName: node + linkType: hard + +"mdurl@npm:^2.0.0": + version: 2.0.0 + resolution: "mdurl@npm:2.0.0" + checksum: 10c0/633db522272f75ce4788440669137c77540d74a83e9015666a9557a152c02e245b192edc20bc90ae953bbab727503994a53b236b4d9c99bdaee594d0e7dd2ce0 + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -3052,20 +3476,20 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0": +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb languageName: node linkType: hard -"micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" +"micromatch@npm:4.0.8, micromatch@npm:^4.0.4": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" dependencies: - braces: "npm:^3.0.2" + braces: "npm:^3.0.3" picomatch: "npm:^2.3.1" - checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 languageName: node linkType: hard @@ -3240,6 +3664,16 @@ __metadata: languageName: node linkType: hard +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: "npm:^2.0.2" + tslib: "npm:^2.0.3" + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + languageName: node + linkType: hard + "node-fetch-native@npm:^1.6.3": version: 1.6.4 resolution: "node-fetch-native@npm:1.6.4" @@ -3390,6 +3824,18 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -3428,6 +3874,20 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"path-type@npm:^5.0.0": + version: 5.0.0 + resolution: "path-type@npm:5.0.0" + checksum: 10c0/e8f4b15111bf483900c75609e5e74e3fcb79f2ddb73e41470028fcd3e4b5162ec65da9907be077ee5012c18801ff7fffb35f9f37a077f3f81d85a0b7d6578efd + languageName: node + linkType: hard + "pathe@npm:^1.1.2": version: 1.1.2 resolution: "pathe@npm:1.1.2" @@ -3449,7 +3909,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -3529,6 +3989,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + "proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": version: 4.2.0 resolution: "proc-log@npm:4.2.0" @@ -3556,6 +4027,13 @@ __metadata: languageName: node linkType: hard +"punycode.js@npm:^2.3.1": + version: 2.3.1 + resolution: "punycode.js@npm:2.3.1" + checksum: 10c0/1d12c1c0e06127fa5db56bd7fdf698daf9a78104456a6b67326877afc21feaa821257b171539caedd2f0524027fa38e67b13dd094159c8d70b6d26d2bea4dfdb + languageName: node + linkType: hard + "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" @@ -3580,6 +4058,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + "readdirp@npm:^4.0.1": version: 4.0.2 resolution: "readdirp@npm:4.0.2" @@ -3596,6 +4081,13 @@ __metadata: languageName: node linkType: hard +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -3751,7 +4243,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -3797,6 +4289,20 @@ __metadata: languageName: node linkType: hard +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slash@npm:^5.1.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 10c0/eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 + languageName: node + linkType: hard + "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -4118,7 +4624,14 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0, tslib@npm:^2.6.3": +"tslib@npm:^1.8.1": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.6.3": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -4166,6 +4679,17 @@ __metadata: languageName: node linkType: hard +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + languageName: node + linkType: hard + "tsx@npm:^4.19.2": version: 4.19.2 resolution: "tsx@npm:4.19.2" @@ -4198,6 +4722,20 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^2.11.2": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"type-fest@npm:^3.0.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + "typescript-eslint@npm:^8.12.2": version: 8.12.2 resolution: "typescript-eslint@npm:8.12.2" @@ -4232,6 +4770,13 @@ __metadata: languageName: node linkType: hard +"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": + version: 2.1.0 + resolution: "uc.micro@npm:2.1.0" + checksum: 10c0/8862eddb412dda76f15db8ad1c640ccc2f47cdf8252a4a30be908d535602c8d33f9855dfcccb8b8837855c1ce1eaa563f7fa7ebe3c98fd0794351aab9b9c55fa + languageName: node + linkType: hard + "ufo@npm:^1.5.4": version: 1.5.4 resolution: "ufo@npm:1.5.4" @@ -4246,6 +4791,13 @@ __metadata: languageName: node linkType: hard +"unicorn-magic@npm:^0.1.0": + version: 0.1.0 + resolution: "unicorn-magic@npm:0.1.0" + checksum: 10c0/e4ed0de05b0a05e735c7d8a2930881e5efcfc3ec897204d5d33e7e6247f4c31eac92e383a15d9a6bccb7319b4271ee4bea946e211bf14951fec6ff2cbbb66a92 + languageName: node + linkType: hard + "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0"