New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@eslint-react/core

Package Overview
Dependencies
Maintainers
0
Versions
1018
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@eslint-react/core - npm Package Compare versions

Comparing version 1.28.1-beta.0 to 1.28.1-beta.1

176

dist/index.js
'use strict';
var AST8 = require('@eslint-react/ast');
var AST7 = require('@eslint-react/ast');
var eff = require('@eslint-react/eff');

@@ -32,3 +32,3 @@ var JSX3 = require('@eslint-react/jsx');

var AST8__namespace = /*#__PURE__*/_interopNamespace(AST8);
var AST7__namespace = /*#__PURE__*/_interopNamespace(AST7);
var JSX3__namespace = /*#__PURE__*/_interopNamespace(JSX3);

@@ -512,2 +512,13 @@ var VAR__namespace = /*#__PURE__*/_interopNamespace(VAR);

importSource: "react"};
var DISPLAY_NAME_ASSIGNMENT_SELECTOR = [
"AssignmentExpression",
"[type]",
"[operator='=']",
"[left.type='MemberExpression']",
"[left.property.name='displayName']"
].join("");
function isDisplayNameAssignment(node) {
if (node == null) return false;
return node.type === types.AST_NODE_TYPES.AssignmentExpression && node.operator === "=" && node.left.type === types.AST_NODE_TYPES.MemberExpression && node.left.property.type === types.AST_NODE_TYPES.Identifier && node.left.property.name === "displayName";
}
function getRequireExpressionArguments(node) {

@@ -531,3 +542,3 @@ return tsPattern.match(node).with({ type: types.AST_NODE_TYPES.CallExpression, arguments: tsPattern.P.select(), callee: { type: types.AST_NODE_TYPES.Identifier, name: "require" } }, eff.identity).with({ type: types.AST_NODE_TYPES.MemberExpression, object: tsPattern.P.select() }, getRequireExpressionArguments).otherwise(() => eff._);

const arg0 = args?.[0];
if (arg0 == null || !AST8__namespace.isKindOfLiteral(arg0, "string")) {
if (arg0 == null || !AST7__namespace.isKindOfLiteral(arg0, "string")) {
return false;

@@ -563,78 +574,65 @@ }

function isFromReact(name) {
return (context, node) => {
return eff.dual(2, (context, node) => {
if (node == null) return false;
const { importSource = defaultImportSource, skipImportCheck = true } = shared.unsafeDecodeSettings(context.settings);
if (skipImportCheck) return isFromReactLoose(node, name);
return isFromReactStrict(node, name, importSource, context.sourceCode.getScope(node));
};
});
}
function isFromReactMember(memberName, name) {
return (context, node) => {
function isFromReactObject(objectName, propertyName) {
return eff.dual(2, (context, node) => {
if (node?.type !== types.AST_NODE_TYPES.MemberExpression) return false;
const { importSource = defaultImportSource, skipImportCheck = true } = shared.unsafeDecodeSettings(context.settings);
const { object: object2, property } = node;
if (skipImportCheck) return isFromReactLoose(object2, memberName) && isFromReactLoose(property, name);
if (skipImportCheck) return isFromReactLoose(object2, objectName) && isFromReactLoose(property, propertyName);
return isFromReactStrict(
object2,
memberName,
objectName,
importSource,
context.sourceCode.getScope(object2)
) && isFromReactStrict(property, name, importSource, context.sourceCode.getScope(property));
};
) && isFromReactLoose(property, propertyName);
});
}
// src/utils/is-call-from-react.ts
function isCallFromReact(name) {
return eff.dual(2, (context, node) => {
if (node.type !== types.AST_NODE_TYPES.CallExpression) return false;
if (!AST8__namespace.isOneOf([types.AST_NODE_TYPES.Identifier, types.AST_NODE_TYPES.MemberExpression])(node.callee)) return false;
return isFromReact(name)(context, node.callee);
});
}
function isCallFromReactMember(pragmaMemberName, name) {
function isCallFromReactObject(objectName, propertyName) {
return eff.dual(2, (context, node) => {
if (node.type !== types.AST_NODE_TYPES.CallExpression) return false;
if (!AST8__namespace.is(types.AST_NODE_TYPES.MemberExpression)(node.callee)) return false;
return isFromReactMember(pragmaMemberName, name)(context, node.callee);
return isFromReactObject(objectName, propertyName)(context, node.callee);
});
}
var DISPLAY_NAME_ASSIGNMENT_SELECTOR = [
"AssignmentExpression",
"[type]",
"[operator='=']",
"[left.type='MemberExpression']",
"[left.property.name='displayName']"
].join("");
function isDisplayNameAssignment(node) {
if (node == null) return false;
return node.type === types.AST_NODE_TYPES.AssignmentExpression && node.operator === "=" && node.left.type === types.AST_NODE_TYPES.MemberExpression && node.left.property.type === types.AST_NODE_TYPES.Identifier && node.left.property.name === "displayName";
}
// src/utils/is-react-api.ts
function isReactAPIWithName(name, member) {
return member != null ? isFromReactMember(name, member) : isFromReact(name);
function isReactAPI(arg0, arg1) {
return arg1 == null ? isFromReact(arg0) : isFromReactObject(arg0, arg1);
}
function isReactAPICallWithName(name, member) {
return member != null ? isCallFromReactMember(name, member) : isCallFromReact(name);
function isReactAPICall(arg0, arg1) {
return arg1 == null ? isCallFromReact(arg0) : isCallFromReactObject(arg0, arg1);
}
var isChildrenCount = isReactAPIWithName("Children", "count");
var isChildrenForEach = isReactAPIWithName("Children", "forEach");
var isChildrenMap = isReactAPIWithName("Children", "map");
var isChildrenOnly = isReactAPIWithName("Children", "only");
var isChildrenToArray = isReactAPIWithName("Children", "toArray");
var isCloneElement = isReactAPIWithName("cloneElement");
var isCreateContext = isReactAPIWithName("createContext");
var isCreateElement = isReactAPIWithName("createElement");
var isCreateRef = isReactAPIWithName("createRef");
var isForwardRef = isReactAPIWithName("forwardRef");
var isMemo = isReactAPIWithName("memo");
var isChildrenCountCall = isReactAPICallWithName("Children", "count");
var isChildrenForEachCall = isReactAPICallWithName("Children", "forEach");
var isChildrenMapCall = isReactAPICallWithName("Children", "map");
var isChildrenOnlyCall = isReactAPICallWithName("Children", "only");
var isChildrenToArrayCall = isReactAPICallWithName("Children", "toArray");
var isCloneElementCall = isReactAPICallWithName("cloneElement");
var isCreateContextCall = isReactAPICallWithName("createContext");
var isCreateElementCall = isReactAPICallWithName("createElement");
var isCreateRefCall = isReactAPICallWithName("createRef");
var isForwardRefCall = isReactAPICallWithName("forwardRef");
var isMemoCall = isReactAPICallWithName("memo");
var isChildrenCount = isReactAPI("Children", "count");
var isChildrenForEach = isReactAPI("Children", "forEach");
var isChildrenMap = isReactAPI("Children", "map");
var isChildrenOnly = isReactAPI("Children", "only");
var isChildrenToArray = isReactAPI("Children", "toArray");
var isCloneElement = isReactAPI("cloneElement");
var isCreateContext = isReactAPI("createContext");
var isCreateElement = isReactAPI("createElement");
var isCreateRef = isReactAPI("createRef");
var isForwardRef = isReactAPI("forwardRef");
var isMemo = isReactAPI("memo");
var isChildrenCountCall = isReactAPICall("Children", "count");
var isChildrenForEachCall = isReactAPICall("Children", "forEach");
var isChildrenMapCall = isReactAPICall("Children", "map");
var isChildrenOnlyCall = isReactAPICall("Children", "only");
var isChildrenToArrayCall = isReactAPICall("Children", "toArray");
var isCloneElementCall = isReactAPICall("cloneElement");
var isCreateContextCall = isReactAPICall("createContext");
var isCreateElementCall = isReactAPICall("createElement");
var isCreateRefCall = isReactAPICall("createRef");
var isForwardRefCall = isReactAPICall("forwardRef");
var isMemoCall = isReactAPICall("memo");

@@ -650,3 +648,3 @@ // src/hook/hook-name.ts

if (node == null) return eff._;
const id = AST8__namespace.getFunctionIdentifier(node);
const id = AST7__namespace.getFunctionIdentifier(node);
return id?.name != null && isReactHookName(id.name);

@@ -747,3 +745,3 @@ }

function isInsideReactHook(node) {
return isReactHook(AST8__namespace.findParentNode(node, AST8__namespace.isFunction));
return isReactHook(AST7__namespace.findParentNode(node, AST7__namespace.isFunction));
}

@@ -754,3 +752,3 @@ function useHookCollector() {

const onFunctionEnter = (node) => {
const id = AST8__namespace.getFunctionIdentifier(node);
const id = AST7__namespace.getFunctionIdentifier(node);
const key = shared.getId();

@@ -851,3 +849,3 @@ const name = id?.name;

function getFunctionComponentIdentifier(context, node) {
const functionId = AST8__namespace.getFunctionIdentifier(node);
const functionId = AST7__namespace.getFunctionIdentifier(node);
if (functionId != null) {

@@ -880,5 +878,5 @@ return functionId;

function isInsideCreateElementProps(context, node) {
const call = AST8__namespace.findParentNode(node, isCreateElementCall(context));
const call = AST7__namespace.findParentNode(node, isCreateElementCall(context));
if (call == null) return false;
const prop = AST8__namespace.findParentNode(node, AST8__namespace.is(types.AST_NODE_TYPES.ObjectExpression));
const prop = AST7__namespace.findParentNode(node, AST7__namespace.is(types.AST_NODE_TYPES.ObjectExpression));
if (prop == null) return false;

@@ -920,24 +918,24 @@ return prop === call.arguments[1];

function isComponentDidMount(node) {
return AST8__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidMount";
return AST7__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidMount";
}
function isComponentWillUnmount(node) {
return AST8__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillUnmount";
return AST7__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentWillUnmount";
}
function isComponentDidCatch(node) {
return AST8__namespace.isMethodOrProperty(node) && !node.static && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidCatch";
return AST7__namespace.isMethodOrProperty(node) && !node.static && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "componentDidCatch";
}
function isGetDerivedStateFromError(node) {
return AST8__namespace.isMethodOrProperty(node) && node.static && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "getDerivedStateFromError";
return AST7__namespace.isMethodOrProperty(node) && node.static && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "getDerivedStateFromError";
}
function isGetDerivedStateFromProps(node) {
return AST8__namespace.isMethodOrProperty(node) && node.static && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "getDerivedStateFromProps";
return AST7__namespace.isMethodOrProperty(node) && node.static && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "getDerivedStateFromProps";
}
function isFunctionOfComponentDidMount(node) {
return AST8__namespace.isFunction(node) && isComponentDidMount(node.parent) && node.parent.value === node;
return AST7__namespace.isFunction(node) && isComponentDidMount(node.parent) && node.parent.value === node;
}
function isFunctionOfComponentWillUnmount(node) {
return AST8__namespace.isFunction(node) && isComponentWillUnmount(node.parent) && node.parent.value === node;
return AST7__namespace.isFunction(node) && isComponentWillUnmount(node.parent) && node.parent.value === node;
}
function isRenderMethodLike(node) {
return AST8__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "render" && node.parent.parent.type === types.AST_NODE_TYPES.ClassDeclaration;
return AST7__namespace.isMethodOrProperty(node) && node.key.type === types.AST_NODE_TYPES.Identifier && node.key.name === "render" && node.parent.parent.type === types.AST_NODE_TYPES.ClassDeclaration;
}

@@ -951,3 +949,3 @@ function isFunctionOfRenderMethod(node) {

function isInsideRenderMethod(node) {
return AST8__namespace.findParentNode(node, (node2) => isRenderMethodLike(node2) && isClassComponent(node2.parent.parent)) != null;
return AST7__namespace.findParentNode(node, (node2) => isRenderMethodLike(node2) && isClassComponent(node2.parent.parent)) != null;
}

@@ -960,3 +958,3 @@

}
if (hint & ERComponentHint.SkipMapCallback && AST8__namespace.isMapCallLoose(node.parent)) {
if (hint & ERComponentHint.SkipMapCallback && AST7__namespace.isMapCallLoose(node.parent)) {
return false;

@@ -973,5 +971,5 @@ }

}
const boundaryNode = AST8__namespace.findParentNode(
const boundaryNode = AST7__namespace.findParentNode(
node,
AST8__namespace.isOneOf([
AST7__namespace.isOneOf([
types.AST_NODE_TYPES.JSXExpressionContainer,

@@ -1011,3 +1009,3 @@ types.AST_NODE_TYPES.ArrowFunctionExpression,

if (!entry.isComponent) return functionEntries.pop();
const shouldDrop = AST8__namespace.getNestedReturnStatements(entry.node.body).slice().reverse().some((r) => {
const shouldDrop = AST7__namespace.getNestedReturnStatements(entry.node.body).slice().reverse().some((r) => {
return context.sourceCode.getScope(r).block === entry.node && r.argument != null && !JSX3__namespace.isJSXValue(r.argument, jsxCtx, hint);

@@ -1039,3 +1037,3 @@ });

if (!isComponent) return;
const initPath = AST8__namespace.getFunctionInitPath(entry.node);
const initPath = AST7__namespace.getFunctionInitPath(entry.node);
const id = getFunctionComponentIdentifier(context, entry.node);

@@ -1081,3 +1079,3 @@ const name = getComponentNameFromIdentifier(id);

entry.isComponent = true;
const initPath = AST8__namespace.getFunctionInitPath(entry.node);
const initPath = AST7__namespace.getFunctionInitPath(entry.node);
const id = getFunctionComponentIdentifier(context, entry.node);

@@ -1103,6 +1101,6 @@ const name = getComponentNameFromIdentifier(id);

let flag = ERComponentFlag.None;
if (initPath != null && AST8__namespace.hasCallInFunctionInitPath("memo", initPath)) {
if (initPath != null && AST7__namespace.hasCallInFunctionInitPath("memo", initPath)) {
flag |= ERComponentFlag.Memo;
}
if (initPath != null && AST8__namespace.hasCallInFunctionInitPath("forwardRef", initPath)) {
if (initPath != null && AST7__namespace.hasCallInFunctionInitPath("forwardRef", initPath)) {
flag |= ERComponentFlag.ForwardRef;

@@ -1124,3 +1122,3 @@ }

}
const id = AST8__namespace.getClassIdentifier(node);
const id = AST7__namespace.getClassIdentifier(node);
const key = shared.getId();

@@ -1158,3 +1156,3 @@ const flag = isPureComponent(node) ? ERComponentFlag.PureComponent : ERComponentFlag.None;

const { body, parent } = node;
if (AST8__namespace.getFunctionIdentifier(node)?.name.startsWith("render")) {
if (AST7__namespace.getFunctionIdentifier(node)?.name.startsWith("render")) {
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");

@@ -1174,3 +1172,3 @@ }

}
return node.name.name.startsWith("render") && node.value?.type === types.AST_NODE_TYPES.JSXExpressionContainer && AST8__namespace.isFunction(node.value.expression) && isRenderFunctionLoose(context, node.value.expression);
return node.name.name.startsWith("render") && node.value?.type === types.AST_NODE_TYPES.JSXExpressionContainer && AST7__namespace.isFunction(node.value.expression) && isRenderFunctionLoose(context, node.value.expression);
}

@@ -1187,3 +1185,3 @@ function isDirectValueOfRenderPropertyLoose(node) {

}
const parent = AST8__namespace.findParentNode(node, AST8__namespace.is(types.AST_NODE_TYPES.JSXExpressionContainer))?.parent;
const parent = AST7__namespace.findParentNode(node, AST7__namespace.is(types.AST_NODE_TYPES.JSXExpressionContainer))?.parent;
if (parent?.type !== types.AST_NODE_TYPES.JSXAttribute) {

@@ -1196,3 +1194,3 @@ return false;

const { callee } = node;
return callee.type === types.AST_NODE_TYPES.MemberExpression && AST8__namespace.isThisExpression(callee.object) && callee.property.type === types.AST_NODE_TYPES.Identifier && callee.property.name === "setState";
return callee.type === types.AST_NODE_TYPES.MemberExpression && AST7__namespace.isThisExpression(callee.object) && callee.property.type === types.AST_NODE_TYPES.Identifier && callee.property.name === "setState";
}

@@ -1204,5 +1202,5 @@ function isFunctionOfUseEffectSetup(node) {

function isFunctionOfUseEffectCleanup(node) {
const nearReturn = AST8__namespace.findParentNode(node, AST8__namespace.is(types.AST_NODE_TYPES.ReturnStatement));
const nearFunction = AST8__namespace.findParentNode(node, AST8__namespace.isFunction);
const nearFunctionOfReturn = AST8__namespace.findParentNode(nearReturn, AST8__namespace.isFunction);
const nearReturn = AST7__namespace.findParentNode(node, AST7__namespace.is(types.AST_NODE_TYPES.ReturnStatement));
const nearFunction = AST7__namespace.findParentNode(node, AST7__namespace.isFunction);
const nearFunctionOfReturn = AST7__namespace.findParentNode(nearReturn, AST7__namespace.isFunction);
return nearFunction === nearFunctionOfReturn && isFunctionOfUseEffectSetup(nearFunction);

@@ -1223,3 +1221,3 @@ }

exports.isCallFromReact = isCallFromReact;
exports.isCallFromReactMember = isCallFromReactMember;
exports.isCallFromReactObject = isCallFromReactObject;
exports.isChildrenCount = isChildrenCount;

@@ -1256,3 +1254,3 @@ exports.isChildrenCountCall = isChildrenCountCall;

exports.isFromReactLoose = isFromReactLoose;
exports.isFromReactMember = isFromReactMember;
exports.isFromReactObject = isFromReactObject;
exports.isFromReactStrict = isFromReactStrict;

@@ -1274,4 +1272,4 @@ exports.isFunctionOfComponentDidMount = isFunctionOfComponentDidMount;

exports.isPureComponent = isPureComponent;
exports.isReactAPICallWithName = isReactAPICallWithName;
exports.isReactAPIWithName = isReactAPIWithName;
exports.isReactAPI = isReactAPI;
exports.isReactAPICall = isReactAPICall;
exports.isReactHook = isReactHook;

@@ -1278,0 +1276,0 @@ exports.isReactHookCall = isReactHookCall;

{
"name": "@eslint-react/core",
"version": "1.28.1-beta.0",
"version": "1.28.1-beta.1",
"description": "ESLint React's ESLint utility module for static analysis of React core APIs and Patterns.",

@@ -44,7 +44,7 @@ "homepage": "https://github.com/Rel1cx/eslint-react",

"ts-pattern": "^5.6.2",
"@eslint-react/ast": "1.28.1-beta.0",
"@eslint-react/jsx": "1.28.1-beta.0",
"@eslint-react/shared": "1.28.1-beta.0",
"@eslint-react/eff": "1.28.1-beta.0",
"@eslint-react/var": "1.28.1-beta.0"
"@eslint-react/ast": "1.28.1-beta.1",
"@eslint-react/eff": "1.28.1-beta.1",
"@eslint-react/shared": "1.28.1-beta.1",
"@eslint-react/jsx": "1.28.1-beta.1",
"@eslint-react/var": "1.28.1-beta.1"
},

@@ -51,0 +51,0 @@ "devDependencies": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc