eslint-plugin-rxjs-x 0.0.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +57 -43
  2. package/dist/index.d.ts +1 -1
  3. package/dist/{index.cjs → index.js} +485 -333
  4. package/dist/index.mjs +482 -312
  5. package/docs/rules/ban-observables.md +3 -1
  6. package/docs/rules/ban-operators.md +3 -1
  7. package/docs/rules/finnish.md +21 -2
  8. package/docs/rules/just.md +5 -5
  9. package/docs/rules/macro.md +4 -4
  10. package/docs/rules/no-async-subscribe.md +7 -5
  11. package/docs/rules/no-compat.md +3 -5
  12. package/docs/rules/no-connectable.md +4 -4
  13. package/docs/rules/no-create.md +7 -5
  14. package/docs/rules/no-cyclic-action.md +14 -2
  15. package/docs/rules/no-explicit-generics.md +3 -5
  16. package/docs/rules/no-exposed-subjects.md +14 -2
  17. package/docs/rules/no-finnish.md +6 -6
  18. package/docs/rules/no-ignored-error.md +5 -5
  19. package/docs/rules/no-ignored-notifier.md +7 -5
  20. package/docs/rules/no-ignored-observable.md +5 -5
  21. package/docs/rules/no-ignored-replay-buffer.md +5 -5
  22. package/docs/rules/no-ignored-subscribe.md +5 -5
  23. package/docs/rules/no-ignored-subscription.md +5 -5
  24. package/docs/rules/no-ignored-takewhile-value.md +5 -5
  25. package/docs/rules/no-implicit-any-catch.md +18 -2
  26. package/docs/rules/no-index.md +5 -5
  27. package/docs/rules/no-internal.md +7 -5
  28. package/docs/rules/no-nested-subscribe.md +7 -5
  29. package/docs/rules/no-redundant-notify.md +7 -5
  30. package/docs/rules/no-sharereplay.md +14 -2
  31. package/docs/rules/no-subclass.md +4 -4
  32. package/docs/rules/no-subject-unsubscribe.md +7 -5
  33. package/docs/rules/no-subject-value.md +4 -4
  34. package/docs/rules/no-subscribe-handlers.md +5 -7
  35. package/docs/rules/no-tap.md +4 -4
  36. package/docs/rules/no-topromise.md +4 -4
  37. package/docs/rules/no-unbound-methods.md +7 -8
  38. package/docs/rules/no-unsafe-catch.md +13 -1
  39. package/docs/rules/no-unsafe-first.md +13 -1
  40. package/docs/rules/no-unsafe-subject-next.md +7 -5
  41. package/docs/rules/no-unsafe-switchmap.md +15 -1
  42. package/docs/rules/no-unsafe-takeuntil.md +16 -1
  43. package/docs/rules/prefer-observer.md +15 -1
  44. package/docs/rules/suffix-subjects.md +17 -1
  45. package/docs/rules/throw-error.md +5 -5
  46. package/package.json +21 -13
  47. package/dist/index.d.cts +0 -121
@@ -1,4 +1,10 @@
1
- # Avoid using unbound methods as callbacks (`no-unbound-methods`)
1
+ # Disallow passing unbound methods (`rxjs-x/no-unbound-methods`)
2
+
3
+ 💼 This rule is enabled in the ✅ `recommended` config.
4
+
5
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
6
+
7
+ <!-- end auto-generated rule header -->
2
8
 
3
9
  This rule effects failures if unbound methods are passed as callbacks.
4
10
 
@@ -6,7 +12,6 @@ This rule effects failures if unbound methods are passed as callbacks.
6
12
 
7
13
  Examples of **incorrect** code for this rule:
8
14
 
9
- <!-- prettier-ignore -->
10
15
  ```ts
11
16
  return this.http
12
17
  .get<Something>("https://api.some.com/things/1")
@@ -18,7 +23,6 @@ return this.http
18
23
 
19
24
  Examples of **correct** code for this rule:
20
25
 
21
- <!-- prettier-ignore -->
22
26
  ```ts
