From 4e7c724e38871009f46bc0db562edb3298d0825c Mon Sep 17 00:00:00 2001
From: Vitaly Slobodin <vslobodin@gitlab.com>
Date: Fri, 12 Mar 2021 14:13:10 +0000
Subject: [PATCH] Remove redundant no-param-reassign

Remove redundant no-param-reassign directives
---
 .eslintrc.yml                                         | 11 +++++++++++
 .../components/projects_token_selector.vue            |  2 --
 app/assets/javascripts/alerts_settings/graphql.js     |  2 --
 .../alerts_settings/utils/cache_updates.js            |  3 ---
 app/assets/javascripts/design_management/graphql.js   |  1 -
 .../design_management/utils/cache_update.js           |  3 ---
 .../javascripts/jira_import/utils/cache_update.js     |  3 +--
 .../monitoring/components/charts/anomaly.vue          |  1 -
 .../settings/group/graphql/utils/cache_update.js      |  1 -
 .../registry/explorer/components/delete_image.vue     |  1 -
 .../registry/settings/graphql/utils/cache_update.js   |  1 -
 .../confidential/sidebar_confidentiality_widget.vue   |  1 -
 .../components/states/work_in_progress.vue            |  3 ---
 .../alert_details/components/sidebar/sidebar_todo.vue |  1 -
 .../javascripts/vue_shared/alert_details/index.js     |  1 -
 .../devops_adoption/utils/cache_updates.js            |  2 --
 .../components/select_projects_dropdown.vue           |  1 -
 ee/app/assets/javascripts/oncall_schedules/graphql.js |  1 -
 .../oncall_schedules/utils/cache_updates.js           |  2 --
 .../dast_profiles/graphql/cache_utils.js              |  1 -
 ...class_group_security_dashboard_vulnerabilities.vue |  1 -
 ...ss_instance_security_dashboard_vulnerabilities.vue |  1 -
 .../first_class_project_manager/project_manager.vue   |  2 --
 .../components/project_vulnerabilities.vue            |  1 -
 .../components/alerts/alerts_list.vue                 |  1 -
 25 files changed, 12 insertions(+), 36 deletions(-)

diff --git a/.eslintrc.yml b/.eslintrc.yml
index 678750c085b29..f1292aa27939f 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -43,6 +43,17 @@ rules:
   promise/always-return: off
   promise/no-callback-in-promise: off
   '@gitlab/no-global-event-off': error
+  no-param-reassign:
+    - error
+    - props: true
+      ignorePropertyModificationsFor:
+        - acc
+        - accumulator
+        - el
+        - element
+        - state
+      ignorePropertyModificationsForRegex:
+        - '^draft'
   import/order:
     - error
     - groups:
diff --git a/app/assets/javascripts/access_tokens/components/projects_token_selector.vue b/app/assets/javascripts/access_tokens/components/projects_token_selector.vue
index cc5532696c78c..a746f62b3a166 100644
--- a/app/assets/javascripts/access_tokens/components/projects_token_selector.vue
+++ b/app/assets/javascripts/access_tokens/components/projects_token_selector.vue
@@ -104,10 +104,8 @@ export default {
           const { projects: previousProjects } = previousResult;
 
           return produce(previousResult, (draftData) => {
-            /* eslint-disable no-param-reassign */
             draftData.projects.nodes = [...previousProjects.nodes, ...newProjects.nodes];
             draftData.projects.pageInfo = newProjects.pageInfo;
-            /* eslint-enable no-param-reassign */
           });
         },
       });
