From 11c88a6c97a8c79a4519999d7fd5182be40bc4e5 Mon Sep 17 00:00:00 2001 From: Ayush Pahwa Date: Wed, 25 Sep 2024 21:34:59 +0530 Subject: [PATCH 1/8] create: feature flag for eslint migration --- app/client/src/ce/entities/FeatureFlag.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/client/src/ce/entities/FeatureFlag.ts b/app/client/src/ce/entities/FeatureFlag.ts index 63d49c89f77f..cf4377d77516 100644 --- a/app/client/src/ce/entities/FeatureFlag.ts +++ b/app/client/src/ce/entities/FeatureFlag.ts @@ -30,6 +30,7 @@ export const FEATURE_FLAG = { release_actions_redesign_enabled: "release_actions_redesign_enabled", rollout_remove_feature_walkthrough_enabled: "rollout_remove_feature_walkthrough_enabled", + rollout_eslint_enabled: "rollout_eslint_enabled", release_drag_drop_building_blocks_enabled: "release_drag_drop_building_blocks_enabled", release_table_cell_label_value_enabled: @@ -75,6 +76,7 @@ export const DEFAULT_FEATURE_FLAG_VALUE: FeatureFlags = { release_actions_redesign_enabled: false, rollout_remove_feature_walkthrough_enabled: true, rollout_js_enabled_one_click_binding_enabled: true, + rollout_eslint_enabled: false, rollout_side_by_side_enabled: false, ab_learnability_ease_of_initial_use_enabled: true, ab_learnability_discoverability_collapse_all_except_data_enabled: true, From 8c4ad0f80e7a1ab97aee2c7f7d0bec085d0c58b8 Mon Sep 17 00:00:00 2001 From: Ayush Pahwa Date: Wed, 25 Sep 2024 21:35:59 +0530 Subject: [PATCH 2/8] update: enum for linter engines --- app/client/src/plugins/Linting/constants.ts | 5 +++++ .../plugins/Linting/utils/getLintingErrors.ts | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/client/src/plugins/Linting/constants.ts b/app/client/src/plugins/Linting/constants.ts index 6ea64ce2633e..fe0bde300633 100644 --- a/app/client/src/plugins/Linting/constants.ts +++ b/app/client/src/plugins/Linting/constants.ts @@ -2,6 +2,11 @@ import { ECMA_VERSION } from "@shared/ast"; import type { LintOptions } from "jshint"; import isEntityFunction from "./utils/isEntityFunction"; +export const enum LINTER_VERSION { + "JSHINT" = "JSHint", + "ESLINT" = "ESLint", +} + export const lintOptions = (globalData: Record) => ({ indent: 2, diff --git a/app/client/src/plugins/Linting/utils/getLintingErrors.ts b/app/client/src/plugins/Linting/utils/getLintingErrors.ts index eccbe7d0afc0..e8e6aaa48edc 100644 --- a/app/client/src/plugins/Linting/utils/getLintingErrors.ts +++ b/app/client/src/plugins/Linting/utils/getLintingErrors.ts @@ -25,6 +25,7 @@ import { IGNORED_LINT_ERRORS, lintOptions, SUPPORTED_WEB_APIS, + LINTER_VERSION, } from "../constants"; import type { getLintingErrorsProps } from "../types"; import { JSLibraries } from "workers/common/JSLibrary"; @@ -38,9 +39,24 @@ import { generate } from "astring"; import getInvalidModuleInputsError from "ee/plugins/Linting/utils/getInvalidModuleInputsError"; import { objectKeys } from "@appsmith/utils"; import { profileFn } from "UITelemetry/generateWebWorkerTraces"; +import { WorkerEnv } from "workers/Evaluation/handlers/workerEnv"; +import { FEATURE_FLAG } from "ee/entities/FeatureFlag"; const EvaluationScriptPositions: Record = {}; +function getLinterVersion() { + let linterVersion = LINTER_VERSION.JSHINT; + + const flagValues = WorkerEnv.getFeatureFlags(); + const flagName = FEATURE_FLAG.rollout_eslint_enabled; + + if (!!flagValues && flagName in flagValues && flagValues[flagName]) { + linterVersion = LINTER_VERSION.ESLINT; + } + + return linterVersion; +} + function getEvaluationScriptPosition(scriptType: EvaluationScriptType) { if (isEmpty(EvaluationScriptPositions)) { // We are computing position of <