23
27
  return this.http
24
28
  .get<Something>("https://api.some.com/things/1")
@@ -28,7 +32,6 @@ return this.http
28
32
  );
29
33
  ```
30
34
 
31
- <!-- prettier-ignore -->
32
35
  ```ts
33
36
  return this.http
34
37
  .get<Something>("https://api.some.com/things/1")
@@ -38,10 +41,6 @@ return this.http
38
41
  );
39
42
  ```
40
43
 
41
- ## Options
42
-
43
- This rule has no options.
44
-
45
44
  ## Further reading
46
45
 
47
46
  - [Avoiding unbound methods](https://ncjamieson.com/avoiding-unbound-methods/)
@@ -1,4 +1,8 @@
1
- # Avoid completing effects and epics (`no-unsafe-catch`)
1
+ # Disallow unsafe `catchError` usage in effects and epics (`rxjs-x/no-unsafe-catch`)
2
+
3
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
4
+
5
+ <!-- end auto-generated rule header -->
2
6
 
3
7
  This rule effects failures if `catchError` is used in an effect or epic in a manner that will complete the outermost observable.
4
8
 
@@ -38,6 +42,14 @@ actions.pipe(
38
42
 
39
43
  ## Options
40
44
 
45
+ <!-- begin auto-generated rule options list -->
46
+
47
+ | Name | Description | Type | Default |
48
+ | :----------- | :------------------------------------------------------------ | :----- | :----------------------- |
49
+ | `observable` | A RegExp that matches an effect or epic's actions observable. | String | `[Aa]ction(s\|s\$\|\$)$` |
50
+
51
+ <!-- end auto-generated rule options list -->
52
+
41
53
  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.
42
54
 
43
55
  ```json
@@ -1,9 +1,21 @@
1
- # Avoid completing effects and epics (`no-unsafe-first`)
1
+ # Disallow unsafe `first`/`take` usage in effects and epics (`rxjs-x/no-unsafe-first`)
2
+
3
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
4
+
5
+ <!-- end auto-generated rule header -->
2
6
 
3
7
  This rule effects failures if `first` is used in an effect or epic in a manner that will complete the outermost observable.
4
8
 
5
9
  ## Options
6
10
 
11
+ <!-- begin auto-generated rule options list -->
12
+
13
+ | Name | Description | Type | Default |
14
+ | :----------- | :------------------------------------------------------------ | :----- | :----------------------- |
15
+ | `observable` | A RegExp that matches an effect or epic's actions observable. | String | `[Aa]ction(s\|s\$\|\$)$` |
16
+
17
+ <!-- end auto-generated rule options list -->
18
+
7
19
  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.
8
20
 
9
21
  ```json
@@ -1,4 +1,10 @@
1
- # Avoid passing `undefined` to `next` (`no-unsafe-subject-next`)
1
+ # Disallow unsafe optional `next` calls (`rxjs-x/no-unsafe-subject-next`)
2
+
3
+ 💼 This rule is enabled in the ✅ `recommended` config.
4
+
5
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
6
+
7
+ <!-- end auto-generated rule header -->
2
8
 
3
9
  This rule effects failures if `next` is called without an argument and the subject's value type is not `void`.
4
10
 
@@ -24,7 +30,3 @@ subject.next();
24
30
  const subject = new Subject<number>();
25
31
  subject.next(0);
26
32
  ```
27
-
28
- ## Options
29
-
30
- This rule has no options.
@@ -1,9 +1,23 @@
1
- # Avoid `switchMap` bugs in effects and epics (`no-unsafe-switchmap`)
1
+ # Disallow unsafe `switchMap` usage in effects and epics (`rxjs-x/no-unsafe-switchmap`)
2
+
3
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
4
+
5
+ <!-- end auto-generated rule header -->
2
6
 