diff --git a/app/assets/javascripts/alerts_settings/graphql.js b/app/assets/javascripts/alerts_settings/graphql.js
index c6c19d26adb1d..72817f636ff7c 100644
--- a/app/assets/javascripts/alerts_settings/graphql.js
+++ b/app/assets/javascripts/alerts_settings/graphql.js
@@ -27,10 +27,8 @@ const resolvers = {
       const sourceData = cache.readQuery({ query: getCurrentIntegrationQuery });
       const data = produce(sourceData, (draftData) => {
         if (id === null) {
-          // eslint-disable-next-line no-param-reassign
           draftData.currentIntegration = null;
         } else {
-          // eslint-disable-next-line no-param-reassign
           draftData.currentIntegration = {
             id,
             name,
diff --git a/app/assets/javascripts/alerts_settings/utils/cache_updates.js b/app/assets/javascripts/alerts_settings/utils/cache_updates.js
index c29160c1e3964..716c709a93153 100644
--- a/app/assets/javascripts/alerts_settings/utils/cache_updates.js
+++ b/app/assets/javascripts/alerts_settings/utils/cache_updates.js
@@ -15,7 +15,6 @@ const deleteIntegrationFromStore = (store, query, { httpIntegrationDestroy }, va
   });
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.project.alertManagementIntegrations.nodes = draftData.project.alertManagementIntegrations.nodes.filter(
       ({ id }) => id !== integration.id,
     );
@@ -46,7 +45,6 @@ const addIntegrationToStore = (
   });
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.project.alertManagementIntegrations.nodes = [
       integration,
       ...draftData.project.alertManagementIntegrations.nodes,
@@ -72,7 +70,6 @@ const addHttpIntegrationToStore = (store, query, { httpIntegrationCreate }, vari
   });
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.project.alertManagementHttpIntegrations.nodes = [
       integration,
       ...draftData.project.alertManagementHttpIntegrations.nodes,
diff --git a/app/assets/javascripts/design_management/graphql.js b/app/assets/javascripts/design_management/graphql.js
index c6c3e66a01f51..9a0547ee9db15 100644
--- a/app/assets/javascripts/design_management/graphql.js
+++ b/app/assets/javascripts/design_management/graphql.js
@@ -20,7 +20,6 @@ const resolvers = {
       const sourceData = cache.readQuery({ query: activeDiscussionQuery });
 
       const data = produce(sourceData, (draftData) => {
-        // eslint-disable-next-line no-param-reassign
         draftData.activeDiscussion = {
           __typename: 'ActiveDiscussion',
           id,
diff --git a/app/assets/javascripts/design_management/utils/cache_update.js b/app/assets/javascripts/design_management/utils/cache_update.js
index c561eda12edf7..33c4fd5a7d901 100644
--- a/app/assets/javascripts/design_management/utils/cache_update.js
+++ b/app/assets/javascripts/design_management/utils/cache_update.js
@@ -41,7 +41,6 @@ const addNewVersionToStore = (store, query, version) => {
   const sourceData = store.readQuery(query);
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.project.issue.designCollection.versions.nodes = [
       version,
       ...draftData.project.issue.designCollection.versions.nodes,
@@ -168,7 +167,6 @@ const addNewDesignToStore = (store, designManagementUpload, query) => {
         nodes: newVersions,
       },
     };
-    // eslint-disable-next-line no-param-reassign
     draftData.project.issue.designCollection = updatedDesigns;
   });
 
@@ -182,7 +180,6 @@ const moveDesignInStore = (store, designManagementMove, query) => {
   const sourceData = store.readQuery(query);
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.project.issue.designCollection.designs =
       designManagementMove.designCollection.designs;
   });
diff --git a/app/assets/javascripts/jira_import/utils/cache_update.js b/app/assets/javascripts/jira_import/utils/cache_update.js
index db7dbb7353f25..aa6c6a3ca233c 100644
--- a/app/assets/javascripts/jira_import/utils/cache_update.js
+++ b/app/assets/javascripts/jira_import/utils/cache_update.js
@@ -21,8 +21,7 @@ export const addInProgressImportToStore = (store, jiraImportStart, fullPath) =>
   store.writeQuery({
     ...queryDetails,
     data: produce(sourceData, (draftData) => {
-      draftData.project.jiraImportStatus = IMPORT_STATE.SCHEDULED; // eslint-disable-line no-param-reassign
-      // eslint-disable-next-line no-param-reassign
+      draftData.project.jiraImportStatus = IMPORT_STATE.SCHEDULED;
       draftData.project.jiraImports.nodes = [
         ...sourceData.project.jiraImports.nodes,
         jiraImportStart.jiraImport,
diff --git a/app/assets/javascripts/monitoring/components/charts/anomaly.vue b/app/assets/javascripts/monitoring/components/charts/anomaly.vue
index 8569a67da3468..a995497ab9c7e 100644
--- a/app/assets/javascripts/monitoring/components/charts/anomaly.vue
+++ b/app/assets/javascripts/monitoring/components/charts/anomaly.vue
@@ -86,7 +86,6 @@ export default {
       const originalMetricQuery = this.graphData.metrics[0];
 
       const metricQuery = produce(originalMetricQuery, (draftQuery) => {
-        // eslint-disable-next-line no-param-reassign
         draftQuery.result[0].values = draftQuery.result[0].values.map(([x, y]) => [
           x,
           y + this.yOffset,
diff --git a/app/assets/javascripts/packages_and_registries/settings/group/graphql/utils/cache_update.js b/app/assets/javascripts/packages_and_registries/settings/group/graphql/utils/cache_update.js
index 06b57fe013ff3..fb06f557d6634 100644
--- a/app/assets/javascripts/packages_and_registries/settings/group/graphql/utils/cache_update.js
+++ b/app/assets/javascripts/packages_and_registries/settings/group/graphql/utils/cache_update.js
@@ -9,7 +9,6 @@ export const updateGroupPackageSettings = (fullPath) => (client, { data: updated
   const sourceData = client.readQuery(queryAndParams);
 
   const data = produce(sourceData, (draftState) => {
-    // eslint-disable-next-line no-param-reassign
     draftState.group.packageSettings = {
       ...updatedData.updateNamespacePackageSettings.packageSettings,
     };
diff --git a/app/assets/javascripts/registry/explorer/components/delete_image.vue b/app/assets/javascripts/registry/explorer/components/delete_image.vue
index 22fe9fc1da6fe..a313854f5e4f3 100644
--- a/app/assets/javascripts/registry/explorer/components/delete_image.vue
+++ b/app/assets/javascripts/registry/explorer/components/delete_image.vue
@@ -29,7 +29,6 @@ export default {
       });
 
       const data = produce(sourceData, (draftState) => {
-        // eslint-disable-next-line no-param-reassign
         draftState.containerRepository.status =
           destroyContainerRepository.containerRepository.status;
       });
diff --git a/app/assets/javascripts/registry/settings/graphql/utils/cache_update.js b/app/assets/javascripts/registry/settings/graphql/utils/cache_update.js
index 6becaa38c7e4a..c4b2af13862ec 100644
--- a/app/assets/javascripts/registry/settings/graphql/utils/cache_update.js
+++ b/app/assets/javascripts/registry/settings/graphql/utils/cache_update.js
@@ -9,7 +9,6 @@ export const updateContainerExpirationPolicy = (projectPath) => (client, { data:
   const sourceData = client.readQuery(queryAndParams);
 
   const data = produce(sourceData, (draftState) => {
-    // eslint-disable-next-line no-param-reassign
     draftState.project.containerExpirationPolicy = {
       ...updatedData.updateContainerExpirationPolicy.containerExpirationPolicy,
     };
diff --git a/app/assets/javascripts/sidebar/components/confidential/sidebar_confidentiality_widget.vue b/app/assets/javascripts/sidebar/components/confidential/sidebar_confidentiality_widget.vue
index 1db68d3d5b1e7..ec5f07f9785f7 100644
--- a/app/assets/javascripts/sidebar/components/confidential/sidebar_confidentiality_widget.vue
+++ b/app/assets/javascripts/sidebar/components/confidential/sidebar_confidentiality_widget.vue
@@ -95,7 +95,6 @@ export default {
       });
 
       const data = produce(sourceData, (draftData) => {
-        // eslint-disable-next-line no-param-reassign
         draftData.workspace.issuable.confidential = !this.confidential;
       });
 
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue
index 1a549d5ee6fff..f0c624c5d8de2 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue
@@ -87,11 +87,8 @@ export default {
             });
 
             const data = produce(sourceData, (draftState) => {
-              // eslint-disable-next-line no-param-reassign
               draftState.project.mergeRequest.mergeableDiscussionsState = mergeableDiscussionsState;
-              // eslint-disable-next-line no-param-reassign
               draftState.project.mergeRequest.workInProgress = workInProgress;
-              // eslint-disable-next-line no-param-reassign
               draftState.project.mergeRequest.title = title;
             });
 
diff --git a/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_todo.vue b/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_todo.vue
index 39ac6c7fecaba..271f0b4e4bb87 100644
--- a/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_todo.vue
+++ b/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_todo.vue
@@ -116,7 +116,6 @@ export default {
       });
 
       const data = produce(sourceData, (draftData) => {
-        // eslint-disable-next-line no-param-reassign
         draftData.project.alertManagementAlerts.nodes[0].todos.nodes = [];
       });
 
diff --git a/app/assets/javascripts/vue_shared/alert_details/index.js b/app/assets/javascripts/vue_shared/alert_details/index.js
index 3ea43d7a843d1..50f2e63702bee 100644
--- a/app/assets/javascripts/vue_shared/alert_details/index.js
+++ b/app/assets/javascripts/vue_shared/alert_details/index.js
@@ -20,7 +20,6 @@ export default (selector) => {
       toggleSidebarStatus: (_, __, { cache }) => {
         const sourceData = cache.readQuery({ query: sidebarStatusQuery });
         const data = produce(sourceData, (draftData) => {
-          // eslint-disable-next-line no-param-reassign
           draftData.sidebarStatus = !draftData.sidebarStatus;
         });
         cache.writeQuery({ query: sidebarStatusQuery, data });
diff --git a/ee/app/assets/javascripts/analytics/devops_report/devops_adoption/utils/cache_updates.js b/ee/app/assets/javascripts/analytics/devops_report/devops_adoption/utils/cache_updates.js
index d715ac502acc7..54397efa589bc 100644
--- a/ee/app/assets/javascripts/analytics/devops_report/devops_adoption/utils/cache_updates.js
+++ b/ee/app/assets/javascripts/analytics/devops_report/devops_adoption/utils/cache_updates.js
@@ -7,7 +7,6 @@ export const addSegmentToCache = (store, segment) => {
   });
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.devopsAdoptionSegments.nodes = [...draftData.devopsAdoptionSegments.nodes, segment];
   });
 
@@ -23,7 +22,6 @@ export const deleteSegmentFromCache = (store, segmentId) => {
   });
 
   const updatedData = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.devopsAdoptionSegments.nodes = draftData.devopsAdoptionSegments.nodes.filter(
       ({ id }) => id !== segmentId,
     );
diff --git a/ee/app/assets/javascripts/analytics/repository_analytics/components/select_projects_dropdown.vue b/ee/app/assets/javascripts/analytics/repository_analytics/components/select_projects_dropdown.vue
index fb741e7553e0e..77f19af76670d 100644
--- a/ee/app/assets/javascripts/analytics/repository_analytics/components/select_projects_dropdown.vue
+++ b/ee/app/assets/javascripts/analytics/repository_analytics/components/select_projects_dropdown.vue
@@ -112,7 +112,6 @@ export default {
           },
           updateQuery(previousResult, { fetchMoreResult }) {
             const results = produce(fetchMoreResult, (draftData) => {
-              // eslint-disable-next-line no-param-reassign
               draftData.group.projects.nodes = [
                 ...previousResult.group.projects.nodes,
                 ...draftData.group.projects.nodes,
diff --git a/ee/app/assets/javascripts/oncall_schedules/graphql.js b/ee/app/assets/javascripts/oncall_schedules/graphql.js
index 12049713bda93..11bff93a36d80 100644
--- a/ee/app/assets/javascripts/oncall_schedules/graphql.js
+++ b/ee/app/assets/javascripts/oncall_schedules/graphql.js
@@ -11,7 +11,6 @@ const resolvers = {
     updateShiftTimeUnitWidth: (_, { shiftTimeUnitWidth = 0 }, { cache }) => {
       const sourceData = cache.readQuery({ query: getShiftTimeUnitWidthQuery });
       const data = produce(sourceData, (draftData) => {
-        // eslint-disable-next-line no-param-reassign
         draftData.shiftTimeUnitWidth = shiftTimeUnitWidth;
       });
       cache.writeQuery({ query: getShiftTimeUnitWidthQuery, data });
diff --git a/ee/app/assets/javascripts/oncall_schedules/utils/cache_updates.js b/ee/app/assets/javascripts/oncall_schedules/utils/cache_updates.js
index 302afc8dbe42d..5abb65faf7f7f 100644
--- a/ee/app/assets/javascripts/oncall_schedules/utils/cache_updates.js
+++ b/ee/app/assets/javascripts/oncall_schedules/utils/cache_updates.js
@@ -47,7 +47,6 @@ const deleteScheduleFromStore = (store, query, { oncallScheduleDestroy }, variab
   });
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.project.incidentManagementOncallSchedules.nodes = draftData.project.incidentManagementOncallSchedules.nodes.filter(
       ({ id }) => id !== schedule.id,
     );
@@ -72,7 +71,6 @@ const updateScheduleFromStore = (store, query, { oncallScheduleUpdate }, variabl
   });
 
   const data = produce(sourceData, (draftData) => {
-    // eslint-disable-next-line no-param-reassign
     draftData.project.incidentManagementOncallSchedules.nodes = draftData.project.incidentManagementOncallSchedules.nodes.map(
       (scheduleToUpdate) => {
         return scheduleToUpdate.iid === schedule.iid ? schedule : scheduleToUpdate;
diff --git a/ee/app/assets/javascripts/security_configuration/dast_profiles/graphql/cache_utils.js b/ee/app/assets/javascripts/security_configuration/dast_profiles/graphql/cache_utils.js
index 287abb1a3480c..2b0fb50dc525c 100644
--- a/ee/app/assets/javascripts/security_configuration/dast_profiles/graphql/cache_utils.js
+++ b/ee/app/assets/javascripts/security_configuration/dast_profiles/graphql/cache_utils.js
@@ -31,7 +31,6 @@ export const removeProfile = ({ profileId, profileType, store, queryBody }) => {
   const sourceData = store.readQuery(queryBody);
 
   const data = produce(sourceData, (draftState) => {
-    // eslint-disable-next-line no-param-reassign
     draftState.project[profileType].edges = draftState.project[profileType].edges.filter(
       ({ node }) => {
         return node.id !== profileId;
diff --git a/ee/app/assets/javascripts/security_dashboard/components/first_class_group_security_dashboard_vulnerabilities.vue b/ee/app/assets/javascripts/security_dashboard/components/first_class_group_security_dashboard_vulnerabilities.vue
index 1f0dd9e007c28..b4e30f9d623ce 100644
--- a/ee/app/assets/javascripts/security_dashboard/components/first_class_group_security_dashboard_vulnerabilities.vue
+++ b/ee/app/assets/javascripts/security_dashboard/components/first_class_group_security_dashboard_vulnerabilities.vue
@@ -84,7 +84,6 @@ export default {
           variables: { after: this.pageInfo.endCursor },
           updateQuery: (previousResult, { fetchMoreResult }) => {
             return produce(fetchMoreResult, (draftData) => {
-              // eslint-disable-next-line no-param-reassign
               draftData.group.vulnerabilities.nodes = [
                 ...previousResult.group.vulnerabilities.nodes,
                 ...draftData.group.vulnerabilities.nodes,
diff --git a/ee/app/assets/javascripts/security_dashboard/components/first_class_instance_security_dashboard_vulnerabilities.vue b/ee/app/assets/javascripts/security_dashboard/components/first_class_instance_security_dashboard_vulnerabilities.vue
index b4f44e1828f1a..6258aacc80552 100644
--- a/ee/app/assets/javascripts/security_dashboard/components/first_class_instance_security_dashboard_vulnerabilities.vue
+++ b/ee/app/assets/javascripts/security_dashboard/components/first_class_instance_security_dashboard_vulnerabilities.vue
@@ -82,7 +82,6 @@ export default {
           variables: { after: this.pageInfo.endCursor },
           updateQuery: (previousResult, { fetchMoreResult }) => {
             return produce(fetchMoreResult, (draftData) => {
-              // eslint-disable-next-line no-param-reassign
               draftData.vulnerabilities.nodes = [
                 ...previousResult.vulnerabilities.nodes,
                 ...draftData.vulnerabilities.nodes,
diff --git a/ee/app/assets/javascripts/security_dashboard/components/first_class_project_manager/project_manager.vue b/ee/app/assets/javascripts/security_dashboard/components/first_class_project_manager/project_manager.vue
index 94ae03f9d04cd..6f441c77f1923 100644
--- a/ee/app/assets/javascripts/security_dashboard/components/first_class_project_manager/project_manager.vue
+++ b/ee/app/assets/javascripts/security_dashboard/components/first_class_project_manager/project_manager.vue
@@ -82,7 +82,6 @@ export default {
               const newProject = results.addProjectToSecurityDashboard.project;
 
               const data = produce(sourceData, (draftData) => {
-                // eslint-disable-next-line no-param-reassign
                 draftData.instanceSecurityDashboard.projects.nodes = [
                   ...draftData.instanceSecurityDashboard.projects.nodes,
                   {
@@ -157,7 +156,6 @@ export default {
             const sourceData = store.readQuery({ query: projectsQuery });
 
             const data = produce(sourceData, (draftData) => {
-              // eslint-disable-next-line no-param-reassign
               draftData.instanceSecurityDashboard.projects.nodes = draftData.instanceSecurityDashboard.projects.nodes.filter(
                 (curr) => curr.id !== id,
               );
diff --git a/ee/app/assets/javascripts/security_dashboard/components/project_vulnerabilities.vue b/ee/app/assets/javascripts/security_dashboard/components/project_vulnerabilities.vue
index 860ba8910db2a..676703407916d 100644
--- a/ee/app/assets/javascripts/security_dashboard/components/project_vulnerabilities.vue
+++ b/ee/app/assets/javascripts/security_dashboard/components/project_vulnerabilities.vue
@@ -112,7 +112,6 @@ export default {
           variables: { after: this.pageInfo.endCursor },
           updateQuery: (previousResult, { fetchMoreResult }) => {
             return produce(fetchMoreResult, (draftData) => {
-              // eslint-disable-next-line no-param-reassign
               draftData.project.vulnerabilities.nodes = [
                 ...previousResult.project.vulnerabilities.nodes,
                 ...draftData.project.vulnerabilities.nodes,
diff --git a/ee/app/assets/javascripts/threat_monitoring/components/alerts/alerts_list.vue b/ee/app/assets/javascripts/threat_monitoring/components/alerts/alerts_list.vue
index a499f7dc3ab7a..1fb0bcce00763 100644
--- a/ee/app/assets/javascripts/threat_monitoring/components/alerts/alerts_list.vue
+++ b/ee/app/assets/javascripts/threat_monitoring/components/alerts/alerts_list.vue
@@ -103,7 +103,6 @@ export default {
           variables: { nextPageCursor: this.pageInfo.endCursor },
           updateQuery: (previousResult, { fetchMoreResult }) => {
             const results = produce(fetchMoreResult, (draftData) => {
-              // eslint-disable-next-line no-param-reassign
               draftData.project.alertManagementAlerts.nodes = [
                 ...previousResult.project.alertManagementAlerts.nodes,
                 ...draftData.project.alertManagementAlerts.nodes,
-- 
GitLab