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 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.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.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 AST_NODE_TYPES6
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 === AST_NODE_TYPES6.TSAnyKeyword) {
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 !== AST_NODE_TYPES6.TSUnknownKeyword) {
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 AST_NODE_TYPES7 } from "@typescript-eslint/utils";
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 !== AST_NODE_TYPES7.ObjectExpression;
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 AST_NODE_TYPES8, ESLintUtils as ESLintUtils5 } from "@typescript-eslint/utils";
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 === AST_NODE_TYPES8.VariableDeclarator) {
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 === AST_NODE_TYPES8.VariableDeclarator) {
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.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": "^18.18.0",
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.0.0",
91
+ "rxjs": "^7.8.1",
87
92
  "tsup": "^8.3.5",
88
93
  "tsx": "^4.19.2",
89
94
  "typescript": "~5.6.3",