eslint-plugin-react-x 1.18.1-beta.0 → 1.18.1-beta.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.mjs CHANGED
@@ -1,12 +1,12 @@
1
- import * as JSX7 from '@eslint-react/jsx';
1
+ import * as JSX8 from '@eslint-react/jsx';
2
2
  import { F, O, isString, MutRef, isNullable } from '@eslint-react/tools';
3
3
  import { createRuleForPlugin, normalizeSettings, decodeSettings, unsafeReadSettings } from '@eslint-react/shared';
4
4
  import * as AST11 from '@eslint-react/ast';
5
5
  import { isForwardRefCall, isThisSetState, isClassComponent, isChildrenCount, isChildrenForEach, isChildrenMap, isChildrenOnly, isChildrenToArray, useComponentCollectorLegacy, isCloneElementCall, isCreateRefCall, isComponentName, isChildrenToArrayCall, useComponentCollector, ERFunctionComponentFlag, ERComponentHint, isDirectValueOfRenderPropertyLoose, isDeclaredInRenderPropLoose, isInsideCreateElementProps, isInsideRenderMethod, ERClassComponentFlag, isFragmentElement, isCreateElementCall, isInitializedFromReact } from '@eslint-react/core';
6
6
  import { AST_NODE_TYPES } from '@typescript-eslint/types';
7
7
  import { isMatching, P, match } from 'ts-pattern';
8
- import * as VAR from '@eslint-react/var';
9
8
  import { compare } from 'compare-versions';
9
+ import * as VAR from '@eslint-react/var';
10
10
  import { getConstrainedTypeAtLocation, isTypeReadonly } from '@typescript-eslint/type-utils';
11
11
  import { ESLintUtils } from '@typescript-eslint/utils';
12
12
  import ts from 'typescript';
