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.
- package/dist/index.js +58 -6
- 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 {
|
|
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.
|
|
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 =
|
|
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 =
|
|
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.
|
|
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.
|
|
49
|
-
"@eslint-react/
|
|
50
|
-
"@eslint-react/jsx": "5.17.
|
|
51
|
-
"@eslint-react/
|
|
52
|
-
"@eslint-react/
|
|
53
|
-
"@eslint-react/
|
|
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.
|
|
62
|
+
"tsdown": "^0.22.9",
|
|
63
63
|
"tsl": "^1.0.30",
|
|
64
|
-
"tsl-dx": "^0.13.
|
|
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"
|