3
7
  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.
4
8
 
5
9
  ## Options
6
10
 
11
+ <!-- begin auto-generated rule options list -->
12
+
13
+ | Name | Description | Type | Default |
14
+ | :----------- | :------------------------------------------------------------------------------------------- | :----- | :----------------------- |
15
+ | `allow` | Action types that are allowed to be used with switchMap. Mutually exclusive with `disallow`. | | |
16
+ | `disallow` | Action types that are disallowed to be used with switchMap. Mutually exclusive with `allow`. | | |
17
+ | `observable` | A RegExp that matches an effect or epic's actions observable. | String | `[Aa]ction(s\|s\$\|\$)$` |
18
+
19
+ <!-- end auto-generated rule options list -->
20
+
7
21
  This rule accepts a single option which is an object with `allow`, `disallow` and `observable` properties.
8
22
 
9
23
  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.
@@ -1,4 +1,10 @@
1
- # Avoid `takeUntil` subscription leaks (`no-unsafe-takeuntil`)
1
+ # Disallow applying operators after `takeUntil` (`rxjs-x/no-unsafe-takeuntil`)
2
+
3
+ 💼 This rule is enabled in the ✅ `recommended` config.
4
+
5
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
6
+
7
+ <!-- end auto-generated rule header -->
2
8
 
3
9
  This rule effects failures whenever `takeUntil` is used in observable compositions that can leak subscriptions.
4
10
 
@@ -24,6 +30,15 @@ const combined = source
24
30
 
25
31
  ## Options
26
32
 
33
+ <!-- begin auto-generated rule options list -->
34
+
35
+ | Name | Description | Type | Default |
36
+ | :------ | :-------------------------------------------------------------------------- | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
37
+ | `alias` | An array of operator names that should be treated similarly to `takeUntil`. | String[] | |
38
+ | `allow` | An array of operator names that are allowed to follow `takeUntil`. | String[] | [`count`, `defaultIfEmpty`, `endWith`, `every`, `finalize`, `finally`, `isEmpty`, `last`, `max`, `min`, `publish`, `publishBehavior`, `publishLast`, `publishReplay`, `reduce`, `share`, `shareReplay`, `skipLast`, `takeLast`, `throwIfEmpty`, `toArray`] |
39
+
40
+ <!-- end auto-generated rule options list -->
41
+
27
42
  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`.
28
43
 
29
44
  By default, the `allow` property contains all of the built-in operators that are safe to use after `takeUntil`.
@@ -1,4 +1,10 @@
1
- # Avoid separate handlers (`prefer-observer`)
1
+ # Disallow passing separate handlers to `subscribe` and `tap` (`rxjs-x/prefer-observer`)
2
+
3
+ 🔧💡 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).
4
+
5
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
6
+
7
+ <!-- end auto-generated rule header -->
2
8
 
3
9
  This rule effects failures if `subscribe` - or `tap` - is called with separate handlers instead of an observer.
4
10
 
@@ -22,6 +28,14 @@ of(42, 54).subscribe({
22
28
 
23
29
  ## Options
24
30
 
31
+ <!-- begin auto-generated rule options list -->
32
+
33
+ | Name | Description | Type | Default |
34
+ | :---------- | :------------------------------- | :------ | :------ |
35
+ | `allowNext` | Allows a single `next` callback. | Boolean | `true` |
36
+
37
+ <!-- end auto-generated rule options list -->
38
+
25
39
  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`.
26
40
 
