eslint-plugin-react-dom 1.17.3 → 1.17.4-beta.10
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 +22 -35
- package/dist/index.mjs +22 -35
- package/package.json +10 -10
package/dist/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var core = require('@eslint-react/core');
|
|
3
4
|
var JSX9 = require('@eslint-react/jsx');
|
|
4
|
-
var shared = require('@eslint-react/shared');
|
|
5
5
|
var tools = require('@eslint-react/tools');
|
|
6
|
+
var shared = require('@eslint-react/shared');
|
|
6
7
|
var types = require('@typescript-eslint/types');
|
|
7
8
|
var AST = require('@eslint-react/ast');
|
|
8
9
|
var compareVersions = require('compare-versions');
|
|
@@ -31,7 +32,7 @@ var AST__namespace = /*#__PURE__*/_interopNamespace(AST);
|
|
|
31
32
|
|
|
32
33
|
// package.json
|
|
33
34
|
var name = "eslint-plugin-react-dom";
|
|
34
|
-
var version = "1.17.
|
|
35
|
+
var version = "1.17.4-beta.10";
|
|
35
36
|
var createRule = shared.createRuleForPlugin("dom");
|
|
36
37
|
function findAttrInCustomAttributes(name2, attributes) {
|
|
37
38
|
return tools.F.pipe(
|
|
@@ -74,19 +75,16 @@ var no_children_in_void_dom_elements_default = createRule({
|
|
|
74
75
|
},
|
|
75
76
|
name: RULE_NAME,
|
|
76
77
|
create(context) {
|
|
77
|
-
const { components, polymorphicPropName } = shared.normalizeSettings(shared.decodeSettings(context.settings));
|
|
78
78
|
return {
|
|
79
79
|
JSXElement(node) {
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
const elementType = JSX9__namespace.getElementType(jsxCtx, components, polymorphicPropName)(openingElementNameExpression);
|
|
83
|
-
if (!elementType || !voidElements.has(elementType)) return;
|
|
80
|
+
const elementName = core.getElementRepresentName(node.openingElement, context);
|
|
81
|
+
if (!elementName || !voidElements.has(elementName)) return;
|
|
84
82
|
if (node.children.length > 0) {
|
|
85
83
|
context.report({
|
|
86
84
|
messageId: "noChildrenInVoidDomElements",
|
|
87
85
|
node,
|
|
88
86
|
data: {
|
|
89
|
-
element:
|
|
87
|
+
element: elementName
|
|
90
88
|
}
|
|
91
89
|
});
|
|
92
90
|
}
|
|
@@ -99,7 +97,7 @@ var no_children_in_void_dom_elements_default = createRule({
|
|
|
99
97
|
messageId: "noChildrenInVoidDomElements",
|
|
100
98
|
node,
|
|
101
99
|
data: {
|
|
102
|
-
element:
|
|
100
|
+
element: elementName
|
|
103
101
|
}
|
|
104
102
|
});
|
|
105
103
|
}
|
|
@@ -221,12 +219,10 @@ var no_missing_button_type_default = createRule({
|
|
|
221
219
|
},
|
|
222
220
|
name: RULE_NAME5,
|
|
223
221
|
create(context) {
|
|
224
|
-
const { components, polymorphicPropName } = shared.normalizeSettings(shared.decodeSettings(context.settings));
|
|
225
222
|
return {
|
|
226
223
|
JSXElement(node) {
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
if (elementType !== "button") return;
|
|
224
|
+
const elementName = core.getElementRepresentName(node.openingElement, context);
|
|
225
|
+
if (elementName !== "button") return;
|
|
230
226
|
const { attributes } = node.openingElement;
|
|
231
227
|
const initialScope = context.sourceCode.getScope(node);
|
|
232
228
|
const maybeTypeAttribute = JSX9__namespace.findPropInAttributes(attributes, initialScope)("type");
|
|
@@ -272,12 +268,10 @@ var no_missing_iframe_sandbox_default = createRule({
|
|
|
272
268
|
},
|
|
273
269
|
name: RULE_NAME6,
|
|
274
270
|
create(context) {
|
|
275
|
-
const { components, polymorphicPropName } = shared.normalizeSettings(shared.decodeSettings(context.settings));
|
|
276
271
|
return {
|
|
277
272
|
JSXElement(node) {
|
|
278
|
-
const
|
|
279
|
-
|
|
280
|
-
if (elementType !== "iframe") return;
|
|
273
|
+
const elementName = core.getElementRepresentName(node.openingElement, context);
|
|
274
|
+
if (elementName !== "iframe") return;
|
|
281
275
|
const { attributes } = node.openingElement;
|
|
282
276
|
const initialScope = context.sourceCode.getScope(node);
|
|
283
277
|
const maybeSandboxAttribute = JSX9__namespace.findPropInAttributes(attributes, initialScope)("sandbox");
|
|
@@ -291,7 +285,6 @@ var no_missing_iframe_sandbox_default = createRule({
|
|
|
291
285
|
const sandboxAttribute = maybeSandboxAttribute.value;
|
|
292
286
|
const hasValidSandbox = tools.F.pipe(
|
|
293
287
|
JSX9__namespace.getPropValue(sandboxAttribute, context.sourceCode.getScope(sandboxAttribute)),
|
|
294
|
-
tools.O.flatMapNullable((v) => v?.value),
|
|
295
288
|
tools.O.filter(tools.isString),
|
|
296
289
|
tools.O.map((value) => value.split(" ")),
|
|
297
290
|
tools.O.exists((values) => values.every((value) => validTypes.some((validType) => validType === value)))
|
|
@@ -398,7 +391,6 @@ var no_script_url_default = createRule({
|
|
|
398
391
|
if (node.name.type !== types.AST_NODE_TYPES.JSXIdentifier || !node.value) return;
|
|
399
392
|
const isJavaScript = tools.F.pipe(
|
|
400
393
|
JSX9__namespace.getPropValue(node, context.sourceCode.getScope(node)),
|
|
401
|
-
tools.O.flatMapNullable((v) => v?.value),
|
|
402
394
|
tools.O.filter(tools.isString),
|
|
403
395
|
tools.O.exists((v) => shared.RE_JAVASCRIPT_PROTOCOL.test(v))
|
|
404
396
|
);
|
|
@@ -1488,12 +1480,10 @@ var no_unsafe_iframe_sandbox_default = createRule({
|
|
|
1488
1480
|
},
|
|
1489
1481
|
name: RULE_NAME11,
|
|
1490
1482
|
create(context) {
|
|
1491
|
-
const { components, polymorphicPropName } = shared.normalizeSettings(shared.decodeSettings(context.settings));
|
|
1492
1483
|
return {
|
|
1493
1484
|
JSXElement(node) {
|
|
1494
|
-
const
|
|
1495
|
-
|
|
1496
|
-
if (elementType !== "iframe") return;
|
|
1485
|
+
const elementName = core.getElementRepresentName(node.openingElement, context);
|
|
1486
|
+
if (elementName !== "iframe") return;
|
|
1497
1487
|
const { attributes } = node.openingElement;
|
|
1498
1488
|
const initialScope = context.sourceCode.getScope(node);
|
|
1499
1489
|
const maybeSandboxAttribute = JSX9__namespace.findPropInAttributes(attributes, initialScope)("sandbox");
|
|
@@ -1501,7 +1491,7 @@ var no_unsafe_iframe_sandbox_default = createRule({
|
|
|
1501
1491
|
const isSafeSandboxValue = !tools.F.pipe(
|
|
1502
1492
|
JSX9__namespace.getPropValue(maybeSandboxAttribute.value, context.sourceCode.getScope(maybeSandboxAttribute.value)),
|
|
1503
1493
|
tools.O.flatMapNullable(
|
|
1504
|
-
(v) => tsPattern.match(v
|
|
1494
|
+
(v) => tsPattern.match(v).with(tsPattern.P.string, tools.F.identity).with({ sandbox: tsPattern.P.string }, ({ sandbox }) => sandbox).otherwise(tools.F.constNull)
|
|
1505
1495
|
),
|
|
1506
1496
|
tools.O.filter(tools.isString),
|
|
1507
1497
|
tools.O.map((value) => value.split(" ")),
|
|
@@ -1540,14 +1530,11 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1540
1530
|
name: RULE_NAME12,
|
|
1541
1531
|
create(context) {
|
|
1542
1532
|
const settings = shared.normalizeSettings(shared.decodeSettings(context.settings));
|
|
1543
|
-
const polymorphicPropName = settings.polymorphicPropName;
|
|
1544
|
-
const components = settings.components;
|
|
1545
1533
|
const additionalComponents = settings.additionalComponents.filter((c) => c.as === "a");
|
|
1546
1534
|
function getReportDescriptor(node) {
|
|
1547
1535
|
const name2 = JSX9__namespace.getElementName(node.openingElement);
|
|
1548
|
-
const
|
|
1549
|
-
|
|
1550
|
-
if (elementType !== "a" && !additionalComponents.some((c) => c.re.test(name2))) return tools.O.none();
|
|
1536
|
+
const elementName = core.getElementRepresentName(node.openingElement, context);
|
|
1537
|
+
if (elementName !== "a" && !additionalComponents.some((c) => c.re.test(name2))) return tools.O.none();
|
|
1551
1538
|
const { attributes } = node.openingElement;
|
|
1552
1539
|
const initialScope = context.sourceCode.getScope(node);
|
|
1553
1540
|
const additionalAttributes = additionalComponents.findLast((c) => c.re.test(name2))?.attributes ?? [];
|
|
@@ -1558,9 +1545,9 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1558
1545
|
const targetProp = JSX9__namespace.findPropInAttributes(attributes, initialScope)(targetPropName);
|
|
1559
1546
|
const targetPropValue = tools.O.isNone(targetProp) ? tools.O.fromNullable(targetPropDefaultValue) : tools.F.pipe(
|
|
1560
1547
|
targetProp,
|
|
1561
|
-
tools.O.flatMap((attr) => JSX9__namespace.getPropValue(attr,
|
|
1548
|
+
tools.O.flatMap((attr) => JSX9__namespace.getPropValue(attr, context.sourceCode.getScope(attr))),
|
|
1562
1549
|
tools.O.flatMapNullable(
|
|
1563
|
-
(v) => tsPattern.match(v
|
|
1550
|
+
(v) => tsPattern.match(v).with(tsPattern.P.string, tools.F.identity).with({ [targetPropName]: tsPattern.P.string }, (v2) => v2[targetPropName]).otherwise(tools.F.constNull)
|
|
1564
1551
|
),
|
|
1565
1552
|
tools.O.filter(tools.isString)
|
|
1566
1553
|
);
|
|
@@ -1572,9 +1559,9 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1572
1559
|
const hrefProp = JSX9__namespace.findPropInAttributes(attributes, initialScope)(hrefPropName);
|
|
1573
1560
|
const hrefPropValue = tools.O.isNone(hrefProp) ? tools.O.fromNullable(hrefPropDefaultValue) : tools.F.pipe(
|
|
1574
1561
|
hrefProp,
|
|
1575
|
-
tools.O.flatMap((attr) => JSX9__namespace.getPropValue(attr,
|
|
1562
|
+
tools.O.flatMap((attr) => JSX9__namespace.getPropValue(attr, context.sourceCode.getScope(attr))),
|
|
1576
1563
|
tools.O.flatMapNullable(
|
|
1577
|
-
(v) => tsPattern.match(v
|
|
1564
|
+
(v) => tsPattern.match(v).with(tsPattern.P.string, tools.F.identity).with(tsPattern.P.shape({ [hrefPropName]: tsPattern.P.string }), (v2) => v2[hrefPropName]).otherwise(tools.F.constNull)
|
|
1578
1565
|
),
|
|
1579
1566
|
tools.O.filter(tools.isString)
|
|
1580
1567
|
);
|
|
@@ -1586,9 +1573,9 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1586
1573
|
const relProp = JSX9__namespace.findPropInAttributes(attributes, initialScope)(relPropName);
|
|
1587
1574
|
const relPropValue = tools.O.isNone(relProp) ? tools.O.fromNullable(relPropDefaultValue) : tools.F.pipe(
|
|
1588
1575
|
relProp,
|
|
1589
|
-
tools.O.flatMap((attr) => JSX9__namespace.getPropValue(attr,
|
|
1576
|
+
tools.O.flatMap((attr) => JSX9__namespace.getPropValue(attr, context.sourceCode.getScope(attr))),
|
|
1590
1577
|
tools.O.flatMapNullable(
|
|
1591
|
-
(v) => tsPattern.match(v
|
|
1578
|
+
(v) => tsPattern.match(v).with(tsPattern.P.string, tools.F.identity).with(tsPattern.P.shape({ [relPropName]: tsPattern.P.string }), (v2) => v2[relPropName]).otherwise(tools.F.constNull)
|
|
1592
1579
|
),
|
|
1593
1580
|
tools.O.filter(tools.isString)
|
|
1594
1581
|
);
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { getElementRepresentName } from '@eslint-react/core';
|
|
1
2
|
import * as JSX9 from '@eslint-react/jsx';
|
|
2
|
-
import { createRuleForPlugin, normalizeSettings, decodeSettings, RE_JAVASCRIPT_PROTOCOL } from '@eslint-react/shared';
|
|
3
3
|
import { O, F, isString, isNullable } from '@eslint-react/tools';
|
|
4
|
+
import { createRuleForPlugin, RE_JAVASCRIPT_PROTOCOL, normalizeSettings, decodeSettings } from '@eslint-react/shared';
|
|
4
5
|
import { AST_NODE_TYPES } from '@typescript-eslint/types';
|
|
5
6
|
import * as AST from '@eslint-react/ast';
|
|
6
7
|
import { compare } from 'compare-versions';
|
|
@@ -8,7 +9,7 @@ import { match, P } from 'ts-pattern';
|
|
|
8
9
|
|
|
9
10
|
// package.json
|
|
10
11
|
var name = "eslint-plugin-react-dom";
|
|
11
|
-
var version = "1.17.
|
|
12
|
+
var version = "1.17.4-beta.10";
|
|
12
13
|
var createRule = createRuleForPlugin("dom");
|
|
13
14
|
function findAttrInCustomAttributes(name2, attributes) {
|
|
14
15
|
return F.pipe(
|
|
@@ -51,19 +52,16 @@ var no_children_in_void_dom_elements_default = createRule({
|
|
|
51
52
|
},
|
|
52
53
|
name: RULE_NAME,
|
|
53
54
|
create(context) {
|
|
54
|
-
const { components, polymorphicPropName } = normalizeSettings(decodeSettings(context.settings));
|
|
55
55
|
return {
|
|
56
56
|
JSXElement(node) {
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
const elementType = JSX9.getElementType(jsxCtx, components, polymorphicPropName)(openingElementNameExpression);
|
|
60
|
-
if (!elementType || !voidElements.has(elementType)) return;
|
|
57
|
+
const elementName = getElementRepresentName(node.openingElement, context);
|
|
58
|
+
if (!elementName || !voidElements.has(elementName)) return;
|
|
61
59
|
if (node.children.length > 0) {
|
|
62
60
|
context.report({
|
|
63
61
|
messageId: "noChildrenInVoidDomElements",
|
|
64
62
|
node,
|
|
65
63
|
data: {
|
|
66
|
-
element:
|
|
64
|
+
element: elementName
|
|
67
65
|
}
|
|
68
66
|
});
|
|
69
67
|
}
|
|
@@ -76,7 +74,7 @@ var no_children_in_void_dom_elements_default = createRule({
|
|
|
76
74
|
messageId: "noChildrenInVoidDomElements",
|
|
77
75
|
node,
|
|
78
76
|
data: {
|
|
79
|
-
element:
|
|
77
|
+
element: elementName
|
|
80
78
|
}
|
|
81
79
|
});
|
|
82
80
|
}
|
|
@@ -198,12 +196,10 @@ var no_missing_button_type_default = createRule({
|
|
|
198
196
|
},
|
|
199
197
|
name: RULE_NAME5,
|
|
200
198
|
create(context) {
|
|
201
|
-
const { components, polymorphicPropName } = normalizeSettings(decodeSettings(context.settings));
|
|
202
199
|
return {
|
|
203
200
|
JSXElement(node) {
|
|
204
|
-
const
|
|
205
|
-
|
|
206
|
-
if (elementType !== "button") return;
|
|
201
|
+
const elementName = getElementRepresentName(node.openingElement, context);
|
|
202
|
+
if (elementName !== "button") return;
|
|
207
203
|
const { attributes } = node.openingElement;
|
|
208
204
|
const initialScope = context.sourceCode.getScope(node);
|
|
209
205
|
const maybeTypeAttribute = JSX9.findPropInAttributes(attributes, initialScope)("type");
|
|
@@ -249,12 +245,10 @@ var no_missing_iframe_sandbox_default = createRule({
|
|
|
249
245
|
},
|
|
250
246
|
name: RULE_NAME6,
|
|
251
247
|
create(context) {
|
|
252
|
-
const { components, polymorphicPropName } = normalizeSettings(decodeSettings(context.settings));
|
|
253
248
|
return {
|
|
254
249
|
JSXElement(node) {
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
if (elementType !== "iframe") return;
|
|
250
|
+
const elementName = getElementRepresentName(node.openingElement, context);
|
|
251
|
+
if (elementName !== "iframe") return;
|
|
258
252
|
const { attributes } = node.openingElement;
|
|
259
253
|
const initialScope = context.sourceCode.getScope(node);
|
|
260
254
|
const maybeSandboxAttribute = JSX9.findPropInAttributes(attributes, initialScope)("sandbox");
|
|
@@ -268,7 +262,6 @@ var no_missing_iframe_sandbox_default = createRule({
|
|
|
268
262
|
const sandboxAttribute = maybeSandboxAttribute.value;
|
|
269
263
|
const hasValidSandbox = F.pipe(
|
|
270
264
|
JSX9.getPropValue(sandboxAttribute, context.sourceCode.getScope(sandboxAttribute)),
|
|
271
|
-
O.flatMapNullable((v) => v?.value),
|
|
272
265
|
O.filter(isString),
|
|
273
266
|
O.map((value) => value.split(" ")),
|
|
274
267
|
O.exists((values) => values.every((value) => validTypes.some((validType) => validType === value)))
|
|
@@ -375,7 +368,6 @@ var no_script_url_default = createRule({
|
|
|
375
368
|
if (node.name.type !== AST_NODE_TYPES.JSXIdentifier || !node.value) return;
|
|
376
369
|
const isJavaScript = F.pipe(
|
|
377
370
|
JSX9.getPropValue(node, context.sourceCode.getScope(node)),
|
|
378
|
-
O.flatMapNullable((v) => v?.value),
|
|
379
371
|
O.filter(isString),
|
|
380
372
|
O.exists((v) => RE_JAVASCRIPT_PROTOCOL.test(v))
|
|
381
373
|
);
|
|
@@ -1465,12 +1457,10 @@ var no_unsafe_iframe_sandbox_default = createRule({
|
|
|
1465
1457
|
},
|
|
1466
1458
|
name: RULE_NAME11,
|
|
1467
1459
|
create(context) {
|
|
1468
|
-
const { components, polymorphicPropName } = normalizeSettings(decodeSettings(context.settings));
|
|
1469
1460
|
return {
|
|
1470
1461
|
JSXElement(node) {
|
|
1471
|
-
const
|
|
1472
|
-
|
|
1473
|
-
if (elementType !== "iframe") return;
|
|
1462
|
+
const elementName = getElementRepresentName(node.openingElement, context);
|
|
1463
|
+
if (elementName !== "iframe") return;
|
|
1474
1464
|
const { attributes } = node.openingElement;
|
|
1475
1465
|
const initialScope = context.sourceCode.getScope(node);
|
|
1476
1466
|
const maybeSandboxAttribute = JSX9.findPropInAttributes(attributes, initialScope)("sandbox");
|
|
@@ -1478,7 +1468,7 @@ var no_unsafe_iframe_sandbox_default = createRule({
|
|
|
1478
1468
|
const isSafeSandboxValue = !F.pipe(
|
|
1479
1469
|
JSX9.getPropValue(maybeSandboxAttribute.value, context.sourceCode.getScope(maybeSandboxAttribute.value)),
|
|
1480
1470
|
O.flatMapNullable(
|
|
1481
|
-
(v) => match(v
|
|
1471
|
+
(v) => match(v).with(P.string, F.identity).with({ sandbox: P.string }, ({ sandbox }) => sandbox).otherwise(F.constNull)
|
|
1482
1472
|
),
|
|
1483
1473
|
O.filter(isString),
|
|
1484
1474
|
O.map((value) => value.split(" ")),
|
|
@@ -1517,14 +1507,11 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1517
1507
|
name: RULE_NAME12,
|
|
1518
1508
|
create(context) {
|
|
1519
1509
|
const settings = normalizeSettings(decodeSettings(context.settings));
|
|
1520
|
-
const polymorphicPropName = settings.polymorphicPropName;
|
|
1521
|
-
const components = settings.components;
|
|
1522
1510
|
const additionalComponents = settings.additionalComponents.filter((c) => c.as === "a");
|
|
1523
1511
|
function getReportDescriptor(node) {
|
|
1524
1512
|
const name2 = JSX9.getElementName(node.openingElement);
|
|
1525
|
-
const
|
|
1526
|
-
|
|
1527
|
-
if (elementType !== "a" && !additionalComponents.some((c) => c.re.test(name2))) return O.none();
|
|
1513
|
+
const elementName = getElementRepresentName(node.openingElement, context);
|
|
1514
|
+
if (elementName !== "a" && !additionalComponents.some((c) => c.re.test(name2))) return O.none();
|
|
1528
1515
|
const { attributes } = node.openingElement;
|
|
1529
1516
|
const initialScope = context.sourceCode.getScope(node);
|
|
1530
1517
|
const additionalAttributes = additionalComponents.findLast((c) => c.re.test(name2))?.attributes ?? [];
|
|
@@ -1535,9 +1522,9 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1535
1522
|
const targetProp = JSX9.findPropInAttributes(attributes, initialScope)(targetPropName);
|
|
1536
1523
|
const targetPropValue = O.isNone(targetProp) ? O.fromNullable(targetPropDefaultValue) : F.pipe(
|
|
1537
1524
|
targetProp,
|
|
1538
|
-
O.flatMap((attr) => JSX9.getPropValue(attr,
|
|
1525
|
+
O.flatMap((attr) => JSX9.getPropValue(attr, context.sourceCode.getScope(attr))),
|
|
1539
1526
|
O.flatMapNullable(
|
|
1540
|
-
(v) => match(v
|
|
1527
|
+
(v) => match(v).with(P.string, F.identity).with({ [targetPropName]: P.string }, (v2) => v2[targetPropName]).otherwise(F.constNull)
|
|
1541
1528
|
),
|
|
1542
1529
|
O.filter(isString)
|
|
1543
1530
|
);
|
|
@@ -1549,9 +1536,9 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1549
1536
|
const hrefProp = JSX9.findPropInAttributes(attributes, initialScope)(hrefPropName);
|
|
1550
1537
|
const hrefPropValue = O.isNone(hrefProp) ? O.fromNullable(hrefPropDefaultValue) : F.pipe(
|
|
1551
1538
|
hrefProp,
|
|
1552
|
-
O.flatMap((attr) => JSX9.getPropValue(attr,
|
|
1539
|
+
O.flatMap((attr) => JSX9.getPropValue(attr, context.sourceCode.getScope(attr))),
|
|
1553
1540
|
O.flatMapNullable(
|
|
1554
|
-
(v) => match(v
|
|
1541
|
+
(v) => match(v).with(P.string, F.identity).with(P.shape({ [hrefPropName]: P.string }), (v2) => v2[hrefPropName]).otherwise(F.constNull)
|
|
1555
1542
|
),
|
|
1556
1543
|
O.filter(isString)
|
|
1557
1544
|
);
|
|
@@ -1563,9 +1550,9 @@ var no_unsafe_target_blank_default = createRule({
|
|
|
1563
1550
|
const relProp = JSX9.findPropInAttributes(attributes, initialScope)(relPropName);
|
|
1564
1551
|
const relPropValue = O.isNone(relProp) ? O.fromNullable(relPropDefaultValue) : F.pipe(
|
|
1565
1552
|
relProp,
|
|
1566
|
-
O.flatMap((attr) => JSX9.getPropValue(attr,
|
|
1553
|
+
O.flatMap((attr) => JSX9.getPropValue(attr, context.sourceCode.getScope(attr))),
|
|
1567
1554
|
O.flatMapNullable(
|
|
1568
|
-
(v) => match(v
|
|
1555
|
+
(v) => match(v).with(P.string, F.identity).with(P.shape({ [relPropName]: P.string }), (v2) => v2[relPropName]).otherwise(F.constNull)
|
|
1569
1556
|
),
|
|
1570
1557
|
O.filter(isString)
|
|
1571
1558
|
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-react-dom",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.4-beta.10",
|
|
4
4
|
"description": "ESLint React's ESLint plugin for React DOM related rules.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -47,17 +47,17 @@
|
|
|
47
47
|
"@typescript-eslint/utils": "^8.17.0",
|
|
48
48
|
"compare-versions": "^6.1.1",
|
|
49
49
|
"ts-pattern": "^5.5.0",
|
|
50
|
-
"@eslint-react/ast": "1.17.
|
|
51
|
-
"@eslint-react/core": "1.17.
|
|
52
|
-
"@eslint-react/
|
|
53
|
-
"@eslint-react/
|
|
54
|
-
"@eslint-react/
|
|
55
|
-
"@eslint-react/types": "1.17.
|
|
56
|
-
"@eslint-react/var": "1.17.
|
|
50
|
+
"@eslint-react/ast": "1.17.4-beta.10",
|
|
51
|
+
"@eslint-react/core": "1.17.4-beta.10",
|
|
52
|
+
"@eslint-react/shared": "1.17.4-beta.10",
|
|
53
|
+
"@eslint-react/tools": "1.17.4-beta.10",
|
|
54
|
+
"@eslint-react/jsx": "1.17.4-beta.10",
|
|
55
|
+
"@eslint-react/types": "1.17.4-beta.10",
|
|
56
|
+
"@eslint-react/var": "1.17.4-beta.10"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@types/react": "^
|
|
60
|
-
"@types/react-dom": "^
|
|
59
|
+
"@types/react": "^19.0.1",
|
|
60
|
+
"@types/react-dom": "^19.0.1",
|
|
61
61
|
"string-ts": "^2.2.0",
|
|
62
62
|
"tsup": "^8.3.5"
|
|
63
63
|
},
|