From 377d420e3d7e3f066c409714cbb9f7bb0a4882b6 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 16 Dec 2022 12:08:27 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- app/assets/javascripts/behaviors/index.js | 1 - .../behaviors/markdown/init_gfm.js | 13 ++ .../behaviors/markdown/render_gfm.js | 77 ++++---- .../behaviors/markdown/render_math.js | 6 +- .../javascripts/behaviors/preview_markdown.js | 1 + app/assets/javascripts/blob/viewer/index.js | 2 +- app/assets/javascripts/blob_edit/edit_blob.js | 1 + app/assets/javascripts/deprecated_notes.js | 1 + .../issues/show/components/description.vue | 3 +- app/assets/javascripts/merge_request_tabs.js | 3 +- .../notes/components/note_body.vue | 5 +- .../notes/components/noteable_note.vue | 3 +- .../shared/wikis/components/wiki_content.vue | 2 +- .../pages/shared/wikis/render_gfm_facade.js | 5 - .../pipeline_mini_graph.vue | 8 +- .../pipeline_mini_graph/pipeline_stages.vue | 8 +- .../releases/components/release_block.vue | 5 +- .../repository/components/preview/index.vue | 5 +- .../javascripts/terms/components/app.vue | 5 +- .../components/mr_widget_pipeline.vue | 3 +- .../viewers/markdown_viewer.vue | 5 +- .../vue_shared/components/markdown/field.vue | 6 +- .../components/markdown/field_view.vue | 10 +- .../markdown_drawer/markdown_drawer.vue | 5 +- .../components/notes/system_note.vue | 4 +- .../show/components/issuable_description.vue | 10 +- .../components/notes/system_note.vue | 4 +- .../work_item_description_rendered.vue | 5 +- .../stylesheets/page_bundles/pipelines.scss | 39 ++-- app/controllers/registrations_controller.rb | 1 + app/finders/ci/freeze_periods_finder.rb | 16 ++ app/finders/freeze_periods_finder.rb | 14 -- app/models/dependency_proxy/group_setting.rb | 2 - .../projects/commit/_commit_box.html.haml | 4 +- .../development/automated_email_provision.yml | 8 - ...ault_in_dependency_proxy_group_settings.rb | 7 + db/schema_migrations/20221213184314 | 1 + db/structure.sql | 2 +- .../geo/secondary_proxy/index.md | 72 ++++---- .../postgresql/multiple_databases.md | 141 ++++++++++++++ doc/integration/saml.md | 64 ++++--- doc/subscriptions/gitlab_dedicated/index.md | 4 +- doc/user/group/import/index.md | 28 ++- .../img/gitlab_import_history_page_v14_10.png | Bin 28219 -> 0 bytes doc/user/project/import/index.md | 172 ++++++++---------- doc/user/project/settings/import_export.md | 60 +++--- lib/api/freeze_periods.rb | 2 +- locale/gitlab.pot | 6 +- metrics_server/metrics_server.rb | 1 + .../registrations_controller_spec.rb | 20 ++ .../merge_request/user_sees_pipelines_spec.rb | 2 +- .../{ => ci}/freeze_periods_finder_spec.rb | 2 +- .../components/draft_note_spec.js | 3 +- .../components/preview_item_spec.js | 3 +- .../components/publish_dropdown_spec.js | 3 +- .../diffs/components/diff_discussions_spec.js | 3 +- .../ide/components/repo_editor_spec.js | 2 +- .../issues/show/components/app_spec.js | 2 +- .../show/components/description_spec.js | 6 +- .../notes/components/discussion_notes_spec.js | 3 +- .../components/noteable_discussion_spec.js | 3 +- .../notes/components/notes_app_spec.js | 3 +- .../wikis/components/wiki_content_spec.js | 4 +- .../pipeline_mini_graph_spec.js | 3 - .../pipeline_stages_spec.js | 6 - .../releases/components/release_block_spec.js | 7 +- spec/frontend/terms/components/app_spec.js | 7 +- .../content_viewer/content_viewer_spec.js | 3 +- .../viewers/markdown_viewer_spec.js | 4 +- .../components/markdown/field_spec.js | 8 +- .../components/markdown/field_view_spec.js | 8 +- .../components/notes/system_note_spec.js | 8 +- .../components/issuable_description_spec.js | 18 +- .../components/notes/system_note_spec.js | 8 +- .../work_item_description_rendered_spec.js | 8 +- spec/frontend/work_items/router_spec.js | 2 + spec/metrics_server/metrics_server_spec.rb | 3 +- spec/serializers/pipeline_serializer_spec.rb | 24 +-- 78 files changed, 578 insertions(+), 448 deletions(-) create mode 100644 app/assets/javascripts/behaviors/markdown/init_gfm.js delete mode 100644 app/assets/javascripts/pages/shared/wikis/render_gfm_facade.js create mode 100644 app/finders/ci/freeze_periods_finder.rb delete mode 100644 app/finders/freeze_periods_finder.rb delete mode 100644 config/feature_flags/development/automated_email_provision.yml create mode 100644 db/migrate/20221213184314_change_enabled_default_in_dependency_proxy_group_settings.rb create mode 100644 db/schema_migrations/20221213184314 create mode 100644 doc/administration/postgresql/multiple_databases.md delete mode 100644 doc/user/project/import/img/gitlab_import_history_page_v14_10.png rename spec/finders/{ => ci}/freeze_periods_finder_spec.rb (94%) diff --git a/app/assets/javascripts/behaviors/index.js b/app/assets/javascripts/behaviors/index.js index 30160248a77..220064e6673 100644 --- a/app/assets/javascripts/behaviors/index.js +++ b/app/assets/javascripts/behaviors/index.js @@ -1,6 +1,5 @@ import $ from 'jquery'; import './autosize'; -import './markdown/render_gfm'; import initCollapseSidebarOnWindowResize from './collapse_sidebar_on_window_resize'; import initCopyToClipboard from './copy_to_clipboard'; import installGlEmojiElement from './gl_emoji'; diff --git a/app/assets/javascripts/behaviors/markdown/init_gfm.js b/app/assets/javascripts/behaviors/markdown/init_gfm.js new file mode 100644 index 00000000000..d9c7cee50da --- /dev/null +++ b/app/assets/javascripts/behaviors/markdown/init_gfm.js @@ -0,0 +1,13 @@ +import $ from 'jquery'; +import { renderGFM } from '~/behaviors/markdown/render_gfm'; + +$.fn.renderGFM = function plugin() { + this.get().forEach(renderGFM); + return this; +}; +requestIdleCallback( + () => { + renderGFM(document.body); + }, + { timeout: 500 }, +); diff --git a/app/assets/javascripts/behaviors/markdown/render_gfm.js b/app/assets/javascripts/behaviors/markdown/render_gfm.js index 50430f8e607..2eab5b84e3e 100644 --- a/app/assets/javascripts/behaviors/markdown/render_gfm.js +++ b/app/assets/javascripts/behaviors/markdown/render_gfm.js @@ -1,4 +1,3 @@ -import $ from 'jquery'; import syntaxHighlight from '~/syntax_highlight'; import highlightCurrentUser from './highlight_current_user'; import { renderKroki } from './render_kroki'; @@ -8,40 +7,46 @@ import renderMetrics from './render_metrics'; import renderObservability from './render_observability'; import { renderJSONTable } from './render_json_table'; +function initPopovers(elements) { + if (!elements.length) return; + import(/* webpackChunkName: 'IssuablePopoverBundle' */ '~/issuable/popover') + .then(({ default: initIssuablePopovers }) => { + initIssuablePopovers(elements); + }) + .catch(() => {}); +} + // Render GitLab flavoured Markdown -// -// Delegates to syntax highlight and render math & mermaid diagrams. -// -$.fn.renderGFM = function renderGFM() { - syntaxHighlight(this.find('.js-syntax-highlight').get()); - renderKroki(this.find('.js-render-kroki[hidden]').get()); - renderMath(this.find('.js-render-math')); - renderSandboxedMermaid(this.find('.js-render-mermaid').get()); - renderJSONTable( - Array.from(this.find('[lang="json"][data-lang-params="table"]').get()).map((e) => e.parentNode), - ); +export function renderGFM(element) { + const [ + highlightEls, + krokiEls, + mathEls, + mermaidEls, + tableEls, + userEls, + popoverEls, + metricsEls, + observabilityEls, + ] = [ + '.js-syntax-highlight', + '.js-render-kroki[hidden]', + '.js-render-math', + '.js-render-mermaid', + '[lang="json"][data-lang-params="table"]', + '.gfm-project_member', + '.gfm-issue, .gfm-merge_request', + '.js-render-metrics', + '.js-render-observability', + ].map((selector) => Array.from(element.querySelectorAll(selector))); - highlightCurrentUser(this.find('.gfm-project_member').get()); - - const issuablePopoverElements = this.find('.gfm-issue, .gfm-merge_request').get(); - if (issuablePopoverElements.length) { - import(/* webpackChunkName: 'IssuablePopoverBundle' */ '~/issuable/popover') - .then(({ default: initIssuablePopovers }) => { - initIssuablePopovers(issuablePopoverElements); - }) - .catch(() => {}); - } - - renderMetrics(this.find('.js-render-metrics').get()); - renderObservability(this.find('.js-render-observability').get()); - return this; -}; - -$(() => { - window.requestIdleCallback( - () => { - $('body').renderGFM(); - }, - { timeout: 500 }, - ); -}); + syntaxHighlight(highlightEls); + renderKroki(krokiEls); + renderMath(mathEls); + renderSandboxedMermaid(mermaidEls); + renderJSONTable(tableEls.map((e) => e.parentNode)); + highlightCurrentUser(userEls); + renderMetrics(metricsEls); + renderObservability(observabilityEls); + initPopovers(popoverEls); +} diff --git a/app/assets/javascripts/behaviors/markdown/render_math.js b/app/assets/javascripts/behaviors/markdown/render_math.js index ac41af4df7a..7852a909160 100644 --- a/app/assets/javascripts/behaviors/markdown/render_math.js +++ b/app/assets/javascripts/behaviors/markdown/render_math.js @@ -175,14 +175,14 @@ class SafeMathRenderer { } } -export default function renderMath($els) { - if (!$els.length) return; +export default function renderMath(elements) { + if (!elements.length) return; Promise.all([ import(/* webpackChunkName: 'katex' */ 'katex'), import(/* webpackChunkName: 'katex' */ 'katex/dist/katex.min.css'), ]) .then(([katex]) => { - const renderer = new SafeMathRenderer($els.get(), katex); + const renderer = new SafeMathRenderer(elements, katex); renderer.render(); renderer.attachEvents(); }) diff --git a/app/assets/javascripts/behaviors/preview_markdown.js b/app/assets/javascripts/behaviors/preview_markdown.js index 68f5180cc03..86a05f24dfc 100644 --- a/app/assets/javascripts/behaviors/preview_markdown.js +++ b/app/assets/javascripts/behaviors/preview_markdown.js @@ -4,6 +4,7 @@ import $ from 'jquery'; import { createAlert } from '~/flash'; import axios from '~/lib/utils/axios_utils'; import { __ } from '~/locale'; +import '~/behaviors/markdown/init_gfm'; // MarkdownPreview // diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js index 8d323c335d3..439c4258805 100644 --- a/app/assets/javascripts/blob/viewer/index.js +++ b/app/assets/javascripts/blob/viewer/index.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import '~/behaviors/markdown/render_gfm'; +import '~/behaviors/markdown/init_gfm'; import { createAlert } from '~/flash'; import { __ } from '~/locale'; import { diff --git a/app/assets/javascripts/blob_edit/edit_blob.js b/app/assets/javascripts/blob_edit/edit_blob.js index 97d8b206307..46b3f16df77 100644 --- a/app/assets/javascripts/blob_edit/edit_blob.js +++ b/app/assets/javascripts/blob_edit/edit_blob.js @@ -9,6 +9,7 @@ import { addEditorMarkdownListeners } from '~/lib/utils/text_markdown'; import { insertFinalNewline } from '~/lib/utils/text_utility'; import TemplateSelectorMediator from '../blob/file_template_mediator'; import { BLOB_EDITOR_ERROR, BLOB_PREVIEW_ERROR } from './constants'; +import '~/behaviors/markdown/init_gfm'; export default class EditBlob { // The options object has: diff --git a/app/assets/javascripts/deprecated_notes.js b/app/assets/javascripts/deprecated_notes.js index eeb931543b2..c090a66a69d 100644 --- a/app/assets/javascripts/deprecated_notes.js +++ b/app/assets/javascripts/deprecated_notes.js @@ -40,6 +40,7 @@ import { localTimeAgo } from './lib/utils/datetime_utility'; import { getLocationHash } from './lib/utils/url_utility'; import { sprintf, s__, __ } from './locale'; import TaskList from './task_list'; +import '~/behaviors/markdown/init_gfm'; window.autosize = Autosize; diff --git a/app/assets/javascripts/issues/show/components/description.vue b/app/assets/javascripts/issues/show/components/description.vue index e225c858c8d..78e729b97da 100644 --- a/app/assets/javascripts/issues/show/components/description.vue +++ b/app/assets/javascripts/issues/show/components/description.vue @@ -28,6 +28,7 @@ import { TASK_TYPE_NAME, WIDGET_TYPE_DESCRIPTION, } from '~/work_items/constants'; +import { renderGFM } from '~/behaviors/markdown/render_gfm'; import animateMixin from '../mixins/animate'; import { convertDescriptionWithNewSort } from '../utils'; @@ -178,7 +179,7 @@ export default { }, methods: { renderGFM() { - $(this.$refs['gfm-content']).renderGFM(); + renderGFM(this.$refs['gfm-content']); if (this.canUpdate) { // eslint-disable-next-line no-new diff --git a/app/assets/javascripts/merge_request_tabs.js b/app/assets/javascripts/merge_request_tabs.js index b091fbadcd7..6aa4a024016 100644 --- a/app/assets/javascripts/merge_request_tabs.js +++ b/app/assets/javascripts/merge_request_tabs.js @@ -5,6 +5,7 @@ import { createAlert } from '~/flash'; import { getCookie, isMetaClick, parseBoolean, scrollToElement } from '~/lib/utils/common_utils'; import { parseUrlPathname } from '~/lib/utils/url_utility'; import createEventHub from '~/helpers/event_hub_factory'; +import { renderGFM } from '~/behaviors/markdown/render_gfm'; import BlobForkSuggestion from './blob/blob_fork_suggestion'; import Diff from './diff'; import { initDiffStatsDropdown } from './init_diff_stats_dropdown'; @@ -346,7 +347,7 @@ export default class MergeRequestTabs { this.commitPipelinesTable = destroyPipelines(this.commitPipelinesTable); } - $('.detail-page-description').renderGFM(); + renderGFM(document.querySelector('.detail-page-description')); if (shouldScroll) this.recallScroll(action); } else if (action === this.currentAction) { diff --git a/app/assets/javascripts/notes/components/note_body.vue b/app/assets/javascripts/notes/components/note_body.vue index 7aa86864e03..20cf21cd1b6 100644 --- a/app/assets/javascripts/notes/components/note_body.vue +++ b/app/assets/javascripts/notes/components/note_body.vue @@ -1,11 +1,10 @@