27
41
  ```json
@@ -1,4 +1,8 @@
1
- # Identify subjects (`suffix-subjects`)
1
+ # Enforce the use of a suffix in subject identifiers (`rxjs-x/suffix-subjects`)
2
+
3
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
4
+
5
+ <!-- end auto-generated rule header -->
2
6
 
3
7
  This rule effects failures if subject variables, properties and parameters don't conform to a naming scheme that identifies them as subjects.
4
8
 
@@ -18,6 +22,18 @@ const answersSubject = new Subject<number>();
18
22
 
19
23
  ## Options
20
24
 
25
+ <!-- begin auto-generated rule options list -->
26
+
27
+ | Name | Description | Type |
28
+ | :----------- | :------------------------------------------------------------------- | :------ |
29
+ | `parameters` | Require for parameters. | Boolean |
30
+ | `properties` | Require for properties. | Boolean |
31
+ | `suffix` | The suffix to enforce. | String |
32
+ | `types` | Enforce for specific types. Keys are a RegExp, values are a boolean. | Object |
33
+ | `variables` | Require for variables. | Boolean |
34
+
35
+ <!-- end auto-generated rule options list -->
36
+
21
37
  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.
22
38
 
23
39
  The default (Angular-friendly) configuration looks like this:
@@ -1,4 +1,8 @@
1
- # Avoid throwing non-Error values (`throw-error`)
1
+ # Enforce passing only `Error` values to error notifications (`rxjs-x/throw-error`)
2
+
3
+ 💭 This rule requires [type information](https://typescript-eslint.io/linting/typed-linting).
4
+
5
+ <!-- end auto-generated rule header -->
2
6
 
3
7
  This rule forbids throwing values that are neither `Error` nor `DOMException` instances.
4
8
 
@@ -43,7 +47,3 @@ throwError(new Error("Kaboom!"));
43
47
  import { throwError } from "rxjs";
44
48
  throwError(() => new Error("Kaboom!"));
45
49
  ```
46
-
47
- ## Options
48
-
49
- This rule has no options.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eslint-plugin-rxjs-x",
3
- "type": "module",
4
- "version": "0.0.2",
3
+ "type": "commonjs",
4
+ "version": "0.2.0",
5
5
  "packageManager": "yarn@4.5.1+sha512.341db9396b6e289fecc30cd7ab3af65060e05ebff4b3b47547b278b9e67b08f485ecd8c79006b405446262142c7a38154445ef7f17c1d5d1de7d90bf9ce7054d",
6
6
  "description": "ESLint v9+ plugin for RxJS",
7
7
  "author": "Jason Weinzierl <weinzierljason@gmail.com>",
@@ -28,12 +28,12 @@
28
28
  "default": "./dist/index.mjs"
29
29
  },
30
30
  "require": {
31
- "types": "./dist/index.d.cts",
32
- "default": "./dist/index.cjs"
31
+ "types": "./dist/index.d.ts",
32
+ "default": "./dist/index.js"
33
33
  }
34
34
  }
35
35
  },
36
- "main": "./dist/index.mjs",
36
+ "main": "./dist/index.js",
37
37
  "module": "./dist/index.mjs",
38
38
  "types": "./dist/index.d.ts",
39
39
  "files": [
@@ -41,8 +41,12 @@
41
41
  "docs"
42
42
  ],
43
43
  "scripts": {
44
- "build": "unbuild && tsx scripts/postbuild.ts",
45
- "lint": "eslint",
44
+ "build": "tsup",
45
+ "lint": "yarn lint-js && yarn lint-docs && yarn lint-eslint-docs",
46
+ "lint-js": "eslint",
47
+ "lint-docs": "markdownlint-cli2 \"**/*.md\" \"#node_modules\"",
48
+ "lint-eslint-docs": "yarn build && eslint-doc-generator --check",
49
+ "docs": "eslint-doc-generator",
46
50
  "release": "bumpp && yarn run build",
47
51
  "test": "vitest",
48
52
  "coverage": "vitest run --coverage",
@@ -52,15 +56,14 @@
52
56
  "@typescript-eslint/scope-manager": "^8.12.2",
53
57
  "@typescript-eslint/utils": "^8.12.2",
54
58
  "common-tags": "^1.8.0",
55
- "decamelize": "^5.0.0 || ^6.0.0",
56
- "tslib": "^2.0.0",
57
- "tsutils": "^3.0.0",
58
- "tsutils-etc": "^1.4.2"
59
+ "decamelize": "^5.0.1",
60
+ "ts-api-utils": "^1.3.0",
61
+ "tslib": "^2.1.0"
59
62
  },
