From f8edcff7e9aff93f8ac605c19e542204b0ed9ba2 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 22 Dec 2022 03:09:39 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- app/assets/javascripts/autosave.js | 59 +-- .../components/submit_dropdown.vue | 3 +- app/assets/javascripts/deprecated_notes.js | 12 +- .../design_notes/design_reply_form.vue | 3 +- .../javascripts/issuable/issuable_form.js | 21 +- .../notes/components/comment_form.vue | 2 +- .../javascripts/notes/mixins/autosave.js | 3 +- .../listbox_input/listbox_input.vue | 17 +- .../components/source_viewer/constants.js | 4 + .../source_viewer/source_viewer.vue | 8 +- .../show/components/issuable_edit_form.vue | 5 +- app/controllers/concerns/check_rate_limit.rb | 15 +- .../concerns/issuable_collections.rb | 1 + .../concerns/issuable_collections_action.rb | 6 + app/controllers/projects/issues_controller.rb | 4 + .../projects/merge_requests_controller.rb | 3 + .../resolvers/concerns/search_arguments.rb | 23 ++ app/models/clusters/providers/aws.rb | 12 - app/models/clusters/providers/gcp.rb | 6 - .../clusters/aws/authorize_role_service.rb | 74 ---- .../clusters/aws/fetch_credentials_service.rb | 80 ---- .../clusters/aws/finalize_creation_service.rb | 139 ------- .../clusters/aws/provision_service.rb | 85 ----- .../aws/verify_provision_status_service.rb | 50 --- app/services/clusters/create_service.rb | 4 +- .../clusters/gcp/fetch_operation_service.rb | 31 -- .../clusters/gcp/finalize_creation_service.rb | 127 ------- .../clusters/gcp/provision_service.rb | 56 --- .../gcp/verify_provision_status_service.rb | 50 --- app/workers/all_queues.yml | 8 +- app/workers/cluster_provision_worker.rb | 16 +- .../wait_for_cluster_creation_worker.rb | 16 +- .../rate_limit_issuable_searches.yml | 8 + .../backend/create_source_code_be/index.md | 2 + lib/api/helpers.rb | 10 + lib/api/helpers/rate_limiter.rb | 17 +- lib/api/issues.rb | 6 + lib/api/merge_requests.rb | 3 + lib/gitlab/application_rate_limiter.rb | 32 ++ locale/gitlab.pot | 36 -- .../admin/clusters_controller_spec.rb | 4 - .../concerns/check_rate_limit_spec.rb | 4 +- .../groups/clusters_controller_spec.rb | 4 - .../projects/clusters_controller_spec.rb | 4 - spec/frontend/autosave_spec.js | 128 +++---- .../components/submit_dropdown_spec.js | 2 + .../design_notes/design_reply_form_spec.js | 24 +- .../components/diff_line_note_form_spec.js | 3 +- spec/frontend/issuable/issuable_form_spec.js | 10 +- .../notes/components/comment_form_spec.js | 9 +- .../notes/components/note_body_spec.js | 12 +- .../listbox_input/listbox_input_spec.js | 36 +- .../source_viewer/source_viewer_spec.js | 17 +- .../components/issuable_edit_form_spec.js | 24 +- spec/lib/api/helpers/rate_limiter_spec.rb | 4 +- .../gitlab/application_rate_limiter_spec.rb | 46 +++ spec/models/clusters/providers/aws_spec.rb | 33 -- spec/models/clusters/providers/gcp_spec.rb | 25 -- spec/requests/api/graphql/ci/jobs_spec.rb | 8 +- spec/requests/api/graphql/issues_spec.rb | 26 ++ .../api/issues/get_project_issues_spec.rb | 61 ++-- spec/requests/api/issues/issues_spec.rb | 5 + spec/requests/api/merge_requests_spec.rb | 10 + spec/requests/dashboard_controller_spec.rb | 28 ++ .../projects/issues_controller_spec.rb | 22 ++ .../merge_requests_controller_spec.rb | 22 ++ .../aws/authorize_role_service_spec.rb | 102 ------ .../aws/fetch_credentials_service_spec.rb | 139 ------- .../aws/finalize_creation_service_spec.rb | 124 ------- .../clusters/aws/provision_service_spec.rb | 130 ------- .../verify_provision_status_service_spec.rb | 76 ---- spec/services/clusters/create_service_spec.rb | 1 - .../gcp/fetch_operation_service_spec.rb | 45 --- .../gcp/finalize_creation_service_spec.rb | 161 --------- .../clusters/gcp/provision_service_spec.rb | 71 ---- .../verify_provision_status_service_spec.rb | 111 ------ .../clusters/create_service_shared.rb | 5 +- ...issuables_list_metadata_shared_examples.rb | 4 + .../rate_limited_endpoint_shared_examples.rb | 26 +- .../api/issuable_search_shared_examples.rb | 32 ++ spec/workers/cluster_provision_worker_spec.rb | 47 --- .../wait_for_cluster_creation_worker_spec.rb | 47 --- vendor/aws/cloudformation/eks_cluster.yaml | 342 ------------------ .../aws/iam/eks_cluster_read_only_policy.json | 17 - 84 files changed, 587 insertions(+), 2521 deletions(-) delete mode 100644 app/services/clusters/aws/authorize_role_service.rb delete mode 100644 app/services/clusters/aws/fetch_credentials_service.rb delete mode 100644 app/services/clusters/aws/finalize_creation_service.rb delete mode 100644 app/services/clusters/aws/provision_service.rb delete mode 100644 app/services/clusters/aws/verify_provision_status_service.rb delete mode 100644 app/services/clusters/gcp/fetch_operation_service.rb delete mode 100644 app/services/clusters/gcp/finalize_creation_service.rb delete mode 100644 app/services/clusters/gcp/provision_service.rb delete mode 100644 app/services/clusters/gcp/verify_provision_status_service.rb create mode 100644 config/feature_flags/development/rate_limit_issuable_searches.yml delete mode 100644 spec/services/clusters/aws/authorize_role_service_spec.rb delete mode 100644 spec/services/clusters/aws/fetch_credentials_service_spec.rb delete mode 100644 spec/services/clusters/aws/finalize_creation_service_spec.rb delete mode 100644 spec/services/clusters/aws/provision_service_spec.rb delete mode 100644 spec/services/clusters/aws/verify_provision_status_service_spec.rb delete mode 100644 spec/services/clusters/gcp/fetch_operation_service_spec.rb delete mode 100644 spec/services/clusters/gcp/finalize_creation_service_spec.rb delete mode 100644 spec/services/clusters/gcp/provision_service_spec.rb delete mode 100644 spec/services/clusters/gcp/verify_provision_status_service_spec.rb delete mode 100644 spec/workers/cluster_provision_worker_spec.rb delete mode 100644 spec/workers/wait_for_cluster_creation_worker_spec.rb delete mode 100644 vendor/aws/cloudformation/eks_cluster.yaml delete mode 100644 vendor/aws/iam/eks_cluster_read_only_policy.json diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js index 5ab66acaf80..2e187eae17c 100644 --- a/app/assets/javascripts/autosave.js +++ b/app/assets/javascripts/autosave.js @@ -1,56 +1,57 @@ -/* eslint-disable no-param-reassign, consistent-return */ - +import { parseBoolean } from '~/lib/utils/common_utils'; import AccessorUtilities from './lib/utils/accessor'; export default class Autosave { constructor(field, key, fallbackKey, lockVersion) { this.field = field; - this.type = this.field.prop('type'); + this.type = this.field.getAttribute('type'); this.isLocalStorageAvailable = AccessorUtilities.canUseLocalStorage(); - if (key.join != null) { - key = key.join('/'); - } - this.key = `autosave/${key}`; + this.key = Array.isArray(key) ? `autosave/${key.join('/')}` : `autosave/${key}`; this.fallbackKey = fallbackKey; this.lockVersionKey = `${this.key}/lockVersion`; this.lockVersion = lockVersion; - this.field.data('autosave', this); this.restore(); - this.field.on('input', () => this.save()); + this.saveAction = this.save.bind(this); + // used by app/assets/javascripts/deprecated_notes.js + this.field.$autosave = this; + this.field.addEventListener('input', this.saveAction); } restore() { if (!this.isLocalStorageAvailable) return; - if (!this.field.length) return; const text = window.localStorage.getItem(this.key); const fallbackText = window.localStorage.getItem(this.fallbackKey); + const newValue = text || fallbackText; + if (newValue == null) return; + + let originalValue = this.field.value; if (this.type === 'checkbox') { - this.field.prop('checked', text || fallbackText); - } else if (text) { - this.field.val(text); - } else if (fallbackText) { - this.field.val(fallbackText); + originalValue = this.field.checked; + this.field.checked = parseBoolean(newValue); + } else { + this.field.value = newValue; } - this.field.trigger('input'); - // v-model does not update with jQuery trigger - // https://github.com/vuejs/vue/issues/2804#issuecomment-216968137 - const event = new Event('change', { bubbles: true, cancelable: false }); - const field = this.field.get(0); - if (field) { - field.dispatchEvent(event); - } + if (originalValue === newValue) return; + this.triggerInputEvents(); + } + + triggerInputEvents() { + // trigger events so @input, @change and v-model trigger in Vue components + const inputEvent = new Event('input', { bubbles: true, cancelable: false }); + const changeEvent = new Event('change', { bubbles: true, cancelable: false }); + this.field.dispatchEvent(inputEvent); + this.field.dispatchEvent(changeEvent); } getSavedLockVersion() { - if (!this.isLocalStorageAvailable) return; + if (!this.isLocalStorageAvailable) return undefined; return window.localStorage.getItem(this.lockVersionKey); } save() { - if (!this.field.length) return; - const value = this.type === 'checkbox' ? this.field.is(':checked') : this.field.val(); + const value = this.type === 'checkbox' ? this.field.checked : this.field.value; if (this.isLocalStorageAvailable && value) { if (this.fallbackKey) { @@ -66,7 +67,7 @@ export default class Autosave { } reset() { - if (!this.isLocalStorageAvailable) return; + if (!this.isLocalStorageAvailable) return undefined; window.localStorage.removeItem(this.lockVersionKey); window.localStorage.removeItem(this.fallbackKey); @@ -74,7 +75,7 @@ export default class Autosave { } dispose() { - // eslint-disable-next-line @gitlab/no-global-event-off - this.field.off('input'); + delete this.field.$autosave; + this.field.removeEventListener('input', this.saveAction); } } diff --git a/app/assets/javascripts/batch_comments/components/submit_dropdown.vue b/app/assets/javascripts/batch_comments/components/submit_dropdown.vue index acc3cbe10a0..ed0481e7a48 100644 --- a/app/assets/javascripts/batch_comments/components/submit_dropdown.vue +++ b/app/assets/javascripts/batch_comments/components/submit_dropdown.vue @@ -1,5 +1,4 @@ diff --git a/app/assets/javascripts/vue_shared/components/source_viewer/constants.js b/app/assets/javascripts/vue_shared/components/source_viewer/constants.js index a28460dd58e..f382ded90d7 100644 --- a/app/assets/javascripts/vue_shared/components/source_viewer/constants.js +++ b/app/assets/javascripts/vue_shared/components/source_viewer/constants.js @@ -140,3 +140,7 @@ export const BIDI_CHARS_CLASS_LIST = 'unicode-bidi has-tooltip'; export const BIDI_CHAR_TOOLTIP = 'Potentially unwanted character detected: Unicode BiDi Control'; export const HLJS_ON_AFTER_HIGHLIGHT = 'after:highlight'; + +// We fallback to highlighting these languages with Rouge, see the following issue for more detail: +// https://gitlab.com/gitlab-org/gitlab/-/issues/384375#note_1212752013 +export const LEGACY_FALLBACKS = ['python']; diff --git a/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer.vue b/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer.vue index 0cfee93ce5d..efafa67a733 100644 --- a/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer.vue +++ b/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer.vue @@ -11,6 +11,7 @@ import { EVENT_LABEL_FALLBACK, ROUGE_TO_HLJS_LANGUAGE_MAP, LINES_PER_CHUNK, + LEGACY_FALLBACKS, } from './constants'; import Chunk from './components/chunk.vue'; import { registerPlugins } from './plugins/index'; @@ -57,10 +58,11 @@ export default { }, unsupportedLanguage() { const supportedLanguages = Object.keys(languageLoader); - return ( + const unsupportedLanguage = !supportedLanguages.includes(this.language) && - !supportedLanguages.includes(this.blob.language?.toLowerCase()) - ); + !supportedLanguages.includes(this.blob.language?.toLowerCase()); + + return LEGACY_FALLBACKS.includes(this.language) || unsupportedLanguage; }, totalChunks() { return Object.keys(this.chunks).length; diff --git a/app/assets/javascripts/vue_shared/issuable/show/components/issuable_edit_form.vue b/app/assets/javascripts/vue_shared/issuable/show/components/issuable_edit_form.vue index 2fc1f935501..387fc5e0d1c 100644 --- a/app/assets/javascripts/vue_shared/issuable/show/components/issuable_edit_form.vue +++ b/app/assets/javascripts/vue_shared/issuable/show/components/issuable_edit_form.vue @@ -1,6 +1,5 @@