eslint-plugin-react-x 3.0.0-next.40 → 3.0.0-next.42
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 +53 -75
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -68,7 +68,7 @@ const rules$7 = {
|
|
|
68
68
|
//#endregion
|
|
69
69
|
//#region package.json
|
|
70
70
|
var name$6 = "eslint-plugin-react-x";
|
|
71
|
-
var version = "3.0.0-next.
|
|
71
|
+
var version = "3.0.0-next.42";
|
|
72
72
|
|
|
73
73
|
//#endregion
|
|
74
74
|
//#region src/utils/create-rule.ts
|
|
@@ -2246,10 +2246,14 @@ function create$39(context) {
|
|
|
2246
2246
|
const RULE_NAME$38 = "no-context-provider";
|
|
2247
2247
|
var no_context_provider_default = createRule({
|
|
2248
2248
|
meta: {
|
|
2249
|
-
type: "
|
|
2249
|
+
type: "suggestion",
|
|
2250
2250
|
docs: { description: "Replaces usage of '<Context.Provider>' with '<Context>'." },
|
|
2251
2251
|
fixable: "code",
|
|
2252
|
-
|
|
2252
|
+
hasSuggestions: true,
|
|
2253
|
+
messages: {
|
|
2254
|
+
default: "In React 19, you can render '<Context>' as a provider instead of '<Context.Provider>'.",
|
|
2255
|
+
replace: "Replace '<Context.Provider>' with '<Context>'."
|
|
2256
|
+
},
|
|
2253
2257
|
schema: []
|
|
2254
2258
|
},
|
|
2255
2259
|
name: RULE_NAME$38,
|
|
@@ -2270,13 +2274,16 @@ function create$38(context) {
|
|
|
2270
2274
|
context.report({
|
|
2271
2275
|
messageId: "default",
|
|
2272
2276
|
node,
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2277
|
+
suggest: [{
|
|
2278
|
+
messageId: "replace",
|
|
2279
|
+
fix(fixer) {
|
|
2280
|
+
if (!core.isComponentNameLoose(contextSelfName)) return null;
|
|
2281
|
+
const openingElement = node.openingElement;
|
|
2282
|
+
const closingElement = node.closingElement;
|
|
2283
|
+
if (closingElement == null) return fixer.replaceText(openingElement.name, contextFullName);
|
|
2284
|
+
return [fixer.replaceText(openingElement.name, contextFullName), fixer.replaceText(closingElement.name, contextFullName)];
|
|
2285
|
+
}
|
|
2286
|
+
}]
|
|
2280
2287
|
});
|
|
2281
2288
|
} });
|
|
2282
2289
|
}
|
|
@@ -2405,10 +2412,14 @@ function create$35(context) {
|
|
|
2405
2412
|
const RULE_NAME$34 = "no-forward-ref";
|
|
2406
2413
|
var no_forward_ref_default = createRule({
|
|
2407
2414
|
meta: {
|
|
2408
|
-
type: "
|
|
2415
|
+
type: "suggestion",
|
|
2409
2416
|
docs: { description: "Replaces usage of 'forwardRef' with passing 'ref' as a prop." },
|
|
2410
2417
|
fixable: "code",
|
|
2411
|
-
|
|
2418
|
+
hasSuggestions: true,
|
|
2419
|
+
messages: {
|
|
2420
|
+
default: "In React 19, 'forwardRef' is no longer necessary. Pass 'ref' as a prop instead.",
|
|
2421
|
+
replace: "Replace 'forwardRef' with passing 'ref' as a prop."
|
|
2422
|
+
},
|
|
2412
2423
|
schema: []
|
|
2413
2424
|
},
|
|
2414
2425
|
name: RULE_NAME$34,
|
|
@@ -2422,11 +2433,14 @@ function create$34(context) {
|
|
|
2422
2433
|
return defineRuleListener({ CallExpression(node) {
|
|
2423
2434
|
if (!core.isForwardRefCall(context, node)) return;
|
|
2424
2435
|
const id = ast.getFunctionId(node);
|
|
2425
|
-
const
|
|
2436
|
+
const suggest = canFix(context, node) ? [{
|
|
2437
|
+
messageId: "replace",
|
|
2438
|
+
fix: getFix(context, node)
|
|
2439
|
+
}] : [];
|
|
2426
2440
|
context.report({
|
|
2427
2441
|
messageId: "default",
|
|
2428
2442
|
node: id ?? node,
|
|
2429
|
-
|
|
2443
|
+
suggest
|
|
2430
2444
|
});
|
|
2431
2445
|
} });
|
|
2432
2446
|
}
|
|
@@ -3897,10 +3911,14 @@ function create$11(context) {
|
|
|
3897
3911
|
const RULE_NAME$10 = "no-use-context";
|
|
3898
3912
|
var no_use_context_default = createRule({
|
|
3899
3913
|
meta: {
|
|
3900
|
-
type: "
|
|
3914
|
+
type: "suggestion",
|
|
3901
3915
|
docs: { description: "Replaces usage of 'useContext' with 'use'." },
|
|
3902
3916
|
fixable: "code",
|
|
3903
|
-
|
|
3917
|
+
hasSuggestions: true,
|
|
3918
|
+
messages: {
|
|
3919
|
+
default: "In React 19, 'use' is preferred over 'useContext' because it is more flexible.",
|
|
3920
|
+
replace: "Replace 'useContext' with 'use'."
|
|
3921
|
+
},
|
|
3904
3922
|
schema: []
|
|
3905
3923
|
},
|
|
3906
3924
|
name: RULE_NAME$10,
|
|
@@ -3909,65 +3927,25 @@ var no_use_context_default = createRule({
|
|
|
3909
3927
|
});
|
|
3910
3928
|
function create$10(context) {
|
|
3911
3929
|
if (!context.sourceCode.text.includes("useContext")) return {};
|
|
3912
|
-
const
|
|
3913
|
-
if (compare(
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3924
|
-
|
|
3925
|
-
} }));
|
|
3926
|
-
for (const specifier of node.specifiers) {
|
|
3927
|
-
if (specifier.type !== AST_NODE_TYPES.ImportSpecifier) continue;
|
|
3928
|
-
if (specifier.imported.type !== AST_NODE_TYPES.Identifier) continue;
|
|
3929
|
-
if (specifier.imported.name === "useContext") context.report({
|
|
3930
|
-
messageId: "default",
|
|
3931
|
-
node: specifier,
|
|
3932
|
-
fix(fixer) {
|
|
3933
|
-
if (isUseImported) {
|
|
3934
|
-
const tokenBefore = context.sourceCode.getTokenBefore(specifier);
|
|
3935
|
-
return [
|
|
3936
|
-
fixer.remove(specifier),
|
|
3937
|
-
...tokenBefore?.value === "," ? [fixer.replaceTextRange([tokenBefore.range[1], specifier.range[0]], "")] : [],
|
|
3938
|
-
...getCorrelativeTokens(context, specifier).map((token) => fixer.remove(token))
|
|
3939
|
-
];
|
|
3940
|
-
}
|
|
3941
|
-
return fixer.replaceText(specifier.imported, "use");
|
|
3942
|
-
}
|
|
3943
|
-
});
|
|
3944
|
-
}
|
|
3945
|
-
},
|
|
3946
|
-
"Program:exit"() {
|
|
3947
|
-
for (const node of hookCalls) {
|
|
3948
|
-
if (!core.isUseContextCall(node)) continue;
|
|
3949
|
-
context.report({
|
|
3950
|
-
messageId: "default",
|
|
3951
|
-
node: node.callee,
|
|
3952
|
-
fix(fixer) {
|
|
3953
|
-
switch (node.callee.type) {
|
|
3954
|
-
case AST_NODE_TYPES.Identifier: return fixer.replaceText(node.callee, "use");
|
|
3955
|
-
case AST_NODE_TYPES.MemberExpression: return fixer.replaceText(node.callee.property, "use");
|
|
3956
|
-
}
|
|
3957
|
-
return null;
|
|
3930
|
+
const { version } = getSettingsFromContext(context);
|
|
3931
|
+
if (compare(version, "19.0.0", "<")) return {};
|
|
3932
|
+
return defineRuleListener({ CallExpression(node) {
|
|
3933
|
+
if (!core.isUseContextCall(node)) return;
|
|
3934
|
+
context.report({
|
|
3935
|
+
messageId: "default",
|
|
3936
|
+
node: node.callee,
|
|
3937
|
+
suggest: [{
|
|
3938
|
+
messageId: "replace",
|
|
3939
|
+
fix(fixer) {
|
|
3940
|
+
switch (node.callee.type) {
|
|
3941
|
+
case AST_NODE_TYPES.Identifier: return fixer.replaceText(node.callee, "use");
|
|
3942
|
+
case AST_NODE_TYPES.MemberExpression: return fixer.replaceText(node.callee.property, "use");
|
|
3958
3943
|
}
|
|
3959
|
-
|
|
3960
|
-
|
|
3961
|
-
|
|
3962
|
-
|
|
3963
|
-
}
|
|
3964
|
-
function getCorrelativeTokens(context, node) {
|
|
3965
|
-
const tokenBefore = context.sourceCode.getTokenBefore(node);
|
|
3966
|
-
const tokenAfter = context.sourceCode.getTokenAfter(node);
|
|
3967
|
-
const tokens = [];
|
|
3968
|
-
if (tokenAfter?.value !== "," && tokenBefore?.value === ",") tokens.push(tokenBefore);
|
|
3969
|
-
if (tokenAfter?.value === ",") tokens.push(tokenAfter);
|
|
3970
|
-
return tokens;
|
|
3944
|
+
return null;
|
|
3945
|
+
}
|
|
3946
|
+
}]
|
|
3947
|
+
});
|
|
3948
|
+
} });
|
|
3971
3949
|
}
|
|
3972
3950
|
|
|
3973
3951
|
//#endregion
|
|
@@ -4115,7 +4093,7 @@ function trimLikeReact(text) {
|
|
|
4115
4093
|
const RULE_NAME$8 = "prefer-destructuring-assignment";
|
|
4116
4094
|
var prefer_destructuring_assignment_default = createRule({
|
|
4117
4095
|
meta: {
|
|
4118
|
-
type: "
|
|
4096
|
+
type: "suggestion",
|
|
4119
4097
|
docs: { description: "Enforces destructuring assignment for component props and context." },
|
|
4120
4098
|
messages: { default: "Use destructuring assignment for component props." },
|
|
4121
4099
|
schema: []
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-react-x",
|
|
3
|
-
"version": "3.0.0-next.
|
|
3
|
+
"version": "3.0.0-next.42",
|
|
4
4
|
"description": "A set of composable ESLint rules for libraries and frameworks that use React as a UI runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -45,11 +45,11 @@
|
|
|
45
45
|
"string-ts": "^2.3.1",
|
|
46
46
|
"ts-api-utils": "^2.4.0",
|
|
47
47
|
"ts-pattern": "^5.9.0",
|
|
48
|
-
"@eslint-react/ast": "3.0.0-next.
|
|
49
|
-
"@eslint-react/core": "3.0.0-next.
|
|
50
|
-
"@eslint-react/eff": "3.0.0-next.
|
|
51
|
-
"@eslint-react/
|
|
52
|
-
"@eslint-react/
|
|
48
|
+
"@eslint-react/ast": "3.0.0-next.42",
|
|
49
|
+
"@eslint-react/core": "3.0.0-next.42",
|
|
50
|
+
"@eslint-react/eff": "3.0.0-next.42",
|
|
51
|
+
"@eslint-react/shared": "3.0.0-next.42",
|
|
52
|
+
"@eslint-react/var": "3.0.0-next.42"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/react": "^19.2.14",
|