60
63
  "peerDependencies": {
61
64
  "eslint": "^8.57.0 || ^9.0.0",
62
65
  "rxjs": ">=7.0.0",
63
- "typescript": ">=4.0.0"
66
+ "typescript": ">=4.2.0"
64
67
  },
65
68
  "devDependencies": {
66
69
  "@eslint/js": "^9.13.0",
@@ -68,18 +71,23 @@
68
71
  "@types/common-tags": "^1.8.4",
69
72
  "@types/node": "^18.18.0",
70
73
  "@typescript-eslint/rule-tester": "^8.12.2",
74
+ "@typescript/vfs": "^1.6.0",
71
75
  "@vitest/coverage-v8": "^2.1.4",
76
+ "@vitest/eslint-plugin": "^1.1.7",
72
77
  "bumpp": "^9.8.0",
73
78
  "eslint": "^9.13.0",
74
79
  "eslint-config-flat-gitignore": "^0.3.0",
80
+ "eslint-doc-generator": "^1.7.1",
75
81
  "eslint-import-resolver-typescript": "^3.6.3",
82
+ "eslint-plugin-eslint-plugin": "^6.3.1",
76
83
  "eslint-plugin-import-x": "^4.4.0",
77
84
  "eslint-plugin-n": "^17.12.0",
85
+ "markdownlint-cli2": "^0.14.0",
78
86
  "rxjs": "^7.0.0",
87
+ "tsup": "^8.3.5",
79
88
  "tsx": "^4.19.2",
80
89
  "typescript": "~5.6.3",
81
90
  "typescript-eslint": "^8.12.2",
82
- "unbuild": "^2.0.0",
83
91
  "vitest": "^2.1.4"
84
92
  },
