eslint-plugin-react-x 5.17.0 → 5.17.2

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 (2) hide show
  1. package/dist/index.js +58 -6
  2. package/package.json +9 -9
package/dist/index.js CHANGED
@@ -3,11 +3,11 @@ import { ESLintUtils } from "@typescript-eslint/utils";
3
3
  import { Check, Compare, Extract, Traverse } from "@eslint-react/ast";
4
4
  import * as core from "@eslint-react/core";
5
5
  import { merge } from "@eslint-react/eslint";
6
- import { JsxDetectionHint, findParentAttribute, getElementFullType, hasAttribute } from "@eslint-react/jsx";
7
6
  import { AST_NODE_TYPES } from "@typescript-eslint/types";
8
- import { computeObjectType, isAssignmentTargetEqual, isInitializedFromReact, resolve, resolveEnclosingAssignmentTarget } from "@eslint-react/var";
7
+ import { isAssignmentTargetEqual, isInitializedFromReact, resolve, resolveEnclosingAssignmentTarget, resolveObjectType } from "@eslint-react/var";
9
8
  import { DefinitionType, ScopeType } from "@typescript-eslint/scope-manager";
10
9
  import { findVariable, getStaticValue } from "@typescript-eslint/utils/ast-utils";
10
+ import { findParentAttribute, getElementFullType, hasAttribute } from "@eslint-react/jsx";
11
11
  import { compare } from "compare-versions";
12
12
  import { P, isMatching, match } from "ts-pattern";
13
13
  import { getConstrainedTypeAtLocation } from "@typescript-eslint/type-utils";
