@farm.js/react 0.1.0-beta.10 → 0.1.0-beta.11

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/vite.cjs CHANGED
@@ -1133,6 +1133,18 @@ function rewriteKeyedArrayReorderHints(root, hintedStateIndices, statesBySetter,
1133
1133
  stateIndices
1134
1134
  };
1135
1135
  }
1136
+ function normalizeSafeKeyedFilterPredicate(predicate, safeGlobals) {
1137
+ if (!core.types.isArrowFunctionExpression(predicate) || predicate.async || predicate.generator || predicate.params.length !== 1 || !core.types.isIdentifier(predicate.params[0]) || core.types.isBlockStatement(predicate.body) && predicate.body.directives.length > 0) {
1138
+ return void 0;
1139
+ }
1140
+ const returned = returnedExpression(predicate);
1141
+ if (!returned || validateDerivedExpression(returned, safeGlobals) !== void 0) {
1142
+ return void 0;
1143
+ }
1144
+ const normalized = core.types.cloneNode(predicate, true);
1145
+ normalized.body = core.types.cloneNode(returned, true);
1146
+ return normalized;
1147
+ }
1136
1148
  function keyedArrayReorderPipeline(expression, parameterName, safeGlobals) {
1137
1149
  const outerSteps = [];
1138
1150
  let current = expression;
@@ -1147,10 +1159,8 @@ function keyedArrayReorderPipeline(expression, parameterName, safeGlobals) {
1147
1159
  outerSteps.push({ callback, kind: "map" });
1148
1160
  } else if (methodName === "filter") {
1149
1161
  if (current.arguments.length !== 1) return void 0;
1150
- const predicate = current.arguments[0];
1151
- if (!core.types.isArrowFunctionExpression(predicate) || predicate.async || predicate.generator || predicate.params.length !== 1 || !core.types.isIdentifier(predicate.params[0]) || !core.types.isExpression(predicate.body) || validateDerivedExpression(predicate.body, safeGlobals)) {
1152
- return void 0;
1153
- }
1162
+ const predicate = normalizeSafeKeyedFilterPredicate(current.arguments[0], safeGlobals);
1163
+ if (!predicate) return void 0;
1154
1164
  outerSteps.push({ kind: "filter", predicate });
1155
1165
  } else if (methodName === "slice") {
1156
1166
  if (current.arguments.length < 1 || current.arguments.length > 2) return void 0;
@@ -2388,10 +2398,11 @@ function rewriteKeyedArrayFilterHints(root, hintedStateIndices, statesBySetter,
2388
2398
  }) || !core.types.isIdentifier(updateExpression.callee.property, { name: "filter" })) {
2389
2399
  return;
2390
2400
  }
2391
- const predicate = updateExpression.arguments[0];
2392
- if (!core.types.isArrowFunctionExpression(predicate) || predicate.async || predicate.generator || predicate.params.length !== 1 || !core.types.isIdentifier(predicate.params[0]) || !core.types.isExpression(predicate.body) || validateDerivedExpression(predicate.body, safeGlobals)) {
2393
- return;
2394
- }
2401
+ const predicate = normalizeSafeKeyedFilterPredicate(
2402
+ updateExpression.arguments[0],
2403
+ safeGlobals
2404
+ );
2405
+ if (!predicate) return;
2395
2406
  const previous = core.types.cloneNode(updater.params[0]);
2396
2407
  const filterMethod = path.scope.generateUidIdentifier("farmFilter");
2397
2408
  path.node.arguments[0] = core.types.arrowFunctionExpression(