@@ -14,7 +14,7 @@ import { getTypeImmutability, isUnknown, isImmutable, isReadonlyShallow, isReado
14
14
 
15
15
  // package.json
16
16
  var name = "eslint-plugin-react-x";
17
- var version = "1.18.1-beta.0";
17
+ var version = "1.18.1-beta.2";
18
18
  var createRule = createRuleForPlugin("x");
19
19
 
20
20
  // src/rules/avoid-shorthand-boolean.ts
@@ -38,7 +38,7 @@ var avoid_shorthand_boolean_default = createRule({
38
38
  messageId: "avoidShorthandBoolean",
39
39
  node,
40
40
  data: {
41
- propName: JSX7.getPropName(node)
41
+ propName: JSX8.getPropName(node)
42
42
  },
43
43
  fix: (fixer) => fixer.insertTextAfter(node.name, `={true}`)
44
44
  });
@@ -541,7 +541,7 @@ var no_children_prop_default = createRule({
541
541
  return {
542
542
  JSXElement(node) {
543
543
  const initialScope = context.sourceCode.getScope(node);
544
- const prop = JSX7.getProp(node.openingElement.attributes, "children", initialScope);
544
+ const prop = JSX8.getProp(node.openingElement.attributes, "children", initialScope);
545
545
  const reportDescriptor = O.map(prop, (prop2) => ({ messageId: "noChildrenProp", node: prop2 }));
546
546
  O.map(reportDescriptor, context.report);
547
547
  }
@@ -841,7 +841,48 @@ var no_component_will_update_default = createRule({
841
841
  },
842
842
  defaultOptions: []
843
843
  });
844
- var RULE_NAME21 = "no-create-ref";
844
+ var RULE_NAME21 = "no-context-provider";
845
+ var no_context_provider_default = createRule({
846
+ meta: {
847
+ type: "problem",
848
+ docs: {
849
+ description: "disallow the use of '<Context.Provider>'"
850
+ },
851
+ fixable: "code",
852
+ messages: {
853
+ noContextProvider: "In React 19, you can render '<Context>' as a provider instead of '<Context.Provider>'."
854
+ },
855
+ schema: []
856
+ },
857
+ name: RULE_NAME21,
858
+ create(context) {
859
+ if (!context.sourceCode.text.includes(".Provider")) return {};
860
+ const { version: version2 } = normalizeSettings(decodeSettings(context.settings));
861
+ if (compare(version2, "19.0.0", "<")) return {};
862
+ return {
863
+ JSXElement(node) {
864
+ const elementName = JSX8.getElementName(node.openingElement);
865
+ if (!elementName.endsWith(".Provider")) return;
866
+ context.report({
867
+ messageId: "noContextProvider",
868
+ node,
869
+ fix(fixer) {
870
+ const providerName = elementName.replace(/\.Provider$/, "");
871
+ const openingElement = node.openingElement;
872
+ const closingElement = node.closingElement;
873
+ if (!closingElement) return fixer.replaceText(openingElement.name, providerName);
874
+ return [
875
+ fixer.replaceText(openingElement.name, providerName),
876
+ fixer.replaceText(closingElement.name, providerName)
877
+ ];
878
+ }
879
+ });
880
+ }
881
+ };
882
+ },
883
+ defaultOptions: []
884
+ });
885
+ var RULE_NAME22 = "no-create-ref";
845
886
  var no_create_ref_default = createRule({
846
887
  meta: {
847
888
  type: "problem",
@@ -853,7 +894,7 @@ var no_create_ref_default = createRule({
853
894
  },
854
895
  schema: []
855
896
  },
856
- name: RULE_NAME21,
897
+ name: RULE_NAME22,
857
898
  create(context) {
858
899
  return {
859
900
  CallExpression(node) {
@@ -865,7 +906,7 @@ var no_create_ref_default = createRule({
865
906
  },
866
907
  defaultOptions: []
867
908
  });
868
- var RULE_NAME22 = "no-default-props";
909
+ var RULE_NAME23 = "no-default-props";
869
910
  var no_default_props_default = createRule({
870
911
  meta: {
871
912
  type: "problem",
@@ -877,7 +918,7 @@ var no_default_props_default = createRule({
877
918
  },
878
919
  schema: []
879
920
  },
880
- name: RULE_NAME22,
921
+ name: RULE_NAME23,
881
922
  create(context) {
882
923
  if (!context.sourceCode.text.includes("defaultProps")) return {};
883
924
  return {
@@ -904,7 +945,7 @@ var no_default_props_default = createRule({
904
945
  },
905
946
  defaultOptions: []
906
947
  });
907
- var RULE_NAME23 = "no-direct-mutation-state";
948
+ var RULE_NAME24 = "no-direct-mutation-state";
908
949
  function getName2(node) {
909
950
  if (node.type === AST_NODE_TYPES.TSAsExpression) {
910
951
  return getName2(node.expression);
@@ -938,7 +979,7 @@ var no_direct_mutation_state_default = createRule({
938
979
  },
939
980
  schema: []
940
981
  },
941
- name: RULE_NAME23,
982
+ name: RULE_NAME24,
942
983
  create(context) {
943
984
  function getReportDescriptor(node) {
944
985
  if (!isAssignmentToThisState(node)) return O.none();
@@ -962,7 +1003,7 @@ var no_direct_mutation_state_default = createRule({
962
1003
  },
963
1004
  defaultOptions: []
964
1005
  });
965
- var RULE_NAME24 = "no-duplicate-key";
1006
+ var RULE_NAME25 = "no-duplicate-key";
966
1007
  var no_duplicate_key_default = createRule({
967
1008
  meta: {
968
1009
  type: "problem",
@@ -974,7 +1015,7 @@ var no_duplicate_key_default = createRule({
974
1015
  },
975
1016
  schema: []
976
1017
  },
977
- name: RULE_NAME24,
1018
+ name: RULE_NAME25,
978
1019
  create(context) {
979
1020
  const isWithinChildrenToArrayRef = MutRef.make(false);
980
1021
  function isKeyEqual(a, b) {
@@ -984,7 +1025,7 @@ var no_duplicate_key_default = createRule({
984
1025
  if (node.type !== AST_NODE_TYPES.JSXElement) return O.none();
985
1026
  const initialScope = context.sourceCode.getScope(node);
986
1027
  return F.pipe(
987
- JSX7.findPropInAttributes(node.openingElement.attributes, initialScope)("key"),
1028
+ JSX8.findPropInAttributes(node.openingElement.attributes, initialScope)("key"),
988
1029
  O.flatMap((k) => "value" in k ? O.fromNullable(k.value) : O.none()),
989
1030
  O.flatMap((v) => {
990
1031
  return isKeyEqual(v, v) ? O.some({
@@ -1091,7 +1132,7 @@ var no_duplicate_key_default = createRule({
1091
1132
  },
1092
1133
  defaultOptions: []
1093
1134
  });
1094
- var RULE_NAME25 = "no-forward-ref";
1135
+ var RULE_NAME26 = "no-forward-ref";
1095
1136
  var no_forward_ref_default = createRule({
1096
1137
  meta: {
1097
1138
  type: "problem",
@@ -1103,7 +1144,7 @@ var no_forward_ref_default = createRule({
1103
1144
  },
1104
1145
  schema: []
1105
1146
  },
1106
- name: RULE_NAME25,
1147
+ name: RULE_NAME26,
1107
1148
  create(context) {
1108
1149
  if (!context.sourceCode.text.includes("forwardRef")) return {};
1109
1150
  const { version: version2 } = normalizeSettings(decodeSettings(context.settings));
@@ -1120,7 +1161,7 @@ var no_forward_ref_default = createRule({
1120
1161
  },
1121
1162
  defaultOptions: []
1122
1163
  });
1123
- var RULE_NAME26 = "no-implicit-key";
1164
+ var RULE_NAME27 = "no-implicit-key";
1124
1165
  var no_implicit_key_default = createRule({
1125
1166
  meta: {
1126
1167
  type: "problem",
@@ -1132,11 +1173,11 @@ var no_implicit_key_default = createRule({
1132
1173
  },
1133
1174
  schema: []
1134
1175
  },
1135
- name: RULE_NAME26,
1176
+ name: RULE_NAME27,
1136
1177
  create(context) {
1137
1178
  function getReportDescriptor(node) {
1138
1179
  const initialScope = context.sourceCode.getScope(node);
1139
- const keyPropFound = JSX7.findPropInAttributes(node.attributes, initialScope)("key");
1180
+ const keyPropFound = JSX8.findPropInAttributes(node.attributes, initialScope)("key");
1140
1181
  const keyPropOnElement = node.attributes.some(
1141
1182
  (n) => AST11.is(AST_NODE_TYPES.JSXAttribute)(n) && n.name.name === "key"
1142
1183
  );
@@ -1175,7 +1216,7 @@ function isTrueLiteralType(type) {
1175
1216
  function unionTypeParts(type) {
1176
1217
  return isUnionType(type) ? type.types : [type];
1177
1218
  }
1178
- var RULE_NAME27 = "no-leaked-conditional-rendering";
1219
+ var RULE_NAME28 = "no-leaked-conditional-rendering";
1179
1220
  var tsHelpers = {
1180
1221
  isAnyType: (type) => isTypeFlagSet(type, ts.TypeFlags.TypeParameter | ts.TypeFlags.Any),
1181
1222
  isBigIntType: (type) => isTypeFlagSet(type, ts.TypeFlags.BigIntLike),
@@ -1279,7 +1320,7 @@ var no_leaked_conditional_rendering_default = createRule({
1279
1320
  },
1280
1321
  schema: []
1281
1322
  },
1282
- name: RULE_NAME27,
1323
+ name: RULE_NAME28,
1283
1324
  create(context) {
1284
1325
  if (!context.sourceCode.text.includes("&&") && !context.sourceCode.text.includes("?")) return {};
1285
1326
  const { version: version2 } = normalizeSettings(decodeSettings(context.settings));
@@ -1336,7 +1377,7 @@ var no_leaked_conditional_rendering_default = createRule({
1336
1377
  },
1337
1378
  defaultOptions: []
1338
1379
  });
1339
- var RULE_NAME28 = "no-missing-component-display-name";
1380
+ var RULE_NAME29 = "no-missing-component-display-name";
1340
1381
  var no_missing_component_display_name_default = createRule({
1341
1382
  meta: {
1342
1383
  type: "problem",
@@ -1348,7 +1389,7 @@ var no_missing_component_display_name_default = createRule({
1348
1389
  },
1349
1390
  schema: []
1350
1391
  },
1351
- name: RULE_NAME28,
1392
+ name: RULE_NAME29,
1352
1393
  create(context) {
1353
1394
  if (!context.sourceCode.text.includes("memo") && !context.sourceCode.text.includes("forwardRef")) return {};
1354
1395
  const { ctx, listeners } = useComponentCollector(context);
@@ -1372,7 +1413,7 @@ var no_missing_component_display_name_default = createRule({
1372
1413
  },
1373
1414
  defaultOptions: []
1374
1415
  });
1375
- var RULE_NAME29 = "no-missing-key";
1416
+ var RULE_NAME30 = "no-missing-key";
1376
1417
  var no_missing_key_default = createRule({
1377
1418
  meta: {
1378
1419
  type: "problem",
@@ -1385,14 +1426,14 @@ var no_missing_key_default = createRule({
1385
1426
  },
1386
1427
  schema: []
1387
1428
  },
1388
- name: RULE_NAME29,
1429
+ name: RULE_NAME30,
1389
1430
  create(context) {
1390
1431
  const isWithinChildrenToArrayRef = MutRef.make(false);
1391
1432
  function checkIteratorElement(node) {
1392
1433
  switch (node.type) {
1393
1434
  case AST_NODE_TYPES.JSXElement: {
1394
1435
  const initialScope = context.sourceCode.getScope(node);
1395
- if (!JSX7.hasProp(node.openingElement.attributes, "key", initialScope)) {
1436
+ if (!JSX8.hasProp(node.openingElement.attributes, "key", initialScope)) {
1396
1437
  return O.some({
1397
1438
  messageId: "noMissingKey",
1398
1439
  node
@@ -1441,7 +1482,7 @@ var no_missing_key_default = createRule({
1441
1482
  if (elements.length === 0) return;
1442
1483
  const initialScope = context.sourceCode.getScope(node);
1443
1484
  for (const element of elements) {
1444
- if (!JSX7.hasProp(element.openingElement.attributes, "key", initialScope)) {
1485
+ if (!JSX8.hasProp(element.openingElement.attributes, "key", initialScope)) {
1445
1486
  context.report({
1446
1487
  messageId: "noMissingKey",
1447
1488
  node: element
@@ -1489,7 +1530,7 @@ var no_missing_key_default = createRule({
1489
1530
  },
1490
1531
  defaultOptions: []
1491
1532
  });
1492
- var RULE_NAME30 = "no-nested-components";
1533
+ var RULE_NAME31 = "no-nested-components";
1493
1534
  var no_nested_components_default = createRule({
1494
1535
  meta: {
1495
1536
  type: "problem",
@@ -1502,7 +1543,7 @@ var no_nested_components_default = createRule({
1502
1543
  },
1503
1544
  schema: []
1504
1545
  },
1505
- name: RULE_NAME30,
1546
+ name: RULE_NAME31,
1506
1547
  create(context) {
1507
1548
  const hint = ERComponentHint.SkipMapCallback | ERComponentHint.SkipNullLiteral | ERComponentHint.SkipUndefinedLiteral | ERComponentHint.SkipBooleanLiteral | ERComponentHint.SkipStringLiteral | ERComponentHint.SkipNumberLiteral | ERComponentHint.StrictLogical | ERComponentHint.StrictConditional;
1508
1549
  const collector = useComponentCollector(context, hint);
@@ -1524,7 +1565,7 @@ var no_nested_components_default = createRule({
1524
1565
  if (O.isNone(componentName)) continue;
1525
1566
  const name2 = componentName.value;
1526
1567
  const isInsideProperty = component.parent.type === AST_NODE_TYPES.Property;
1527
- const isInsideJSXPropValue = component.parent.type === AST_NODE_TYPES.JSXAttribute || O.isSome(JSX7.traverseUpProp(node, (n) => n.value?.type === AST_NODE_TYPES.JSXExpressionContainer));
1568
+ const isInsideJSXPropValue = component.parent.type === AST_NODE_TYPES.JSXAttribute || O.isSome(JSX8.traverseUpProp(node, (n) => n.value?.type === AST_NODE_TYPES.JSXExpressionContainer));
1528
1569
  if (isInsideJSXPropValue) {
1529
1570
  if (!isDeclaredInRenderPropLoose(component)) {
1530
1571
  context.report({
@@ -1586,7 +1627,7 @@ var no_nested_components_default = createRule({
1586
1627
  },
1587
1628
  defaultOptions: []
1588
1629
  });
1589
- var RULE_NAME31 = "no-prop-types";
1630
+ var RULE_NAME32 = "no-prop-types";
1590
1631
  var no_prop_types_default = createRule({
1591
1632
  meta: {
1592
1633
  type: "problem",
@@ -1598,7 +1639,7 @@ var no_prop_types_default = createRule({
1598
1639
  },
1599
1640
  schema: []
1600
1641
  },
1601
- name: RULE_NAME31,
1642
+ name: RULE_NAME32,
1602
1643
  create(context) {
1603
1644
  if (!context.sourceCode.text.includes("propTypes")) return {};
1604
1645
  return {
@@ -1625,7 +1666,7 @@ var no_prop_types_default = createRule({
1625
1666
  },
1626
1667
  defaultOptions: []
1627
1668
  });
1628
- var RULE_NAME32 = "no-redundant-should-component-update";
1669
+ var RULE_NAME33 = "no-redundant-should-component-update";
1629
1670
  function isShouldComponentUpdate(node) {
1630
1671
  return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "shouldComponentUpdate";
1631
1672
  }
@@ -1640,7 +1681,7 @@ var no_redundant_should_component_update_default = createRule({
1640
1681
  },
1641
1682
  schema: []
1642
1683
  },
1643
- name: RULE_NAME32,
1684
+ name: RULE_NAME33,
1644
1685
  create(context) {
1645
1686
  if (!context.sourceCode.text.includes("shouldComponentUpdate")) return {};
1646
1687
  const { ctx, listeners } = useComponentCollectorLegacy();
@@ -1668,7 +1709,7 @@ var no_redundant_should_component_update_default = createRule({
1668
1709
  },
1669
1710
  defaultOptions: []
1670
1711
  });
1671
- var RULE_NAME33 = "no-set-state-in-component-did-mount";
1712
+ var RULE_NAME34 = "no-set-state-in-component-did-mount";
1672
1713
  function isComponentDidMount(node) {
1673
1714
  return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentDidMount";
1674
1715
  }
@@ -1683,7 +1724,7 @@ var no_set_state_in_component_did_mount_default = createRule({
1683
1724
  },
1684
1725
  schema: []
1685
1726
  },
1686
- name: RULE_NAME33,
1727
+ name: RULE_NAME34,
1687
1728
  create(context) {
1688
1729
  if (!context.sourceCode.text.includes("componentDidMount")) return {};
1689
1730
  function getReportDescriptor(node) {
@@ -1711,7 +1752,7 @@ var no_set_state_in_component_did_mount_default = createRule({
1711
1752
  },
1712
1753
  defaultOptions: []
1713
1754
  });
1714
- var RULE_NAME34 = "no-set-state-in-component-did-update";
1755
+ var RULE_NAME35 = "no-set-state-in-component-did-update";
1715
1756
  function isComponentDidUpdate(node) {
1716
1757
  return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentDidUpdate";
1717
1758
  }
@@ -1726,7 +1767,7 @@ var no_set_state_in_component_did_update_default = createRule({
1726
1767
  },
1727
1768
  schema: []
1728
1769
  },
1729
- name: RULE_NAME34,
1770
+ name: RULE_NAME35,
1730
1771
  create(context) {
1731
1772
  if (!context.sourceCode.text.includes("componentDidUpdate")) return {};
1732
1773
  function getReportDescriptor(node) {
@@ -1754,7 +1795,7 @@ var no_set_state_in_component_did_update_default = createRule({
1754
1795
  },
1755
1796
  defaultOptions: []
1756
1797
  });
1757
- var RULE_NAME35 = "no-set-state-in-component-will-update";
1798
+ var RULE_NAME36 = "no-set-state-in-component-will-update";
1758
1799
  function isComponentWillUpdate3(node) {
1759
1800
  return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
1760
1801
  }
@@ -1769,7 +1810,7 @@ var no_set_state_in_component_will_update_default = createRule({
1769
1810
  },
1770
1811
  schema: []
1771
1812
  },
1772
- name: RULE_NAME35,
1813
+ name: RULE_NAME36,
1773
1814
  create(context) {
1774
1815
  if (!context.sourceCode.text.includes("componentWillUpdate")) return {};
1775
1816
  function getReportDescriptor(node) {
@@ -1797,7 +1838,7 @@ var no_set_state_in_component_will_update_default = createRule({
1797
1838
  },
1798
1839
  defaultOptions: []
1799
1840
  });
1800
- var RULE_NAME36 = "no-string-refs";
1841
+ var RULE_NAME37 = "no-string-refs";
1801
1842
  function containsStringLiteral({ value }) {
1802
1843
  return value?.type === AST_NODE_TYPES.Literal && isString(value.value);
1803
1844
  }
@@ -1817,7 +1858,7 @@ var no_string_refs_default = createRule({
1817
1858
  },
1818
1859
  schema: []
1819
1860
  },
1820
- name: RULE_NAME36,
1861
+ name: RULE_NAME37,
1821
1862
  create(context) {
1822
1863
  return {
1823
1864
  JSXAttribute(node) {
@@ -1833,7 +1874,7 @@ var no_string_refs_default = createRule({
1833
1874
  },
1834
1875
  defaultOptions: []
1835
1876
  });
1836
- var RULE_NAME37 = "no-unsafe-component-will-mount";
1877
+ var RULE_NAME38 = "no-unsafe-component-will-mount";
1837
1878
  function isUnsafeComponentWillMount(node) {
1838
1879
  return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillMount";
1839
1880
  }
@@ -1848,7 +1889,7 @@ var no_unsafe_component_will_mount_default = createRule({
1848
1889
  },
1849
1890
  schema: []
1850
1891
  },
1851
- name: RULE_NAME37,
1892
+ name: RULE_NAME38,
1852
1893
  create(context) {
1853
1894
  if (!context.sourceCode.text.includes("UNSAFE_componentWillMount")) return {};
1854
1895
  const { ctx, listeners } = useComponentCollectorLegacy();
@@ -1872,7 +1913,7 @@ var no_unsafe_component_will_mount_default = createRule({
1872
1913
  },
1873
1914
  defaultOptions: []
1874
1915
  });
1875
- var RULE_NAME38 = "no-unsafe-component-will-receive-props";
1916
+ var RULE_NAME39 = "no-unsafe-component-will-receive-props";
1876
1917
  function isUnsafeComponentWillReceiveProps(node) {
1877
1918
  return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillReceiveProps";
1878
1919
  }
@@ -1887,7 +1928,7 @@ var no_unsafe_component_will_receive_props_default = createRule({
1887
1928
  },
1888
1929
  schema: []
1889
1930
  },
1890
- name: RULE_NAME38,
1931
+ name: RULE_NAME39,
1891
1932
  create(context) {
1892
1933
  if (!context.sourceCode.text.includes("UNSAFE_componentWillReceiveProps")) return {};
1893
1934
  const { ctx, listeners } = useComponentCollectorLegacy();
@@ -1911,7 +1952,7 @@ var no_unsafe_component_will_receive_props_default = createRule({
1911
1952
  },
1912
1953
  defaultOptions: []
1913
1954
  });
1914
- var RULE_NAME39 = "no-unsafe-component-will-update";
1955
+ var RULE_NAME40 = "no-unsafe-component-will-update";
1915
1956
  function isUnsafeComponentWillUpdate(node) {
1916
1957
  return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillUpdate";
1917
1958
  }
@@ -1926,7 +1967,7 @@ var no_unsafe_component_will_update_default = createRule({
1926
1967
  },
1927
1968
  schema: []
1928
1969
  },
1929
- name: RULE_NAME39,
1970
+ name: RULE_NAME40,
1930
1971
  create(context) {
1931
1972
  if (!context.sourceCode.text.includes("UNSAFE_componentWillUpdate")) return {};
1932
1973
  const { ctx, listeners } = useComponentCollectorLegacy();
@@ -1950,7 +1991,7 @@ var no_unsafe_component_will_update_default = createRule({
1950
1991
  },
1951
1992
  defaultOptions: []
1952
1993
  });
1953
- var RULE_NAME40 = "no-unstable-context-value";
1994
+ var RULE_NAME41 = "no-unstable-context-value";
1954
1995
  var no_unstable_context_value_default = createRule({
1955
1996
  meta: {
1956
1997
  type: "problem",
@@ -1964,7 +2005,7 @@ var no_unstable_context_value_default = createRule({
1964
2005
  },
1965
2006
  schema: []
1966
2007
  },
1967
- name: RULE_NAME40,
2008
+ name: RULE_NAME41,
1968
2009
  create(context) {
1969
2010
  const { ctx, listeners } = useComponentCollector(context);
1970
2011
  const possibleValueConstructions = /* @__PURE__ */ new Map();
@@ -2017,7 +2058,7 @@ var no_unstable_context_value_default = createRule({
2017
2058
  },
2018
2059
  defaultOptions: []
2019
2060
  });
2020
- var RULE_NAME41 = "no-unstable-default-props";
2061
+ var RULE_NAME42 = "no-unstable-default-props";
2021
2062
  var no_unstable_default_props_default = createRule({
2022
2063
  meta: {
2023
2064
  type: "problem",
@@ -2029,7 +2070,7 @@ var no_unstable_default_props_default = createRule({
2029
2070
  },
2030
2071
  schema: []
2031
2072
  },
2032
- name: RULE_NAME41,
2073
+ name: RULE_NAME42,
2033
2074
  create(context) {
2034
2075
  const { ctx, listeners } = useComponentCollector(context);
2035
2076
  const possibleDestructuringDeclarators = /* @__PURE__ */ new WeakMap();
@@ -2082,7 +2123,7 @@ var no_unstable_default_props_default = createRule({
2082
2123
  },
2083
2124
  defaultOptions: []
2084
2125
  });
2085
- var RULE_NAME42 = "no-unused-class-component-members";
2126
+ var RULE_NAME43 = "no-unused-class-component-members";
2086
2127
  var LIFECYCLE_METHODS = /* @__PURE__ */ new Set([
2087
2128
  "componentDidCatch",
2088
2129
  "componentDidMount",
@@ -2126,7 +2167,7 @@ var no_unused_class_component_members_default = createRule({
2126
2167
  },
2127
2168
  schema: []
2128
2169
  },
2129
- name: RULE_NAME42,
2170
+ name: RULE_NAME43,
2130
2171
  create(context) {
2131
2172
  const classStack = [];
2132
2173
  const methodStack = [];
@@ -2209,7 +2250,7 @@ var no_unused_class_component_members_default = createRule({
2209
2250
  },
2210
2251
  defaultOptions: []
2211
2252
  });
2212
- var RULE_NAME43 = "no-unused-state";
2253
+ var RULE_NAME44 = "no-unused-state";
2213
2254
  function getName4(node) {
2214
2255
  if (node.type === AST_NODE_TYPES.TSAsExpression) {
2215
2256
  return getName4(node.expression);
@@ -2249,7 +2290,7 @@ var no_unused_state_default = createRule({
2249
2290
  },
2250
2291
  schema: []
2251
2292
  },
2252
- name: RULE_NAME43,
2293
+ name: RULE_NAME44,
2253
2294
  create(context) {
2254
2295
  const classStack = [];
2255
2296
  const methodStack = [];
@@ -2350,21 +2391,21 @@ var no_unused_state_default = createRule({
2350
2391
  },
2351
2392
  defaultOptions: []
2352
2393
  });
2353
- var RULE_NAME44 = "no-useless-fragment";
2394
+ var RULE_NAME45 = "no-useless-fragment";
2354
2395
  function check(node, context, allowExpressions) {
2355
2396
  const initialScope = context.sourceCode.getScope(node);
2356
- if (JSX7.isKeyedElement(node, initialScope)) return;
2357
- if (JSX7.isBuiltInElement(node.parent)) context.report({ messageId: "noUselessFragmentInBuiltIn", node });
2397
+ if (JSX8.isKeyedElement(node, initialScope)) return;
2398
+ if (JSX8.isBuiltInElement(node.parent)) context.report({ messageId: "noUselessFragmentInBuiltIn", node });
2358
2399
  if (node.children.length === 0) return context.report({ messageId: "noUselessFragment", node });
2359
2400
  const isChildren = AST11.isOneOf([AST_NODE_TYPES.JSXElement, AST_NODE_TYPES.JSXFragment])(node.parent);
2360
2401
  const [firstChildren] = node.children;
2361
- if (allowExpressions && node.children.length === 1 && JSX7.isLiteral(firstChildren) && !isChildren) return;
2402
+ if (allowExpressions && node.children.length === 1 && JSX8.isLiteral(firstChildren) && !isChildren) return;
2362
2403
  if (!allowExpressions && isChildren) {
2363
2404
  return context.report({ messageId: "noUselessFragment", node });
2364
2405
  } else if (!allowExpressions && !isChildren && node.children.length === 1) {
2365
2406
  return context.report({ messageId: "noUselessFragment", node });
2366
2407
  }
2367
- const nonPaddingChildren = node.children.filter((child) => !JSX7.isPaddingSpaces(child));
2408
+ const nonPaddingChildren = node.children.filter((child) => !JSX8.isPaddingSpaces(child));
2368
2409
  if (nonPaddingChildren.length > 1) return;
2369
2410
  if (nonPaddingChildren.length === 0) return context.report({ messageId: "noUselessFragment", node });
2370
2411
  const [first] = nonPaddingChildren;
@@ -2392,7 +2433,7 @@ var no_useless_fragment_default = createRule({
2392
2433
  }
2393
2434
  }]
2394
2435
  },
2395
- name: RULE_NAME44,
2436
+ name: RULE_NAME45,
2396
2437
  create(context, [option]) {
2397
2438
  const { allowExpressions = true } = option;
2398
2439
  return {
@@ -2409,7 +2450,7 @@ var no_useless_fragment_default = createRule({
2409
2450
  allowExpressions: true
2410
2451
  }]
2411
2452
  });
2412
- var RULE_NAME45 = "prefer-destructuring-assignment";
2453
+ var RULE_NAME46 = "prefer-destructuring-assignment";
2413
2454
  function isMemberExpressionWithObjectName(node) {
2414
2455
  return node.object.type === AST_NODE_TYPES.Identifier && "name" in node.object;
2415
2456
  }
@@ -2424,7 +2465,7 @@ var prefer_destructuring_assignment_default = createRule({
2424
2465
  },
2425
2466
  schema: []
2426
2467
  },
2427
- name: RULE_NAME45,
2468
+ name: RULE_NAME46,
2428
2469
  create(context) {
2429
2470
  const { ctx, listeners } = useComponentCollector(context);
2430
2471
  const memberExpressionWithNames = [];
@@ -2479,7 +2520,7 @@ var prefer_destructuring_assignment_default = createRule({
2479
2520
  },
2480
2521
  defaultOptions: []
2481
2522
  });
2482
- var RULE_NAME46 = "prefer-react-namespace-import";
2523
+ var RULE_NAME47 = "prefer-react-namespace-import";
2483
2524
  var prefer_react_namespace_import_default = createRule({
2484
2525
  meta: {
2485
2526
  type: "problem",
@@ -2492,7 +2533,7 @@ var prefer_react_namespace_import_default = createRule({
2492
2533
  },
2493
2534
  schema: []
2494
2535
  },
2495
- name: RULE_NAME46,
2536
+ name: RULE_NAME47,
2496
2537
  create(context) {
2497
2538
  const importSource = decodeSettings(context.settings).importSource ?? "react";
2498
2539
  return {
@@ -2528,7 +2569,7 @@ ${importStringPrefix} ${specifiers} from ${importSourceQuoted}${semiColon}`
2528
2569
  },
2529
2570
  defaultOptions: []
2530
2571
  });
2531
- var RULE_NAME47 = "prefer-read-only-props";
2572
+ var RULE_NAME48 = "prefer-read-only-props";
2532
2573
  function isReadonlyType(type, services) {
2533
2574
  try {
2534
2575
  const im = getTypeImmutability(services.program, type);
@@ -2548,7 +2589,7 @@ var prefer_read_only_props_default = createRule({
2548
2589
  },
2549
2590
  schema: []
2550
2591
  },
2551
- name: RULE_NAME47,
2592
+ name: RULE_NAME48,
2552
2593
  create(context) {
2553
2594
  const services = ESLintUtils.getParserServices(context, false);
2554
2595
  const { ctx, listeners } = useComponentCollector(context);
@@ -2568,7 +2609,7 @@ var prefer_read_only_props_default = createRule({
2568
2609
  },
2569
2610
  defaultOptions: []
2570
2611
  });
2571
- var RULE_NAME48 = "prefer-shorthand-boolean";
2612
+ var RULE_NAME49 = "prefer-shorthand-boolean";
2572
2613
  var prefer_shorthand_boolean_default = createRule({
2573
2614
  meta: {
2574
2615
  type: "problem",
@@ -2581,11 +2622,11 @@ var prefer_shorthand_boolean_default = createRule({
2581
2622
  },
2582
2623
  schema: []
2583
2624
  },
2584
- name: RULE_NAME48,
2625
+ name: RULE_NAME49,
2585
2626
  create(context) {
2586
2627
  function getReportDescriptor(node) {
2587
2628
  const { value } = node;
2588
- const propName = JSX7.getPropName(node);
2629
+ const propName = JSX8.getPropName(node);
2589
2630
  const hasValueTrue = value?.type === AST_NODE_TYPES.JSXExpressionContainer && value.expression.type === AST_NODE_TYPES.Literal && value.expression.value === true;
2590
2631
  if (!hasValueTrue) return O.none();
2591
2632
  return O.some({
@@ -2603,7 +2644,7 @@ var prefer_shorthand_boolean_default = createRule({
2603
2644
  },
2604
2645
  defaultOptions: []
2605
2646
  });
2606
- var RULE_NAME49 = "prefer-shorthand-fragment";
2647
+ var RULE_NAME50 = "prefer-shorthand-fragment";
2607
2648
  var prefer_shorthand_fragment_default = createRule({
2608
2649
  meta: {
2609
2650
  type: "problem",
@@ -2615,7 +2656,7 @@ var prefer_shorthand_fragment_default = createRule({
2615
2656
  },
2616
2657
  schema: []
2617
2658
  },
2618
- name: RULE_NAME49,
2659
+ name: RULE_NAME50,
2619
2660
  create(context) {
2620
2661
  function getReportDescriptor(node) {
2621
2662
  if (!isFragmentElement(node, context)) return O.none();
@@ -2668,6 +2709,7 @@ var src_default = {
2668
2709
  "no-component-will-mount": no_component_will_mount_default,
2669
2710
  "no-component-will-receive-props": no_component_will_receive_props_default,
2670
2711
  "no-component-will-update": no_component_will_update_default,
2712
+ "no-context-provider": no_context_provider_default,
2671
2713
  "no-create-ref": no_create_ref_default,
2672
2714
  "no-default-props": no_default_props_default,
2673
2715
  "no-direct-mutation-state": no_direct_mutation_state_default,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-react-x",
3
- "version": "1.18.1-beta.0",
3
+ "version": "1.18.1-beta.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
  "eslint",
@@ -49,13 +49,13 @@
49
49
  "compare-versions": "^6.1.1",
50
50
  "is-immutable-type": "^5.0.0",
51
51
  "ts-pattern": "^5.5.0",
52
- "@eslint-react/ast": "1.18.1-beta.0",
53
- "@eslint-react/core": "1.18.1-beta.0",
54
- "@eslint-react/shared": "1.18.1-beta.0",
55
- "@eslint-react/types": "1.18.1-beta.0",
56
- "@eslint-react/jsx": "1.18.1-beta.0",
57
- "@eslint-react/tools": "1.18.1-beta.0",
58
- "@eslint-react/var": "1.18.1-beta.0"
52
+ "@eslint-react/ast": "1.18.1-beta.2",
53
+ "@eslint-react/jsx": "1.18.1-beta.2",
54
+ "@eslint-react/core": "1.18.1-beta.2",
55
+ "@eslint-react/shared": "1.18.1-beta.2",
56
+ "@eslint-react/types": "1.18.1-beta.2",
57
+ "@eslint-react/var": "1.18.1-beta.2",
58
+ "@eslint-react/tools": "1.18.1-beta.2"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/react": "^19.0.1",