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:
parent
c7342fbc01
commit
b2bab20c2d
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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) || {};
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
),
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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([]);
|
||||
|
|
|
|||
|
|
@ -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: {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user