diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-23 21:15:39 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-23 21:15:39 +0300 |
commit | 68caf5fd883a7fd5a3395c2e5ae2a5c511445613 (patch) | |
tree | 7a63a675e90f9819e32dc9927d3a1fae6e3ffe75 /app/assets | |
parent | 003d7f2a09668af85f94e48ed49d60862b96d8f8 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets')
36 files changed, 104 insertions, 105 deletions
diff --git a/app/assets/javascripts/alert_management/constants.js b/app/assets/javascripts/alert_management/constants.js index c98d3865621..4ab772e4523 100644 --- a/app/assets/javascripts/alert_management/constants.js +++ b/app/assets/javascripts/alert_management/constants.js @@ -37,12 +37,10 @@ export const ALERTS_STATUS_TABS = [ }, ]; -/* eslint-disable @gitlab/require-i18n-strings */ - /** * Tracks snowplow event when user views alerts list */ export const trackAlertListViewsOptions = { - category: 'Alert Management', + category: 'Alert Management', // eslint-disable-line @gitlab/require-i18n-strings action: 'view_alerts_list', }; diff --git a/app/assets/javascripts/alerts_settings/services/index.js b/app/assets/javascripts/alerts_settings/services/index.js index e45ea772ddd..4df5ed425a5 100644 --- a/app/assets/javascripts/alerts_settings/services/index.js +++ b/app/assets/javascripts/alerts_settings/services/index.js @@ -1,4 +1,3 @@ -/* eslint-disable @gitlab/require-i18n-strings */ import axios from '~/lib/utils/axios_utils'; export default { @@ -9,7 +8,7 @@ export default { return axios.post(endpoint, data, { headers: { 'Content-Type': 'application/json', - Authorization: `Bearer ${token}`, + Authorization: `Bearer ${token}`, // eslint-disable-line @gitlab/require-i18n-strings }, }); }, diff --git a/app/assets/javascripts/blob/sketch_viewer.js b/app/assets/javascripts/blob/sketch_viewer.js index 2c1c6339fdb..834aa3e5354 100644 --- a/app/assets/javascripts/blob/sketch_viewer.js +++ b/app/assets/javascripts/blob/sketch_viewer.js @@ -1,8 +1,7 @@ -/* eslint-disable no-new */ import SketchLoader from './sketch'; export default () => { const el = document.getElementById('js-sketch-viewer'); - new SketchLoader(el); + new SketchLoader(el); // eslint-disable-line no-new }; diff --git a/app/assets/javascripts/blob/template_selector.js b/app/assets/javascripts/blob/template_selector.js index 7eb699eacbe..59b7f82c10e 100644 --- a/app/assets/javascripts/blob/template_selector.js +++ b/app/assets/javascripts/blob/template_selector.js @@ -1,5 +1,3 @@ -/* eslint-disable class-methods-use-this */ - import $ from 'jquery'; import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown'; import { loadingIconForLegacyJS } from '~/loading_icon_for_legacy_js'; @@ -70,6 +68,7 @@ export default class TemplateSelector { return this.requestFile(item); } + // eslint-disable-next-line class-methods-use-this requestFile() { // This `requestFile` method is an abstract method that should // be added by all subclasses. diff --git a/app/assets/javascripts/blob_edit/blob_bundle.js b/app/assets/javascripts/blob_edit/blob_bundle.js index 01d35a0980f..7e667409556 100644 --- a/app/assets/javascripts/blob_edit/blob_bundle.js +++ b/app/assets/javascripts/blob_edit/blob_bundle.js @@ -1,5 +1,3 @@ -/* eslint-disable no-new */ - import $ from 'jquery'; import initPopover from '~/blob/suggest_gitlab_ci_yml'; import { createAlert } from '~/alert'; @@ -54,6 +52,7 @@ export default () => { import('./edit_blob') .then(({ default: EditBlob } = {}) => { + // eslint-disable-next-line no-new new EditBlob({ assetsPath: `${urlRoot}${assetsPath}`, filePath, @@ -80,7 +79,7 @@ export default () => { window.onbeforeunload = null; }); - new NewCommitForm(editBlobForm); + new NewCommitForm(editBlobForm); // eslint-disable-line no-new // returning here blocks page navigation window.onbeforeunload = () => ''; diff --git a/app/assets/javascripts/build_artifacts.js b/app/assets/javascripts/build_artifacts.js index e895df01f2c..4d1c4be73a3 100644 --- a/app/assets/javascripts/build_artifacts.js +++ b/app/assets/javascripts/build_artifacts.js @@ -1,5 +1,3 @@ -/* eslint-disable func-names */ - import $ from 'jquery'; import { hide, initTooltips, show } from '~/tooltips'; import { parseBoolean } from './lib/utils/common_utils'; @@ -24,6 +22,7 @@ export default class BuildArtifacts { // eslint-disable-next-line class-methods-use-this setupEntryClick() { + // eslint-disable-next-line func-names return $('.tree-holder').on('click', 'tr[data-link]', function () { visitUrl(this.dataset.link, parseBoolean(this.dataset.externalLink)); }); diff --git a/app/assets/javascripts/ci/runner/components/registration/utils.js b/app/assets/javascripts/ci/runner/components/registration/utils.js index 94d75bc4562..d1ba646ad0c 100644 --- a/app/assets/javascripts/ci/runner/components/registration/utils.js +++ b/app/assets/javascripts/ci/runner/components/registration/utils.js @@ -1,4 +1,3 @@ -/* eslint-disable @gitlab/require-i18n-strings */ import { DEFAULT_PLATFORM, LINUX_PLATFORM, @@ -60,7 +59,7 @@ export const registerCommand = ({ registrationToken, description, }) => { - const lines = [`${executable({ platform })} register`]; + const lines = [`${executable({ platform })} register`]; // eslint-disable-line @gitlab/require-i18n-strings if (url) { lines.push(` --url ${url}`); } @@ -75,7 +74,7 @@ export const registerCommand = ({ }; export const runCommand = ({ platform }) => { - return `${executable({ platform })} run`; + return `${executable({ platform })} run`; // eslint-disable-line @gitlab/require-i18n-strings }; const importInstallScript = ({ platform = DEFAULT_PLATFORM }) => { diff --git a/app/assets/javascripts/constants.js b/app/assets/javascripts/constants.js index defc2cbe276..f43a2d5d8ff 100644 --- a/app/assets/javascripts/constants.js +++ b/app/assets/javascripts/constants.js @@ -1,6 +1,5 @@ -/* eslint-disable @gitlab/require-i18n-strings */ - export const getModifierKey = (removeSuffix = false) => { + // eslint-disable-next-line @gitlab/require-i18n-strings const winKey = `Ctrl${removeSuffix ? '' : '+'}`; return window.gl?.client?.isMac ? '⌘' : winKey; }; diff --git a/app/assets/javascripts/content_editor/extensions/playable.js b/app/assets/javascripts/content_editor/extensions/playable.js index ed343d8acf8..01ffc217894 100644 --- a/app/assets/javascripts/content_editor/extensions/playable.js +++ b/app/assets/javascripts/content_editor/extensions/playable.js @@ -1,5 +1,3 @@ -/* eslint-disable @gitlab/require-i18n-strings */ - import { Node } from '@tiptap/core'; const queryPlayableElement = (element, mediaType) => element.querySelector(mediaType); @@ -44,7 +42,7 @@ export default Node.create({ parseHTML() { return [ { - tag: `.${this.options.mediaType}-container`, + tag: `.${this.options.mediaType}-container`, // eslint-disable-line @gitlab/require-i18n-strings }, ]; }, diff --git a/app/assets/javascripts/content_editor/services/serialization_helpers.js b/app/assets/javascripts/content_editor/services/serialization_helpers.js index 540815f57c9..0a4353ab3dd 100644 --- a/app/assets/javascripts/content_editor/services/serialization_helpers.js +++ b/app/assets/javascripts/content_editor/services/serialization_helpers.js @@ -638,9 +638,8 @@ const generateStrikeTag = (wrapTagName = openTag) => { switch (type) { case '~~': return type; - /* eslint-disable @gitlab/require-i18n-strings */ - case '<del': - case '<strike': + case '<del': // eslint-disable-line @gitlab/require-i18n-strings + case '<strike': // eslint-disable-line @gitlab/require-i18n-strings case '<s': return wrapTagName(type.substring(1)); default: diff --git a/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown_filter.js b/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown_filter.js index 8ca4dc587a8..2cb9e9a56a3 100644 --- a/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown_filter.js +++ b/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown_filter.js @@ -1,5 +1,3 @@ -/* eslint-disable consistent-return */ - import fuzzaldrinPlus from 'fuzzaldrin-plus'; import $ from 'jquery'; import { debounce } from 'lodash'; @@ -59,6 +57,7 @@ export class GitLabDropdownFilter { return BLUR_KEYCODES.indexOf(keyCode) !== -1; } + // eslint-disable-next-line consistent-return filter(searchText) { let group; let results; @@ -114,9 +113,10 @@ export class GitLabDropdownFilter { const matches = fuzzaldrinPlus.match($el.text().trim(), searchText); if (!$el.is('.dropdown-header')) { if (matches.length) { - return $el.show().removeClass('option-hidden'); + $el.show().removeClass('option-hidden'); + } else { + $el.hide().addClass('option-hidden'); } - return $el.hide().addClass('option-hidden'); } }); } else { diff --git a/app/assets/javascripts/design_management/utils/cache_update.js b/app/assets/javascripts/design_management/utils/cache_update.js index 9ef0f336d43..1ae7b6a2110 100644 --- a/app/assets/javascripts/design_management/utils/cache_update.js +++ b/app/assets/javascripts/design_management/utils/cache_update.js @@ -1,8 +1,7 @@ -/* eslint-disable @gitlab/require-i18n-strings */ - import produce from 'immer'; import { differenceBy } from 'lodash'; import { createAlert } from '~/alert'; +import { TYPENAME_DISCUSSION, TYPENAME_TODO, TYPENAME_USER } from '~/graphql_shared/constants'; import { extractCurrentDiscussion, extractDesign, extractDesigns } from './design_management_utils'; import { ADD_IMAGE_DIFF_NOTE_ERROR, @@ -60,7 +59,7 @@ const addImageDiffNoteToStore = (store, createImageDiffNote, query, variables) = }); const newDiscussion = { - __typename: 'Discussion', + __typename: TYPENAME_DISCUSSION, id: createImageDiffNote.note.discussion.id, replyId: createImageDiffNote.note.discussion.replyId, resolvable: true, @@ -86,7 +85,7 @@ const addImageDiffNoteToStore = (store, createImageDiffNote, query, variables) = design.issue.participants.nodes = [ ...design.issue.participants.nodes, { - __typename: 'User', + __typename: TYPENAME_USER, ...createImageDiffNote.note.author, }, ]; @@ -199,7 +198,7 @@ export const addPendingTodoToStore = (store, pendingTodo, query, queryVariables) const data = produce(sourceData, (draftData) => { const design = extractDesign(draftData); const existingTodos = design.currentUserTodos?.nodes || []; - const newTodoNodes = [...existingTodos, { ...pendingTodo, __typename: 'Todo' }]; + const newTodoNodes = [...existingTodos, { ...pendingTodo, __typename: TYPENAME_TODO }]; if (!design.currentUserTodos) { design.currentUserTodos = { diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 9c5f2043933..29b77431f7d 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -16,6 +16,7 @@ import { __, s__ } from '~/locale'; import notesEventHub from '~/notes/event_hub'; import { generateTreeList } from '~/diffs/utils/tree_worker_utils'; import { sortTree } from '~/ide/stores/utils'; +import { containsSensitiveToken, confirmSensitiveAction } from '~/lib/utils/secret_detection'; import { PARALLEL_DIFF_VIEW_TYPE, INLINE_DIFF_VIEW_TYPE, @@ -555,13 +556,20 @@ export const toggleFileDiscussionWrappers = ({ commit }, diff) => { } }; -export const saveDiffDiscussion = ({ state, dispatch }, { note, formData }) => { +export const saveDiffDiscussion = async ({ state, dispatch }, { note, formData }) => { const postData = getNoteFormData({ commit: state.commit, note, ...formData, }); + if (containsSensitiveToken(note)) { + const confirmed = await confirmSensitiveAction(); + if (!confirmed) { + return null; + } + } + return dispatch('saveNote', postData, { root: true }) .then((result) => dispatch('updateDiscussion', result.discussion, { root: true })) .then((discussion) => dispatch('assignDiscussionsToDiff', [discussion])) @@ -822,13 +830,11 @@ export const setSuggestPopoverDismissed = ({ commit, state }) => }); export function changeCurrentCommit({ dispatch, commit, state }, { commitId }) { - /* eslint-disable @gitlab/require-i18n-strings */ if (!commitId) { return Promise.reject(new Error('`commitId` is a required argument')); } else if (!state.commit) { - return Promise.reject(new Error('`state` must already contain a valid `commit`')); + return Promise.reject(new Error('`state` must already contain a valid `commit`')); // eslint-disable-line @gitlab/require-i18n-strings } - /* eslint-enable @gitlab/require-i18n-strings */ // this is less than ideal, see: https://gitlab.com/gitlab-org/gitlab/-/issues/215421 const commitRE = new RegExp(state.commit.id, 'g'); diff --git a/app/assets/javascripts/error_tracking/utils.js b/app/assets/javascripts/error_tracking/utils.js index aeed5450022..afb91d3db51 100644 --- a/app/assets/javascripts/error_tracking/utils.js +++ b/app/assets/javascripts/error_tracking/utils.js @@ -1,13 +1,13 @@ -/* eslint-disable @gitlab/require-i18n-strings */ +const category = 'Error Tracking'; // eslint-disable-line @gitlab/require-i18n-strings /** * Tracks snowplow event when User clicks on error link to Sentry * @param {String} externalUrl that will be send as a property for the event */ export const trackClickErrorLinkToSentryOptions = (url) => ({ - category: 'Error Tracking', + category, action: 'click_error_link_to_sentry', - label: 'Error Link', + label: 'Error Link', // eslint-disable-line @gitlab/require-i18n-strings property: url, }); @@ -15,7 +15,7 @@ export const trackClickErrorLinkToSentryOptions = (url) => ({ * Tracks snowplow event when user views error list */ export const trackErrorListViewsOptions = { - category: 'Error Tracking', + category, action: 'view_errors_list', }; @@ -23,7 +23,7 @@ export const trackErrorListViewsOptions = { * Tracks snowplow event when user views error details */ export const trackErrorDetailsViewsOptions = { - category: 'Error Tracking', + category, action: 'view_error_details', }; @@ -31,6 +31,6 @@ export const trackErrorDetailsViewsOptions = { * Tracks snowplow event when error status is updated */ export const trackErrorStatusUpdateOptions = (status) => ({ - category: 'Error Tracking', + category, action: `update_${status}_status`, }); diff --git a/app/assets/javascripts/filtered_search/droplab/plugins/input_setter.js b/app/assets/javascripts/filtered_search/droplab/plugins/input_setter.js index 148d9a35b81..c2c46e4265a 100644 --- a/app/assets/javascripts/filtered_search/droplab/plugins/input_setter.js +++ b/app/assets/javascripts/filtered_search/droplab/plugins/input_setter.js @@ -1,5 +1,3 @@ -/* eslint-disable */ - const InputSetter = { init(hook) { this.hook = hook; @@ -33,11 +31,15 @@ const InputSetter = { setInput(config, selectedItem) { const input = config.input || this.hook.trigger; const newValue = selectedItem.getAttribute(config.valueAttribute); - const inputAttribute = config.inputAttribute; - - if (input.hasAttribute(inputAttribute)) return input.setAttribute(inputAttribute, newValue); - if (input.tagName === 'INPUT') return (input.value = newValue); - return (input.textContent = newValue); + const { inputAttribute } = config; + + if (input.hasAttribute(inputAttribute)) { + input.setAttribute(inputAttribute, newValue); + } else if (input.tagName === 'INPUT') { + input.value = newValue; + } else { + input.textContent = newValue; + } }, destroy() { diff --git a/app/assets/javascripts/filtered_search/droplab/utils.js b/app/assets/javascripts/filtered_search/droplab/utils.js index d7f49bf19d8..3d3470a16d0 100644 --- a/app/assets/javascripts/filtered_search/droplab/utils.js +++ b/app/assets/javascripts/filtered_search/droplab/utils.js @@ -1,5 +1,3 @@ -/* eslint-disable */ - import { template as _template } from 'lodash'; import { DATA_TRIGGER, DATA_DROPDOWN, TEMPLATE_REGEX } from './constants'; @@ -26,7 +24,7 @@ const utils = { closest(thisTag, stopTag) { while (thisTag && thisTag.tagName !== stopTag && thisTag.tagName !== 'HTML') { - thisTag = thisTag.parentNode; + thisTag = thisTag.parentNode; // eslint-disable-line no-param-reassign } return thisTag; }, diff --git a/app/assets/javascripts/graphql_shared/constants.js b/app/assets/javascripts/graphql_shared/constants.js index 77fca45c949..65aa38cfb99 100644 --- a/app/assets/javascripts/graphql_shared/constants.js +++ b/app/assets/javascripts/graphql_shared/constants.js @@ -22,6 +22,7 @@ export const TYPENAME_PACKAGES_PACKAGE = 'Packages::Package'; export const TYPENAME_PROJECT = 'Project'; export const TYPENAME_SCANNER_PROFILE = 'DastScannerProfile'; export const TYPENAME_SITE_PROFILE = 'DastSiteProfile'; +export const TYPENAME_TODO = 'Todo'; export const TYPENAME_USER = 'User'; export const TYPENAME_VULNERABILITIES_SCANNER = 'Vulnerabilities::Scanner'; export const TYPENAME_VULNERABILITY = 'Vulnerability'; diff --git a/app/assets/javascripts/ide/init_gitlab_web_ide.js b/app/assets/javascripts/ide/init_gitlab_web_ide.js index 4d3cefcb107..51af73decad 100644 --- a/app/assets/javascripts/ide/init_gitlab_web_ide.js +++ b/app/assets/javascripts/ide/init_gitlab_web_ide.js @@ -67,6 +67,7 @@ export const initGitlabWebIDE = async (el) => { links: { feedbackIssue: GITLAB_WEB_IDE_FEEDBACK_ISSUE, userPreferences: el.dataset.userPreferencesPath, + signIn: el.dataset.signInPath, }, editorFont: { srcUrl: editorFontSrcUrl, diff --git a/app/assets/javascripts/incidents/constants.js b/app/assets/javascripts/incidents/constants.js index dde40ec2983..6f8d5cf5f89 100644 --- a/app/assets/javascripts/incidents/constants.js +++ b/app/assets/javascripts/incidents/constants.js @@ -1,4 +1,3 @@ -/* eslint-disable @gitlab/require-i18n-strings */ import { s__ } from '~/locale'; export const I18N = { @@ -51,11 +50,13 @@ export const TH_INCIDENT_SLA_TEST_ID = { 'data-testid': 'incident-management-sla export const TH_PUBLISHED_TEST_ID = { 'data-testid': 'incident-management-published-sort' }; export const INCIDENT_DETAILS_PATH = 'incident'; +const category = 'Incident Management'; // eslint-disable-line @gitlab/require-i18n-strings + /** * Tracks snowplow event when user clicks create new incident */ export const trackIncidentCreateNewOptions = { - category: 'Incident Management', + category, action: 'create_incident_button_clicks', }; @@ -63,7 +64,7 @@ export const trackIncidentCreateNewOptions = { * Tracks snowplow event when user views incidents list */ export const trackIncidentListViewsOptions = { - category: 'Incident Management', + category, action: 'view_incidents_list', }; @@ -71,6 +72,6 @@ export const trackIncidentListViewsOptions = { * Tracks snowplow event when user views incident details */ export const trackIncidentDetailsViewsOptions = { - category: 'Incident Management', + category, action: 'view_incident_details', }; diff --git a/app/assets/javascripts/labels/create_label_dropdown.js b/app/assets/javascripts/labels/create_label_dropdown.js index 60ab0c92256..fa0104fcf12 100644 --- a/app/assets/javascripts/labels/create_label_dropdown.js +++ b/app/assets/javascripts/labels/create_label_dropdown.js @@ -1,5 +1,3 @@ -/* eslint-disable func-names */ - import $ from 'jquery'; import Api from '~/api'; import { humanize } from '~/lib/utils/text_utility'; @@ -49,6 +47,7 @@ export default class CreateLabelDropdown { addBinding() { const self = this; + // eslint-disable-next-line func-names this.$colorSuggestions.on('click', function (e) { const $this = $(this); self.addColorValue(e, $this); diff --git a/app/assets/javascripts/locale/ensure_single_line.cjs b/app/assets/javascripts/locale/ensure_single_line.cjs index c2c63777001..f7790cadc48 100644 --- a/app/assets/javascripts/locale/ensure_single_line.cjs +++ b/app/assets/javascripts/locale/ensure_single_line.cjs @@ -1,5 +1,3 @@ -/* eslint-disable import/no-commonjs */ - const SPLIT_REGEX = /\s*[\r\n]+\s*/; /** diff --git a/app/assets/javascripts/monitoring/utils.js b/app/assets/javascripts/monitoring/utils.js index 0d849e1a2d8..5f4d2703d21 100644 --- a/app/assets/javascripts/monitoring/utils.js +++ b/app/assets/javascripts/monitoring/utils.js @@ -97,7 +97,6 @@ export const graphDataValidatorForValues = (isValues, graphData) => { */ const isClusterHealthBoard = () => (document.body.dataset.page || '').includes(':clusters:show'); -/* eslint-disable @gitlab/require-i18n-strings */ /** * Tracks snowplow event when user generates link to metric chart * @param {String} chart link that will be sent as a property for the event @@ -107,13 +106,13 @@ export const generateLinkToChartOptions = (chartLink) => { const isCLusterHealthBoard = isClusterHealthBoard(); const category = isCLusterHealthBoard - ? 'Cluster Monitoring' + ? 'Cluster Monitoring' // eslint-disable-line @gitlab/require-i18n-strings : 'Incident Management::Embedded metrics'; const action = isCLusterHealthBoard ? 'generate_link_to_cluster_metric_chart' : 'generate_link_to_metrics_chart'; - return { category, action, label: 'Chart link', property: chartLink }; + return { category, action, label: 'Chart link', property: chartLink }; // eslint-disable-line @gitlab/require-i18n-strings }; /** @@ -125,13 +124,13 @@ export const downloadCSVOptions = (title) => { const isCLusterHealthBoard = isClusterHealthBoard(); const category = isCLusterHealthBoard - ? 'Cluster Monitoring' + ? 'Cluster Monitoring' // eslint-disable-line @gitlab/require-i18n-strings : 'Incident Management::Embedded metrics'; const action = isCLusterHealthBoard ? 'download_csv_of_cluster_metric_chart' : 'download_csv_of_metrics_dashboard_chart'; - return { category, action, label: 'Chart title', property: title }; + return { category, action, label: 'Chart title', property: title }; // eslint-disable-line @gitlab/require-i18n-strings }; /* eslint-enable @gitlab/require-i18n-strings */ diff --git a/app/assets/javascripts/new_commit_form.js b/app/assets/javascripts/new_commit_form.js index 037be8467cb..c76ffce9168 100644 --- a/app/assets/javascripts/new_commit_form.js +++ b/app/assets/javascripts/new_commit_form.js @@ -1,4 +1,3 @@ -/* eslint-disable no-return-assign */ export default class NewCommitForm { constructor(form) { this.form = form; @@ -21,6 +20,6 @@ export default class NewCommitForm { this.createMergeRequestContainer.hide(); this.createMergeRequest.prop('checked', false); } - return (this.wasDifferent = different); + this.wasDifferent = different; } } diff --git a/app/assets/javascripts/notes/components/noteable_discussion.vue b/app/assets/javascripts/notes/components/noteable_discussion.vue index 60ae573bae7..3375e366ecf 100644 --- a/app/assets/javascripts/notes/components/noteable_discussion.vue +++ b/app/assets/javascripts/notes/components/noteable_discussion.vue @@ -11,6 +11,7 @@ import { s__, __, sprintf } from '~/locale'; import diffLineNoteFormMixin from '~/notes/mixins/diff_line_note_form'; import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue'; import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue'; +import { containsSensitiveToken, confirmSensitiveAction } from '~/lib/utils/secret_detection'; import eventHub from '../event_hub'; import noteable from '../mixins/noteable'; import resolvable from '../mixins/resolvable'; @@ -207,12 +208,21 @@ export default { this.isReplying = false; clearDraft(this.autosaveKey); }), - saveReply(noteText, form, callback) { + async saveReply(noteText, form, callback) { if (!noteText) { this.cancelReplyForm(); callback(); return; } + + if (containsSensitiveToken(noteText)) { + const confirmed = await confirmSensitiveAction(); + if (!confirmed) { + callback(); + return; + } + } + const postData = { in_reply_to_discussion_id: this.discussion.reply_id, target_type: this.getNoteableData.targetType, diff --git a/app/assets/javascripts/notes/components/noteable_note.vue b/app/assets/javascripts/notes/components/noteable_note.vue index d9340556012..ae2f94a5a80 100644 --- a/app/assets/javascripts/notes/components/noteable_note.vue +++ b/app/assets/javascripts/notes/components/noteable_note.vue @@ -13,6 +13,7 @@ import { truncateSha } from '~/lib/utils/text_utility'; import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue'; import { __, s__, sprintf } from '~/locale'; import { renderGFM } from '~/behaviors/markdown/render_gfm'; +import { containsSensitiveToken, confirmSensitiveAction } from '~/lib/utils/secret_detection'; import eventHub from '../event_hub'; import noteable from '../mixins/noteable'; import resolvable from '../mixins/resolvable'; @@ -296,7 +297,7 @@ export default { renderGFM(this.$refs.noteBody.$el); this.$emit('updateSuccess'); }, - formUpdateHandler({ noteText, callback, resolveDiscussion }) { + async formUpdateHandler({ noteText, callback, resolveDiscussion }) { const position = { ...this.note.position, }; @@ -319,6 +320,14 @@ export default { if (this.isDraft) return; + if (containsSensitiveToken(noteText)) { + const confirmed = await confirmSensitiveAction(); + if (!confirmed) { + callback(); + return; + } + } + const data = { endpoint: this.note.path, note: { diff --git a/app/assets/javascripts/notes/utils.js b/app/assets/javascripts/notes/utils.js index 14e97fcef46..9a1323cdaf2 100644 --- a/app/assets/javascripts/notes/utils.js +++ b/app/assets/javascripts/notes/utils.js @@ -1,4 +1,3 @@ -/* eslint-disable @gitlab/require-i18n-strings */ import { marked } from 'marked'; import { sanitize } from '~/lib/dompurify'; import { markdownConfig } from '~/lib/utils/text_utility'; @@ -8,9 +7,9 @@ import { markdownConfig } from '~/lib/utils/text_utility'; * @param {Boolean} enabled that will be send as a property for the event */ export const trackToggleTimelineView = (enabled) => ({ - category: 'Incident Management', + category: 'Incident Management', // eslint-disable-line @gitlab/require-i18n-strings action: 'toggle_incident_comments_into_timeline_view', - label: 'Status', + label: 'Status', // eslint-disable-line @gitlab/require-i18n-strings property: enabled, }); diff --git a/app/assets/javascripts/pages/groups/shared/group_details.js b/app/assets/javascripts/pages/groups/shared/group_details.js index 52124865bcc..dba65c7e791 100644 --- a/app/assets/javascripts/pages/groups/shared/group_details.js +++ b/app/assets/javascripts/pages/groups/shared/group_details.js @@ -1,5 +1,3 @@ -/* eslint-disable no-new */ - import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation'; import initInviteMembersBanner from '~/groups/init_invite_members_banner'; import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; @@ -7,11 +5,11 @@ import initNotificationsDropdown from '~/notifications'; import ProjectsList from '~/projects_list'; export default function initGroupDetails() { - new ShortcutsNavigation(); + new ShortcutsNavigation(); // eslint-disable-line no-new initNotificationsDropdown(); - new ProjectsList(); + new ProjectsList(); // eslint-disable-line no-new initInviteMembersBanner(); initInviteMembersModal(); diff --git a/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue b/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue index 8f76d7535f1..83cd64c17ed 100644 --- a/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue +++ b/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue @@ -255,7 +255,7 @@ export default { this.canRefetchHeaderPipeline = true; this.$apollo.queries.headerPipeline.refetch(); }, - /* eslint-disable @gitlab/require-i18n-strings */ + // eslint-disable-next-line @gitlab/require-i18n-strings reportFailure({ type, err = 'No error string passed.', skipSentry = false }) { this.showAlert = true; this.alertType = type; @@ -263,7 +263,6 @@ export default { reportToSentry(this.$options.name, `type: ${type}, info: ${err}`); } }, - /* eslint-enable @gitlab/require-i18n-strings */ updateShowLinksState(val) { this.showLinks = val; }, diff --git a/app/assets/javascripts/pipelines/components/graph/utils.js b/app/assets/javascripts/pipelines/components/graph/utils.js index 3da792cb9df..54985a24593 100644 --- a/app/assets/javascripts/pipelines/components/graph/utils.js +++ b/app/assets/javascripts/pipelines/components/graph/utils.js @@ -35,7 +35,6 @@ const calculatePipelineLayersInfo = (pipeline, componentName, metricsPath) => { return layers; }; -/* eslint-disable @gitlab/require-i18n-strings */ const getQueryHeaders = (etagResource) => { return { fetchOptions: { @@ -52,6 +51,7 @@ const getQueryHeaders = (etagResource) => { const serializeGqlErr = (gqlError) => { const { locations = [], message = '', path = [] } = gqlError; + // eslint-disable-next-line @gitlab/require-i18n-strings return ` ${message}. Locations: ${locations @@ -74,14 +74,12 @@ const serializeLoadErrors = (errors) => { } if (!isEmpty(networkError)) { - return `Network error: ${networkError.message}`; + return `Network error: ${networkError.message}`; // eslint-disable-line @gitlab/require-i18n-strings } return message; }; -/* eslint-enable @gitlab/require-i18n-strings */ - const toggleQueryPollingByVisibility = (queryRef, interval = 10000) => { const stopStartQuery = (query) => { if (!Visibility.hidden()) { diff --git a/app/assets/javascripts/single_file_diff.js b/app/assets/javascripts/single_file_diff.js index b613e356a7a..bab167bb7e4 100644 --- a/app/assets/javascripts/single_file_diff.js +++ b/app/assets/javascripts/single_file_diff.js @@ -1,5 +1,3 @@ -/* eslint-disable consistent-return */ - import $ from 'jquery'; import { createAlert } from '~/alert'; import { loadingIconForLegacyJS } from '~/loading_icon_for_legacy_js'; @@ -66,7 +64,7 @@ export default class SingleFileDiff { } else { this.$chevronDownIcon.removeClass('gl-display-none'); this.$chevronRightIcon.addClass('gl-display-none'); - return this.getContentHTML(cb); + return this.getContentHTML(cb); // eslint-disable-line consistent-return } } diff --git a/app/assets/javascripts/syntax_highlight.js b/app/assets/javascripts/syntax_highlight.js index 065e1080897..d79252f6bb7 100644 --- a/app/assets/javascripts/syntax_highlight.js +++ b/app/assets/javascripts/syntax_highlight.js @@ -1,5 +1,3 @@ -/* eslint-disable consistent-return */ - // Syntax Highlighter // // Applies a syntax highlighting color scheme CSS class to any element with the @@ -14,6 +12,7 @@ export default function syntaxHighlight($els = null) { if (!$els || $els.length === 0) return; const els = $els.get ? $els.get() : $els; + // eslint-disable-next-line consistent-return const handler = (el) => { if (el.classList === undefined) { return el; diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue index 20284c4a3d8..26527361b2e 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_how_to_merge_modal.vue @@ -1,5 +1,4 @@ <script> -/* eslint-disable @gitlab/require-i18n-strings */ import { GlModal, GlLink, GlSprintf } from '@gitlab/ui'; import { helpPagePath } from '~/helpers/help_page_helper'; import { escapeShellString } from '~/lib/utils/text_utility'; @@ -87,11 +86,11 @@ export default { const escapedOriginBranch = escapeShellString(`origin/${this.sourceBranch}`); return this.isFork - ? `git fetch "${this.sourceProjectDefaultUrl}" ${this.escapedSourceBranch}\ngit checkout -b ${this.escapedForkBranch} FETCH_HEAD` - : `git fetch origin\ngit checkout -b ${this.escapedSourceBranch} ${escapedOriginBranch}`; + ? `git fetch "${this.sourceProjectDefaultUrl}" ${this.escapedSourceBranch}\ngit checkout -b ${this.escapedForkBranch} FETCH_HEAD` // eslint-disable-line @gitlab/require-i18n-strings + : `git fetch origin\ngit checkout -b ${this.escapedSourceBranch} ${escapedOriginBranch}`; // eslint-disable-line @gitlab/require-i18n-strings }, mergeInfo2() { - return `git push origin ${this.escapedSourceBranch}`; + return `git push origin ${this.escapedSourceBranch}`; // eslint-disable-line @gitlab/require-i18n-strings }, escapedForkBranch() { return escapeShellString(`${this.sourceProjectPath}-${this.sourceBranch}`); diff --git a/app/assets/javascripts/vue_merge_request_widget/index.js b/app/assets/javascripts/vue_merge_request_widget/index.js index 183f450854a..a2f088a7a58 100644 --- a/app/assets/javascripts/vue_merge_request_widget/index.js +++ b/app/assets/javascripts/vue_merge_request_widget/index.js @@ -1,7 +1,3 @@ -// This is a false violation of @gitlab/no-runtime-template-compiler, since it -// creates a new Vue instance by spreading a _valid_ Vue component definition -// into the Vue constructor. -/* eslint-disable @gitlab/no-runtime-template-compiler */ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import MrWidgetOptions from 'ee_else_ce/vue_merge_request_widget/mr_widget_options.vue'; @@ -33,6 +29,10 @@ export default () => { gl.mrWidgetData.gitlabLogo = gon.gitlab_logo; gl.mrWidgetData.defaultAvatarUrl = gon.default_avatar_url; + // This is a false violation of @gitlab/no-runtime-template-compiler, since it + // creates a new Vue instance by spreading a _valid_ Vue component definition + // into the Vue constructor. + // eslint-disable-next-line @gitlab/no-runtime-template-compiler const vm = new Vue({ el: '#js-vue-mr-widget', provide: { diff --git a/app/assets/javascripts/vue_shared/alert_details/constants.js b/app/assets/javascripts/vue_shared/alert_details/constants.js index d106f545c61..4ee8d19770d 100644 --- a/app/assets/javascripts/vue_shared/alert_details/constants.js +++ b/app/assets/javascripts/vue_shared/alert_details/constants.js @@ -9,7 +9,8 @@ export const SEVERITY_LEVELS = { UNKNOWN: s__('severity|Unknown'), }; -/* eslint-disable @gitlab/require-i18n-strings */ +const category = 'Alert Management'; // eslint-disable-line @gitlab/require-i18n-strings + export const PAGE_CONFIG = { OPERATIONS: { TITLE: 'OPERATIONS', @@ -20,14 +21,14 @@ export const PAGE_CONFIG = { }, // Tracks snowplow event when user views alert details TRACK_ALERTS_DETAILS_VIEWS_OPTIONS: { - category: 'Alert Management', + category, action: 'view_alert_details', }, // Tracks snowplow event when alert status is updated TRACK_ALERT_STATUS_UPDATE_OPTIONS: { - category: 'Alert Management', + category, action: 'update_alert_status', - label: 'Status', + label: 'Status', // eslint-disable-line @gitlab/require-i18n-strings }, }, }; diff --git a/app/assets/javascripts/work_items/components/notes/work_item_discussion.vue b/app/assets/javascripts/work_items/components/notes/work_item_discussion.vue index 017f9a69444..7fa99958b9d 100644 --- a/app/assets/javascripts/work_items/components/notes/work_item_discussion.vue +++ b/app/assets/javascripts/work_items/components/notes/work_item_discussion.vue @@ -126,8 +126,7 @@ export default { this.isExpanded = !this.isExpanded; }, threadKey(note) { - /* eslint-disable @gitlab/require-i18n-strings */ - return `${note.id}-thread`; + return `${note.id}-thread`; // eslint-disable-line @gitlab/require-i18n-strings }, onReplied() { this.isExpanded = true; diff --git a/app/assets/javascripts/zen_mode.js b/app/assets/javascripts/zen_mode.js index 1aa3baca165..ccb9d05bc90 100644 --- a/app/assets/javascripts/zen_mode.js +++ b/app/assets/javascripts/zen_mode.js @@ -1,5 +1,3 @@ -/* eslint-disable consistent-return */ - // Zen Mode (full screen) textarea // /*= provides zen_mode:enter */ @@ -55,6 +53,7 @@ export default class ZenMode { $(document).on('zen_mode:leave', () => { this.exit(); }); + // eslint-disable-next-line consistent-return $(document).on('keydown', (e) => { // Esc if (e.keyCode === 27) { |