@eslint-react/core 1.40.3-next.0 → 1.40.3-next.1

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.d.mts CHANGED
@@ -6,11 +6,11 @@ import { _ } from '@eslint-react/eff';
6
6
  import * as birecord from 'birecord';
7
7
  import { Scope } from '@typescript-eslint/scope-manager';
8
8
 
9
- type ComponentCollectorHint = bigint;
9
+ type ComponentDetectionHint = bigint;
10
10
  /**
11
11
  * Hints for component collector
12
12
  */
13
- declare const ComponentCollectorHint: {
13
+ declare const ComponentDetectionHint: {
14
14
  /**
15
15
  * Skip function component created by React.memo
16
16
  */
@@ -49,9 +49,9 @@ declare const ComponentCollectorHint: {
49
49
  readonly StrictConditional: bigint;
50
50
  };
51
51
  /**
52
- * Default component collector hint
52
+ * Default component detection hint
53
53
  */
54
- declare const DEFAULT_COMPONENT_HINT: bigint;
54
+ declare const DEFAULT_COMPONENT_DETECTION_HINT: bigint;
55
55
 
56
56
  interface SemanticNode {
57
57
  id: _ | TSESTree.Identifier | TSESTree.Identifier[];
@@ -78,7 +78,7 @@ interface FunctionComponent extends SemanticNode {
78
78
  kind: "function";
79
79
  node: AST.TSESTreeFunction;
80
80
  flag: ComponentFlag;
81
- hint: ComponentCollectorHint;
81
+ hint: ComponentDetectionHint;
82
82
  initPath: _ | AST.FunctionInitPath;
83
83
  hookCalls: TSESTree.CallExpression[];
84
84
  displayName: _ | TSESTree.Expression;
@@ -88,7 +88,7 @@ interface ClassComponent extends SemanticNode {
88
88
  kind: "class";
89
89
  node: AST.TSESTreeClass;
90
90
  flag: ComponentFlag;
91
- hint: ComponentCollectorHint;
91
+ hint: ComponentDetectionHint;
92
92
  methods: AST.TSESTreeMethodOrProperty[];
93
93
  displayName: _ | TSESTree.Expression;
94
94
  }
@@ -104,7 +104,7 @@ declare namespace useComponentCollector {
104
104
  type Options = {
105
105
  collectDisplayName?: boolean;
106
106
  collectHookCalls?: boolean;
107
- hint?: ComponentCollectorHint;
107
+ hint?: ComponentDetectionHint;
108
108
  };
109
109
  type ReturnType = {
110
110
  ctx: {
@@ -137,6 +137,8 @@ declare namespace useComponentCollectorLegacy {
137
137
  */
138
138
  declare function useComponentCollectorLegacy(): useComponentCollectorLegacy.ReturnType;
139
139
 
140
+ declare function isValidComponentDefinition(context: RuleContext, node: AST.TSESTreeFunction, hint: bigint): boolean;
141
+
140
142
  declare function getFunctionComponentId(context: RuleContext, node: AST.TSESTreeFunction): TSESTree.Identifier | TSESTree.Identifier[] | _;
141
143
 
142
144
  declare function getComponentFlagFromInitPath(initPath: FunctionComponent["initPath"]): bigint;
@@ -416,4 +418,4 @@ declare const isCreateRefCall: isCallFromReact.ReturnType;
416
418
  declare const isForwardRefCall: isCallFromReact.ReturnType;
417
419
  declare const isMemoCall: isCallFromReact.ReturnType;
418
420
 
419
- export { type ClassComponent, type Component, ComponentCollectorHint, type ComponentEffectPhaseKind, ComponentFlag, type ComponentKind, type ComponentLifecyclePhaseKind, type ComponentPhaseKind, ComponentPhaseRelevance, type ComponentStateKind, DEFAULT_COMPONENT_HINT, DISPLAY_NAME_ASSIGNMENT_SELECTOR, type EffectKind, type FunctionComponent, type Hook, type HookKind, RE_COMPONENT_NAME, RE_COMPONENT_NAME_LOOSE, RE_HOOK_NAME, type SemanticEntry, type SemanticNode, getComponentFlagFromInitPath, getComponentNameFromId, getFunctionComponentId, getInstanceId, hasNoneOrLooseComponentName, isAssignmentToThisState, isCallFromReact, isCallFromReactObject, isChildrenCount, isChildrenCountCall, isChildrenForEach, isChildrenForEachCall, isChildrenMap, isChildrenMapCall, isChildrenOfCreateElement, isChildrenOnly, isChildrenOnlyCall, isChildrenToArray, isChildrenToArrayCall, isClassComponent, isCloneElement, isCloneElementCall, isComponentDidCatch, isComponentDidMount, isComponentName, isComponentNameLoose, isComponentWillUnmount, isComponentWrapperCall, isComponentWrapperCallLoose, isCreateContext, isCreateContextCall, isCreateElement, isCreateElementCall, isCreateRef, isCreateRefCall, isDeclaredInRenderPropLoose, isDirectValueOfRenderPropertyLoose, isForwardRef, isForwardRefCall, isFromReact, isFromReactLoose, isFromReactObject, isFromReactStrict, isFunctionOfComponentDidMount, isFunctionOfComponentWillUnmount, isFunctionOfRenderMethod, isFunctionOfUseEffectCleanup, isFunctionOfUseEffectSetup, isGetDerivedStateFromError, isGetDerivedStateFromProps, isInitializedFromReact, isInsideRenderMethod, isInstanceIdEqual, isInversePhase, isMemo, isMemoCall, isPureComponent, isReactAPI, isReactAPICall, isReactHook, isReactHookCall, isReactHookCallWithName, isReactHookCallWithNameAlias, isReactHookCallWithNameLoose, isReactHookName, isReactHookNameLoose, isRenderFunctionLoose, isRenderMethodLike, isRenderPropLoose, isThisSetState, isUseActionStateCall, isUseCall, isUseCallbackCall, isUseContextCall, isUseDebugValueCall, isUseDeferredValueCall, isUseEffectCall, isUseEffectCallLoose, isUseFormStatusCall, isUseIdCall, isUseImperativeHandleCall, isUseInsertionEffectCall, isUseLayoutEffectCall, isUseMemoCall, isUseOptimisticCall, isUseReducerCall, isUseRefCall, isUseStateCall, isUseSyncExternalStoreCall, isUseTransitionCall, useComponentCollector, useComponentCollectorLegacy, useHookCollector };
421
+ export { type ClassComponent, type Component, ComponentDetectionHint, type ComponentEffectPhaseKind, ComponentFlag, type ComponentKind, type ComponentLifecyclePhaseKind, type ComponentPhaseKind, ComponentPhaseRelevance, type ComponentStateKind, DEFAULT_COMPONENT_DETECTION_HINT, DISPLAY_NAME_ASSIGNMENT_SELECTOR, type EffectKind, type FunctionComponent, type Hook, type HookKind, RE_COMPONENT_NAME, RE_COMPONENT_NAME_LOOSE, RE_HOOK_NAME, type SemanticEntry, type SemanticNode, getComponentFlagFromInitPath, getComponentNameFromId, getFunctionComponentId, getInstanceId, hasNoneOrLooseComponentName, isAssignmentToThisState, isCallFromReact, isCallFromReactObject, isChildrenCount, isChildrenCountCall, isChildrenForEach, isChildrenForEachCall, isChildrenMap, isChildrenMapCall, isChildrenOfCreateElement, isChildrenOnly, isChildrenOnlyCall, isChildrenToArray, isChildrenToArrayCall, isClassComponent, isCloneElement, isCloneElementCall, isComponentDidCatch, isComponentDidMount, isComponentName, isComponentNameLoose, isComponentWillUnmount, isComponentWrapperCall, isComponentWrapperCallLoose, isCreateContext, isCreateContextCall, isCreateElement, isCreateElementCall, isCreateRef, isCreateRefCall, isDeclaredInRenderPropLoose, isDirectValueOfRenderPropertyLoose, isForwardRef, isForwardRefCall, isFromReact, isFromReactLoose, isFromReactObject, isFromReactStrict, isFunctionOfComponentDidMount, isFunctionOfComponentWillUnmount, isFunctionOfRenderMethod, isFunctionOfUseEffectCleanup, isFunctionOfUseEffectSetup, isGetDerivedStateFromError, isGetDerivedStateFromProps, isInitializedFromReact, isInsideRenderMethod, isInstanceIdEqual, isInversePhase, isMemo, isMemoCall, isPureComponent, isReactAPI, isReactAPICall, isReactHook, isReactHookCall, isReactHookCallWithName, isReactHookCallWithNameAlias, isReactHookCallWithNameLoose, isReactHookName, isReactHookNameLoose, isRenderFunctionLoose, isRenderMethodLike, isRenderPropLoose, isThisSetState, isUseActionStateCall, isUseCall, isUseCallbackCall, isUseContextCall, isUseDebugValueCall, isUseDeferredValueCall, isUseEffectCall, isUseEffectCallLoose, isUseFormStatusCall, isUseIdCall, isUseImperativeHandleCall, isUseInsertionEffectCall, isUseLayoutEffectCall, isUseMemoCall, isUseOptimisticCall, isUseReducerCall, isUseRefCall, isUseStateCall, isUseSyncExternalStoreCall, isUseTransitionCall, isValidComponentDefinition, useComponentCollector, useComponentCollectorLegacy, useHookCollector };
package/dist/index.d.ts CHANGED
@@ -6,11 +6,11 @@ import { _ } from '@eslint-react/eff';
6
6
  import * as birecord from 'birecord';
7
7
  import { Scope } from '@typescript-eslint/scope-manager';
8
8
 
9
- type ComponentCollectorHint = bigint;
9
+ type ComponentDetectionHint = bigint;
10
10
  /**
11
11
  * Hints for component collector
12
12
  */
13
- declare const ComponentCollectorHint: {
13
+ declare const ComponentDetectionHint: {
14
14
  /**
15
15
  * Skip function component created by React.memo
16
16
  */
@@ -49,9 +49,9 @@ declare const ComponentCollectorHint: {
49
49
  readonly StrictConditional: bigint;
50
50
  };
51
51
  /**
52
- * Default component collector hint
52
+ * Default component detection hint
53
53
  */
54
- declare const DEFAULT_COMPONENT_HINT: bigint;
54
+ declare const DEFAULT_COMPONENT_DETECTION_HINT: bigint;
55
55
 
56
56
  interface SemanticNode {
57
57
  id: _ | TSESTree.Identifier | TSESTree.Identifier[];
@@ -78,7 +78,7 @@ interface FunctionComponent extends SemanticNode {
78
78
  kind: "function";
79
79
  node: AST.TSESTreeFunction;
80
80
  flag: ComponentFlag;
81
- hint: ComponentCollectorHint;
81
+ hint: ComponentDetectionHint;
82
82
  initPath: _ | AST.FunctionInitPath;
83
83
  hookCalls: TSESTree.CallExpression[];
84
84
  displayName: _ | TSESTree.Expression;
@@ -88,7 +88,7 @@ interface ClassComponent extends SemanticNode {
88
88
  kind: "class";
89
89
  node: AST.TSESTreeClass;
90
90
  flag: ComponentFlag;
91
- hint: ComponentCollectorHint;
91
+ hint: ComponentDetectionHint;
92
92
  methods: AST.TSESTreeMethodOrProperty[];
93
93
  displayName: _ | TSESTree.Expression;
94
94
  }
@@ -104,7 +104,7 @@ declare namespace useComponentCollector {
104
104
  type Options = {
105
105
  collectDisplayName?: boolean;
106
106
  collectHookCalls?: boolean;
107
- hint?: ComponentCollectorHint;
107
+ hint?: ComponentDetectionHint;
108
108
  };
109
109
  type ReturnType = {
110
110
  ctx: {
@@ -137,6 +137,8 @@ declare namespace useComponentCollectorLegacy {
137
137
  */
138
138
  declare function useComponentCollectorLegacy(): useComponentCollectorLegacy.ReturnType;
139
139
 
140
+ declare function isValidComponentDefinition(context: RuleContext, node: AST.TSESTreeFunction, hint: bigint): boolean;
141
+
140
142
  declare function getFunctionComponentId(context: RuleContext, node: AST.TSESTreeFunction): TSESTree.Identifier | TSESTree.Identifier[] | _;
141
143
 
142
144
  declare function getComponentFlagFromInitPath(initPath: FunctionComponent["initPath"]): bigint;
@@ -416,4 +418,4 @@ declare const isCreateRefCall: isCallFromReact.ReturnType;
416
418
  declare const isForwardRefCall: isCallFromReact.ReturnType;
417
419
  declare const isMemoCall: isCallFromReact.ReturnType;
418
420
 
419
- export { type ClassComponent, type Component, ComponentCollectorHint, type ComponentEffectPhaseKind, ComponentFlag, type ComponentKind, type ComponentLifecyclePhaseKind, type ComponentPhaseKind, ComponentPhaseRelevance, type ComponentStateKind, DEFAULT_COMPONENT_HINT, DISPLAY_NAME_ASSIGNMENT_SELECTOR, type EffectKind, type FunctionComponent, type Hook, type HookKind, RE_COMPONENT_NAME, RE_COMPONENT_NAME_LOOSE, RE_HOOK_NAME, type SemanticEntry, type SemanticNode, getComponentFlagFromInitPath, getComponentNameFromId, getFunctionComponentId, getInstanceId, hasNoneOrLooseComponentName, isAssignmentToThisState, isCallFromReact, isCallFromReactObject, isChildrenCount, isChildrenCountCall, isChildrenForEach, isChildrenForEachCall, isChildrenMap, isChildrenMapCall, isChildrenOfCreateElement, isChildrenOnly, isChildrenOnlyCall, isChildrenToArray, isChildrenToArrayCall, isClassComponent, isCloneElement, isCloneElementCall, isComponentDidCatch, isComponentDidMount, isComponentName, isComponentNameLoose, isComponentWillUnmount, isComponentWrapperCall, isComponentWrapperCallLoose, isCreateContext, isCreateContextCall, isCreateElement, isCreateElementCall, isCreateRef, isCreateRefCall, isDeclaredInRenderPropLoose, isDirectValueOfRenderPropertyLoose, isForwardRef, isForwardRefCall, isFromReact, isFromReactLoose, isFromReactObject, isFromReactStrict, isFunctionOfComponentDidMount, isFunctionOfComponentWillUnmount, isFunctionOfRenderMethod, isFunctionOfUseEffectCleanup, isFunctionOfUseEffectSetup, isGetDerivedStateFromError, isGetDerivedStateFromProps, isInitializedFromReact, isInsideRenderMethod, isInstanceIdEqual, isInversePhase, isMemo, isMemoCall, isPureComponent, isReactAPI, isReactAPICall, isReactHook, isReactHookCall, isReactHookCallWithName, isReactHookCallWithNameAlias, isReactHookCallWithNameLoose, isReactHookName, isReactHookNameLoose, isRenderFunctionLoose, isRenderMethodLike, isRenderPropLoose, isThisSetState, isUseActionStateCall, isUseCall, isUseCallbackCall, isUseContextCall, isUseDebugValueCall, isUseDeferredValueCall, isUseEffectCall, isUseEffectCallLoose, isUseFormStatusCall, isUseIdCall, isUseImperativeHandleCall, isUseInsertionEffectCall, isUseLayoutEffectCall, isUseMemoCall, isUseOptimisticCall, isUseReducerCall, isUseRefCall, isUseStateCall, isUseSyncExternalStoreCall, isUseTransitionCall, useComponentCollector, useComponentCollectorLegacy, useHookCollector };
421
+ export { type ClassComponent, type Component, ComponentDetectionHint, type ComponentEffectPhaseKind, ComponentFlag, type ComponentKind, type ComponentLifecyclePhaseKind, type ComponentPhaseKind, ComponentPhaseRelevance, type ComponentStateKind, DEFAULT_COMPONENT_DETECTION_HINT, DISPLAY_NAME_ASSIGNMENT_SELECTOR, type EffectKind, type FunctionComponent, type Hook, type HookKind, RE_COMPONENT_NAME, RE_COMPONENT_NAME_LOOSE, RE_HOOK_NAME, type SemanticEntry, type SemanticNode, getComponentFlagFromInitPath, getComponentNameFromId, getFunctionComponentId, getInstanceId, hasNoneOrLooseComponentName, isAssignmentToThisState, isCallFromReact, isCallFromReactObject, isChildrenCount, isChildrenCountCall, isChildrenForEach, isChildrenForEachCall, isChildrenMap, isChildrenMapCall, isChildrenOfCreateElement, isChildrenOnly, isChildrenOnlyCall, isChildrenToArray, isChildrenToArrayCall, isClassComponent, isCloneElement, isCloneElementCall, isComponentDidCatch, isComponentDidMount, isComponentName, isComponentNameLoose, isComponentWillUnmount, isComponentWrapperCall, isComponentWrapperCallLoose, isCreateContext, isCreateContextCall, isCreateElement, isCreateElementCall, isCreateRef, isCreateRefCall, isDeclaredInRenderPropLoose, isDirectValueOfRenderPropertyLoose, isForwardRef, isForwardRefCall, isFromReact, isFromReactLoose, isFromReactObject, isFromReactStrict, isFunctionOfComponentDidMount, isFunctionOfComponentWillUnmount, isFunctionOfRenderMethod, isFunctionOfUseEffectCleanup, isFunctionOfUseEffectSetup, isGetDerivedStateFromError, isGetDerivedStateFromProps, isInitializedFromReact, isInsideRenderMethod, isInstanceIdEqual, isInversePhase, isMemo, isMemoCall, isPureComponent, isReactAPI, isReactAPICall, isReactHook, isReactHookCall, isReactHookCallWithName, isReactHookCallWithNameAlias, isReactHookCallWithNameLoose, isReactHookName, isReactHookNameLoose, isRenderFunctionLoose, isRenderMethodLike, isRenderPropLoose, isThisSetState, isUseActionStateCall, isUseCall, isUseCallbackCall, isUseContextCall, isUseDebugValueCall, isUseDeferredValueCall, isUseEffectCall, isUseEffectCallLoose, isUseFormStatusCall, isUseIdCall, isUseImperativeHandleCall, isUseInsertionEffectCall, isUseLayoutEffectCall, isUseMemoCall, isUseOptimisticCall, isUseReducerCall, isUseRefCall, isUseStateCall, isUseSyncExternalStoreCall, isUseTransitionCall, isValidComponentDefinition, useComponentCollector, useComponentCollectorLegacy, useHookCollector };
package/dist/index.js CHANGED
@@ -815,11 +815,11 @@ function useHookCollector() {
815
815
  };
816
816
  return { ctx, listeners };
817
817
  }
818
- var ComponentCollectorHint = {
818
+ var ComponentDetectionHint = {
819
819
  /**
820
- * 1n << 0n - 1n << 63n are reserved for JSXValueHint
820
+ * 1n << 0n - 1n << 63n are reserved for JSXDetectionHint
821
821
  */
822
- ...JSX3__namespace.JSXValueHint,
822
+ ...JSX3__namespace.JSXDetectionHint,
823
823
  /**
824
824
  * Skip function component created by React.memo
825
825
  */
@@ -845,7 +845,7 @@ var ComponentCollectorHint = {
845
845
  */
846
846
  SkipClassProperty: 1n << 69n
847
847
  };
848
- var DEFAULT_COMPONENT_HINT = 0n | ComponentCollectorHint.SkipBooleanLiteral | ComponentCollectorHint.SkipEmptyArray | ComponentCollectorHint.SkipArrayMapArgument | ComponentCollectorHint.SkipNumberLiteral | ComponentCollectorHint.SkipStringLiteral | ComponentCollectorHint.SkipUndefined | ComponentCollectorHint.StrictArray | ComponentCollectorHint.StrictConditional | ComponentCollectorHint.StrictLogical;
848
+ var DEFAULT_COMPONENT_DETECTION_HINT = 0n | ComponentDetectionHint.SkipBooleanLiteral | ComponentDetectionHint.SkipEmptyArray | ComponentDetectionHint.SkipArrayMapArgument | ComponentDetectionHint.SkipNumberLiteral | ComponentDetectionHint.SkipStringLiteral | ComponentDetectionHint.SkipUndefined | ComponentDetectionHint.StrictArray | ComponentDetectionHint.StrictConditional | ComponentDetectionHint.StrictLogical;
849
849
  function isClassComponent(node) {
850
850
  if ("superClass" in node && node.superClass != null) {
851
851
  const re = /^(?:Pure)?Component$/u;
@@ -934,16 +934,16 @@ function isValidComponentDefinition(context, node, hint) {
934
934
  if (isChildrenOfCreateElement(context, node) || isFunctionOfRenderMethod(node)) {
935
935
  return false;
936
936
  }
937
- if (hint & ComponentCollectorHint.SkipObjectMethod && isFunctionOfObjectMethod(node.parent)) {
937
+ if (hint & ComponentDetectionHint.SkipObjectMethod && isFunctionOfObjectMethod(node.parent)) {
938
938
  return false;
939
939
  }
940
- if (hint & ComponentCollectorHint.SkipClassMethod && isFunctionOfClassMethod(node.parent)) {
940
+ if (hint & ComponentDetectionHint.SkipClassMethod && isFunctionOfClassMethod(node.parent)) {
941
941
  return false;
942
942
  }
943
- if (hint & ComponentCollectorHint.SkipClassProperty && isFunctionOfClassProperty(node.parent)) {
943
+ if (hint & ComponentDetectionHint.SkipClassProperty && isFunctionOfClassProperty(node.parent)) {
944
944
  return false;
945
945
  }
946
- if (hint & ComponentCollectorHint.SkipArrayMapArgument && AST5__namespace.isArrayMapCallLoose(node.parent)) {
946
+ if (hint & ComponentDetectionHint.SkipArrayMapArgument && AST5__namespace.isArrayMapCallLoose(node.parent)) {
947
947
  return false;
948
948
  }
949
949
  const boundaryNode = AST5__namespace.findParentNode(
@@ -1028,7 +1028,7 @@ function useComponentCollector(context, options = {}) {
1028
1028
  const {
1029
1029
  collectDisplayName = false,
1030
1030
  collectHookCalls = false,
1031
- hint = DEFAULT_COMPONENT_HINT
1031
+ hint = DEFAULT_COMPONENT_DETECTION_HINT
1032
1032
  } = options;
1033
1033
  const jsxCtx = { getScope: (node) => context.sourceCode.getScope(node) };
1034
1034
  const components = /* @__PURE__ */ new Map();
@@ -1043,7 +1043,7 @@ function useComponentCollector(context, options = {}) {
1043
1043
  if (entry == null) return;
1044
1044
  if (!entry.isComponent) return functionEntries.pop();
1045
1045
  const shouldDrop = AST5__namespace.getNestedReturnStatements(entry.node.body).slice().reverse().some((r) => {
1046
- return context.sourceCode.getScope(r).block === entry.node && r.argument != null && !JSX3__namespace.isJSXValue(r.argument, jsxCtx, hint);
1046
+ return context.sourceCode.getScope(r).block === entry.node && r.argument != null && !JSX3__namespace.isJSXLike(r.argument, jsxCtx, hint);
1047
1047
  });
1048
1048
  if (shouldDrop) {
1049
1049
  components.delete(entry.key);
@@ -1067,7 +1067,7 @@ function useComponentCollector(context, options = {}) {
1067
1067
  const entry = getCurrentEntry();
1068
1068
  if (entry == null) return;
1069
1069
  const { body } = entry.node;
1070
- const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3__namespace.isJSXValue(body, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1070
+ const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3__namespace.isJSXLike(body, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1071
1071
  if (!isComponent) return;
1072
1072
  const initPath = AST5__namespace.getFunctionInitPath(entry.node);
1073
1073
  const id = getFunctionComponentId(context, entry.node);
@@ -1107,7 +1107,7 @@ function useComponentCollector(context, options = {}) {
1107
1107
  "ReturnStatement[type]"(node) {
1108
1108
  const entry = getCurrentEntry();
1109
1109
  if (entry == null) return;
1110
- const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3__namespace.isJSXValue(node.argument, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1110
+ const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3__namespace.isJSXLike(node.argument, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1111
1111
  if (!isComponent) return;
1112
1112
  entry.isComponent = true;
1113
1113
  const initPath = AST5__namespace.getFunctionInitPath(entry.node);
@@ -1177,12 +1177,12 @@ function isRenderFunctionLoose(context, node) {
1177
1177
  if (AST5__namespace.getFunctionIdentifier(node)?.name.startsWith("render")) {
1178
1178
  return parent.type === types.AST_NODE_TYPES.JSXExpressionContainer && parent.parent.type === types.AST_NODE_TYPES.JSXAttribute && parent.parent.name.type === types.AST_NODE_TYPES.JSXIdentifier && parent.parent.name.name.startsWith("render");
1179
1179
  }
1180
- return JSX3__namespace.isJSXValue(
1180
+ return JSX3__namespace.isJSXLike(
1181
1181
  body,
1182
1182
  {
1183
1183
  getScope: (node2) => context.sourceCode.getScope(node2)
1184
1184
  },
1185
- JSX3__namespace.JSXValueHint.SkipNullLiteral | JSX3__namespace.JSXValueHint.SkipUndefined | JSX3__namespace.JSXValueHint.StrictLogical | JSX3__namespace.JSXValueHint.StrictConditional
1185
+ JSX3__namespace.JSXDetectionHint.SkipNullLiteral | JSX3__namespace.JSXDetectionHint.SkipUndefined | JSX3__namespace.JSXDetectionHint.StrictLogical | JSX3__namespace.JSXDetectionHint.StrictConditional
1186
1186
  );
1187
1187
  }
1188
1188
  function isRenderPropLoose(context, node) {
@@ -1227,10 +1227,10 @@ function isFunctionOfUseEffectCleanup(node) {
1227
1227
  return enclosingFunction === functionOfReturnStatement && isFunctionOfUseEffectSetup(enclosingFunction);
1228
1228
  }
1229
1229
 
1230
- exports.ComponentCollectorHint = ComponentCollectorHint;
1230
+ exports.ComponentDetectionHint = ComponentDetectionHint;
1231
1231
  exports.ComponentFlag = ComponentFlag;
1232
1232
  exports.ComponentPhaseRelevance = ComponentPhaseRelevance;
1233
- exports.DEFAULT_COMPONENT_HINT = DEFAULT_COMPONENT_HINT;
1233
+ exports.DEFAULT_COMPONENT_DETECTION_HINT = DEFAULT_COMPONENT_DETECTION_HINT;
1234
1234
  exports.DISPLAY_NAME_ASSIGNMENT_SELECTOR = DISPLAY_NAME_ASSIGNMENT_SELECTOR;
1235
1235
  exports.RE_COMPONENT_NAME = RE_COMPONENT_NAME;
1236
1236
  exports.RE_COMPONENT_NAME_LOOSE = RE_COMPONENT_NAME_LOOSE;
@@ -1325,6 +1325,7 @@ exports.isUseRefCall = isUseRefCall;
1325
1325
  exports.isUseStateCall = isUseStateCall;
1326
1326
  exports.isUseSyncExternalStoreCall = isUseSyncExternalStoreCall;
1327
1327
  exports.isUseTransitionCall = isUseTransitionCall;
1328
+ exports.isValidComponentDefinition = isValidComponentDefinition;
1328
1329
  exports.useComponentCollector = useComponentCollector;
1329
1330
  exports.useComponentCollectorLegacy = useComponentCollectorLegacy;
1330
1331
  exports.useHookCollector = useHookCollector;
package/dist/index.mjs CHANGED
@@ -788,11 +788,11 @@ function useHookCollector() {
788
788
  };
789
789
  return { ctx, listeners };
790
790
  }
791
- var ComponentCollectorHint = {
791
+ var ComponentDetectionHint = {
792
792
  /**
793
- * 1n << 0n - 1n << 63n are reserved for JSXValueHint
793
+ * 1n << 0n - 1n << 63n are reserved for JSXDetectionHint
794
794
  */
795
- ...JSX3.JSXValueHint,
795
+ ...JSX3.JSXDetectionHint,
796
796
  /**
797
797
  * Skip function component created by React.memo
798
798
  */
@@ -818,7 +818,7 @@ var ComponentCollectorHint = {
818
818
  */
819
819
  SkipClassProperty: 1n << 69n
820
820
  };
821
- var DEFAULT_COMPONENT_HINT = 0n | ComponentCollectorHint.SkipBooleanLiteral | ComponentCollectorHint.SkipEmptyArray | ComponentCollectorHint.SkipArrayMapArgument | ComponentCollectorHint.SkipNumberLiteral | ComponentCollectorHint.SkipStringLiteral | ComponentCollectorHint.SkipUndefined | ComponentCollectorHint.StrictArray | ComponentCollectorHint.StrictConditional | ComponentCollectorHint.StrictLogical;
821
+ var DEFAULT_COMPONENT_DETECTION_HINT = 0n | ComponentDetectionHint.SkipBooleanLiteral | ComponentDetectionHint.SkipEmptyArray | ComponentDetectionHint.SkipArrayMapArgument | ComponentDetectionHint.SkipNumberLiteral | ComponentDetectionHint.SkipStringLiteral | ComponentDetectionHint.SkipUndefined | ComponentDetectionHint.StrictArray | ComponentDetectionHint.StrictConditional | ComponentDetectionHint.StrictLogical;
822
822
  function isClassComponent(node) {
823
823
  if ("superClass" in node && node.superClass != null) {
824
824
  const re = /^(?:Pure)?Component$/u;
@@ -907,16 +907,16 @@ function isValidComponentDefinition(context, node, hint) {
907
907
  if (isChildrenOfCreateElement(context, node) || isFunctionOfRenderMethod(node)) {
908
908
  return false;
909
909
  }
910
- if (hint & ComponentCollectorHint.SkipObjectMethod && isFunctionOfObjectMethod(node.parent)) {
910
+ if (hint & ComponentDetectionHint.SkipObjectMethod && isFunctionOfObjectMethod(node.parent)) {
911
911
  return false;
912
912
  }
913
- if (hint & ComponentCollectorHint.SkipClassMethod && isFunctionOfClassMethod(node.parent)) {
913
+ if (hint & ComponentDetectionHint.SkipClassMethod && isFunctionOfClassMethod(node.parent)) {
914
914
  return false;
915
915
  }
916
- if (hint & ComponentCollectorHint.SkipClassProperty && isFunctionOfClassProperty(node.parent)) {
916
+ if (hint & ComponentDetectionHint.SkipClassProperty && isFunctionOfClassProperty(node.parent)) {
917
917
  return false;
918
918
  }
919
- if (hint & ComponentCollectorHint.SkipArrayMapArgument && AST5.isArrayMapCallLoose(node.parent)) {
919
+ if (hint & ComponentDetectionHint.SkipArrayMapArgument && AST5.isArrayMapCallLoose(node.parent)) {
920
920
  return false;
921
921
  }
922
922
  const boundaryNode = AST5.findParentNode(
@@ -1001,7 +1001,7 @@ function useComponentCollector(context, options = {}) {
1001
1001
  const {
1002
1002
  collectDisplayName = false,
1003
1003
  collectHookCalls = false,
1004
- hint = DEFAULT_COMPONENT_HINT
1004
+ hint = DEFAULT_COMPONENT_DETECTION_HINT
1005
1005
  } = options;
1006
1006
  const jsxCtx = { getScope: (node) => context.sourceCode.getScope(node) };
1007
1007
  const components = /* @__PURE__ */ new Map();
@@ -1016,7 +1016,7 @@ function useComponentCollector(context, options = {}) {
1016
1016
  if (entry == null) return;
1017
1017
  if (!entry.isComponent) return functionEntries.pop();
1018
1018
  const shouldDrop = AST5.getNestedReturnStatements(entry.node.body).slice().reverse().some((r) => {
1019
- return context.sourceCode.getScope(r).block === entry.node && r.argument != null && !JSX3.isJSXValue(r.argument, jsxCtx, hint);
1019
+ return context.sourceCode.getScope(r).block === entry.node && r.argument != null && !JSX3.isJSXLike(r.argument, jsxCtx, hint);
1020
1020
  });
1021
1021
  if (shouldDrop) {
1022
1022
  components.delete(entry.key);
@@ -1040,7 +1040,7 @@ function useComponentCollector(context, options = {}) {
1040
1040
  const entry = getCurrentEntry();
1041
1041
  if (entry == null) return;
1042
1042
  const { body } = entry.node;
1043
- const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3.isJSXValue(body, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1043
+ const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3.isJSXLike(body, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1044
1044
  if (!isComponent) return;
1045
1045
  const initPath = AST5.getFunctionInitPath(entry.node);
1046
1046
  const id = getFunctionComponentId(context, entry.node);
@@ -1080,7 +1080,7 @@ function useComponentCollector(context, options = {}) {
1080
1080
  "ReturnStatement[type]"(node) {
1081
1081
  const entry = getCurrentEntry();
1082
1082
  if (entry == null) return;
1083
- const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3.isJSXValue(node.argument, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1083
+ const isComponent = hasNoneOrLooseComponentName(context, entry.node) && JSX3.isJSXLike(node.argument, jsxCtx, hint) && isValidComponentDefinition(context, entry.node, hint);
1084
1084
  if (!isComponent) return;
1085
1085
  entry.isComponent = true;
1086
1086
  const initPath = AST5.getFunctionInitPath(entry.node);
@@ -1150,12 +1150,12 @@ function isRenderFunctionLoose(context, node) {
1150
1150
  if (AST5.getFunctionIdentifier(node)?.name.startsWith("render")) {
1151
1151
  return parent.type === AST_NODE_TYPES.JSXExpressionContainer && parent.parent.type === AST_NODE_TYPES.JSXAttribute && parent.parent.name.type === AST_NODE_TYPES.JSXIdentifier && parent.parent.name.name.startsWith("render");
1152
1152
  }
1153
- return JSX3.isJSXValue(
1153
+ return JSX3.isJSXLike(
1154
1154
  body,
1155
1155
  {
1156
1156
  getScope: (node2) => context.sourceCode.getScope(node2)
1157
1157
  },
1158
- JSX3.JSXValueHint.SkipNullLiteral | JSX3.JSXValueHint.SkipUndefined | JSX3.JSXValueHint.StrictLogical | JSX3.JSXValueHint.StrictConditional
1158
+ JSX3.JSXDetectionHint.SkipNullLiteral | JSX3.JSXDetectionHint.SkipUndefined | JSX3.JSXDetectionHint.StrictLogical | JSX3.JSXDetectionHint.StrictConditional
1159
1159
  );
1160
1160
  }
1161
1161
  function isRenderPropLoose(context, node) {
@@ -1200,4 +1200,4 @@ function isFunctionOfUseEffectCleanup(node) {
1200
1200
  return enclosingFunction === functionOfReturnStatement && isFunctionOfUseEffectSetup(enclosingFunction);
1201
1201
  }
1202
1202
 
1203
- export { ComponentCollectorHint, ComponentFlag, ComponentPhaseRelevance, DEFAULT_COMPONENT_HINT, DISPLAY_NAME_ASSIGNMENT_SELECTOR, RE_COMPONENT_NAME, RE_COMPONENT_NAME_LOOSE, RE_HOOK_NAME, getComponentFlagFromInitPath, getComponentNameFromId, getFunctionComponentId, getInstanceId, hasNoneOrLooseComponentName, isAssignmentToThisState, isCallFromReact, isCallFromReactObject, isChildrenCount, isChildrenCountCall, isChildrenForEach, isChildrenForEachCall, isChildrenMap, isChildrenMapCall, isChildrenOfCreateElement, isChildrenOnly, isChildrenOnlyCall, isChildrenToArray, isChildrenToArrayCall, isClassComponent, isCloneElement, isCloneElementCall, isComponentDidCatch, isComponentDidMount, isComponentName, isComponentNameLoose, isComponentWillUnmount, isComponentWrapperCall, isComponentWrapperCallLoose, isCreateContext, isCreateContextCall, isCreateElement, isCreateElementCall, isCreateRef, isCreateRefCall, isDeclaredInRenderPropLoose, isDirectValueOfRenderPropertyLoose, isForwardRef, isForwardRefCall, isFromReact, isFromReactLoose, isFromReactObject, isFromReactStrict, isFunctionOfComponentDidMount, isFunctionOfComponentWillUnmount, isFunctionOfRenderMethod, isFunctionOfUseEffectCleanup, isFunctionOfUseEffectSetup, isGetDerivedStateFromError, isGetDerivedStateFromProps, isInitializedFromReact, isInsideRenderMethod, isInstanceIdEqual, isInversePhase, isMemo, isMemoCall, isPureComponent, isReactAPI, isReactAPICall, isReactHook, isReactHookCall, isReactHookCallWithName, isReactHookCallWithNameAlias, isReactHookCallWithNameLoose, isReactHookName, isReactHookNameLoose, isRenderFunctionLoose, isRenderMethodLike, isRenderPropLoose, isThisSetState, isUseActionStateCall, isUseCall, isUseCallbackCall, isUseContextCall, isUseDebugValueCall, isUseDeferredValueCall, isUseEffectCall, isUseEffectCallLoose, isUseFormStatusCall, isUseIdCall, isUseImperativeHandleCall, isUseInsertionEffectCall, isUseLayoutEffectCall, isUseMemoCall, isUseOptimisticCall, isUseReducerCall, isUseRefCall, isUseStateCall, isUseSyncExternalStoreCall, isUseTransitionCall, useComponentCollector, useComponentCollectorLegacy, useHookCollector };
1203
+ export { ComponentDetectionHint, ComponentFlag, ComponentPhaseRelevance, DEFAULT_COMPONENT_DETECTION_HINT, DISPLAY_NAME_ASSIGNMENT_SELECTOR, RE_COMPONENT_NAME, RE_COMPONENT_NAME_LOOSE, RE_HOOK_NAME, getComponentFlagFromInitPath, getComponentNameFromId, getFunctionComponentId, getInstanceId, hasNoneOrLooseComponentName, isAssignmentToThisState, isCallFromReact, isCallFromReactObject, isChildrenCount, isChildrenCountCall, isChildrenForEach, isChildrenForEachCall, isChildrenMap, isChildrenMapCall, isChildrenOfCreateElement, isChildrenOnly, isChildrenOnlyCall, isChildrenToArray, isChildrenToArrayCall, isClassComponent, isCloneElement, isCloneElementCall, isComponentDidCatch, isComponentDidMount, isComponentName, isComponentNameLoose, isComponentWillUnmount, isComponentWrapperCall, isComponentWrapperCallLoose, isCreateContext, isCreateContextCall, isCreateElement, isCreateElementCall, isCreateRef, isCreateRefCall, isDeclaredInRenderPropLoose, isDirectValueOfRenderPropertyLoose, isForwardRef, isForwardRefCall, isFromReact, isFromReactLoose, isFromReactObject, isFromReactStrict, isFunctionOfComponentDidMount, isFunctionOfComponentWillUnmount, isFunctionOfRenderMethod, isFunctionOfUseEffectCleanup, isFunctionOfUseEffectSetup, isGetDerivedStateFromError, isGetDerivedStateFromProps, isInitializedFromReact, isInsideRenderMethod, isInstanceIdEqual, isInversePhase, isMemo, isMemoCall, isPureComponent, isReactAPI, isReactAPICall, isReactHook, isReactHookCall, isReactHookCallWithName, isReactHookCallWithNameAlias, isReactHookCallWithNameLoose, isReactHookName, isReactHookNameLoose, isRenderFunctionLoose, isRenderMethodLike, isRenderPropLoose, isThisSetState, isUseActionStateCall, isUseCall, isUseCallbackCall, isUseContextCall, isUseDebugValueCall, isUseDeferredValueCall, isUseEffectCall, isUseEffectCallLoose, isUseFormStatusCall, isUseIdCall, isUseImperativeHandleCall, isUseInsertionEffectCall, isUseLayoutEffectCall, isUseMemoCall, isUseOptimisticCall, isUseReducerCall, isUseRefCall, isUseStateCall, isUseSyncExternalStoreCall, isUseTransitionCall, isValidComponentDefinition, useComponentCollector, useComponentCollectorLegacy, useHookCollector };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eslint-react/core",
3
- "version": "1.40.3-next.0",
3
+ "version": "1.40.3-next.1",
4
4
  "description": "ESLint React's ESLint utility module for static analysis of React core APIs and patterns.",
5
5
  "homepage": "https://github.com/Rel1cx/eslint-react",
6
6
  "bugs": {
@@ -41,12 +41,12 @@
41
41
  "@typescript-eslint/utils": "^8.29.0",
42
42
  "birecord": "^0.1.1",
43
43
  "ts-pattern": "^5.7.0",
44
- "@eslint-react/ast": "1.40.3-next.0",
45
- "@eslint-react/jsx": "1.40.3-next.0",
46
- "@eslint-react/eff": "1.40.3-next.0",
47
- "@eslint-react/shared": "1.40.3-next.0",
48
- "@eslint-react/kit": "1.40.3-next.0",
49
- "@eslint-react/var": "1.40.3-next.0"
44
+ "@eslint-react/ast": "1.40.3-next.1",
45
+ "@eslint-react/eff": "1.40.3-next.1",
46
+ "@eslint-react/jsx": "1.40.3-next.1",
47
+ "@eslint-react/kit": "1.40.3-next.1",
48
+ "@eslint-react/shared": "1.40.3-next.1",
49
+ "@eslint-react/var": "1.40.3-next.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "tsup": "^8.4.0",