diff --git a/.eslintrc.yml b/.eslintrc.yml index 678750c085b296aba8ef72cdf88ac10e4b7da8cd..f1292aa27939f82a8777fe807ff25337d62466e9 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 cc5532696c78c889d11ddc99cdc13d70d0564183..a746f62b3a1666597b8afd701a3000cac0b06e3f 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 c6c19d26adb1dc21f3337478780b3495fb9ad6bc..72817f636ff7c2e0269854026a4bc01539e5b142 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 c29160c1e396471fe3461870cc9dbaa361788aa0..716c709a93153c31803a53d96d8aa1f683a7a3db 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 c6c3e66a01f513556832f16330d03f25243e1402..9a0547ee9db15a25000efc5fb39386065309dbd8 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 c561eda12edf7409a9083c7eaef21926b3138c4c..33c4fd5a7d9013d8f4e2bb941f04b0f3919a030e 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 db7dbb7353f2503a27689787efbdbdd9565b7884..aa6c6a3ca233cbabfabe66f2cd5efd8332c56541 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 8569a67da346874238fce214a03d04b091066902..a995497ab9c7e393e0fab3abcac667540308e6e4 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 06b57fe013ff3fcd825ac75db57ce7be808defb5..fb06f557d66343891ebc938089168152a2c8a6b0 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 22fe9fc1da6fe4988ff4dbb3a414a59a667d78fa..a313854f5e4f311f9d5567590bf442b96c294513 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 6becaa38c7e4ac4e99721e3bb10b2e4a79638959..c4b2af13862ec78cec43492974d92e29c47f74a7 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 1db68d3d5b1e786cef7524cb5e2cf6e3e6445b94..ec5f07f9785f75136b715f51590768f6504df0a2 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 1a549d5ee6fffeb32025565f6972c57f3f3bb167..f0c624c5d8de27d9c36849cc52f95bedb99c2727 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 39ac6c7fecabac48b7016736b1e4e52bb8005f4a..271f0b4e4bb87cd12a70131e7ad2d4e670017e5f 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 3ea43d7a843d196b8c7af1fc86e42715a37553bd..50f2e63702bee096c6392d36cb327e0b22c3bffc 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 d715ac502acc796096c853c300b3acad0808a84f..54397efa589bc8f2a8f4540c932d2b1b536df0da 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 fb741e7553e0ec4bbdbcaac9fcf967bbb3c3704f..77f19af76670d30482dd4f988ac7c0d613023c00 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 12049713bda935a5a2e34eb4b0f44042f6f6aef1..11bff93a36d80cab0152aef431999dbba5c967af 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 302afc8dbe42d6a92faf211dfaa386c4bc1e4d41..5abb65faf7f7f1d51ee228436471d0b015d7fdd4 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 287abb1a3480cf45f73988da3fd11ea893353ba5..2b0fb50dc525c25c2baf1eab1bb30211ebe6df35 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 1f0dd9e007c288b477694c90dde06af3e6b0d9f0..b4e30f9d623cefd8bb5d450b0564e1c141db1d9d 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 b4f44e1828f1adbe1da7da97482fb317cfeaa239..6258aacc80552507f7dfa307ae40a29d21ffba96 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 94ae03f9d04cd1a1256c100df56c660ac57d0566..6f441c77f19233e37ffd06bd14f0b10c5fd950ef 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 860ba8910db2aa8b40e54aec299eaad9c8c1fbb8..676703407916d5cd8279c555d75c4a8ad7b76e5a 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 a499f7dc3ab7a01f21daccaa99a4870a2693739b..1fb0bcce007639fae91e4507fe8fab1df82195f8 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,