chore: remove redundant klona used by the reactive action flow (#41089)

## Description
Removed redundant klona used by the reactive action flow.
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._


Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/16114695042>
> Commit: ac67b382f16ad4d8223caed946a8122d761e6739
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=16114695042&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Mon, 07 Jul 2025 11:54:41 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Simplified evaluation logic by removing redundant parameters related
to previous evaluation tree snapshots across evaluation and trigger
handling processes.
* Streamlined method signatures and internal calls for improved
maintainability.

* **Tests**
* Updated test cases to align with refactored function signatures,
removing unnecessary arguments without affecting test coverage or
outcomes.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Vemparala Surya Vamsi 2025-07-07 17:30:55 +05:30 committed by GitHub
parent c7342fbc01
commit b2bab20c2d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 1 additions and 53 deletions

View File

@ -634,7 +634,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
@ -674,7 +673,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
@ -722,7 +720,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
@ -787,7 +784,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
const updatedDependencies = evaluator.dependencies;
@ -832,7 +828,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
const updatedDependencies = evaluator.dependencies;
@ -898,7 +893,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
const updatedDependencies = evaluator.dependencies;
@ -971,7 +965,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree1,
unEvalUpdates,
[],
evaluator.evalTree,
);
expect(evaluator.dependencies["Api2.config.body"]).toStrictEqual([
"Api2.config.pluginSpecifiedTemplates[0].value",
@ -1007,7 +1000,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree2,
unEvalUpdates2,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
@ -1050,7 +1042,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree3,
unEvalUpdates3,
[],
evaluator.evalTree,
);
const dataTree3 = evaluator.evalTree;
@ -1094,7 +1085,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
const dataTree = evaluator.evalTree;
@ -1135,7 +1125,6 @@ describe("DataTreeEvaluator", () => {
updatedConfigTree,
unEvalUpdates,
[],
evaluator.evalTree,
);
// Hard check to not regress on the number of clone operations. Try to improve this number.
// Not a good assertion because in one piece of code im cloning multiple times, however the value im cloning is very small.

View File

@ -130,7 +130,6 @@ describe("evaluateAndPushResponse", () => {
},
[],
[],
{},
);
// check if push response has been called
expect(pushResponseToMainThreadMock).toHaveBeenCalled();
@ -226,7 +225,6 @@ describe("evaluateAndGenerateResponse", () => {
},
[],
[],
{},
);
const parsedUpdates = getParsedUpdatesFromWebWorkerResp(webworkerResponse);
@ -261,7 +259,6 @@ describe("evaluateAndGenerateResponse", () => {
},
[],
[],
{},
);
const parsedUpdates = getParsedUpdatesFromWebWorkerResp(webworkerResponse);
@ -301,7 +298,6 @@ describe("evaluateAndGenerateResponse", () => {
updateTreeResponse,
[],
[],
{},
);
expect(webworkerResponse.workerResponse.dependencies).toEqual({
@ -342,7 +338,6 @@ describe("evaluateAndGenerateResponse", () => {
updateTreeResponse,
[],
[],
{},
);
const parsedUpdates =
getParsedUpdatesFromWebWorkerResp(webworkerResponse);
@ -376,7 +371,6 @@ describe("evaluateAndGenerateResponse", () => {
updateTreeResponse,
[],
[],
{},
);
const parsedUpdates =
@ -420,7 +414,6 @@ describe("evaluateAndGenerateResponse", () => {
updateTreeResponse,
[],
["Text1.text"],
{},
);
const parsedUpdates =
getParsedUpdatesFromWebWorkerResp(webworkerResponse);
@ -466,7 +459,6 @@ describe("evaluateAndGenerateResponse", () => {
response,
metaUpdates,
[],
{},
);
expect(workerResponse.evalMetaUpdates).toEqual(metaUpdates);
@ -497,7 +489,6 @@ describe("evaluateAndGenerateResponse", () => {
response,
metaUpdates,
[],
{},
);
// the function properties should be stripped out
@ -529,7 +520,6 @@ describe("evaluateAndGenerateResponse", () => {
updateTreeResponse,
[],
[],
{},
);
const parsedUpdates =
@ -568,7 +558,6 @@ describe("evaluateAndGenerateResponse", () => {
updateTreeResponse,
[],
[],
{},
);
const parsedUpdates =
getParsedUpdatesFromWebWorkerResp(webworkerResponse);

View File

@ -21,7 +21,6 @@ import {
import type DataTreeEvaluator from "workers/common/DataTreeEvaluator";
import type { Diff } from "deep-diff";
import type { DataTree } from "entities/DataTree/dataTreeTypes";
import { klona as klonaJson } from "klona/json";
const getDefaultEvalResponse = (): EvalTreeResponseData => ({
updates: "[]",
@ -71,10 +70,8 @@ export function evalTreeWithChanges(
);
let setupUpdateTreeResponse = {} as UpdateTreeResponse;
let oldEvalTree: DataTree = {};
if (dataTreeEvaluator) {
oldEvalTree = klonaJson(dataTreeEvaluator.getEvalTree());
setupUpdateTreeResponse = dataTreeEvaluator.setupUpdateTreeWithDifferences(
updatedValuePaths,
pathsToSkipFromEval,
@ -86,7 +83,6 @@ export function evalTreeWithChanges(
setupUpdateTreeResponse,
metaUpdates,
pathsToSkipFromEval,
oldEvalTree,
);
}
@ -107,14 +103,12 @@ export const evaluateAndPushResponse = (
setupUpdateTreeResponse: UpdateTreeResponse,
metaUpdates: EvalMetaUpdates,
additionalPathsAddedAsUpdates: string[],
oldEvalTree: DataTree,
) => {
const response = evaluateAndGenerateResponse(
dataTreeEvaluator,
setupUpdateTreeResponse,
metaUpdates,
additionalPathsAddedAsUpdates,
oldEvalTree,
);
return pushResponseToMainThread(response);
@ -125,7 +119,6 @@ export const evaluateAndGenerateResponse = (
setupUpdateTreeResponse: UpdateTreeResponse,
metaUpdates: EvalMetaUpdates,
additionalPathsAddedAsUpdates: string[],
oldEvalTree: DataTree,
): UpdateDataTreeMessageData => {
// generate default response first and later add updates to it
const defaultResponse = getDefaultEvalResponse();
@ -158,7 +151,6 @@ export const evaluateAndGenerateResponse = (
dataTreeEvaluator.oldConfigTree,
unEvalUpdates,
[],
oldEvalTree,
);
const dataTree = updateEvalProps(dataTreeEvaluator) || {};

View File

@ -33,7 +33,6 @@ import type { CanvasWidgetsReduxState } from "ee/reducers/entityReducers/canvasW
import type { MetaWidgetsReduxState } from "reducers/entityReducers/metaWidgetsReducer";
import type { Attributes } from "instrumentation/types";
import { updateActionsToEvalTree } from "./updateActionData";
import { klona as klonaJSON } from "klona/json";
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@ -194,7 +193,6 @@ export async function evalTree(
isNewTree = true;
} else {
const tree = dataTreeEvaluator.getEvalTree();
const oldDataTree = klonaJSON(tree);
// during update cycles update actions to the dataTree directly
// this is useful in cases where we have debounced updateActionData and a regular evaluation
@ -243,7 +241,6 @@ export async function evalTree(
configTree,
unEvalUpdates,
Object.keys(metaWidgets),
oldDataTree,
),
);

View File

@ -2,7 +2,6 @@ import { dataTreeEvaluator } from "./evalTree";
import type { EvalWorkerASyncRequest } from "../types";
import ExecutionMetaData from "../fns/utils/ExecutionMetaData";
import { evaluateAndPushResponse } from "../evalTreeWithChanges";
import { klona as klonaJson } from "klona/json";
export default async function (request: EvalWorkerASyncRequest) {
const { data } = request;
@ -21,8 +20,6 @@ export default async function (request: EvalWorkerASyncRequest) {
ExecutionMetaData.setExecutionMetaData({ triggerMeta, eventType });
const oldEvalTree = klonaJson(dataTreeEvaluator.getEvalTree());
if (!triggerMeta.onPageLoad) {
const { evalOrder, unEvalUpdates } = dataTreeEvaluator.setupUpdateTree(
unEvalTree.unEvalTree,
@ -37,7 +34,6 @@ export default async function (request: EvalWorkerASyncRequest) {
{ evalOrder, unEvalUpdates, jsUpdates: {} },
[],
[],
oldEvalTree,
);
}

View File

@ -305,7 +305,6 @@ describe("DataTreeEvaluator", () => {
configTree as unknown as ConfigTree,
unEvalUpdates,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies).toStrictEqual({
@ -478,7 +477,6 @@ describe("DataTreeEvaluator", () => {
arrayAccessorCyclicDependencyConfig.apiSuccessConfigTree,
unEvalUpdates,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies["Api1"]).toStrictEqual(
undefined,
@ -503,7 +501,6 @@ describe("DataTreeEvaluator", () => {
arrayAccessorCyclicDependencyConfig.apiFailureConfigTree,
unEvalUpdates2,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies["Api1"]).toStrictEqual(
@ -533,7 +530,6 @@ describe("DataTreeEvaluator", () => {
arrayAccessorCyclicDependencyConfig.apiSuccessConfigTree,
unEvalUpdates,
[],
dataTreeEvaluator.evalTree,
);
// success: response -> [{...}, {...}]
@ -548,7 +544,6 @@ describe("DataTreeEvaluator", () => {
arrayAccessorCyclicDependencyConfig.apiSuccessConfigTree2,
unEvalUpdates2,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies["Api1"]).toStrictEqual(undefined);
@ -577,7 +572,6 @@ describe("DataTreeEvaluator", () => {
nestedArrayAccessorCyclicDependencyConfig.apiSuccessConfigTree,
unEvalUpdates,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies["Api1"]).toStrictEqual(
undefined,
@ -605,7 +599,6 @@ describe("DataTreeEvaluator", () => {
nestedArrayAccessorCyclicDependencyConfig.apiFailureConfigTree,
unEvalUpdates2,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies["Api1"]).toStrictEqual(
undefined,
@ -637,7 +630,6 @@ describe("DataTreeEvaluator", () => {
nestedArrayAccessorCyclicDependencyConfig.apiSuccessConfigTree,
unEvalUpdates,
[],
dataTreeEvaluator.evalTree,
);
// success: response -> [ [{...}, {...}, {...}], [{...}, {...}, {...}] ]
@ -652,7 +644,6 @@ describe("DataTreeEvaluator", () => {
nestedArrayAccessorCyclicDependencyConfig.apiSuccessConfigTree2,
unEvalUpdates2,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies["Api1"]).toStrictEqual(undefined);
@ -680,7 +671,6 @@ describe("DataTreeEvaluator", () => {
nestedArrayAccessorCyclicDependencyConfig.apiSuccessConfigTree,
unEvalUpdates,
[],
dataTreeEvaluator.evalTree,
);
// success: response -> [ [{...}, {...}, {...}], [{...}, {...}, {...}], [] ]
@ -695,7 +685,6 @@ describe("DataTreeEvaluator", () => {
nestedArrayAccessorCyclicDependencyConfig.apiSuccessConfigTree3,
unEvalUpdates2,
[],
dataTreeEvaluator.evalTree,
);
expect(dataTreeEvaluator.dependencies["Api1"]).toStrictEqual(undefined);
expect(dataTreeEvaluator.dependencies["Api1.data"]).toStrictEqual([]);

View File

@ -490,7 +490,6 @@ export default class DataTreeEvaluator {
evaluationOrder,
undefined,
this.oldConfigTree,
{},
);
/**
@ -960,7 +959,6 @@ export default class DataTreeEvaluator {
configTree: ConfigTree,
unevalUpdates: DataTreeDiff[],
metaWidgetIds: string[] = [],
oldEvalTree: DataTree,
): {
evalMetaUpdates: EvalMetaUpdates;
staleMetaIds: string[];
@ -984,7 +982,6 @@ export default class DataTreeEvaluator {
metaWidgets: metaWidgetIds,
},
configTree,
oldEvalTree,
);
const evaluationEndTime = performance.now();
@ -1127,7 +1124,6 @@ export default class DataTreeEvaluator {
metaWidgets: [],
},
oldConfigTree: ConfigTree,
oldEvalTree: DataTree,
): {
evaluatedTree: DataTree;
evalMetaUpdates: EvalMetaUpdates;
@ -1323,7 +1319,7 @@ export default class DataTreeEvaluator {
if (!propertyPath) continue;
// Get old value from oldEvalTree for comparison
const oldValue = get(oldEvalTree, fullPropertyPath);
const oldValue = get(this.getPrevState(), fullPropertyPath);
switch (entityType) {
case ENTITY_TYPE.WIDGET: {