@@ -144,7 +144,7 @@ const rules$6 = {
144
144
  //#endregion
145
145
  //#region package.json
146
146
  var name$6 = "eslint-plugin-react-x";
147
- var version = "5.17.0";
147
+ var version = "5.17.2";
148
148
 
149
149
  //#endregion
150
150
  //#region src/utils/create-rule.ts
@@ -193,7 +193,7 @@ function getEnclosingTryBlock(node) {
193
193
  }
194
194
  function create$50(context) {
195
195
  if (!context.sourceCode.text.includes("try")) return {};
196
- const hint = JsxDetectionHint.DoNotIncludeJsxWithNullValue | JsxDetectionHint.DoNotIncludeJsxWithNumberValue | JsxDetectionHint.DoNotIncludeJsxWithBigIntValue | JsxDetectionHint.DoNotIncludeJsxWithStringValue | JsxDetectionHint.DoNotIncludeJsxWithBooleanValue | JsxDetectionHint.DoNotIncludeJsxWithUndefinedValue | JsxDetectionHint.DoNotIncludeJsxWithEmptyArrayValue;
196
+ const hint = core.JsxDetectionHint.DoNotIncludeJsxWithNullValue | core.JsxDetectionHint.DoNotIncludeJsxWithNumberValue | core.JsxDetectionHint.DoNotIncludeJsxWithBigIntValue | core.JsxDetectionHint.DoNotIncludeJsxWithStringValue | core.JsxDetectionHint.DoNotIncludeJsxWithBooleanValue | core.JsxDetectionHint.DoNotIncludeJsxWithUndefinedValue | core.JsxDetectionHint.DoNotIncludeJsxWithEmptyArrayValue;
197
197
  const fc = core.getFunctionComponentCollector(context);
198
198
  const hc = core.getHookCollector(context);
199
199
  const reported = /* @__PURE__ */ new Set();
@@ -2966,6 +2966,58 @@ function getOrInsertComputed(map, key, callback) {
2966
2966
  map.set(key, value);
2967
2967
  return value;
2968
2968
  }
2969
+ /**
2970
+ * Drops the longest prefix of elements from an array that satisfy the given predicate.
2971
+ *
2972
+ * Supports both data-first and data-last (`pipe`-friendly) call styles.
2973
+ *
2974
+ * @param pred - The predicate to test each element with.
2975
+ * @returns A new array without the matching prefix.
2976
+ * @example
2977
+ * ```ts
2978
+ * import * as assert from "node:assert"
2979
+ * import { dropWhile, pipe } from "@local/eff"
2980
+ *
2981
+ * // data-first
2982
+ * assert.deepStrictEqual(dropWhile([1, 2, 3, 2, 1], (n: number) => n < 3), [3, 2, 1])
2983
+ *
2984
+ * // data-last
2985
+ * assert.deepStrictEqual(pipe([1, 2, 3, 2, 1], dropWhile((n: number) => n < 3)), [3, 2, 1])
2986
+ * ```
2987
+ * @category array
2988
+ */
2989
+ const dropWhile = dual(2, (xs, pred) => {
2990
+ const len = xs.length;
2991
+ let idx = 0;
2992
+ while (idx < len && pred(xs[idx])) idx++;
2993
+ return xs.slice(idx);
2994
+ });
2995
+ /**
2996
+ * Takes the longest prefix of elements from an array that satisfy the given predicate.
2997
+ *
2998
+ * Supports both data-first and data-last (`pipe`-friendly) call styles.
2999
+ *
3000
+ * @param pred - The predicate to test each element with.
3001
+ * @returns A new array containing only the matching prefix.
3002
+ * @example
3003
+ * ```ts
3004
+ * import * as assert from "node:assert"
3005
+ * import { pipe, takeWhile } from "@local/eff"
3006
+ *
3007
+ * // data-first
3008
+ * assert.deepStrictEqual(takeWhile([1, 2, 3, 2, 1], (n: number) => n < 3), [1, 2])
3009
+ *
3010
+ * // data-last
3011
+ * assert.deepStrictEqual(pipe([1, 2, 3, 2, 1], takeWhile((n: number) => n < 3)), [1, 2])
3012
+ * ```
3013
+ * @category array
3014
+ */
3015
+ const takeWhile = dual(2, (xs, pred) => {
3016
+ const len = xs.length;
3017
+ let idx = 0;
3018
+ while (idx < len && pred(xs[idx])) idx++;
3019
+ return xs.slice(0, idx);
3020
+ });
2969
3021
 
2970
3022
  //#endregion
2971
3023
  //#region src/rules/no-leaked-conditional-rendering/lib.ts
@@ -3775,7 +3827,7 @@ function create$13(context) {
3775
3827
  const value = attribute.value;
3776
3828
  if (value?.type !== AST_NODE_TYPES.JSXExpressionContainer) return;
3777
3829
  const valueExpression = value.expression;
3778
- const construction = computeObjectType(context, valueExpression);
3830
+ const construction = resolveObjectType(context, valueExpression);
3779
3831
  if (construction == null) return;
3780
3832
  if (core.isHookCall(construction.node)) return;
3781
3833
  getOrInsertComputed(constructions, enclosingFunction, () => []).push(construction);
@@ -3875,7 +3927,7 @@ function create$12(context, [options]) {
3875
3927
  if (prop.type !== AST_NODE_TYPES.Property || prop.value.type !== AST_NODE_TYPES.AssignmentPattern) continue;
3876
3928
  const { value } = prop;
3877
3929
  const { right } = value;
3878
- const construction = computeObjectType(context, value);
3930
+ const construction = resolveObjectType(context, value);
3879
3931
  if (construction == null) continue;
3880
3932
  if (core.isHookCall(construction.node)) continue;
3881
3933
  if (safePatterns.length > 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-react-x",
3
- "version": "5.17.0",
3
+ "version": "5.17.2",
4
4
  "description": "A set of composable ESLint rules for libraries and frameworks that use React as a UI runtime.",
5
5
  "keywords": [
6
6
  "react",
@@ -45,12 +45,12 @@
45
45
  "string-ts": "^2.3.1",
46
46
  "ts-api-utils": "^2.5.0",
47
47
  "ts-pattern": "^5.9.0",
48
- "@eslint-react/ast": "5.17.0",
49
- "@eslint-react/eslint": "5.17.0",
50
- "@eslint-react/jsx": "5.17.0",
51
- "@eslint-react/var": "5.17.0",
52
- "@eslint-react/shared": "5.17.0",
53
- "@eslint-react/core": "5.17.0"
48
+ "@eslint-react/ast": "5.17.2",
49
+ "@eslint-react/core": "5.17.2",
50
+ "@eslint-react/jsx": "5.17.2",
51
+ "@eslint-react/shared": "5.17.2",
52
+ "@eslint-react/var": "5.17.2",
53
+ "@eslint-react/eslint": "5.17.2"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/react": "^19.2.17",
@@ -59,9 +59,9 @@
59
59
  "eslint": "^10.7.0",
60
60
  "react": "^19.2.7",
61
61
  "react-dom": "^19.2.7",
62
- "tsdown": "^0.22.7",
62
+ "tsdown": "^0.22.9",
63
63
  "tsl": "^1.0.30",
64
- "tsl-dx": "^0.13.2",
64
+ "tsl-dx": "^0.13.3",
65
65
  "typescript": "6.0.3",
66
66
  "@local/configs": "0.0.0",
67
67
  "@local/eff": "0.0.0"