eslint-plugin-rxjs-x 0.2.2 → 0.2.3
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.
- package/dist/index.js +21 -1
- package/dist/index.mjs +29 -9
- package/docs/rules/no-ignored-replay-buffer.md +10 -0
- package/package.json +8 -3
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// package.json
|
|
2
2
|
var name = "eslint-plugin-rxjs-x";
|
|
3
|
-
var version = "0.2.
|
|
3
|
+
var version = "0.2.3";
|
|
4
4
|
|
|
5
5
|
// src/configs/recommended.ts
|
|
6
6
|
var createRecommendedConfig = (plugin2) => ({
|
|
@@ -1412,6 +1412,7 @@ var noIgnoredObservableRule = ruleCreator({
|
|
|
1412
1412
|
});
|
|
1413
1413
|
|
|
1414
1414
|
// src/rules/no-ignored-replay-buffer.ts
|
|
1415
|
+
|
|
1415
1416
|
var noIgnoredReplayBufferRule = ruleCreator({
|
|
1416
1417
|
defaultOptions: [],
|
|
1417
1418
|
meta: {
|
|
@@ -1427,6 +1428,14 @@ var noIgnoredReplayBufferRule = ruleCreator({
|
|
|
1427
1428
|
},
|
|
1428
1429
|
name: "no-ignored-replay-buffer",
|
|
1429
1430
|
create: (context) => {
|
|
1431
|
+
function checkShareReplayConfig(node, shareReplayConfigArg) {
|
|
1432
|
+
if (!shareReplayConfigArg.properties.some((p) => p.type === _utils.AST_NODE_TYPES.Property && p.key.type === _utils.AST_NODE_TYPES.Identifier && p.key.name === "bufferSize")) {
|
|
1433
|
+
context.report({
|
|
1434
|
+
messageId: "forbidden",
|
|
1435
|
+
node
|
|
1436
|
+
});
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1430
1439
|
function checkNode(node, { arguments: args }) {
|
|
1431
1440
|
if (!args || args.length === 0) {
|
|
1432
1441
|
context.report({
|
|
@@ -1434,6 +1443,12 @@ var noIgnoredReplayBufferRule = ruleCreator({
|
|
|
1434
1443
|
node
|
|
1435
1444
|
});
|
|
1436
1445
|
}
|
|
1446
|
+
if (node.name === "shareReplay" && (args == null ? void 0 : args.length) === 1) {
|
|
1447
|
+
const arg = args[0];
|
|
1448
|
+
if (arg.type === _utils.AST_NODE_TYPES.ObjectExpression) {
|
|
1449
|
+
checkShareReplayConfig(node, arg);
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1437
1452
|
}
|
|
1438
1453
|
return {
|
|
1439
1454
|
"NewExpression > Identifier[name='ReplaySubject']": (node) => {
|
|
@@ -1448,6 +1463,11 @@ var noIgnoredReplayBufferRule = ruleCreator({
|
|
|
1448
1463
|
"CallExpression > Identifier[name=/^(publishReplay|shareReplay)$/]": (node) => {
|
|
1449
1464
|
const callExpression = node.parent;
|
|
1450
1465
|
checkNode(node, callExpression);
|
|
1466
|
+
},
|
|
1467
|
+
"CallExpression > MemberExpression > Identifier[name=/^(publishReplay|shareReplay)$/]": (node) => {
|
|
1468
|
+
const memberExpression = node.parent;
|
|
1469
|
+
const callExpression = memberExpression.parent;
|
|
1470
|
+
checkNode(node, callExpression);
|
|
1451
1471
|
}
|
|
1452
1472
|
};
|
|
1453
1473
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// package.json
|
|
2
2
|
var name = "eslint-plugin-rxjs-x";
|
|
3
|
-
var version = "0.2.
|
|
3
|
+
var version = "0.2.3";
|
|
4
4
|
|
|
5
5
|
// src/configs/recommended.ts
|
|
6
6
|
var createRecommendedConfig = (plugin2) => ({
|
|
@@ -1412,6 +1412,7 @@ var noIgnoredObservableRule = ruleCreator({
|
|
|
1412
1412
|
});
|
|
1413
1413
|
|
|
1414
1414
|
// src/rules/no-ignored-replay-buffer.ts
|
|
1415
|
+
import { AST_NODE_TYPES as AST_NODE_TYPES6 } from "@typescript-eslint/utils";
|
|
1415
1416
|
var noIgnoredReplayBufferRule = ruleCreator({
|
|
1416
1417
|
defaultOptions: [],
|
|
1417
1418
|
meta: {
|
|
@@ -1427,6 +1428,14 @@ var noIgnoredReplayBufferRule = ruleCreator({
|
|
|
1427
1428
|
},
|
|
1428
1429
|
name: "no-ignored-replay-buffer",
|
|
1429
1430
|
create: (context) => {
|
|
1431
|
+
function checkShareReplayConfig(node, shareReplayConfigArg) {
|
|
1432
|
+
if (!shareReplayConfigArg.properties.some((p) => p.type === AST_NODE_TYPES6.Property && p.key.type === AST_NODE_TYPES6.Identifier && p.key.name === "bufferSize")) {
|
|
1433
|
+
context.report({
|
|
1434
|
+
messageId: "forbidden",
|
|
1435
|
+
node
|
|
1436
|
+
});
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1430
1439
|
function checkNode(node, { arguments: args }) {
|
|
1431
1440
|
if (!args || args.length === 0) {
|
|
1432
1441
|
context.report({
|
|
@@ -1434,6 +1443,12 @@ var noIgnoredReplayBufferRule = ruleCreator({
|
|
|
1434
1443
|
node
|
|
1435
1444
|
});
|
|
1436
1445
|
}
|
|
1446
|
+
if (node.name === "shareReplay" && (args == null ? void 0 : args.length) === 1) {
|
|
1447
|
+
const arg = args[0];
|
|
1448
|
+
if (arg.type === AST_NODE_TYPES6.ObjectExpression) {
|
|
1449
|
+
checkShareReplayConfig(node, arg);
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1437
1452
|
}
|
|
1438
1453
|
return {
|
|
1439
1454
|
"NewExpression > Identifier[name='ReplaySubject']": (node) => {
|
|
@@ -1448,6 +1463,11 @@ var noIgnoredReplayBufferRule = ruleCreator({
|
|
|
1448
1463
|
"CallExpression > Identifier[name=/^(publishReplay|shareReplay)$/]": (node) => {
|
|
1449
1464
|
const callExpression = node.parent;
|
|
1450
1465
|
checkNode(node, callExpression);
|
|
1466
|
+
},
|
|
1467
|
+
"CallExpression > MemberExpression > Identifier[name=/^(publishReplay|shareReplay)$/]": (node) => {
|
|
1468
|
+
const memberExpression = node.parent;
|
|
1469
|
+
const callExpression = memberExpression.parent;
|
|
1470
|
+
checkNode(node, callExpression);
|
|
1451
1471
|
}
|
|
1452
1472
|
};
|
|
1453
1473
|
}
|
|
@@ -1575,7 +1595,7 @@ var noIgnoredTakewhileValueRule = ruleCreator({
|
|
|
1575
1595
|
|
|
1576
1596
|
// src/rules/no-implicit-any-catch.ts
|
|
1577
1597
|
import {
|
|
1578
|
-
AST_NODE_TYPES as
|
|
1598
|
+
AST_NODE_TYPES as AST_NODE_TYPES7
|
|
1579
1599
|
} from "@typescript-eslint/utils";
|
|
1580
1600
|
function isParenthesised(sourceCode, node) {
|
|
1581
1601
|
const before = sourceCode.getTokenBefore(node);
|
|
@@ -1631,7 +1651,7 @@ var noImplicitAnyCatchRule = ruleCreator({
|
|
|
1631
1651
|
const {
|
|
1632
1652
|
typeAnnotation: { type }
|
|
1633
1653
|
} = typeAnnotation;
|
|
1634
|
-
if (type ===
|
|
1654
|
+
if (type === AST_NODE_TYPES7.TSAnyKeyword) {
|
|
1635
1655
|
let fix2 = function(fixer) {
|
|
1636
1656
|
return fixer.replaceText(typeAnnotation, ": unknown");
|
|
1637
1657
|
};
|
|
@@ -1650,7 +1670,7 @@ var noImplicitAnyCatchRule = ruleCreator({
|
|
|
1650
1670
|
}
|
|
1651
1671
|
]
|
|
1652
1672
|
});
|
|
1653
|
-
} else if (type !==
|
|
1673
|
+
} else if (type !== AST_NODE_TYPES7.TSUnknownKeyword) {
|
|
1654
1674
|
let fix2 = function(fixer) {
|
|
1655
1675
|
return fixer.replaceText(typeAnnotation, ": unknown");
|
|
1656
1676
|
};
|
|
@@ -1945,7 +1965,7 @@ function isExpressionObserver(expressionStatement, couldBeType2) {
|
|
|
1945
1965
|
}
|
|
1946
1966
|
|
|
1947
1967
|
// src/rules/no-sharereplay.ts
|
|
1948
|
-
import { AST_NODE_TYPES as
|
|
1968
|
+
import { AST_NODE_TYPES as AST_NODE_TYPES8 } from "@typescript-eslint/utils";
|
|
1949
1969
|
var defaultOptions7 = [];
|
|
1950
1970
|
var noSharereplayRule = ruleCreator({
|
|
1951
1971
|
defaultOptions: defaultOptions7,
|
|
@@ -1976,7 +1996,7 @@ var noSharereplayRule = ruleCreator({
|
|
|
1976
1996
|
"CallExpression[callee.name='shareReplay']": (node) => {
|
|
1977
1997
|
let report = true;
|
|
1978
1998
|
if (allowConfig) {
|
|
1979
|
-
report = node.arguments.length !== 1 || node.arguments[0].type !==
|
|
1999
|
+
report = node.arguments.length !== 1 || node.arguments[0].type !== AST_NODE_TYPES8.ObjectExpression;
|
|
1980
2000
|
}
|
|
1981
2001
|
if (report) {
|
|
1982
2002
|
context.report({
|
|
@@ -2780,7 +2800,7 @@ function isValidArgText(argText) {
|
|
|
2780
2800
|
}
|
|
2781
2801
|
|
|
2782
2802
|
// src/rules/suffix-subjects.ts
|
|
2783
|
-
import { AST_NODE_TYPES as
|
|
2803
|
+
import { AST_NODE_TYPES as AST_NODE_TYPES9, ESLintUtils as ESLintUtils5 } from "@typescript-eslint/utils";
|
|
2784
2804
|
var defaultOptions13 = [];
|
|
2785
2805
|
var suffixSubjectsRule = ruleCreator({
|
|
2786
2806
|
defaultOptions: defaultOptions13,
|
|
@@ -2864,7 +2884,7 @@ var suffixSubjectsRule = ruleCreator({
|
|
|
2864
2884
|
if (!found) {
|
|
2865
2885
|
return;
|
|
2866
2886
|
}
|
|
2867
|
-
if (!validate.variables && found.type ===
|
|
2887
|
+
if (!validate.variables && found.type === AST_NODE_TYPES9.VariableDeclarator) {
|
|
2868
2888
|
return;
|
|
2869
2889
|
}
|
|
2870
2890
|
if (!validate.parameters) {
|
|
@@ -2931,7 +2951,7 @@ var suffixSubjectsRule = ruleCreator({
|
|
|
2931
2951
|
if (!found) {
|
|
2932
2952
|
return;
|
|
2933
2953
|
}
|
|
2934
|
-
if (!validate.variables && found.type ===
|
|
2954
|
+
if (!validate.variables && found.type === AST_NODE_TYPES9.VariableDeclarator) {
|
|
2935
2955
|
return;
|
|
2936
2956
|
}
|
|
2937
2957
|
if (!validate.parameters) {
|
|
@@ -15,6 +15,11 @@ import { ReplaySubject } from "rxjs";
|
|
|
15
15
|
const subject = new ReplaySubject<number>();
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
```ts
|
|
19
|
+
import { of, shareReplay } from "rxjs";
|
|
20
|
+
of(42).pipe(shareReplay({ refCount: true }));
|
|
21
|
+
```
|
|
22
|
+
|
|
18
23
|
Examples of **correct** code for this rule:
|
|
19
24
|
|
|
20
25
|
```ts
|
|
@@ -26,3 +31,8 @@ const subject = new ReplaySubject<number>(1);
|
|
|
26
31
|
import { ReplaySubject } from "rxjs";
|
|
27
32
|
const subject = new ReplaySubject<number>(Infinity);
|
|
28
33
|
```
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
import { of, shareReplay } from "rxjs";
|
|
37
|
+
of(42).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
38
|
+
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-rxjs-x",
|
|
3
3
|
"type": "commonjs",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.3",
|
|
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>",
|
|
@@ -65,11 +65,16 @@
|
|
|
65
65
|
"rxjs": ">=7.0.0",
|
|
66
66
|
"typescript": ">=4.7.4"
|
|
67
67
|
},
|
|
68
|
+
"peerDependenciesMeta": {
|
|
69
|
+
"rxjs": {
|
|
70
|
+
"optional": true
|
|
71
|
+
}
|
|
72
|
+
},
|
|
68
73
|
"devDependencies": {
|
|
69
74
|
"@eslint/js": "^9.14.0",
|
|
70
75
|
"@stylistic/eslint-plugin": "^2.10.1",
|
|
71
76
|
"@types/common-tags": "^1.8.4",
|
|
72
|
-
"@types/node": "
|
|
77
|
+
"@types/node": "~18.18.0",
|
|
73
78
|
"@typescript-eslint/rule-tester": "^8.13.0",
|
|
74
79
|
"@typescript/vfs": "^1.6.0",
|
|
75
80
|
"@vitest/coverage-v8": "^2.1.4",
|
|
@@ -83,7 +88,7 @@
|
|
|
83
88
|
"eslint-plugin-import-x": "^4.4.0",
|
|
84
89
|
"eslint-plugin-n": "^17.13.1",
|
|
85
90
|
"markdownlint-cli2": "^0.14.0",
|
|
86
|
-
"rxjs": "^7.
|
|
91
|
+
"rxjs": "^7.8.1",
|
|
87
92
|
"tsup": "^8.3.5",
|
|
88
93
|
"tsx": "^4.19.2",
|
|
89
94
|
"typescript": "~5.6.3",
|