eslint-plugin-react-x 1.28.1-next.5 → 1.28.1-next.7

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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var shared = require('@eslint-react/shared');
4
- var JSX7 = require('@eslint-react/jsx');
4
+ var JSX8 = require('@eslint-react/jsx');
5
5
  var AST11 = require('@eslint-react/ast');
6
6
  var core = require('@eslint-react/core');
7
7
  var eff = require('@eslint-react/eff');
@@ -35,7 +35,7 @@ function _interopNamespace(e) {
35
35
  return Object.freeze(n);
36
36
  }
37
37
 
38
- var JSX7__namespace = /*#__PURE__*/_interopNamespace(JSX7);
38
+ var JSX8__namespace = /*#__PURE__*/_interopNamespace(JSX8);
39
39
  var AST11__namespace = /*#__PURE__*/_interopNamespace(AST11);
40
40
  var VAR__namespace = /*#__PURE__*/_interopNamespace(VAR);
41
41
  var ts__default = /*#__PURE__*/_interopDefault(ts);
@@ -137,7 +137,7 @@ var settings3 = {
137
137
 
138
138
  // package.json
139
139
  var name4 = "eslint-plugin-react-x";
140
- var version = "1.28.1-next.5";
140
+ var version = "1.28.1-next.7";
141
141
  var createRule = shared.createRuleForPlugin("x");
142
142
 
143
143
  // src/rules/avoid-shorthand-boolean.ts
@@ -167,7 +167,7 @@ var avoid_shorthand_boolean_default = createRule({
167
167
  messageId: "avoidShorthandBoolean",
168
168
  node,
169
169
  data: {
170
- propName: JSX7__namespace.getAttributeName(node)
170
+ propName: JSX8__namespace.getAttributeName(node)
171
171
  },
172
172
  fix: (fixer) => fixer.insertTextAfter(node.name, `={true}`)
173
173
  });
@@ -720,7 +720,7 @@ var no_children_prop_default = createRule({
720
720
  create(context) {
721
721
  return {
722
722
  JSXElement(node) {
723
- const attribute = JSX7__namespace.getAttribute(
723
+ const attribute = JSX8__namespace.getAttribute(
724
724
  "children",
725
725
  node.openingElement.attributes,
726
726
  context.sourceCode.getScope(node)
@@ -939,7 +939,7 @@ var RULE_FEATURES16 = [
939
939
  "MOD"
940
940
  ];
941
941
  function isComponentWillMount(node) {
942
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillMount";
942
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillMount";
943
943
  }
944
944
  var no_component_will_mount_default = createRule({
945
945
  meta: {
@@ -992,7 +992,7 @@ var RULE_FEATURES17 = [
992
992
  "MOD"
993
993
  ];
994
994
  function isComponentWillUpdate(node) {
995
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillReceiveProps";
995
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillReceiveProps";
996
996
  }
997
997
  var no_component_will_receive_props_default = createRule({
998
998
  meta: {
@@ -1045,7 +1045,7 @@ var RULE_FEATURES18 = [
1045
1045
  "MOD"
1046
1046
  ];
1047
1047
  function isComponentWillUpdate2(node) {
1048
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
1048
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
1049
1049
  }
1050
1050
  var no_component_will_update_default = createRule({
1051
1051
  meta: {
@@ -1119,7 +1119,7 @@ var no_context_provider_default = createRule({
1119
1119
  }
1120
1120
  return {
1121
1121
  JSXElement(node) {
1122
- const [name5, ...rest] = JSX7__namespace.getElementName(node).split(".").reverse();
1122
+ const [name5, ...rest] = JSX8__namespace.getElementName(node).split(".").reverse();
1123
1123
  if (name5 !== "Provider") return;
1124
1124
  const contextName = rest.reverse().join(".");
1125
1125
  context.report({
@@ -1252,7 +1252,7 @@ function isAssignmentToThisState(node) {
1252
1252
  return left.type === types.AST_NODE_TYPES.MemberExpression && AST11__namespace.isThisExpression(left.object) && getName2(left.property) === "state";
1253
1253
  }
1254
1254
  function isConstructorFunction(node) {
1255
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.FunctionDeclaration, types.AST_NODE_TYPES.FunctionExpression])(node) && AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node.parent) && node.parent.key.type === types.AST_NODE_TYPES.Identifier && node.parent.key.name === "constructor";
1255
+ return AST11__namespace.isOneOf([types.AST_NODE_TYPES.FunctionDeclaration, types.AST_NODE_TYPES.FunctionExpression])(node) && AST11__namespace.isMethodOrProperty(node.parent) && node.parent.key.type === types.AST_NODE_TYPES.Identifier && node.parent.key.name === "constructor";
1256
1256
  }
1257
1257
  var no_direct_mutation_state_default = createRule({
1258
1258
  meta: {
@@ -1548,7 +1548,7 @@ var no_implicit_key_default = createRule({
1548
1548
  return {
1549
1549
  JSXOpeningElement(node) {
1550
1550
  const initialScope = context.sourceCode.getScope(node);
1551
- const keyPropFound = JSX7__namespace.getAttribute("key", node.attributes, initialScope);
1551
+ const keyPropFound = JSX8__namespace.getAttribute("key", node.attributes, initialScope);
1552
1552
  const keyPropOnElement = node.attributes.some(
1553
1553
  (n) => n.type === types.AST_NODE_TYPES.JSXAttribute && n.name.type === types.AST_NODE_TYPES.JSXIdentifier && n.name.name === "key"
1554
1554
  );
@@ -1808,7 +1808,7 @@ var no_missing_context_display_name_default = createRule({
1808
1808
  },
1809
1809
  "Program:exit"() {
1810
1810
  for (const call of createCalls) {
1811
- const id = VAR__namespace.getVariableId(call);
1811
+ const id = core.getInstanceId(call);
1812
1812
  if (id == null) {
1813
1813
  context.report({
1814
1814
  messageId: "noMissingContextDisplayName",
@@ -1820,10 +1820,7 @@ var no_missing_context_display_name_default = createRule({
1820
1820
  const left = node.left;
1821
1821
  if (left.type !== types.AST_NODE_TYPES.MemberExpression) return false;
1822
1822
  const object = left.object;
1823
- return VAR__namespace.isVariableIdEqual(id, object, [
1824
- context.sourceCode.getScope(id),
1825
- context.sourceCode.getScope(object)
1826
- ]);
1823
+ return core.isInstanceIdEqual(context, id, object);
1827
1824
  });
1828
1825
  if (!hasDisplayNameAssignment) {
1829
1826
  context.report({
@@ -1861,7 +1858,7 @@ var no_missing_key_default = createRule({
1861
1858
  switch (node.type) {
1862
1859
  case types.AST_NODE_TYPES.JSXElement: {
1863
1860
  const initialScope = context.sourceCode.getScope(node);
1864
- if (!JSX7__namespace.hasAttribute("key", node.openingElement.attributes, initialScope)) {
1861
+ if (!JSX8__namespace.hasAttribute("key", node.openingElement.attributes, initialScope)) {
1865
1862
  return {
1866
1863
  messageId: "missingKey",
1867
1864
  node
@@ -1922,7 +1919,7 @@ var no_missing_key_default = createRule({
1922
1919
  }
1923
1920
  const initialScope = context.sourceCode.getScope(node);
1924
1921
  for (const element of elements) {
1925
- if (!JSX7__namespace.hasAttribute("key", element.openingElement.attributes, initialScope)) {
1922
+ if (!JSX8__namespace.hasAttribute("key", element.openingElement.attributes, initialScope)) {
1926
1923
  context.report({
1927
1924
  messageId: "missingKey",
1928
1925
  node: element
@@ -2024,7 +2021,7 @@ var no_nested_components_default = createRule({
2024
2021
  continue;
2025
2022
  }
2026
2023
  const isInsideProperty = component.parent.type === types.AST_NODE_TYPES.Property;
2027
- const isInsideJSXPropValue = component.parent.type === types.AST_NODE_TYPES.JSXAttribute || JSX7__namespace.findParentAttribute(node, (n) => n.value?.type === types.AST_NODE_TYPES.JSXExpressionContainer) != null;
2024
+ const isInsideJSXPropValue = component.parent.type === types.AST_NODE_TYPES.JSXAttribute || JSX8__namespace.findParentAttribute(node, (n) => n.value?.type === types.AST_NODE_TYPES.JSXExpressionContainer) != null;
2028
2025
  if (isInsideJSXPropValue) {
2029
2026
  if (!core.isDeclaredInRenderPropLoose(component)) {
2030
2027
  context.report({
@@ -2153,7 +2150,7 @@ var RULE_FEATURES33 = [
2153
2150
  "CHK"
2154
2151
  ];
2155
2152
  function isShouldComponentUpdate(node) {
2156
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "shouldComponentUpdate";
2153
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "shouldComponentUpdate";
2157
2154
  }
2158
2155
  var no_redundant_should_component_update_default = createRule({
2159
2156
  meta: {
@@ -2204,7 +2201,7 @@ var RULE_FEATURES34 = [
2204
2201
  "CHK"
2205
2202
  ];
2206
2203
  function isComponentDidMount(node) {
2207
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidMount";
2204
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidMount";
2208
2205
  }
2209
2206
  var no_set_state_in_component_did_mount_default = createRule({
2210
2207
  meta: {
@@ -2249,7 +2246,7 @@ var RULE_FEATURES35 = [
2249
2246
  "CHK"
2250
2247
  ];
2251
2248
  function isComponentDidUpdate(node) {
2252
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidUpdate";
2249
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidUpdate";
2253
2250
  }
2254
2251
  var no_set_state_in_component_did_update_default = createRule({
2255
2252
  meta: {
@@ -2294,7 +2291,7 @@ var RULE_FEATURES36 = [
2294
2291
  "CHK"
2295
2292
  ];
2296
2293
  function isComponentWillUpdate3(node) {
2297
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
2294
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
2298
2295
  }
2299
2296
  var no_set_state_in_component_will_update_default = createRule({
2300
2297
  meta: {
@@ -2385,7 +2382,7 @@ var RULE_FEATURES38 = [
2385
2382
  "CHK"
2386
2383
  ];
2387
2384
  function isUnsafeComponentWillMount(node) {
2388
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillMount";
2385
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillMount";
2389
2386
  }
2390
2387
  var no_unsafe_component_will_mount_default = createRule({
2391
2388
  meta: {
@@ -2430,7 +2427,7 @@ var RULE_FEATURES39 = [
2430
2427
  "CHK"
2431
2428
  ];
2432
2429
  function isUnsafeComponentWillReceiveProps(node) {
2433
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillReceiveProps";
2430
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillReceiveProps";
2434
2431
  }
2435
2432
  var no_unsafe_component_will_receive_props_default = createRule({
2436
2433
  meta: {
@@ -2475,7 +2472,7 @@ var RULE_FEATURES40 = [
2475
2472
  "CHK"
2476
2473
  ];
2477
2474
  function isUnsafeComponentWillUpdate(node) {
2478
- return AST11__namespace.isOneOf([types.AST_NODE_TYPES.MethodDefinition, types.AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillUpdate";
2475
+ return AST11__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillUpdate";
2479
2476
  }
2480
2477
  var no_unsafe_component_will_update_default = createRule({
2481
2478
  meta: {
@@ -2533,18 +2530,17 @@ var no_unstable_context_value_default = createRule({
2533
2530
  },
2534
2531
  name: RULE_NAME41,
2535
2532
  create(context) {
2533
+ const { version: version2 } = shared.getSettingsFromContext(context);
2534
+ const isReact18OrBelow = compareVersions.compare(version2, "19.0.0", "<");
2536
2535
  const { ctx, listeners } = core.useComponentCollector(context);
2537
2536
  const constructions = /* @__PURE__ */ new Map();
2538
2537
  return {
2539
2538
  ...listeners,
2540
2539
  JSXOpeningElement(node) {
2541
- const openingElementName = node.name;
2542
- if (openingElementName.type !== types.AST_NODE_TYPES.JSXMemberExpression) {
2543
- return;
2544
- }
2545
- if (openingElementName.property.name !== "Provider") {
2546
- return;
2547
- }
2540
+ const fullName = JSX8__namespace.getElementName(node.parent);
2541
+ const selfName = fullName.split(".").at(-1);
2542
+ if (selfName == null) return;
2543
+ if (!isContextName(selfName, isReact18OrBelow)) return;
2548
2544
  const functionEntry = ctx.getCurrentEntry();
2549
2545
  if (functionEntry == null) return;
2550
2546
  const attribute = node.attributes.find(
@@ -2583,6 +2579,13 @@ var no_unstable_context_value_default = createRule({
2583
2579
  },
2584
2580
  defaultOptions: []
2585
2581
  });
2582
+ function isContextName(name5, isReact18OrBelow) {
2583
+ if (name5 === "Provider") return true;
2584
+ if (!isReact18OrBelow) {
2585
+ return name5.endsWith("Context") || name5.endsWith("CONTEXT");
2586
+ }
2587
+ return false;
2588
+ }
2586
2589
  var RULE_NAME42 = "no-unstable-default-props";
2587
2590
  var RULE_FEATURES42 = [
2588
2591
  "CHK"
@@ -3114,12 +3117,12 @@ function checkAndReport(context, node, allowExpressions) {
3114
3117
  return null;
3115
3118
  }
3116
3119
  if (node.children.some(
3117
- (child) => JSX7__namespace.isLiteral(child) && !JSX7__namespace.isWhiteSpace(child) || AST11__namespace.is(types.AST_NODE_TYPES.JSXExpressionContainer)(child)
3120
+ (child) => JSX8__namespace.isLiteral(child) && !JSX8__namespace.isWhiteSpace(child) || AST11__namespace.is(types.AST_NODE_TYPES.JSXExpressionContainer)(child)
3118
3121
  )) {
3119
3122
  return null;
3120
3123
  }
3121
3124
  }
3122
- if (JSX7__namespace.isUserDefinedElement(node.parent)) {
3125
+ if (JSX8__namespace.isUserDefinedElement(node.parent)) {
3123
3126
  return null;
3124
3127
  }
3125
3128
  const opener = node.type === types.AST_NODE_TYPES.JSXFragment ? node.openingFragment : node.openingElement;
@@ -3128,10 +3131,10 @@ function checkAndReport(context, node, allowExpressions) {
3128
3131
  return fixer.replaceText(node, trimLikeReact(childrenText));
3129
3132
  }
3130
3133
  const initialScope = context.sourceCode.getScope(node);
3131
- if (JSX7__namespace.isKeyedElement(node, initialScope)) {
3134
+ if (JSX8__namespace.isKeyedElement(node, initialScope)) {
3132
3135
  return;
3133
3136
  }
3134
- if (JSX7__namespace.isBuiltInElement(node.parent)) {
3137
+ if (JSX8__namespace.isBuiltInElement(node.parent)) {
3135
3138
  context.report({
3136
3139
  messageId: "uselessFragment",
3137
3140
  node,
@@ -3155,7 +3158,7 @@ function checkAndReport(context, node, allowExpressions) {
3155
3158
  const isChildElement = AST11__namespace.isOneOf([types.AST_NODE_TYPES.JSXElement, types.AST_NODE_TYPES.JSXFragment])(node.parent);
3156
3159
  switch (true) {
3157
3160
  // <Foo content={<>ee eeee eeee ...</>} />
3158
- case (allowExpressions && !isChildElement && node.children.length === 1 && JSX7__namespace.isLiteral(node.children.at(0))): {
3161
+ case (allowExpressions && !isChildElement && node.children.length === 1 && JSX8__namespace.isLiteral(node.children.at(0))): {
3159
3162
  return;
3160
3163
  }
3161
3164
  // <Foo><>hello, world</></Foo>
@@ -3182,7 +3185,7 @@ function checkAndReport(context, node, allowExpressions) {
3182
3185
  return;
3183
3186
  }
3184
3187
  }
3185
- const nonPaddingChildren = node.children.filter((child) => !JSX7__namespace.isPaddingSpaces(child));
3188
+ const nonPaddingChildren = node.children.filter((child) => !JSX8__namespace.isPaddingSpaces(child));
3186
3189
  const firstNonPaddingChild = nonPaddingChildren.at(0);
3187
3190
  switch (true) {
3188
3191
  case nonPaddingChildren.length === 0:
@@ -3227,7 +3230,7 @@ var no_useless_fragment_default = createRule({
3227
3230
  const { allowExpressions = true } = option;
3228
3231
  return {
3229
3232
  JSXElement(node) {
3230
- if (!JSX7__namespace.isFragmentElement(node)) return;
3233
+ if (!JSX8__namespace.isFragmentElement(node)) return;
3231
3234
  checkAndReport(context, node, allowExpressions);
3232
3235
  },
3233
3236
  JSXFragment(node) {
@@ -3445,7 +3448,7 @@ var prefer_shorthand_boolean_default = createRule({
3445
3448
  return {
3446
3449
  JSXAttribute(node) {
3447
3450
  const { value } = node;
3448
- const propName = JSX7__namespace.getAttributeName(node);
3451
+ const propName = JSX8__namespace.getAttributeName(node);
3449
3452
  const hasValueTrue = value?.type === types.AST_NODE_TYPES.JSXExpressionContainer && value.expression.type === types.AST_NODE_TYPES.Literal && value.expression.value === true;
3450
3453
  if (!hasValueTrue) {
3451
3454
  return;
@@ -3485,7 +3488,7 @@ var prefer_shorthand_fragment_default = createRule({
3485
3488
  create(context) {
3486
3489
  return {
3487
3490
  JSXElement(node) {
3488
- if (!JSX7__namespace.isFragmentElement(node)) return;
3491
+ if (!JSX8__namespace.isFragmentElement(node)) return;
3489
3492
  const hasAttributes = node.openingElement.attributes.length > 0;
3490
3493
  if (hasAttributes) {
3491
3494
  return;
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createRuleForPlugin, getSettingsFromContext, unsafeDecodeSettings, DEFAULT_ESLINT_REACT_SETTINGS } from '@eslint-react/shared';
2
- import * as JSX7 from '@eslint-react/jsx';
2
+ import * as JSX8 from '@eslint-react/jsx';
3
3
  import * as AST11 from '@eslint-react/ast';
4
- import { isForwardRefCall, isClassComponent, isThisSetState, isChildrenCount, isChildrenForEach, isChildrenMap, isChildrenOnly, isChildrenToArray, useComponentCollectorLegacy, isComponentDidCatch, isGetDerivedStateFromError, isCloneElementCall, isCreateRefCall, isComponentName, useComponentCollector, DEFAULT_COMPONENT_HINT, ERComponentFlag, DISPLAY_NAME_ASSIGNMENT_SELECTOR, isCreateContextCall, isChildrenToArrayCall, ERComponentHint, isDirectValueOfRenderPropertyLoose, isDeclaredInRenderPropLoose, isInsideRenderMethod, isCreateElementCall, isReactHookCall, isReactHookCallWithNameAlias, isGetDerivedStateFromProps, isInitializedFromReact } from '@eslint-react/core';
4
+ import { isForwardRefCall, isClassComponent, isThisSetState, isChildrenCount, isChildrenForEach, isChildrenMap, isChildrenOnly, isChildrenToArray, useComponentCollectorLegacy, isComponentDidCatch, isGetDerivedStateFromError, isCloneElementCall, isCreateRefCall, isComponentName, useComponentCollector, DEFAULT_COMPONENT_HINT, ERComponentFlag, getInstanceId, isInstanceIdEqual, DISPLAY_NAME_ASSIGNMENT_SELECTOR, isCreateContextCall, isChildrenToArrayCall, ERComponentHint, isDirectValueOfRenderPropertyLoose, isDeclaredInRenderPropLoose, isInsideRenderMethod, isCreateElementCall, isReactHookCall, isReactHookCallWithNameAlias, isGetDerivedStateFromProps, isInitializedFromReact } from '@eslint-react/core';
5
5
  import { _, getOrUpdate, constTrue, constFalse, identity } from '@eslint-react/eff';
6
6
  import { AST_NODE_TYPES } from '@typescript-eslint/types';
7
7
  import { isMatching, match, P } from 'ts-pattern';
@@ -110,7 +110,7 @@ var settings3 = {
110
110
 
111
111
  // package.json
112
112
  var name4 = "eslint-plugin-react-x";
113
- var version = "1.28.1-next.5";
113
+ var version = "1.28.1-next.7";
114
114
  var createRule = createRuleForPlugin("x");
115
115
 
116
116
  // src/rules/avoid-shorthand-boolean.ts
@@ -140,7 +140,7 @@ var avoid_shorthand_boolean_default = createRule({
140
140
  messageId: "avoidShorthandBoolean",
141
141
  node,
142
142
  data: {
143
- propName: JSX7.getAttributeName(node)
143
+ propName: JSX8.getAttributeName(node)
144
144
  },
145
145
  fix: (fixer) => fixer.insertTextAfter(node.name, `={true}`)
146
146
  });
@@ -693,7 +693,7 @@ var no_children_prop_default = createRule({
693
693
  create(context) {
694
694
  return {
695
695
  JSXElement(node) {
696
- const attribute = JSX7.getAttribute(
696
+ const attribute = JSX8.getAttribute(
697
697
  "children",
698
698
  node.openingElement.attributes,
699
699
  context.sourceCode.getScope(node)
@@ -912,7 +912,7 @@ var RULE_FEATURES16 = [
912
912
  "MOD"
913
913
  ];
914
914
  function isComponentWillMount(node) {
915
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillMount";
915
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillMount";
916
916
  }
917
917
  var no_component_will_mount_default = createRule({
918
918
  meta: {
@@ -965,7 +965,7 @@ var RULE_FEATURES17 = [
965
965
  "MOD"
966
966
  ];
967
967
  function isComponentWillUpdate(node) {
968
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillReceiveProps";
968
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillReceiveProps";
969
969
  }
970
970
  var no_component_will_receive_props_default = createRule({
971
971
  meta: {
@@ -1018,7 +1018,7 @@ var RULE_FEATURES18 = [
1018
1018
  "MOD"
1019
1019
  ];
1020
1020
  function isComponentWillUpdate2(node) {
1021
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
1021
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
1022
1022
  }
1023
1023
  var no_component_will_update_default = createRule({
1024
1024
  meta: {
@@ -1092,7 +1092,7 @@ var no_context_provider_default = createRule({
1092
1092
  }
1093
1093
  return {
1094
1094
  JSXElement(node) {
1095
- const [name5, ...rest] = JSX7.getElementName(node).split(".").reverse();
1095
+ const [name5, ...rest] = JSX8.getElementName(node).split(".").reverse();
1096
1096
  if (name5 !== "Provider") return;
1097
1097
  const contextName = rest.reverse().join(".");
1098
1098
  context.report({
@@ -1225,7 +1225,7 @@ function isAssignmentToThisState(node) {
1225
1225
  return left.type === AST_NODE_TYPES.MemberExpression && AST11.isThisExpression(left.object) && getName2(left.property) === "state";
1226
1226
  }
1227
1227
  function isConstructorFunction(node) {
1228
- return AST11.isOneOf([AST_NODE_TYPES.FunctionDeclaration, AST_NODE_TYPES.FunctionExpression])(node) && AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node.parent) && node.parent.key.type === AST_NODE_TYPES.Identifier && node.parent.key.name === "constructor";
1228
+ return AST11.isOneOf([AST_NODE_TYPES.FunctionDeclaration, AST_NODE_TYPES.FunctionExpression])(node) && AST11.isMethodOrProperty(node.parent) && node.parent.key.type === AST_NODE_TYPES.Identifier && node.parent.key.name === "constructor";
1229
1229
  }
1230
1230
  var no_direct_mutation_state_default = createRule({
1231
1231
  meta: {
@@ -1521,7 +1521,7 @@ var no_implicit_key_default = createRule({
1521
1521
  return {
1522
1522
  JSXOpeningElement(node) {
1523
1523
  const initialScope = context.sourceCode.getScope(node);
1524
- const keyPropFound = JSX7.getAttribute("key", node.attributes, initialScope);
1524
+ const keyPropFound = JSX8.getAttribute("key", node.attributes, initialScope);
1525
1525
  const keyPropOnElement = node.attributes.some(
1526
1526
  (n) => n.type === AST_NODE_TYPES.JSXAttribute && n.name.type === AST_NODE_TYPES.JSXIdentifier && n.name.name === "key"
1527
1527
  );
@@ -1781,7 +1781,7 @@ var no_missing_context_display_name_default = createRule({
1781
1781
  },
1782
1782
  "Program:exit"() {
1783
1783
  for (const call of createCalls) {
1784
- const id = VAR.getVariableId(call);
1784
+ const id = getInstanceId(call);
1785
1785
  if (id == null) {
1786
1786
  context.report({
1787
1787
  messageId: "noMissingContextDisplayName",
@@ -1793,10 +1793,7 @@ var no_missing_context_display_name_default = createRule({
1793
1793
  const left = node.left;
1794
1794
  if (left.type !== AST_NODE_TYPES.MemberExpression) return false;
1795
1795
  const object = left.object;
1796
- return VAR.isVariableIdEqual(id, object, [
1797
- context.sourceCode.getScope(id),
1798
- context.sourceCode.getScope(object)
1799
- ]);
1796
+ return isInstanceIdEqual(context, id, object);
1800
1797
  });
1801
1798
  if (!hasDisplayNameAssignment) {
1802
1799
  context.report({
@@ -1834,7 +1831,7 @@ var no_missing_key_default = createRule({
1834
1831
  switch (node.type) {
1835
1832
  case AST_NODE_TYPES.JSXElement: {
1836
1833
  const initialScope = context.sourceCode.getScope(node);
1837
- if (!JSX7.hasAttribute("key", node.openingElement.attributes, initialScope)) {
1834
+ if (!JSX8.hasAttribute("key", node.openingElement.attributes, initialScope)) {
1838
1835
  return {
1839
1836
  messageId: "missingKey",
1840
1837
  node
@@ -1895,7 +1892,7 @@ var no_missing_key_default = createRule({
1895
1892
  }
1896
1893
  const initialScope = context.sourceCode.getScope(node);
1897
1894
  for (const element of elements) {
1898
- if (!JSX7.hasAttribute("key", element.openingElement.attributes, initialScope)) {
1895
+ if (!JSX8.hasAttribute("key", element.openingElement.attributes, initialScope)) {
1899
1896
  context.report({
1900
1897
  messageId: "missingKey",
1901
1898
  node: element
@@ -1997,7 +1994,7 @@ var no_nested_components_default = createRule({
1997
1994
  continue;
1998
1995
  }
1999
1996
  const isInsideProperty = component.parent.type === AST_NODE_TYPES.Property;
2000
- const isInsideJSXPropValue = component.parent.type === AST_NODE_TYPES.JSXAttribute || JSX7.findParentAttribute(node, (n) => n.value?.type === AST_NODE_TYPES.JSXExpressionContainer) != null;
1997
+ const isInsideJSXPropValue = component.parent.type === AST_NODE_TYPES.JSXAttribute || JSX8.findParentAttribute(node, (n) => n.value?.type === AST_NODE_TYPES.JSXExpressionContainer) != null;
2001
1998
  if (isInsideJSXPropValue) {
2002
1999
  if (!isDeclaredInRenderPropLoose(component)) {
2003
2000
  context.report({
@@ -2126,7 +2123,7 @@ var RULE_FEATURES33 = [
2126
2123
  "CHK"
2127
2124
  ];
2128
2125
  function isShouldComponentUpdate(node) {
2129
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "shouldComponentUpdate";
2126
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "shouldComponentUpdate";
2130
2127
  }
2131
2128
  var no_redundant_should_component_update_default = createRule({
2132
2129
  meta: {
@@ -2177,7 +2174,7 @@ var RULE_FEATURES34 = [
2177
2174
  "CHK"
2178
2175
  ];
2179
2176
  function isComponentDidMount(node) {
2180
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentDidMount";
2177
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentDidMount";
2181
2178
  }
2182
2179
  var no_set_state_in_component_did_mount_default = createRule({
2183
2180
  meta: {
@@ -2222,7 +2219,7 @@ var RULE_FEATURES35 = [
2222
2219
  "CHK"
2223
2220
  ];
2224
2221
  function isComponentDidUpdate(node) {
2225
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentDidUpdate";
2222
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentDidUpdate";
2226
2223
  }
2227
2224
  var no_set_state_in_component_did_update_default = createRule({
2228
2225
  meta: {
@@ -2267,7 +2264,7 @@ var RULE_FEATURES36 = [
2267
2264
  "CHK"
2268
2265
  ];
2269
2266
  function isComponentWillUpdate3(node) {
2270
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
2267
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "componentWillUpdate";
2271
2268
  }
2272
2269
  var no_set_state_in_component_will_update_default = createRule({
2273
2270
  meta: {
@@ -2358,7 +2355,7 @@ var RULE_FEATURES38 = [
2358
2355
  "CHK"
2359
2356
  ];
2360
2357
  function isUnsafeComponentWillMount(node) {
2361
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillMount";
2358
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillMount";
2362
2359
  }
2363
2360
  var no_unsafe_component_will_mount_default = createRule({
2364
2361
  meta: {
@@ -2403,7 +2400,7 @@ var RULE_FEATURES39 = [
2403
2400
  "CHK"
2404
2401
  ];
2405
2402
  function isUnsafeComponentWillReceiveProps(node) {
2406
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillReceiveProps";
2403
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillReceiveProps";
2407
2404
  }
2408
2405
  var no_unsafe_component_will_receive_props_default = createRule({
2409
2406
  meta: {
@@ -2448,7 +2445,7 @@ var RULE_FEATURES40 = [
2448
2445
  "CHK"
2449
2446
  ];
2450
2447
  function isUnsafeComponentWillUpdate(node) {
2451
- return AST11.isOneOf([AST_NODE_TYPES.MethodDefinition, AST_NODE_TYPES.PropertyDefinition])(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillUpdate";
2448
+ return AST11.isMethodOrProperty(node) && node.key.type === AST_NODE_TYPES.Identifier && node.key.name === "UNSAFE_componentWillUpdate";
2452
2449
  }
2453
2450
  var no_unsafe_component_will_update_default = createRule({
2454
2451
  meta: {
@@ -2506,18 +2503,17 @@ var no_unstable_context_value_default = createRule({
2506
2503
  },
2507
2504
  name: RULE_NAME41,
2508
2505
  create(context) {
2506
+ const { version: version2 } = getSettingsFromContext(context);
2507
+ const isReact18OrBelow = compare(version2, "19.0.0", "<");
2509
2508
  const { ctx, listeners } = useComponentCollector(context);
2510
2509
  const constructions = /* @__PURE__ */ new Map();
2511
2510
  return {
2512
2511
  ...listeners,
2513
2512
  JSXOpeningElement(node) {
2514
- const openingElementName = node.name;
2515
- if (openingElementName.type !== AST_NODE_TYPES.JSXMemberExpression) {
2516
- return;
2517
- }
2518
- if (openingElementName.property.name !== "Provider") {
2519
- return;
2520
- }
2513
+ const fullName = JSX8.getElementName(node.parent);
2514
+ const selfName = fullName.split(".").at(-1);
2515
+ if (selfName == null) return;
2516
+ if (!isContextName(selfName, isReact18OrBelow)) return;
2521
2517
  const functionEntry = ctx.getCurrentEntry();
2522
2518
  if (functionEntry == null) return;
2523
2519
  const attribute = node.attributes.find(
@@ -2556,6 +2552,13 @@ var no_unstable_context_value_default = createRule({
2556
2552
  },
2557
2553
  defaultOptions: []
2558
2554
  });
2555
+ function isContextName(name5, isReact18OrBelow) {
2556
+ if (name5 === "Provider") return true;
2557
+ if (!isReact18OrBelow) {
2558
+ return name5.endsWith("Context") || name5.endsWith("CONTEXT");
2559
+ }
2560
+ return false;
2561
+ }
2559
2562
  var RULE_NAME42 = "no-unstable-default-props";
2560
2563
  var RULE_FEATURES42 = [
2561
2564
  "CHK"
@@ -3087,12 +3090,12 @@ function checkAndReport(context, node, allowExpressions) {
3087
3090
  return null;
3088
3091
  }
3089
3092
  if (node.children.some(
3090
- (child) => JSX7.isLiteral(child) && !JSX7.isWhiteSpace(child) || AST11.is(AST_NODE_TYPES.JSXExpressionContainer)(child)
3093
+ (child) => JSX8.isLiteral(child) && !JSX8.isWhiteSpace(child) || AST11.is(AST_NODE_TYPES.JSXExpressionContainer)(child)
3091
3094
  )) {
3092
3095
  return null;
3093
3096
  }
3094
3097
  }
3095
- if (JSX7.isUserDefinedElement(node.parent)) {
3098
+ if (JSX8.isUserDefinedElement(node.parent)) {
3096
3099
  return null;
3097
3100
  }
3098
3101
  const opener = node.type === AST_NODE_TYPES.JSXFragment ? node.openingFragment : node.openingElement;
@@ -3101,10 +3104,10 @@ function checkAndReport(context, node, allowExpressions) {
3101
3104
  return fixer.replaceText(node, trimLikeReact(childrenText));
3102
3105
  }
3103
3106
  const initialScope = context.sourceCode.getScope(node);
3104
- if (JSX7.isKeyedElement(node, initialScope)) {
3107
+ if (JSX8.isKeyedElement(node, initialScope)) {
3105
3108
  return;
3106
3109
  }
3107
- if (JSX7.isBuiltInElement(node.parent)) {
3110
+ if (JSX8.isBuiltInElement(node.parent)) {
3108
3111
  context.report({
3109
3112
  messageId: "uselessFragment",
3110
3113
  node,
@@ -3128,7 +3131,7 @@ function checkAndReport(context, node, allowExpressions) {
3128
3131
  const isChildElement = AST11.isOneOf([AST_NODE_TYPES.JSXElement, AST_NODE_TYPES.JSXFragment])(node.parent);
3129
3132
  switch (true) {
3130
3133
  // <Foo content={<>ee eeee eeee ...</>} />
3131
- case (allowExpressions && !isChildElement && node.children.length === 1 && JSX7.isLiteral(node.children.at(0))): {
3134
+ case (allowExpressions && !isChildElement && node.children.length === 1 && JSX8.isLiteral(node.children.at(0))): {
3132
3135
  return;
3133
3136
  }
3134
3137
  // <Foo><>hello, world</></Foo>
@@ -3155,7 +3158,7 @@ function checkAndReport(context, node, allowExpressions) {
3155
3158
  return;
3156
3159
  }
3157
3160
  }
3158
- const nonPaddingChildren = node.children.filter((child) => !JSX7.isPaddingSpaces(child));
3161
+ const nonPaddingChildren = node.children.filter((child) => !JSX8.isPaddingSpaces(child));
3159
3162
  const firstNonPaddingChild = nonPaddingChildren.at(0);
3160
3163
  switch (true) {
3161
3164
  case nonPaddingChildren.length === 0:
@@ -3200,7 +3203,7 @@ var no_useless_fragment_default = createRule({
3200
3203
  const { allowExpressions = true } = option;
3201
3204
  return {
3202
3205
  JSXElement(node) {
3203
- if (!JSX7.isFragmentElement(node)) return;
3206
+ if (!JSX8.isFragmentElement(node)) return;
3204
3207
  checkAndReport(context, node, allowExpressions);
3205
3208
  },
3206
3209
  JSXFragment(node) {
@@ -3418,7 +3421,7 @@ var prefer_shorthand_boolean_default = createRule({
3418
3421
  return {
3419
3422
  JSXAttribute(node) {
3420
3423
  const { value } = node;
3421
- const propName = JSX7.getAttributeName(node);
3424
+ const propName = JSX8.getAttributeName(node);
3422
3425
  const hasValueTrue = value?.type === AST_NODE_TYPES.JSXExpressionContainer && value.expression.type === AST_NODE_TYPES.Literal && value.expression.value === true;
3423
3426
  if (!hasValueTrue) {
3424
3427
  return;
@@ -3458,7 +3461,7 @@ var prefer_shorthand_fragment_default = createRule({
3458
3461
  create(context) {
3459
3462
  return {
3460
3463
  JSXElement(node) {
3461
- if (!JSX7.isFragmentElement(node)) return;
3464
+ if (!JSX8.isFragmentElement(node)) return;
3462
3465
  const hasAttributes = node.openingElement.attributes.length > 0;
3463
3466
  if (hasAttributes) {
3464
3467
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-react-x",
3
- "version": "1.28.1-next.5",
3
+ "version": "1.28.1-next.7",
4
4
  "description": "A set of composable linting rules for libraries and frameworks that use React as a UI runtime.",
5
5
  "keywords": [
6
6
  "react",
@@ -50,12 +50,12 @@
50
50
  "is-immutable-type": "^5.0.1",
51
51
  "string-ts": "^2.2.1",
52
52
  "ts-pattern": "^5.6.2",
53
- "@eslint-react/ast": "1.28.1-next.5",
54
- "@eslint-react/core": "1.28.1-next.5",
55
- "@eslint-react/eff": "1.28.1-next.5",
56
- "@eslint-react/jsx": "1.28.1-next.5",
57
- "@eslint-react/var": "1.28.1-next.5",
58
- "@eslint-react/shared": "1.28.1-next.5"
53
+ "@eslint-react/ast": "1.28.1-next.7",
54
+ "@eslint-react/core": "1.28.1-next.7",
55
+ "@eslint-react/jsx": "1.28.1-next.7",
56
+ "@eslint-react/shared": "1.28.1-next.7",
57
+ "@eslint-react/eff": "1.28.1-next.7",
58
+ "@eslint-react/var": "1.28.1-next.7"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/react": "^19.0.10",