mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
[compiler] PruneNonEscapingScopes understands terminal operands
We weren't treating terminal operands as eligible for memoization in PruneNonEscapingScopes, which meant that they could end up un-memoized. Terminal operands can also be compound ReactiveValues like SequenceExpressions, so part of the fix is to make sure we don't just recurse into compound values but record the full aliasing information we would for top-level instructions. Still WIP, this needs to handle terminals other than for..of. ghstack-source-id:09a2923051Pull Request resolved: https://github.com/facebook/react/pull/33062 DiffTrain build for [e9db3cc2d4](https://github.com/facebook/react/commit/e9db3cc2d4175849578418a37f33a6fde5b3c6d8)
This commit is contained in:
@@ -47347,7 +47347,7 @@ function pruneNonEscapingScopes(fn) {
|
||||
state.declare(param.place.identifier.declarationId);
|
||||
}
|
||||
}
|
||||
visitReactiveFunction(fn, new CollectDependenciesVisitor(fn.env), state);
|
||||
visitReactiveFunction(fn, new CollectDependenciesVisitor(fn.env, state), []);
|
||||
const memoized = computeMemoizedIdentifiers(state);
|
||||
visitReactiveFunction(fn, new PruneScopesTransform(), memoized);
|
||||
}
|
||||
@@ -47406,7 +47406,7 @@ class State {
|
||||
const identifierNode = this.identifiers.get(identifier);
|
||||
CompilerError.invariant(identifierNode !== undefined, {
|
||||
reason: 'Expected identifier to be initialized',
|
||||
description: null,
|
||||
description: `[${id}] operand=${printPlace(place)} for identifier declaration ${identifier}`,
|
||||
loc: place.loc,
|
||||
suggestions: null,
|
||||
});
|
||||
@@ -47468,349 +47468,6 @@ function computeMemoizedIdentifiers(state) {
|
||||
}
|
||||
return memoized;
|
||||
}
|
||||
function computeMemoizationInputs(env, value, lvalue, options) {
|
||||
switch (value.kind) {
|
||||
case 'ConditionalExpression': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [
|
||||
...computeMemoizationInputs(env, value.consequent, null, options)
|
||||
.rvalues,
|
||||
...computeMemoizationInputs(env, value.alternate, null, options)
|
||||
.rvalues,
|
||||
],
|
||||
};
|
||||
}
|
||||
case 'LogicalExpression': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [
|
||||
...computeMemoizationInputs(env, value.left, null, options).rvalues,
|
||||
...computeMemoizationInputs(env, value.right, null, options).rvalues,
|
||||
],
|
||||
};
|
||||
}
|
||||
case 'SequenceExpression': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: computeMemoizationInputs(env, value.value, null, options)
|
||||
.rvalues,
|
||||
};
|
||||
}
|
||||
case 'JsxExpression': {
|
||||
const operands = [];
|
||||
if (value.tag.kind === 'Identifier') {
|
||||
operands.push(value.tag);
|
||||
}
|
||||
for (const prop of value.props) {
|
||||
if (prop.kind === 'JsxAttribute') {
|
||||
operands.push(prop.place);
|
||||
}
|
||||
else {
|
||||
operands.push(prop.argument);
|
||||
}
|
||||
}
|
||||
if (value.children !== null) {
|
||||
for (const child of value.children) {
|
||||
operands.push(child);
|
||||
}
|
||||
}
|
||||
const level = options.memoizeJsxElements
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Unmemoized;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'JsxFragment': {
|
||||
const level = options.memoizeJsxElements
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Unmemoized;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: value.children,
|
||||
};
|
||||
}
|
||||
case 'NextPropertyOf':
|
||||
case 'StartMemoize':
|
||||
case 'FinishMemoize':
|
||||
case 'Debugger':
|
||||
case 'ComputedDelete':
|
||||
case 'PropertyDelete':
|
||||
case 'LoadGlobal':
|
||||
case 'MetaProperty':
|
||||
case 'TemplateLiteral':
|
||||
case 'Primitive':
|
||||
case 'JSXText':
|
||||
case 'BinaryExpression':
|
||||
case 'UnaryExpression': {
|
||||
const level = options.forceMemoizePrimitives
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Never;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
case 'Await':
|
||||
case 'TypeCastExpression': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'IteratorNext': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.iterator, value.collection],
|
||||
};
|
||||
}
|
||||
case 'GetIterator': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.collection],
|
||||
};
|
||||
}
|
||||
case 'LoadLocal': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.place],
|
||||
};
|
||||
}
|
||||
case 'LoadContext': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.place],
|
||||
};
|
||||
}
|
||||
case 'DeclareContext': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Memoized },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Unmemoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
case 'DeclareLocal': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Unmemoized },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Unmemoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
case 'PrefixUpdate':
|
||||
case 'PostfixUpdate': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue, level: MemoizationLevel.Conditional },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'StoreLocal': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Conditional },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'StoreContext': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Memoized },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'StoreGlobal': {
|
||||
const lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Unmemoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'Destructure': {
|
||||
const lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
lvalues.push(...computePatternLValues(value.lvalue.pattern));
|
||||
return {
|
||||
lvalues: lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'ComputedLoad':
|
||||
case 'PropertyLoad': {
|
||||
const level = options.forceMemoizePrimitives
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Conditional;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: [value.object],
|
||||
};
|
||||
}
|
||||
case 'ComputedStore': {
|
||||
const lvalues = [
|
||||
{ place: value.object, level: MemoizationLevel.Conditional },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'OptionalExpression': {
|
||||
const lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues: lvalues,
|
||||
rvalues: [
|
||||
...computeMemoizationInputs(env, value.value, null, options).rvalues,
|
||||
],
|
||||
};
|
||||
}
|
||||
case 'TaggedTemplateExpression': {
|
||||
const signature = getFunctionCallSignature(env, value.tag.identifier.type);
|
||||
let lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
if ((signature === null || signature === void 0 ? void 0 : signature.noAlias) === true) {
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
lvalues.push(...operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized })));
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'CallExpression': {
|
||||
const signature = getFunctionCallSignature(env, value.callee.identifier.type);
|
||||
let lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
if ((signature === null || signature === void 0 ? void 0 : signature.noAlias) === true) {
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
lvalues.push(...operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized })));
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'MethodCall': {
|
||||
const signature = getFunctionCallSignature(env, value.property.identifier.type);
|
||||
let lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
if ((signature === null || signature === void 0 ? void 0 : signature.noAlias) === true) {
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
lvalues.push(...operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized })));
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'RegExpLiteral':
|
||||
case 'ObjectMethod':
|
||||
case 'FunctionExpression':
|
||||
case 'ArrayExpression':
|
||||
case 'NewExpression':
|
||||
case 'ObjectExpression':
|
||||
case 'PropertyStore': {
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
const lvalues = operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized }));
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'UnsupportedNode': {
|
||||
CompilerError.invariant(false, {
|
||||
reason: `Unexpected unsupported node`,
|
||||
description: null,
|
||||
loc: value.loc,
|
||||
suggestions: null,
|
||||
});
|
||||
}
|
||||
default: {
|
||||
assertExhaustive$1(value, `Unexpected value kind \`${value.kind}\``);
|
||||
}
|
||||
}
|
||||
}
|
||||
function computePatternLValues(pattern) {
|
||||
const lvalues = [];
|
||||
switch (pattern.kind) {
|
||||
@@ -47849,21 +47506,367 @@ function computePatternLValues(pattern) {
|
||||
return lvalues;
|
||||
}
|
||||
class CollectDependenciesVisitor extends ReactiveFunctionVisitor {
|
||||
constructor(env) {
|
||||
constructor(env, state) {
|
||||
super();
|
||||
this.env = env;
|
||||
this.state = state;
|
||||
this.options = {
|
||||
memoizeJsxElements: !this.env.config.enableForest,
|
||||
forceMemoizePrimitives: this.env.config.enableForest,
|
||||
};
|
||||
}
|
||||
visitInstruction(instruction, state) {
|
||||
computeMemoizationInputs(value, lvalue) {
|
||||
const env = this.env;
|
||||
const options = this.options;
|
||||
switch (value.kind) {
|
||||
case 'ConditionalExpression': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [
|
||||
...this.computeMemoizationInputs(value.consequent, null).rvalues,
|
||||
...this.computeMemoizationInputs(value.alternate, null).rvalues,
|
||||
],
|
||||
};
|
||||
}
|
||||
case 'LogicalExpression': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [
|
||||
...this.computeMemoizationInputs(value.left, null).rvalues,
|
||||
...this.computeMemoizationInputs(value.right, null).rvalues,
|
||||
],
|
||||
};
|
||||
}
|
||||
case 'SequenceExpression': {
|
||||
for (const instr of value.instructions) {
|
||||
this.visitValueForMemoization(instr.id, instr.value, instr.lvalue);
|
||||
}
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: this.computeMemoizationInputs(value.value, null).rvalues,
|
||||
};
|
||||
}
|
||||
case 'JsxExpression': {
|
||||
const operands = [];
|
||||
if (value.tag.kind === 'Identifier') {
|
||||
operands.push(value.tag);
|
||||
}
|
||||
for (const prop of value.props) {
|
||||
if (prop.kind === 'JsxAttribute') {
|
||||
operands.push(prop.place);
|
||||
}
|
||||
else {
|
||||
operands.push(prop.argument);
|
||||
}
|
||||
}
|
||||
if (value.children !== null) {
|
||||
for (const child of value.children) {
|
||||
operands.push(child);
|
||||
}
|
||||
}
|
||||
const level = options.memoizeJsxElements
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Unmemoized;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'JsxFragment': {
|
||||
const level = options.memoizeJsxElements
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Unmemoized;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: value.children,
|
||||
};
|
||||
}
|
||||
case 'NextPropertyOf':
|
||||
case 'StartMemoize':
|
||||
case 'FinishMemoize':
|
||||
case 'Debugger':
|
||||
case 'ComputedDelete':
|
||||
case 'PropertyDelete':
|
||||
case 'LoadGlobal':
|
||||
case 'MetaProperty':
|
||||
case 'TemplateLiteral':
|
||||
case 'Primitive':
|
||||
case 'JSXText':
|
||||
case 'BinaryExpression':
|
||||
case 'UnaryExpression': {
|
||||
const level = options.forceMemoizePrimitives
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Never;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
case 'Await':
|
||||
case 'TypeCastExpression': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'IteratorNext': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.iterator, value.collection],
|
||||
};
|
||||
}
|
||||
case 'GetIterator': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.collection],
|
||||
};
|
||||
}
|
||||
case 'LoadLocal': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.place],
|
||||
};
|
||||
}
|
||||
case 'LoadContext': {
|
||||
return {
|
||||
lvalues: lvalue !== null
|
||||
? [{ place: lvalue, level: MemoizationLevel.Conditional }]
|
||||
: [],
|
||||
rvalues: [value.place],
|
||||
};
|
||||
}
|
||||
case 'DeclareContext': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Memoized },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Unmemoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
case 'DeclareLocal': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Unmemoized },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Unmemoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
case 'PrefixUpdate':
|
||||
case 'PostfixUpdate': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue, level: MemoizationLevel.Conditional },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'StoreLocal': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Conditional },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'StoreContext': {
|
||||
const lvalues = [
|
||||
{ place: value.lvalue.place, level: MemoizationLevel.Memoized },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'StoreGlobal': {
|
||||
const lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Unmemoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'Destructure': {
|
||||
const lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
lvalues.push(...computePatternLValues(value.lvalue.pattern));
|
||||
return {
|
||||
lvalues: lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'ComputedLoad':
|
||||
case 'PropertyLoad': {
|
||||
const level = options.forceMemoizePrimitives
|
||||
? MemoizationLevel.Memoized
|
||||
: MemoizationLevel.Conditional;
|
||||
return {
|
||||
lvalues: lvalue !== null ? [{ place: lvalue, level }] : [],
|
||||
rvalues: [value.object],
|
||||
};
|
||||
}
|
||||
case 'ComputedStore': {
|
||||
const lvalues = [
|
||||
{ place: value.object, level: MemoizationLevel.Conditional },
|
||||
];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [value.value],
|
||||
};
|
||||
}
|
||||
case 'OptionalExpression': {
|
||||
const lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Conditional });
|
||||
}
|
||||
return {
|
||||
lvalues: lvalues,
|
||||
rvalues: [
|
||||
...this.computeMemoizationInputs(value.value, null).rvalues,
|
||||
],
|
||||
};
|
||||
}
|
||||
case 'TaggedTemplateExpression': {
|
||||
const signature = getFunctionCallSignature(env, value.tag.identifier.type);
|
||||
let lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
if ((signature === null || signature === void 0 ? void 0 : signature.noAlias) === true) {
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
lvalues.push(...operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized })));
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'CallExpression': {
|
||||
const signature = getFunctionCallSignature(env, value.callee.identifier.type);
|
||||
let lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
if ((signature === null || signature === void 0 ? void 0 : signature.noAlias) === true) {
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
lvalues.push(...operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized })));
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'MethodCall': {
|
||||
const signature = getFunctionCallSignature(env, value.property.identifier.type);
|
||||
let lvalues = [];
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
if ((signature === null || signature === void 0 ? void 0 : signature.noAlias) === true) {
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: [],
|
||||
};
|
||||
}
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
lvalues.push(...operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized })));
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'RegExpLiteral':
|
||||
case 'ObjectMethod':
|
||||
case 'FunctionExpression':
|
||||
case 'ArrayExpression':
|
||||
case 'NewExpression':
|
||||
case 'ObjectExpression':
|
||||
case 'PropertyStore': {
|
||||
const operands = [...eachReactiveValueOperand(value)];
|
||||
const lvalues = operands
|
||||
.filter(operand => isMutableEffect(operand.effect, operand.loc))
|
||||
.map(place => ({ place, level: MemoizationLevel.Memoized }));
|
||||
if (lvalue !== null) {
|
||||
lvalues.push({ place: lvalue, level: MemoizationLevel.Memoized });
|
||||
}
|
||||
return {
|
||||
lvalues,
|
||||
rvalues: operands,
|
||||
};
|
||||
}
|
||||
case 'UnsupportedNode': {
|
||||
CompilerError.invariant(false, {
|
||||
reason: `Unexpected unsupported node`,
|
||||
description: null,
|
||||
loc: value.loc,
|
||||
suggestions: null,
|
||||
});
|
||||
}
|
||||
default: {
|
||||
assertExhaustive$1(value, `Unexpected value kind \`${value.kind}\``);
|
||||
}
|
||||
}
|
||||
}
|
||||
visitValueForMemoization(id, value, lvalue) {
|
||||
var _a, _b, _c;
|
||||
this.traverseInstruction(instruction, state);
|
||||
const aliasing = computeMemoizationInputs(this.env, instruction.value, instruction.lvalue, this.options);
|
||||
const state = this.state;
|
||||
const aliasing = this.computeMemoizationInputs(value, lvalue);
|
||||
for (const operand of aliasing.rvalues) {
|
||||
const operandId = (_a = state.definitions.get(operand.identifier.declarationId)) !== null && _a !== void 0 ? _a : operand.identifier.declarationId;
|
||||
state.visitOperand(instruction.id, operand, operandId);
|
||||
state.visitOperand(id, operand, operandId);
|
||||
}
|
||||
for (const { place: lvalue, level } of aliasing.lvalues) {
|
||||
const lvalueId = (_b = state.definitions.get(lvalue.identifier.declarationId)) !== null && _b !== void 0 ? _b : lvalue.identifier.declarationId;
|
||||
@@ -47886,34 +47889,60 @@ class CollectDependenciesVisitor extends ReactiveFunctionVisitor {
|
||||
}
|
||||
node.dependencies.add(operandId);
|
||||
}
|
||||
state.visitOperand(instruction.id, lvalue, lvalueId);
|
||||
state.visitOperand(id, lvalue, lvalueId);
|
||||
}
|
||||
if (instruction.value.kind === 'LoadLocal' && instruction.lvalue !== null) {
|
||||
state.definitions.set(instruction.lvalue.identifier.declarationId, instruction.value.place.identifier.declarationId);
|
||||
if (value.kind === 'LoadLocal' && lvalue !== null) {
|
||||
state.definitions.set(lvalue.identifier.declarationId, value.place.identifier.declarationId);
|
||||
}
|
||||
else if (instruction.value.kind === 'CallExpression' ||
|
||||
instruction.value.kind === 'MethodCall') {
|
||||
let callee = instruction.value.kind === 'CallExpression'
|
||||
? instruction.value.callee
|
||||
: instruction.value.property;
|
||||
else if (value.kind === 'CallExpression' || value.kind === 'MethodCall') {
|
||||
let callee = value.kind === 'CallExpression' ? value.callee : value.property;
|
||||
if (getHookKind(state.env, callee.identifier) != null) {
|
||||
const signature = getFunctionCallSignature(this.env, callee.identifier.type);
|
||||
if (signature && signature.noAlias === true) {
|
||||
return;
|
||||
}
|
||||
for (const operand of instruction.value.args) {
|
||||
for (const operand of value.args) {
|
||||
const place = operand.kind === 'Spread' ? operand.place : operand;
|
||||
state.escapingValues.add(place.identifier.declarationId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
visitTerminal(stmt, state) {
|
||||
this.traverseTerminal(stmt, state);
|
||||
visitInstruction(instruction, _scopes) {
|
||||
this.visitValueForMemoization(instruction.id, instruction.value, instruction.lvalue);
|
||||
}
|
||||
visitTerminal(stmt, scopes) {
|
||||
this.traverseTerminal(stmt, scopes);
|
||||
if (stmt.terminal.kind === 'return') {
|
||||
state.escapingValues.add(stmt.terminal.value.identifier.declarationId);
|
||||
this.state.escapingValues.add(stmt.terminal.value.identifier.declarationId);
|
||||
const identifierNode = this.state.identifiers.get(stmt.terminal.value.identifier.declarationId);
|
||||
CompilerError.invariant(identifierNode !== undefined, {
|
||||
reason: 'Expected identifier to be initialized',
|
||||
description: null,
|
||||
loc: stmt.terminal.loc,
|
||||
suggestions: null,
|
||||
});
|
||||
for (const scope of scopes) {
|
||||
identifierNode.scopes.add(scope.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
visitScope(scope, scopes) {
|
||||
for (const reassignment of scope.scope.reassignments) {
|
||||
const identifierNode = this.state.identifiers.get(reassignment.declarationId);
|
||||
CompilerError.invariant(identifierNode !== undefined, {
|
||||
reason: 'Expected identifier to be initialized',
|
||||
description: null,
|
||||
loc: reassignment.loc,
|
||||
suggestions: null,
|
||||
});
|
||||
for (const scope of scopes) {
|
||||
identifierNode.scopes.add(scope.id);
|
||||
}
|
||||
identifierNode.scopes.add(scope.scope.id);
|
||||
}
|
||||
this.traverseScope(scope, [...scopes, scope.scope]);
|
||||
}
|
||||
}
|
||||
class PruneScopesTransform extends ReactiveFunctionTransform {
|
||||
constructor() {
|
||||
|
||||
@@ -1 +1 @@
|
||||
71797c871b6bfa45988cba38f3388bac095b26cf
|
||||
e9db3cc2d4175849578418a37f33a6fde5b3c6d8
|
||||
|
||||
@@ -1 +1 @@
|
||||
71797c871b6bfa45988cba38f3388bac095b26cf
|
||||
e9db3cc2d4175849578418a37f33a6fde5b3c6d8
|
||||
|
||||
@@ -1538,7 +1538,7 @@ __DEV__ &&
|
||||
exports.useTransition = function () {
|
||||
return resolveDispatcher().useTransition();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -1538,7 +1538,7 @@ __DEV__ &&
|
||||
exports.useTransition = function () {
|
||||
return resolveDispatcher().useTransition();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -636,4 +636,4 @@ exports.useSyncExternalStore = function (
|
||||
exports.useTransition = function () {
|
||||
return ReactSharedInternals.H.useTransition();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
|
||||
@@ -636,4 +636,4 @@ exports.useSyncExternalStore = function (
|
||||
exports.useTransition = function () {
|
||||
return ReactSharedInternals.H.useTransition();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
|
||||
@@ -640,7 +640,7 @@ exports.useSyncExternalStore = function (
|
||||
exports.useTransition = function () {
|
||||
return ReactSharedInternals.H.useTransition();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -640,7 +640,7 @@ exports.useSyncExternalStore = function (
|
||||
exports.useTransition = function () {
|
||||
return ReactSharedInternals.H.useTransition();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -19014,10 +19014,10 @@ __DEV__ &&
|
||||
(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-art",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -19051,7 +19051,7 @@ __DEV__ &&
|
||||
exports.Shape = Shape;
|
||||
exports.Surface = Surface;
|
||||
exports.Text = Text;
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -18786,10 +18786,10 @@ __DEV__ &&
|
||||
(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-art",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -18823,7 +18823,7 @@ __DEV__ &&
|
||||
exports.Shape = Shape;
|
||||
exports.Surface = Surface;
|
||||
exports.Text = Text;
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -11412,10 +11412,10 @@ var slice = Array.prototype.slice,
|
||||
})(React.Component);
|
||||
var internals$jscomp$inline_1619 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-art",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
|
||||
var hook$jscomp$inline_1620 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
|
||||
@@ -11441,4 +11441,4 @@ exports.RadialGradient = RadialGradient;
|
||||
exports.Shape = TYPES.SHAPE;
|
||||
exports.Surface = Surface;
|
||||
exports.Text = Text;
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
|
||||
@@ -11125,10 +11125,10 @@ var slice = Array.prototype.slice,
|
||||
})(React.Component);
|
||||
var internals$jscomp$inline_1592 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-art",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
|
||||
var hook$jscomp$inline_1593 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
|
||||
@@ -11154,4 +11154,4 @@ exports.RadialGradient = RadialGradient;
|
||||
exports.Shape = TYPES.SHAPE;
|
||||
exports.Surface = Surface;
|
||||
exports.Text = Text;
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
|
||||
@@ -31126,11 +31126,11 @@ __DEV__ &&
|
||||
return_targetInst = null;
|
||||
(function () {
|
||||
var isomorphicReactPackageVersion = React.version;
|
||||
if ("19.2.0-www-classic-71797c87-20250430" !== isomorphicReactPackageVersion)
|
||||
if ("19.2.0-www-classic-e9db3cc2-20250501" !== isomorphicReactPackageVersion)
|
||||
throw Error(
|
||||
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
|
||||
(isomorphicReactPackageVersion +
|
||||
"\n - react-dom: 19.2.0-www-classic-71797c87-20250430\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
"\n - react-dom: 19.2.0-www-classic-e9db3cc2-20250501\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
);
|
||||
})();
|
||||
("function" === typeof Map &&
|
||||
@@ -31173,10 +31173,10 @@ __DEV__ &&
|
||||
!(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -31774,7 +31774,7 @@ __DEV__ &&
|
||||
exports.useFormStatus = function () {
|
||||
return resolveDispatcher().useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -30912,11 +30912,11 @@ __DEV__ &&
|
||||
return_targetInst = null;
|
||||
(function () {
|
||||
var isomorphicReactPackageVersion = React.version;
|
||||
if ("19.2.0-www-modern-71797c87-20250430" !== isomorphicReactPackageVersion)
|
||||
if ("19.2.0-www-modern-e9db3cc2-20250501" !== isomorphicReactPackageVersion)
|
||||
throw Error(
|
||||
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
|
||||
(isomorphicReactPackageVersion +
|
||||
"\n - react-dom: 19.2.0-www-modern-71797c87-20250430\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
"\n - react-dom: 19.2.0-www-modern-e9db3cc2-20250501\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
);
|
||||
})();
|
||||
("function" === typeof Map &&
|
||||
@@ -30959,10 +30959,10 @@ __DEV__ &&
|
||||
!(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -31560,7 +31560,7 @@ __DEV__ &&
|
||||
exports.useFormStatus = function () {
|
||||
return resolveDispatcher().useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -19446,14 +19446,14 @@ function getCrossOriginStringAs(as, input) {
|
||||
}
|
||||
var isomorphicReactPackageVersion$jscomp$inline_2029 = React.version;
|
||||
if (
|
||||
"19.2.0-www-classic-71797c87-20250430" !==
|
||||
"19.2.0-www-classic-e9db3cc2-20250501" !==
|
||||
isomorphicReactPackageVersion$jscomp$inline_2029
|
||||
)
|
||||
throw Error(
|
||||
formatProdErrorMessage(
|
||||
527,
|
||||
isomorphicReactPackageVersion$jscomp$inline_2029,
|
||||
"19.2.0-www-classic-71797c87-20250430"
|
||||
"19.2.0-www-classic-e9db3cc2-20250501"
|
||||
)
|
||||
);
|
||||
Internals.findDOMNode = function (componentOrElement) {
|
||||
@@ -19471,10 +19471,10 @@ Internals.Events = [
|
||||
];
|
||||
var internals$jscomp$inline_2635 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
|
||||
var hook$jscomp$inline_2636 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
|
||||
@@ -19838,4 +19838,4 @@ exports.useFormState = function (action, initialState, permalink) {
|
||||
exports.useFormStatus = function () {
|
||||
return ReactSharedInternals.H.useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
|
||||
@@ -19175,14 +19175,14 @@ function getCrossOriginStringAs(as, input) {
|
||||
}
|
||||
var isomorphicReactPackageVersion$jscomp$inline_2019 = React.version;
|
||||
if (
|
||||
"19.2.0-www-modern-71797c87-20250430" !==
|
||||
"19.2.0-www-modern-e9db3cc2-20250501" !==
|
||||
isomorphicReactPackageVersion$jscomp$inline_2019
|
||||
)
|
||||
throw Error(
|
||||
formatProdErrorMessage(
|
||||
527,
|
||||
isomorphicReactPackageVersion$jscomp$inline_2019,
|
||||
"19.2.0-www-modern-71797c87-20250430"
|
||||
"19.2.0-www-modern-e9db3cc2-20250501"
|
||||
)
|
||||
);
|
||||
Internals.findDOMNode = function (componentOrElement) {
|
||||
@@ -19200,10 +19200,10 @@ Internals.Events = [
|
||||
];
|
||||
var internals$jscomp$inline_2617 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
|
||||
var hook$jscomp$inline_2618 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
|
||||
@@ -19567,4 +19567,4 @@ exports.useFormState = function (action, initialState, permalink) {
|
||||
exports.useFormStatus = function () {
|
||||
return ReactSharedInternals.H.useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
|
||||
@@ -21420,14 +21420,14 @@ function getCrossOriginStringAs(as, input) {
|
||||
}
|
||||
var isomorphicReactPackageVersion$jscomp$inline_2273 = React.version;
|
||||
if (
|
||||
"19.2.0-www-classic-71797c87-20250430" !==
|
||||
"19.2.0-www-classic-e9db3cc2-20250501" !==
|
||||
isomorphicReactPackageVersion$jscomp$inline_2273
|
||||
)
|
||||
throw Error(
|
||||
formatProdErrorMessage(
|
||||
527,
|
||||
isomorphicReactPackageVersion$jscomp$inline_2273,
|
||||
"19.2.0-www-classic-71797c87-20250430"
|
||||
"19.2.0-www-classic-e9db3cc2-20250501"
|
||||
)
|
||||
);
|
||||
Internals.findDOMNode = function (componentOrElement) {
|
||||
@@ -21445,10 +21445,10 @@ Internals.Events = [
|
||||
];
|
||||
var internals$jscomp$inline_2275 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
enableSchedulingProfiler &&
|
||||
((internals$jscomp$inline_2275.getLaneLabelMap = getLaneLabelMap),
|
||||
@@ -21815,7 +21815,7 @@ exports.useFormState = function (action, initialState, permalink) {
|
||||
exports.useFormStatus = function () {
|
||||
return ReactSharedInternals.H.useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -21218,14 +21218,14 @@ function getCrossOriginStringAs(as, input) {
|
||||
}
|
||||
var isomorphicReactPackageVersion$jscomp$inline_2263 = React.version;
|
||||
if (
|
||||
"19.2.0-www-modern-71797c87-20250430" !==
|
||||
"19.2.0-www-modern-e9db3cc2-20250501" !==
|
||||
isomorphicReactPackageVersion$jscomp$inline_2263
|
||||
)
|
||||
throw Error(
|
||||
formatProdErrorMessage(
|
||||
527,
|
||||
isomorphicReactPackageVersion$jscomp$inline_2263,
|
||||
"19.2.0-www-modern-71797c87-20250430"
|
||||
"19.2.0-www-modern-e9db3cc2-20250501"
|
||||
)
|
||||
);
|
||||
Internals.findDOMNode = function (componentOrElement) {
|
||||
@@ -21243,10 +21243,10 @@ Internals.Events = [
|
||||
];
|
||||
var internals$jscomp$inline_2265 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
enableSchedulingProfiler &&
|
||||
((internals$jscomp$inline_2265.getLaneLabelMap = getLaneLabelMap),
|
||||
@@ -21613,7 +21613,7 @@ exports.useFormState = function (action, initialState, permalink) {
|
||||
exports.useFormStatus = function () {
|
||||
return ReactSharedInternals.H.useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
|
||||
"function" ===
|
||||
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
|
||||
|
||||
@@ -9511,5 +9511,5 @@ __DEV__ &&
|
||||
'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'
|
||||
);
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
})();
|
||||
|
||||
@@ -9440,5 +9440,5 @@ __DEV__ &&
|
||||
'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'
|
||||
);
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
})();
|
||||
|
||||
@@ -6268,4 +6268,4 @@ exports.renderToString = function (children, options) {
|
||||
'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'
|
||||
);
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
|
||||
@@ -6180,4 +6180,4 @@ exports.renderToString = function (children, options) {
|
||||
'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'
|
||||
);
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
|
||||
@@ -31447,11 +31447,11 @@ __DEV__ &&
|
||||
return_targetInst = null;
|
||||
(function () {
|
||||
var isomorphicReactPackageVersion = React.version;
|
||||
if ("19.2.0-www-classic-71797c87-20250430" !== isomorphicReactPackageVersion)
|
||||
if ("19.2.0-www-classic-e9db3cc2-20250501" !== isomorphicReactPackageVersion)
|
||||
throw Error(
|
||||
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
|
||||
(isomorphicReactPackageVersion +
|
||||
"\n - react-dom: 19.2.0-www-classic-71797c87-20250430\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
"\n - react-dom: 19.2.0-www-classic-e9db3cc2-20250501\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
);
|
||||
})();
|
||||
("function" === typeof Map &&
|
||||
@@ -31494,10 +31494,10 @@ __DEV__ &&
|
||||
!(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -32261,5 +32261,5 @@ __DEV__ &&
|
||||
exports.useFormStatus = function () {
|
||||
return resolveDispatcher().useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
})();
|
||||
|
||||
@@ -31233,11 +31233,11 @@ __DEV__ &&
|
||||
return_targetInst = null;
|
||||
(function () {
|
||||
var isomorphicReactPackageVersion = React.version;
|
||||
if ("19.2.0-www-modern-71797c87-20250430" !== isomorphicReactPackageVersion)
|
||||
if ("19.2.0-www-modern-e9db3cc2-20250501" !== isomorphicReactPackageVersion)
|
||||
throw Error(
|
||||
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
|
||||
(isomorphicReactPackageVersion +
|
||||
"\n - react-dom: 19.2.0-www-modern-71797c87-20250430\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
"\n - react-dom: 19.2.0-www-modern-e9db3cc2-20250501\nLearn more: https://react.dev/warnings/version-mismatch")
|
||||
);
|
||||
})();
|
||||
("function" === typeof Map &&
|
||||
@@ -31280,10 +31280,10 @@ __DEV__ &&
|
||||
!(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -32047,5 +32047,5 @@ __DEV__ &&
|
||||
exports.useFormStatus = function () {
|
||||
return resolveDispatcher().useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
})();
|
||||
|
||||
@@ -19762,14 +19762,14 @@ function getCrossOriginStringAs(as, input) {
|
||||
}
|
||||
var isomorphicReactPackageVersion$jscomp$inline_2058 = React.version;
|
||||
if (
|
||||
"19.2.0-www-classic-71797c87-20250430" !==
|
||||
"19.2.0-www-classic-e9db3cc2-20250501" !==
|
||||
isomorphicReactPackageVersion$jscomp$inline_2058
|
||||
)
|
||||
throw Error(
|
||||
formatProdErrorMessage(
|
||||
527,
|
||||
isomorphicReactPackageVersion$jscomp$inline_2058,
|
||||
"19.2.0-www-classic-71797c87-20250430"
|
||||
"19.2.0-www-classic-e9db3cc2-20250501"
|
||||
)
|
||||
);
|
||||
Internals.findDOMNode = function (componentOrElement) {
|
||||
@@ -19787,10 +19787,10 @@ Internals.Events = [
|
||||
];
|
||||
var internals$jscomp$inline_2669 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
|
||||
var hook$jscomp$inline_2670 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
|
||||
@@ -20305,4 +20305,4 @@ exports.useFormState = function (action, initialState, permalink) {
|
||||
exports.useFormStatus = function () {
|
||||
return ReactSharedInternals.H.useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
|
||||
@@ -19491,14 +19491,14 @@ function getCrossOriginStringAs(as, input) {
|
||||
}
|
||||
var isomorphicReactPackageVersion$jscomp$inline_2048 = React.version;
|
||||
if (
|
||||
"19.2.0-www-modern-71797c87-20250430" !==
|
||||
"19.2.0-www-modern-e9db3cc2-20250501" !==
|
||||
isomorphicReactPackageVersion$jscomp$inline_2048
|
||||
)
|
||||
throw Error(
|
||||
formatProdErrorMessage(
|
||||
527,
|
||||
isomorphicReactPackageVersion$jscomp$inline_2048,
|
||||
"19.2.0-www-modern-71797c87-20250430"
|
||||
"19.2.0-www-modern-e9db3cc2-20250501"
|
||||
)
|
||||
);
|
||||
Internals.findDOMNode = function (componentOrElement) {
|
||||
@@ -19516,10 +19516,10 @@ Internals.Events = [
|
||||
];
|
||||
var internals$jscomp$inline_2651 = {
|
||||
bundleType: 0,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-dom",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
|
||||
var hook$jscomp$inline_2652 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
|
||||
@@ -20034,4 +20034,4 @@ exports.useFormState = function (action, initialState, permalink) {
|
||||
exports.useFormStatus = function () {
|
||||
return ReactSharedInternals.H.useHostTransitionStatus();
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
|
||||
@@ -21845,7 +21845,7 @@ __DEV__ &&
|
||||
version: rendererVersion,
|
||||
rendererPackageName: rendererPackageName,
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
null !== extraDevToolsConfig &&
|
||||
(internals.rendererConfig = extraDevToolsConfig);
|
||||
|
||||
@@ -21626,7 +21626,7 @@ __DEV__ &&
|
||||
version: rendererVersion,
|
||||
rendererPackageName: rendererPackageName,
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
null !== extraDevToolsConfig &&
|
||||
(internals.rendererConfig = extraDevToolsConfig);
|
||||
|
||||
@@ -14088,7 +14088,7 @@ module.exports = function ($$$config) {
|
||||
version: rendererVersion,
|
||||
rendererPackageName: rendererPackageName,
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
null !== extraDevToolsConfig &&
|
||||
(internals.rendererConfig = extraDevToolsConfig);
|
||||
|
||||
@@ -13805,7 +13805,7 @@ module.exports = function ($$$config) {
|
||||
version: rendererVersion,
|
||||
rendererPackageName: rendererPackageName,
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
null !== extraDevToolsConfig &&
|
||||
(internals.rendererConfig = extraDevToolsConfig);
|
||||
|
||||
@@ -15341,10 +15341,10 @@ __DEV__ &&
|
||||
(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-classic-71797c87-20250430",
|
||||
version: "19.2.0-www-classic-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-test-renderer",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-classic-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-classic-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -15479,5 +15479,5 @@ __DEV__ &&
|
||||
exports.unstable_batchedUpdates = function (fn, a) {
|
||||
return fn(a);
|
||||
};
|
||||
exports.version = "19.2.0-www-classic-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-classic-e9db3cc2-20250501";
|
||||
})();
|
||||
|
||||
@@ -15341,10 +15341,10 @@ __DEV__ &&
|
||||
(function () {
|
||||
var internals = {
|
||||
bundleType: 1,
|
||||
version: "19.2.0-www-modern-71797c87-20250430",
|
||||
version: "19.2.0-www-modern-e9db3cc2-20250501",
|
||||
rendererPackageName: "react-test-renderer",
|
||||
currentDispatcherRef: ReactSharedInternals,
|
||||
reconcilerVersion: "19.2.0-www-modern-71797c87-20250430"
|
||||
reconcilerVersion: "19.2.0-www-modern-e9db3cc2-20250501"
|
||||
};
|
||||
internals.overrideHookState = overrideHookState;
|
||||
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
|
||||
@@ -15479,5 +15479,5 @@ __DEV__ &&
|
||||
exports.unstable_batchedUpdates = function (fn, a) {
|
||||
return fn(a);
|
||||
};
|
||||
exports.version = "19.2.0-www-modern-71797c87-20250430";
|
||||
exports.version = "19.2.0-www-modern-e9db3cc2-20250501";
|
||||
})();
|
||||
|
||||
@@ -1 +1 @@
|
||||
19.2.0-www-classic-71797c87-20250430
|
||||
19.2.0-www-classic-e9db3cc2-20250501
|
||||
@@ -1 +1 @@
|
||||
19.2.0-www-modern-71797c87-20250430
|
||||
19.2.0-www-modern-e9db3cc2-20250501
|
||||
Reference in New Issue
Block a user