eslint-plugin-react-x 1.18.1-next.3 → 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 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.18.1-next.3";
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
@@ -1197,21 +1197,30 @@ function getFix(node, context) {
1197
1197
  return [
1198
1198
  fixer.removeRange([node.range[0], componentNode.range[0]]),
1199
1199
  fixer.removeRange([componentNode.range[1], node.range[1]]),
1200
- ...getParamsFixes(componentNode, context, node.typeArguments?.params ?? [], fixer)
1200
+ ...getComponentPropsFixes(
1201
+ componentNode,
1202
+ node.typeArguments?.params ?? [],
1203
+ fixer,
1204
+ context
1205
+ )
1201
1206
  ];
1202
1207
  };
1203
1208
  }
1204
- function getParamsFixes(node, context, typeArguments, fixer) {
1209
+ function getComponentPropsFixes(node, typeArguments, fixer, context) {
1210
+ const getText = (node2) => context.sourceCode.getText(node2);
1205
1211
  const [arg0, arg1] = node.params;
1206
1212
  const [typeArg0, typeArg1] = typeArguments;
1207
- if (arg0?.type !== types.AST_NODE_TYPES.Identifier) return [];
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;
1208
1217
  if (!arg1) {
1209
1218
  return [fixer.replaceText(
1210
1219
  arg0,
1211
1220
  [
1212
1221
  "{",
1213
1222
  "ref,",
1214
- `...${arg0.name}`,
1223
+ fixedPropsText,
1215
1224
  "}"
1216
1225
  ].join(" ")
1217
1226
  )];
@@ -1224,7 +1233,7 @@ function getParamsFixes(node, context, typeArguments, fixer) {
1224
1233
  [
1225
1234
  "{",
1226
1235
  arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
1227
- `...${arg0.name}`,
1236
+ fixedPropsText,
1228
1237
  "}"
1229
1238
  ].join(" ")
1230
1239
  ),
@@ -1232,14 +1241,13 @@ function getParamsFixes(node, context, typeArguments, fixer) {
1232
1241
  fixer.removeRange([arg0.range[1], arg1.range[0]])
1233
1242
  ];
1234
1243
  }
1235
- const getText = (node2) => context.sourceCode.getText(node2);
1236
1244
  return [
1237
1245
  fixer.replaceText(
1238
1246
  arg0,
1239
1247
  [
1240
1248
  "{",
1241
1249
  arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
1242
- `...${arg0.name}`,
1250
+ fixedPropsText,
1243
1251
  "}:",
1244
1252
  getText(typeArg1),
1245
1253
  "&",
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.18.1-next.3";
17
+ var version = "1.19.0-beta.1";
18
18
  var createRule = createRuleForPlugin("x");
19
19
 
20
20
  // src/rules/avoid-shorthand-boolean.ts
@@ -1170,21 +1170,30 @@ function getFix(node, context) {
1170
1170
  return [
1171
1171
  fixer.removeRange([node.range[0], componentNode.range[0]]),
1172
1172
  fixer.removeRange([componentNode.range[1], node.range[1]]),
1173
- ...getParamsFixes(componentNode, context, node.typeArguments?.params ?? [], fixer)
1173
+ ...getComponentPropsFixes(
1174
+ componentNode,
1175
+ node.typeArguments?.params ?? [],
1176
+ fixer,
1177
+ context
1178
+ )
1174
1179
  ];
1175
1180
  };
1176
1181
  }
1177
- function getParamsFixes(node, context, typeArguments, fixer) {
1182
+ function getComponentPropsFixes(node, typeArguments, fixer, context) {
1183
+ const getText = (node2) => context.sourceCode.getText(node2);
1178
1184
  const [arg0, arg1] = node.params;
1179
1185
  const [typeArg0, typeArg1] = typeArguments;
1180
- if (arg0?.type !== AST_NODE_TYPES.Identifier) return [];
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;
1181
1190
  if (!arg1) {
1182
1191
  return [fixer.replaceText(
1183
1192
  arg0,
1184
1193
  [
1185
1194
  "{",
1186
1195
  "ref,",
1187
- `...${arg0.name}`,
1196
+ fixedPropsText,
1188
1197
  "}"
1189
1198
  ].join(" ")
1190
1199
  )];
@@ -1197,7 +1206,7 @@ function getParamsFixes(node, context, typeArguments, fixer) {
1197
1206
  [
1198
1207
  "{",
1199
1208
  arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
1200
- `...${arg0.name}`,
1209
+ fixedPropsText,
1201
1210
  "}"
1202
1211
  ].join(" ")
1203
1212
  ),
@@ -1205,14 +1214,13 @@ function getParamsFixes(node, context, typeArguments, fixer) {
1205
1214
  fixer.removeRange([arg0.range[1], arg1.range[0]])
1206
1215
  ];
1207
1216
  }
1208
- const getText = (node2) => context.sourceCode.getText(node2);
1209
1217
  return [
1210
1218
  fixer.replaceText(
1211
1219
  arg0,
1212
1220
  [
1213
1221
  "{",
1214
1222
  arg1.name === "ref" ? `ref,` : `ref: ${arg1.name},`,
1215
- `...${arg0.name}`,
1223
+ fixedPropsText,
1216
1224
  "}:",
1217
1225
  getText(typeArg1),
1218
1226
  "&",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-react-x",
3
- "version": "1.18.1-next.3",
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.18.1-next.3",
53
- "@eslint-react/jsx": "1.18.1-next.3",
54
- "@eslint-react/core": "1.18.1-next.3",
55
- "@eslint-react/tools": "1.18.1-next.3",
56
- "@eslint-react/shared": "1.18.1-next.3",
57
- "@eslint-react/types": "1.18.1-next.3",
58
- "@eslint-react/var": "1.18.1-next.3"
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",