eslint-plugin-react-x 1.18.1-next.2 → 1.19.0-beta.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.js +75 -2
- package/dist/index.mjs +75 -2
- package/package.json +8 -8
package/dist/index.js
CHANGED
|
@@ -41,7 +41,7 @@ var ts__default = /*#__PURE__*/_interopDefault(ts);
|
|
|
41
41
|
|
|
42
42
|
// package.json
|
|
43
43
|
var name = "eslint-plugin-react-x";
|
|
44
|
-
var version = "1.
|
|
44
|
+
var version = "1.19.0-beta.1";
|
|
45
45
|
var createRule = shared.createRuleForPlugin("x");
|
|
46
46
|
|
|
47
47
|
// src/rules/avoid-shorthand-boolean.ts
|
|
@@ -1166,6 +1166,7 @@ var no_forward_ref_default = createRule({
|
|
|
1166
1166
|
docs: {
|
|
1167
1167
|
description: "disallow the use of 'forwardRef'"
|
|
1168
1168
|
},
|
|
1169
|
+
fixable: "code",
|
|
1169
1170
|
messages: {
|
|
1170
1171
|
noForwardRef: "In React 19, 'forwardRef' is no longer necessary. Pass 'ref' as a prop instead."
|
|
1171
1172
|
},
|
|
@@ -1181,13 +1182,85 @@ var no_forward_ref_default = createRule({
|
|
|
1181
1182
|
if (!core.isForwardRefCall(node, context)) return;
|
|
1182
1183
|
context.report({
|
|
1183
1184
|
messageId: "noForwardRef",
|
|
1184
|
-
node
|
|
1185
|
+
node,
|
|
1186
|
+
fix: getFix(node, context)
|
|
1185
1187
|
});
|
|
1186
1188
|
}
|
|
1187
1189
|
};
|
|
1188
1190
|
},
|
|
1189
1191
|
defaultOptions: []
|
|
1190
1192
|
});
|
|
1193
|
+
function getFix(node, context) {
|
|
1194
|
+
return (fixer) => {
|
|
1195
|
+
const [componentNode] = node.arguments;
|
|
1196
|
+
if (!componentNode || !AST11__namespace.isFunction(componentNode)) return [];
|
|
1197
|
+
return [
|
|
1198
|
+
fixer.removeRange([node.range[0], componentNode.range[0]]),
|
|
1199
|
+
fixer.removeRange([componentNode.range[1], node.range[1]]),
|
|
1200
|
+
...getComponentPropsFixes(
|
|
1201
|
+
componentNode,
|
|
1202
|
+
node.typeArguments?.params ?? [],
|
|
1203
|
+
fixer,
|
|
1204
|
+
context
|
|
1205
|
+
)
|
|
1206
|
+
];
|
|
1207
|
+
};
|
|
1208
|
+
}
|
|
1209
|
+
function getComponentPropsFixes(node, typeArguments, fixer, context) {
|
|
1210
|
+
const getText = (node2) => context.sourceCode.getText(node2);
|
|
1211
|
+
const [arg0, arg1] = node.params;
|
|
1212
|
+
const [typeArg0, typeArg1] = typeArguments;
|
|
1213
|
+
if (!arg0) return [];
|
|
1214
|
+
const fixedArg0Text = tsPattern.match(arg0).with({ type: types.AST_NODE_TYPES.Identifier }, (n) => tools.O.some(`...${n.name}`)).with({ type: types.AST_NODE_TYPES.ObjectPattern }, (n) => tools.O.some(n.properties.map(getText).join(", "))).otherwise(tools.O.none);
|
|
1215
|
+
if (tools.O.isNone(fixedArg0Text)) return [];
|
|
1216
|
+
const fixedPropsText = fixedArg0Text.value;
|
|
1217
|
+
if (!arg1) {
|
|
1218
|
+
return [fixer.replaceText(
|
|
1219
|
+
arg0,
|
|
1220
|
+
[
|
|
1221
|
+
"{",
|
|
1222
|
+
"ref,",
|
|
1223
|
+
fixedPropsText,
|
|
1224
|
+
"}"
|
|
1225
|
+
].join(" ")
|
|
1226
|
+
)];
|
|
1227
|
+
}
|
|
1228
|
+
if (arg1.type !== types.AST_NODE_TYPES.Identifier) return [];
|
|
1229
|
+
if (!typeArg0 || !typeArg1) {
|
|
1230
|
+
return [
|
|
1231
|
+
fixer.replaceText(
|
|
1232
|
+
arg0,
|
|
1233
|
+
[
|
|
1234
|
+
"{",
|
|
1235
|
+
arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
|
|
1236
|
+
fixedPropsText,
|
|
1237
|
+
"}"
|
|
1238
|
+
].join(" ")
|
|
1239
|
+
),
|
|
1240
|
+
fixer.remove(arg1),
|
|
1241
|
+
fixer.removeRange([arg0.range[1], arg1.range[0]])
|
|
1242
|
+
];
|
|
1243
|
+
}
|
|
1244
|
+
return [
|
|
1245
|
+
fixer.replaceText(
|
|
1246
|
+
arg0,
|
|
1247
|
+
[
|
|
1248
|
+
"{",
|
|
1249
|
+
arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
|
|
1250
|
+
fixedPropsText,
|
|
1251
|
+
"}:",
|
|
1252
|
+
getText(typeArg1),
|
|
1253
|
+
"&",
|
|
1254
|
+
"{",
|
|
1255
|
+
`ref:`,
|
|
1256
|
+
`React.RefObject<${getText(typeArg0)}>`,
|
|
1257
|
+
"}"
|
|
1258
|
+
].join(" ")
|
|
1259
|
+
),
|
|
1260
|
+
fixer.remove(arg1),
|
|
1261
|
+
fixer.removeRange([arg0.range[1], arg1.range[0]])
|
|
1262
|
+
];
|
|
1263
|
+
}
|
|
1191
1264
|
var RULE_NAME27 = "no-implicit-key";
|
|
1192
1265
|
var no_implicit_key_default = createRule({
|
|
1193
1266
|
meta: {
|
package/dist/index.mjs
CHANGED
|
@@ -14,7 +14,7 @@ import { getTypeImmutability, isUnknown, isImmutable, isReadonlyShallow, isReado
|
|
|
14
14
|
|
|
15
15
|
// package.json
|
|
16
16
|
var name = "eslint-plugin-react-x";
|
|
17
|
-
var version = "1.
|
|
17
|
+
var version = "1.19.0-beta.1";
|
|
18
18
|
var createRule = createRuleForPlugin("x");
|
|
19
19
|
|
|
20
20
|
// src/rules/avoid-shorthand-boolean.ts
|
|
@@ -1139,6 +1139,7 @@ var no_forward_ref_default = createRule({
|
|
|
1139
1139
|
docs: {
|
|
1140
1140
|
description: "disallow the use of 'forwardRef'"
|
|
1141
1141
|
},
|
|
1142
|
+
fixable: "code",
|
|
1142
1143
|
messages: {
|
|
1143
1144
|
noForwardRef: "In React 19, 'forwardRef' is no longer necessary. Pass 'ref' as a prop instead."
|
|
1144
1145
|
},
|
|
@@ -1154,13 +1155,85 @@ var no_forward_ref_default = createRule({
|
|
|
1154
1155
|
if (!isForwardRefCall(node, context)) return;
|
|
1155
1156
|
context.report({
|
|
1156
1157
|
messageId: "noForwardRef",
|
|
1157
|
-
node
|
|
1158
|
+
node,
|
|
1159
|
+
fix: getFix(node, context)
|
|
1158
1160
|
});
|
|
1159
1161
|
}
|
|
1160
1162
|
};
|
|
1161
1163
|
},
|
|
1162
1164
|
defaultOptions: []
|
|
1163
1165
|
});
|
|
1166
|
+
function getFix(node, context) {
|
|
1167
|
+
return (fixer) => {
|
|
1168
|
+
const [componentNode] = node.arguments;
|
|
1169
|
+
if (!componentNode || !AST11.isFunction(componentNode)) return [];
|
|
1170
|
+
return [
|
|
1171
|
+
fixer.removeRange([node.range[0], componentNode.range[0]]),
|
|
1172
|
+
fixer.removeRange([componentNode.range[1], node.range[1]]),
|
|
1173
|
+
...getComponentPropsFixes(
|
|
1174
|
+
componentNode,
|
|
1175
|
+
node.typeArguments?.params ?? [],
|
|
1176
|
+
fixer,
|
|
1177
|
+
context
|
|
1178
|
+
)
|
|
1179
|
+
];
|
|
1180
|
+
};
|
|
1181
|
+
}
|
|
1182
|
+
function getComponentPropsFixes(node, typeArguments, fixer, context) {
|
|
1183
|
+
const getText = (node2) => context.sourceCode.getText(node2);
|
|
1184
|
+
const [arg0, arg1] = node.params;
|
|
1185
|
+
const [typeArg0, typeArg1] = typeArguments;
|
|
1186
|
+
if (!arg0) return [];
|
|
1187
|
+
const fixedArg0Text = match(arg0).with({ type: AST_NODE_TYPES.Identifier }, (n) => O.some(`...${n.name}`)).with({ type: AST_NODE_TYPES.ObjectPattern }, (n) => O.some(n.properties.map(getText).join(", "))).otherwise(O.none);
|
|
1188
|
+
if (O.isNone(fixedArg0Text)) return [];
|
|
1189
|
+
const fixedPropsText = fixedArg0Text.value;
|
|
1190
|
+
if (!arg1) {
|
|
1191
|
+
return [fixer.replaceText(
|
|
1192
|
+
arg0,
|
|
1193
|
+
[
|
|
1194
|
+
"{",
|
|
1195
|
+
"ref,",
|
|
1196
|
+
fixedPropsText,
|
|
1197
|
+
"}"
|
|
1198
|
+
].join(" ")
|
|
1199
|
+
)];
|
|
1200
|
+
}
|
|
1201
|
+
if (arg1.type !== AST_NODE_TYPES.Identifier) return [];
|
|
1202
|
+
if (!typeArg0 || !typeArg1) {
|
|
1203
|
+
return [
|
|
1204
|
+
fixer.replaceText(
|
|
1205
|
+
arg0,
|
|
1206
|
+
[
|
|
1207
|
+
"{",
|
|
1208
|
+
arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
|
|
1209
|
+
fixedPropsText,
|
|
1210
|
+
"}"
|
|
1211
|
+
].join(" ")
|
|
1212
|
+
),
|
|
1213
|
+
fixer.remove(arg1),
|
|
1214
|
+
fixer.removeRange([arg0.range[1], arg1.range[0]])
|
|
1215
|
+
];
|
|
1216
|
+
}
|
|
1217
|
+
return [
|
|
1218
|
+
fixer.replaceText(
|
|
1219
|
+
arg0,
|
|
1220
|
+
[
|
|
1221
|
+
"{",
|
|
1222
|
+
arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
|
|
1223
|
+
fixedPropsText,
|
|
1224
|
+
"}:",
|
|
1225
|
+
getText(typeArg1),
|
|
1226
|
+
"&",
|
|
1227
|
+
"{",
|
|
1228
|
+
`ref:`,
|
|
1229
|
+
`React.RefObject<${getText(typeArg0)}>`,
|
|
1230
|
+
"}"
|
|
1231
|
+
].join(" ")
|
|
1232
|
+
),
|
|
1233
|
+
fixer.remove(arg1),
|
|
1234
|
+
fixer.removeRange([arg0.range[1], arg1.range[0]])
|
|
1235
|
+
];
|
|
1236
|
+
}
|
|
1164
1237
|
var RULE_NAME27 = "no-implicit-key";
|
|
1165
1238
|
var no_implicit_key_default = createRule({
|
|
1166
1239
|
meta: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-react-x",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.0-beta.1",
|
|
4
4
|
"description": "A set of composable ESLint rules for libraries and frameworks that use React as a UI runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -49,13 +49,13 @@
|
|
|
49
49
|
"compare-versions": "^6.1.1",
|
|
50
50
|
"is-immutable-type": "^5.0.0",
|
|
51
51
|
"ts-pattern": "^5.5.0",
|
|
52
|
-
"@eslint-react/ast": "1.
|
|
53
|
-
"@eslint-react/core": "1.
|
|
54
|
-
"@eslint-react/jsx": "1.
|
|
55
|
-
"@eslint-react/shared": "1.
|
|
56
|
-
"@eslint-react/
|
|
57
|
-
"@eslint-react/
|
|
58
|
-
"@eslint-react/
|
|
52
|
+
"@eslint-react/ast": "1.19.0-beta.1",
|
|
53
|
+
"@eslint-react/core": "1.19.0-beta.1",
|
|
54
|
+
"@eslint-react/jsx": "1.19.0-beta.1",
|
|
55
|
+
"@eslint-react/shared": "1.19.0-beta.1",
|
|
56
|
+
"@eslint-react/var": "1.19.0-beta.1",
|
|
57
|
+
"@eslint-react/tools": "1.19.0-beta.1",
|
|
58
|
+
"@eslint-react/types": "1.19.0-beta.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/react": "^19.0.1",
|