85
93
  "engines": {
package/dist/index.d.cts DELETED
@@ -1,121 +0,0 @@
1
- import { TSESLint } from '@typescript-eslint/utils';
2
-
3
- interface RxjsXRuleDocs {
4
- description: string;
5
- recommended?: boolean;
6
- requiresTypeChecking?: boolean;
7
- }
8
-
9
- declare const rxjsX: {
10
- configs: {
11
- recommended: {
12
- plugins: {
13
- 'rxjs-x': TSESLint.FlatConfig.Plugin;
14
- };
15
- rules: {
16
- 'rxjs-x/no-async-subscribe': "error";
17
- 'rxjs-x/no-create': "error";
18
- 'rxjs-x/no-ignored-notifier': "error";
19
- 'rxjs-x/no-ignored-replay-buffer': "error";
20
- 'rxjs-x/no-ignored-takewhile-value': "error";
21
- 'rxjs-x/no-implicit-any-catch': "error";
22
- 'rxjs-x/no-index': "error";
23
- 'rxjs-x/no-internal': "error";
24
- 'rxjs-x/no-nested-subscribe': "error";
25
- 'rxjs-x/no-redundant-notify': "error";
26
- 'rxjs-x/no-sharereplay': ["error", {
27
- allowConfig: boolean;
28
- }];
29
- 'rxjs-x/no-subject-unsubscribe': "error";
30
- 'rxjs-x/no-unbound-methods': "error";
31
- 'rxjs-x/no-unsafe-subject-next': "error";
32
- 'rxjs-x/no-unsafe-takeuntil': "error";
33
- };
34
- };
35
- };
36
- meta: {
37
- name: string;
38
- version: string;
39
- };
40
- rules: {
41
- 'ban-observables': TSESLint.RuleModule<"forbidden", readonly Record<string, string | boolean>[], RxjsXRuleDocs, TSESLint.RuleListener>;
42
- 'ban-operators': TSESLint.RuleModule<"forbidden", readonly Record<string, string | boolean>[], RxjsXRuleDocs, TSESLint.RuleListener>;
43
- finnish: TSESLint.RuleModule<"shouldBeFinnish" | "shouldNotBeFinnish", readonly {
44
- functions?: boolean;
45
- methods?: boolean;
46
- names?: Record<string, boolean>;
47
- parameters?: boolean;
48
- properties?: boolean;
49
- strict?: boolean;
50
- types?: Record<string, boolean>;
51
- variables?: boolean;
52
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
53
- just: TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
54
- macro: TSESLint.RuleModule<"macro", [], RxjsXRuleDocs, TSESLint.RuleListener>;
55
- 'no-async-subscribe': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
56
- 'no-compat': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
57
- 'no-connectable': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
58
- 'no-create': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
59
- 'no-cyclic-action': TSESLint.RuleModule<"forbidden", readonly {
60
- observable?: string;
61
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
62
- 'no-explicit-generics': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
63
- 'no-exposed-subjects': TSESLint.RuleModule<"forbidden" | "forbiddenAllowProtected", readonly {
64
- allowProtected?: boolean;
65
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
66
- 'no-finnish': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
67
- 'no-ignored-error': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
68
- 'no-ignored-notifier': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
69
- 'no-ignored-observable': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
70
- 'no-ignored-replay-buffer': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
71
- 'no-ignored-subscribe': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
72
- 'no-ignored-subscription': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
73
- 'no-ignored-takewhile-value': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
74
- 'no-implicit-any-catch': TSESLint.RuleModule<"explicitAny" | "implicitAny" | "narrowed" | "suggestExplicitUnknown", readonly {
75
- allowExplicitAny?: boolean;
76
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
77
- 'no-index': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
78
- 'no-internal': TSESLint.RuleModule<"forbidden" | "suggest", [], RxjsXRuleDocs, TSESLint.RuleListener>;
79
- 'no-nested-subscribe': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
80
- 'no-redundant-notify': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
81
- 'no-sharereplay': TSESLint.RuleModule<"forbidden" | "forbiddenWithoutConfig", readonly {
82
- allowConfig?: boolean;
83
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
84
- 'no-subclass': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
85
- 'no-subject-unsubscribe': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
86
- 'no-subject-value': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
87
- 'no-subscribe-handlers': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
88
- 'no-tap': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
89
- 'no-topromise': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
90
- 'no-unbound-methods': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
91
- 'no-unsafe-catch': TSESLint.RuleModule<"forbidden", readonly {
92
- observable?: string;
93
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
94
- 'no-unsafe-first': TSESLint.RuleModule<"forbidden", readonly {
95
- observable?: string;
96
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
97
- 'no-unsafe-subject-next': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
98
- 'no-unsafe-switchmap': TSESLint.RuleModule<"forbidden", readonly {
99
- allow?: string | string[];
100
- disallow?: string | string[];
101
- observable?: string;
102
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
103
- 'no-unsafe-takeuntil': TSESLint.RuleModule<"forbidden", readonly {
104
- alias?: string[];
105
- allow?: string[];
106
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
107
- 'prefer-observer': TSESLint.RuleModule<"forbidden", readonly {
108
- allowNext?: boolean;
109
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
110
- 'suffix-subjects': TSESLint.RuleModule<"forbidden", readonly {
111
- parameters?: boolean;
112
- properties?: boolean;
113
- suffix?: string;
114
- types?: Record<string, boolean>;
115
- variables?: boolean;
116
- }[], RxjsXRuleDocs, TSESLint.RuleListener>;
117
- 'throw-error': TSESLint.RuleModule<"forbidden", [], RxjsXRuleDocs, TSESLint.RuleListener>;
118
- };
119
- };
120
-
121
- export { rxjsX as default };