Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-08-26 15:10:41 +00:00
parent 6a0a4a80f7
commit d3fafe0995
23 changed files with 327 additions and 133 deletions

View File

@ -1,13 +1,50 @@
<script> <script>
import { GlAlert } from '@gitlab/ui';
import { s__ } from '~/locale'; import { s__ } from '~/locale';
import getProjectStorageCount from '../queries/project_storage.query.graphql';
import { parseGetProjectStorageResults } from '../utils';
export default { export default {
name: 'StorageCounterApp', name: 'StorageCounterApp',
components: {
GlAlert,
},
inject: ['projectPath'],
apollo: {
project: {
query: getProjectStorageCount,
variables() {
return {
fullPath: this.projectPath,
};
},
update: parseGetProjectStorageResults,
error() {
this.error = s__(
'UsageQuota|Something went wrong while fetching project storage statistics',
);
},
},
},
data() {
return {
project: {},
error: '',
};
},
methods: {
clearError() {
this.error = '';
},
},
i18n: { i18n: {
placeholder: s__('UsageQuota|Usage'), placeholder: s__('UsageQuota|Usage'),
}, },
}; };
</script> </script>
<template> <template>
<div>{{ $options.i18n.placeholder }}</div> <gl-alert v-if="error" variant="danger" @dismiss="clearError">
{{ error }}
</gl-alert>
<div v-else>{{ $options.i18n.placeholder }}</div>
</template> </template>

View File

@ -1,6 +1,10 @@
import Vue from 'vue'; import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createDefaultClient from '~/lib/graphql';
import StorageCounterApp from './components/app.vue'; import StorageCounterApp from './components/app.vue';
Vue.use(VueApollo);
export default (containerId = 'js-project-storage-count-app') => { export default (containerId = 'js-project-storage-count-app') => {
const el = document.getElementById(containerId); const el = document.getElementById(containerId);
@ -8,8 +12,18 @@ export default (containerId = 'js-project-storage-count-app') => {
return false; return false;
} }
const { projectPath } = el.dataset;
const apolloProvider = new VueApollo({
defaultClient: createDefaultClient({}, { assumeImmutableResults: true }),
});
return new Vue({ return new Vue({
el, el,
apolloProvider,
provide: {
projectPath,
},
render(createElement) { render(createElement) {
return createElement(StorageCounterApp); return createElement(StorageCounterApp);
}, },

View File

@ -0,0 +1,15 @@
query getProjectStorageCount($fullPath: ID!) {
project(fullPath: $fullPath) {
id
statistics {
buildArtifactsSize
lfsObjectsSize
packagesSize
repositorySize
snippetsSize
storageSize
uploadsSize
wikiSize
}
}
}

View File

@ -0,0 +1,64 @@
import { numberToHumanSize } from '~/lib/utils/number_utils';
import { s__ } from '~/locale';
const projectStorageTypes = [
{
id: 'buildArtifactsSize',
name: s__('UsageQuota|Artifacts'),
},
{
id: 'lfsObjectsSize',
name: s__('UsageQuota|LFS Storage'),
},
{
id: 'packagesSize',
name: s__('UsageQuota|Packages'),
},
{
id: 'repositorySize',
name: s__('UsageQuota|Repository'),
},
{
id: 'snippetsSize',
name: s__('UsageQuota|Snippets'),
},
{
id: 'uploadsSize',
name: s__('UsageQuota|Uploads'),
},
{
id: 'wikiSize',
name: s__('UsageQuota|Wiki'),
},
];
/**
* This method parses the results from `getProjectStorageCount` call.
*
* @param {Object} data graphql result
* @returns {Object}
*/
export const parseGetProjectStorageResults = (data) => {
const projectStatistics = data?.project?.statistics;
if (!projectStatistics) {
return {};
}
const { storageSize, ...storageStatistics } = projectStatistics;
const storageTypes = projectStorageTypes.reduce((types, currentType) => {
if (!storageStatistics[currentType.id]) {
return types;
}
return types.concat({
...currentType,
value: numberToHumanSize(storageStatistics[currentType.id]),
});
}, []);
return {
storage: {
totalUsage: numberToHumanSize(storageSize),
storageTypes,
},
};
};

View File

@ -823,10 +823,16 @@ class Group < Namespace
end end
def self.groups_including_descendants_by(group_ids) def self.groups_including_descendants_by(group_ids)
groups = Group.where(id: group_ids)
if Feature.enabled?(:linear_group_including_descendants_by, default_enabled: :yaml)
groups.self_and_descendants
else
Gitlab::ObjectHierarchy Gitlab::ObjectHierarchy
.new(Group.where(id: group_ids)) .new(groups)
.base_and_descendants .base_and_descendants
end end
end
def disable_shared_runners! def disable_shared_runners!
update!( update!(

View File

@ -1,6 +1,6 @@
%section.settings.as-default-branch-name.no-animate#js-default-branch-name{ class: ('expanded' if expanded_by_default?) } %section.settings.as-default-branch-name.no-animate#js-default-branch-name{ class: ('expanded' if expanded_by_default?) }
.settings-header .settings-header
%h4 %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
= _('Default initial branch name') = _('Default initial branch name')
%button.gl-button.js-settings-toggle{ type: 'button' } %button.gl-button.js-settings-toggle{ type: 'button' }
= expanded_by_default? ? _('Collapse') : _('Expand') = expanded_by_default? ? _('Collapse') : _('Expand')

View File

@ -14,4 +14,4 @@
= s_('UsageQuota|Storage') = s_('UsageQuota|Storage')
.tab-content .tab-content
.tab-pane#storage-quota-tab .tab-pane#storage-quota-tab
#js-project-storage-count-app #js-project-storage-count-app{ data: { project_path: @project.full_path } }

View File

@ -3,7 +3,7 @@
class ExpireJobCacheWorker # rubocop:disable Scalability/IdempotentWorker class ExpireJobCacheWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
data_consistency :delayed, feature_flag: :load_balancing_for_expire_job_cache_worker data_consistency :delayed
sidekiq_options retry: 3 sidekiq_options retry: 3
include PipelineQueue include PipelineQueue

View File

@ -1,8 +1,8 @@
--- ---
name: load_balancing_for_expire_job_cache_worker name: linear_group_including_descendants_by
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68791 introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68835
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/339137 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/339431
milestone: '14.3' milestone: '14.3'
type: development type: development
group: group::pipeline authoring group: group::access
default_enabled: false default_enabled: false

View File

@ -9,33 +9,23 @@ type: index
# GitLab CI/CD **(FREE)** # GitLab CI/CD **(FREE)**
GitLab CI/CD is a tool built into GitLab for software development GitLab CI/CD is a tool for software development using the continuous methodologies:
through the [continuous methodologies](introduction/index.md):
- Continuous Integration (CI) - [Continuous Integration (CI)](introduction/index.md#continuous-integration)
- Continuous Delivery (CD) - [Continuous Delivery (CD)](introduction/index.md#continuous-delivery)
- Continuous Deployment (CD) - [Continuous Deployment (CD)](introduction/index.md#continuous-deployment)
NOTE: NOTE:
Out-of-the-box management systems can decrease hours spent on maintaining toolchains by 10% or more. Out-of-the-box management systems can decrease hours spent on maintaining toolchains by 10% or more.
Watch our ["Mastering continuous software development"](https://about.gitlab.com/webcast/mastering-ci-cd/) Watch our ["Mastering continuous software development"](https://about.gitlab.com/webcast/mastering-ci-cd/)
webcast to learn about continuous methods and how the GitLab built-in CI can help you simplify and scale software development. webcast to learn about continuous methods and how GitLab CI/CD can help you simplify and scale software development.
Continuous Integration works by pushing small code chunks to your Use GitLab CI/CD to catch bugs and errors early in
application's codebase hosted in a Git repository, and to every the development cycle. Ensure that all the code deployed to
push, run a pipeline of scripts to build, test, and validate the
code changes before merging them into the main branch.
Continuous Delivery and Deployment consist of a step further CI,
deploying your application to production at every
push to the default branch of the repository.
These methodologies allow you to catch bugs and errors early in
the development cycle, ensuring that all the code deployed to
production complies with the code standards you established for production complies with the code standards you established for
your app. your app.
GitLab can also automatically detect, build, test, deploy, and GitLab CI/CD can automatically build, test, deploy, and
monitor your applications by using [Auto DevOps](../topics/autodevops/index.md). monitor your applications by using [Auto DevOps](../topics/autodevops/index.md).
For a complete overview of these methodologies and GitLab CI/CD, For a complete overview of these methodologies and GitLab CI/CD,
@ -82,10 +72,9 @@ GitLab CI/CD supports numerous configuration options:
Certain operations can only be performed according to the Certain operations can only be performed according to the
[user](../user/permissions.md#gitlab-cicd-permissions) and [job](../user/permissions.md#job-permissions) permissions. [user](../user/permissions.md#gitlab-cicd-permissions) and [job](../user/permissions.md#job-permissions) permissions.
## Feature set ## Features
Use the vast GitLab CI/CD to easily configure it for specific purposes. GitLab CI/CD features, grouped by DevOps stage, include:
Its feature set is listed on the table below according to DevOps stages.
| Feature | Description | | Feature | Description |
|:------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------| |:------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------|
@ -122,28 +111,27 @@ Its feature set is listed on the table below according to DevOps stages.
## Examples ## Examples
Find example project code and tutorials for using GitLab CI/CD with a variety of app frameworks, languages, and platforms See the [CI/CD examples](examples/README.md) page for example project code and tutorials for
on the [CI Examples](examples/README.md) page. using GitLab CI/CD with various:
## Administration **(FREE SELF)** - App frameworks
- Languages
- Platforms
As a GitLab administrator, you can change the default behavior ## Administration
of GitLab CI/CD for:
- An [entire GitLab instance](../user/admin_area/settings/continuous_integration.md). You can change the default behavior of GitLab CI/CD for:
- Specific projects, using [pipelines settings](pipelines/settings.md).
- An entire GitLab instance in the [CI/CD administration settings](../administration/index.md#cicd-settings).
- Specific projects in the [pipelines settings](pipelines/settings.md).
See also: See also:
- [Enable or disable GitLab CI/CD in a project](enable_or_disable_ci.md). - [Enable or disable GitLab CI/CD in a project](enable_or_disable_ci.md).
- [Disable GitLab CI/CD by default in new projects](../administration/cicd.md). **(FREE SELF)**
- Other [CI administration settings](../administration/index.md#cicd-settings).
## References ## References
### Why GitLab CI/CD? Learn more about GitLab CI/CD:
Learn more about:
- [Why you might choose GitLab CI/CD](https://about.gitlab.com/blog/2016/10/17/gitlab-ci-oohlala/). - [Why you might choose GitLab CI/CD](https://about.gitlab.com/blog/2016/10/17/gitlab-ci-oohlala/).
- [Reasons you might migrate from another platform](https://about.gitlab.com/blog/2016/07/22/building-our-web-app-on-gitlab-ci/). - [Reasons you might migrate from another platform](https://about.gitlab.com/blog/2016/07/22/building-our-web-app-on-gitlab-ci/).
@ -151,10 +139,10 @@ Learn more about:
See also the [Why CI/CD?](https://docs.google.com/presentation/d/1OGgk2Tcxbpl7DJaIOzCX4Vqg3dlwfELC3u2jEeCBbDk) presentation. See also the [Why CI/CD?](https://docs.google.com/presentation/d/1OGgk2Tcxbpl7DJaIOzCX4Vqg3dlwfELC3u2jEeCBbDk) presentation.
### Breaking changes ### Major version changes (breaking)
As GitLab CI/CD has evolved, certain breaking changes have As GitLab CI/CD has evolved, certain breaking changes have
been necessary. These are: been necessary.
#### 13.0 #### 13.0

View File

@ -199,7 +199,7 @@ GitLab takes advantage of our connected ecosystem to automatically pull these ki
your Merge Requests, pipeline details pages, and other locations. You may find that you actually don't your Merge Requests, pipeline details pages, and other locations. You may find that you actually don't
need to configure anything to have these appear. need to configure anything to have these appear.
If they aren't working as expected, or if you'd like to see what's available, our [CI feature index](../index.md#feature-set) has the full list If they aren't working as expected, or if you'd like to see what's available, our [CI feature index](../index.md#features) has the full list
of bundled features and links to the documentation for each. of bundled features and links to the documentation for each.
### Templates ### Templates

View File

@ -7,8 +7,7 @@ type: reference
# Get started with GitLab CI/CD **(FREE)** # Get started with GitLab CI/CD **(FREE)**
Use this document to get started with Use this document to get started with [GitLab CI/CD](../index.md).
GitLab [continuous integration](https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/).
Before you start, make sure you have: Before you start, make sure you have:

View File

@ -102,7 +102,9 @@ module Gitlab
def self.start_service_discovery def self.start_service_discovery
return unless service_discovery_enabled? return unless service_discovery_enabled?
ServiceDiscovery.new(service_discovery_configuration).start ServiceDiscovery
.new(proxy.load_balancer, **service_discovery_configuration)
.start
end end
# Configures proxying of requests. # Configures proxying of requests.
@ -111,7 +113,9 @@ module Gitlab
# Populate service discovery immediately if it is configured # Populate service discovery immediately if it is configured
if service_discovery_enabled? if service_discovery_enabled?
ServiceDiscovery.new(service_discovery_configuration).perform_service_discovery ServiceDiscovery
.new(proxy.load_balancer, **service_discovery_configuration)
.perform_service_discovery
end end
end end

View File

@ -49,14 +49,14 @@ module Gitlab
# use_tcp - Use TCP instaed of UDP to look up resources # use_tcp - Use TCP instaed of UDP to look up resources
# load_balancer - The load balancer instance to use # load_balancer - The load balancer instance to use
def initialize( def initialize(
load_balancer,
nameserver:, nameserver:,
port:, port:,
record:, record:,
record_type: 'A', record_type: 'A',
interval: 60, interval: 60,
disconnect_timeout: 120, disconnect_timeout: 120,
use_tcp: false, use_tcp: false
load_balancer: LoadBalancing.proxy.load_balancer
) )
@nameserver = nameserver @nameserver = nameserver
@port = port @port = port

View File

@ -36085,6 +36085,9 @@ msgstr ""
msgid "UsageQuota|Snippets" msgid "UsageQuota|Snippets"
msgstr "" msgstr ""
msgid "UsageQuota|Something went wrong while fetching project storage statistics"
msgstr ""
msgid "UsageQuota|Storage" msgid "UsageQuota|Storage"
msgstr "" msgstr ""

View File

@ -65,16 +65,16 @@
"@rails/ujs": "6.1.3-2", "@rails/ujs": "6.1.3-2",
"@sentry/browser": "5.26.0", "@sentry/browser": "5.26.0",
"@sourcegraph/code-host-integration": "0.0.59", "@sourcegraph/code-host-integration": "0.0.59",
"@tiptap/core": "^2.0.0-beta.86", "@tiptap/core": "^2.0.0-beta.101",
"@tiptap/extension-blockquote": "^2.0.0-beta.15", "@tiptap/extension-blockquote": "^2.0.0-beta.15",
"@tiptap/extension-bold": "^2.0.0-beta.15", "@tiptap/extension-bold": "^2.0.0-beta.15",
"@tiptap/extension-bullet-list": "^2.0.0-beta.15", "@tiptap/extension-bullet-list": "^2.0.0-beta.15",
"@tiptap/extension-code": "^2.0.0-beta.16", "@tiptap/extension-code": "^2.0.0-beta.16",
"@tiptap/extension-code-block-lowlight": "2.0.0-beta.32", "@tiptap/extension-code-block-lowlight": "2.0.0-beta.35",
"@tiptap/extension-document": "^2.0.0-beta.13", "@tiptap/extension-document": "^2.0.0-beta.13",
"@tiptap/extension-dropcursor": "^2.0.0-beta.18", "@tiptap/extension-dropcursor": "^2.0.0-beta.19",
"@tiptap/extension-gapcursor": "^2.0.0-beta.19", "@tiptap/extension-gapcursor": "^2.0.0-beta.19",
"@tiptap/extension-hard-break": "^2.0.0-beta.14", "@tiptap/extension-hard-break": "^2.0.0-beta.15",
"@tiptap/extension-heading": "^2.0.0-beta.15", "@tiptap/extension-heading": "^2.0.0-beta.15",
"@tiptap/extension-history": "^2.0.0-beta.16", "@tiptap/extension-history": "^2.0.0-beta.16",
"@tiptap/extension-horizontal-rule": "^2.0.0-beta.19", "@tiptap/extension-horizontal-rule": "^2.0.0-beta.19",
@ -94,7 +94,7 @@
"@tiptap/extension-task-item": "^2.0.0-beta.17", "@tiptap/extension-task-item": "^2.0.0-beta.17",
"@tiptap/extension-task-list": "^2.0.0-beta.17", "@tiptap/extension-task-list": "^2.0.0-beta.17",
"@tiptap/extension-text": "^2.0.0-beta.13", "@tiptap/extension-text": "^2.0.0-beta.13",
"@tiptap/vue-2": "^2.0.0-beta.39", "@tiptap/vue-2": "^2.0.0-beta.48",
"@toast-ui/editor": "^2.5.2", "@toast-ui/editor": "^2.5.2",
"@toast-ui/vue-editor": "^2.5.2", "@toast-ui/vue-editor": "^2.5.2",
"apollo-cache-inmemory": "^1.6.6", "apollo-cache-inmemory": "^1.6.6",
@ -163,7 +163,7 @@
"prismjs": "^1.21.0", "prismjs": "^1.21.0",
"prosemirror-inputrules": "^1.1.3", "prosemirror-inputrules": "^1.1.3",
"prosemirror-markdown": "^1.5.1", "prosemirror-markdown": "^1.5.1",
"prosemirror-model": "^1.13.3", "prosemirror-model": "^1.14.3",
"prosemirror-state": "^1.3.4", "prosemirror-state": "^1.3.4",
"prosemirror-tables": "^1.1.1", "prosemirror-tables": "^1.1.1",
"raphael": "^2.2.7", "raphael": "^2.2.7",
@ -180,8 +180,8 @@
"three-orbit-controls": "^82.1.0", "three-orbit-controls": "^82.1.0",
"three-stl-loader": "^1.0.4", "three-stl-loader": "^1.0.4",
"timeago.js": "^4.0.2", "timeago.js": "^4.0.2",
"tiptap": "^1.32.1", "tiptap": "^1.32.2",
"tiptap-extensions": "^1.35.1", "tiptap-extensions": "^1.35.2",
"url-loader": "^4.1.1", "url-loader": "^4.1.1",
"uuid": "8.1.0", "uuid": "8.1.0",
"visibilityjs": "^1.2.4", "visibilityjs": "^1.2.4",

View File

@ -80,8 +80,8 @@ RSpec.describe 'Cluster Health board', :js, :kubeclient, :use_clean_rails_memory
expect(page).to have_content('Avg') expect(page).to have_content('Avg')
end end
it 'focuses the single panel on toggle', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338341' do it 'focuses the single panel on toggle' do
click_button('More actions') click_button('More actions', match: :first)
click_button('Expand panel') click_button('Expand panel')
expect(page).to have_css('.prometheus-graph', count: 1) expect(page).to have_css('.prometheus-graph', count: 1)

View File

@ -1,13 +1,42 @@
import { shallowMount } from '@vue/test-utils'; import { GlAlert } from '@gitlab/ui';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import VueApollo from 'vue-apollo';
import createMockApollo from 'helpers/mock_apollo_helper';
import StorageCounterApp from '~/projects/storage_counter/components/app.vue'; import StorageCounterApp from '~/projects/storage_counter/components/app.vue';
import getProjectStorageCount from '~/projects/storage_counter/queries/project_storage.query.graphql';
const localVue = createLocalVue();
describe('Storage counter app', () => { describe('Storage counter app', () => {
let wrapper; let wrapper;
const createComponent = (propsData = {}) => { const createMockApolloProvider = () => {
wrapper = shallowMount(StorageCounterApp, { propsData }); localVue.use(VueApollo);
const requestHandlers = [
[getProjectStorageCount, jest.fn().mockRejectedValue(new Error('GraphQL error'))],
];
return createMockApollo(requestHandlers);
}; };
const createComponent = ({ provide = {}, mockApollo } = {}) => {
const defaultProvideValues = {
projectPath: 'test-project',
};
wrapper = shallowMount(StorageCounterApp, {
localVue,
apolloProvider: mockApollo,
provide: {
...defaultProvideValues,
...provide,
},
});
};
const findAlert = () => wrapper.findComponent(GlAlert);
beforeEach(() => { beforeEach(() => {
createComponent(); createComponent();
}); });
@ -19,4 +48,17 @@ describe('Storage counter app', () => {
it('renders app successfully', () => { it('renders app successfully', () => {
expect(wrapper.text()).toBe('Usage'); expect(wrapper.text()).toBe('Usage');
}); });
describe('handling apollo fetching error', () => {
let mockApollo;
beforeEach(() => {
mockApollo = createMockApolloProvider();
createComponent({ mockApollo });
});
it('renders gl-alert if there is an error', () => {
expect(findAlert().exists()).toBe(true);
});
});
}); });

View File

@ -6,10 +6,10 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery do
let(:load_balancer) { Gitlab::Database::LoadBalancing::LoadBalancer.new([]) } let(:load_balancer) { Gitlab::Database::LoadBalancing::LoadBalancer.new([]) }
let(:service) do let(:service) do
described_class.new( described_class.new(
load_balancer,
nameserver: 'localhost', nameserver: 'localhost',
port: 8600, port: 8600,
record: 'foo', record: 'foo'
load_balancer: load_balancer
) )
end end
@ -26,11 +26,11 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery do
describe ':record_type' do describe ':record_type' do
subject do subject do
described_class.new( described_class.new(
load_balancer,
nameserver: 'localhost', nameserver: 'localhost',
port: 8600, port: 8600,
record: 'foo', record: 'foo',
record_type: record_type, record_type: record_type
load_balancer: load_balancer
) )
end end
@ -217,11 +217,11 @@ RSpec.describe Gitlab::Database::LoadBalancing::ServiceDiscovery do
describe '#addresses_from_dns' do describe '#addresses_from_dns' do
let(:service) do let(:service) do
described_class.new( described_class.new(
load_balancer,
nameserver: 'localhost', nameserver: 'localhost',
port: 8600, port: 8600,
record: 'foo', record: 'foo',
record_type: record_type, record_type: record_type
load_balancer: load_balancer
) )
end end

View File

@ -204,9 +204,11 @@ RSpec.describe Gitlab::Database::LoadBalancing do
end end
describe '.configure_proxy' do describe '.configure_proxy' do
it 'configures the connection proxy' do before do
allow(ActiveRecord::Base).to receive(:load_balancing_proxy=) allow(ActiveRecord::Base).to receive(:load_balancing_proxy=)
end
it 'configures the connection proxy' do
described_class.configure_proxy described_class.configure_proxy
expect(ActiveRecord::Base).to have_received(:load_balancing_proxy=) expect(ActiveRecord::Base).to have_received(:load_balancing_proxy=)
@ -214,15 +216,22 @@ RSpec.describe Gitlab::Database::LoadBalancing do
end end
context 'when service discovery is enabled' do context 'when service discovery is enabled' do
let(:service_discovery) { double(Gitlab::Database::LoadBalancing::ServiceDiscovery) }
it 'runs initial service discovery when configuring the connection proxy' do it 'runs initial service discovery when configuring the connection proxy' do
discover = instance_spy(Gitlab::Database::LoadBalancing::ServiceDiscovery)
allow(described_class) allow(described_class)
.to receive(:configuration) .to receive(:configuration)
.and_return('discover' => { 'record' => 'foo' }) .and_return('discover' => { 'record' => 'foo' })
expect(Gitlab::Database::LoadBalancing::ServiceDiscovery).to receive(:new).and_return(service_discovery) expect(Gitlab::Database::LoadBalancing::ServiceDiscovery)
expect(service_discovery).to receive(:perform_service_discovery) .to receive(:new)
.with(
an_instance_of(Gitlab::Database::LoadBalancing::LoadBalancer),
an_instance_of(Hash)
)
.and_return(discover)
expect(discover).to receive(:perform_service_discovery)
described_class.configure_proxy described_class.configure_proxy
end end
@ -297,10 +306,16 @@ RSpec.describe Gitlab::Database::LoadBalancing do
.and_return(true) .and_return(true)
instance = double(:instance) instance = double(:instance)
lb = instance_spy(Gitlab::Database::LoadBalancing::LoadBalancer)
proxy = double(:proxy, load_balancer: lb)
allow(Gitlab::Database::LoadBalancing)
.to receive(:proxy)
.and_return(proxy)
expect(Gitlab::Database::LoadBalancing::ServiceDiscovery) expect(Gitlab::Database::LoadBalancing::ServiceDiscovery)
.to receive(:new) .to receive(:new)
.with(an_instance_of(Hash)) .with(lb, an_instance_of(Hash))
.and_return(instance) .and_return(instance)
expect(instance) expect(instance)

View File

@ -2274,19 +2274,27 @@ RSpec.describe Group do
end end
describe '.groups_including_descendants_by' do describe '.groups_including_descendants_by' do
it 'returns the expected groups for a group and its descendants' do let_it_be(:parent_group1) { create(:group) }
parent_group1 = create(:group) let_it_be(:parent_group2) { create(:group) }
child_group1 = create(:group, parent: parent_group1) let_it_be(:extra_group) { create(:group) }
child_group2 = create(:group, parent: parent_group1) let_it_be(:child_group1) { create(:group, parent: parent_group1) }
let_it_be(:child_group2) { create(:group, parent: parent_group1) }
let_it_be(:child_group3) { create(:group, parent: parent_group2) }
parent_group2 = create(:group) subject { described_class.groups_including_descendants_by([parent_group2.id, parent_group1.id]) }
child_group3 = create(:group, parent: parent_group2)
create(:group) shared_examples 'returns the expected groups for a group and its descendants' do
specify { is_expected.to contain_exactly(parent_group1, parent_group2, child_group1, child_group2, child_group3) }
end
groups = described_class.groups_including_descendants_by([parent_group2.id, parent_group1.id]) it_behaves_like 'returns the expected groups for a group and its descendants'
expect(groups).to contain_exactly(parent_group1, parent_group2, child_group1, child_group2, child_group3) context 'when :linear_group_including_descendants_by feature flag is disabled' do
before do
stub_feature_flags(linear_group_including_descendants_by: false)
end
it_behaves_like 'returns the expected groups for a group and its descendants'
end end
end end

View File

@ -33,7 +33,6 @@ RSpec.describe ExpireJobCacheWorker do
it_behaves_like 'worker with data consistency', it_behaves_like 'worker with data consistency',
described_class, described_class,
feature_flag: :load_balancing_for_expire_job_cache_worker,
data_consistency: :delayed data_consistency: :delayed
end end

View File

@ -1467,15 +1467,15 @@
dom-accessibility-api "^0.5.1" dom-accessibility-api "^0.5.1"
pretty-format "^26.4.2" pretty-format "^26.4.2"
"@tiptap/core@^2.0.0-beta.86": "@tiptap/core@^2.0.0-beta.101":
version "2.0.0-beta.86" version "2.0.0-beta.101"
resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.86.tgz#11b575aee4ad2f30f73114c786da5cd13dde30e0" resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.0.0-beta.101.tgz#e882836fcbe2b65d851039ddaa0401275a4afe9c"
integrity sha512-EeR6euRTJV9LhUog1PuiN1oLYRsz0SCEU5cQnGElzRzbd8dMnmFVc9cs81fbfjR8R1bfiarOJExrU2+OPHKXDw== integrity sha512-IhU+uZ+2F2jTKm2qoIxhzkef6OLYvuTuARhCRoZO7xhOMh314hps/QBC25X6OUqU57S/rn8jLMcyTo0V8Qv7og==
dependencies: dependencies:
"@types/prosemirror-commands" "^1.0.4" "@types/prosemirror-commands" "^1.0.4"
"@types/prosemirror-inputrules" "^1.0.4" "@types/prosemirror-inputrules" "^1.0.4"
"@types/prosemirror-keymap" "^1.0.4" "@types/prosemirror-keymap" "^1.0.4"
"@types/prosemirror-model" "^1.13.1" "@types/prosemirror-model" "^1.13.2"
"@types/prosemirror-schema-list" "^1.0.3" "@types/prosemirror-schema-list" "^1.0.3"
"@types/prosemirror-state" "^1.2.7" "@types/prosemirror-state" "^1.2.7"
"@types/prosemirror-transform" "^1.1.4" "@types/prosemirror-transform" "^1.1.4"
@ -1483,11 +1483,11 @@
prosemirror-commands "^1.1.10" prosemirror-commands "^1.1.10"
prosemirror-inputrules "^1.1.3" prosemirror-inputrules "^1.1.3"
prosemirror-keymap "^1.1.3" prosemirror-keymap "^1.1.3"
prosemirror-model "^1.14.2" prosemirror-model "^1.14.3"
prosemirror-schema-list "^1.1.5" prosemirror-schema-list "^1.1.5"
prosemirror-state "^1.3.4" prosemirror-state "^1.3.4"
prosemirror-transform "^1.3.2" prosemirror-transform "^1.3.2"
prosemirror-view "^1.18.8" prosemirror-view "^1.19.3"
"@tiptap/extension-blockquote@^2.0.0-beta.15": "@tiptap/extension-blockquote@^2.0.0-beta.15":
version "2.0.0-beta.15" version "2.0.0-beta.15"
@ -1501,13 +1501,13 @@
resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.15.tgz#cf9ddb3fc316be9707753ad4e497bfb8a3ebb0c2" resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.0.0-beta.15.tgz#cf9ddb3fc316be9707753ad4e497bfb8a3ebb0c2"
integrity sha512-jKyV6iiwhxwa0+7uuKD74jNDVNLNOS1GmU14MgaA95pY5e1fyaRBPPX8Gtt89niz2CLOY711AV17RPZTe/e60w== integrity sha512-jKyV6iiwhxwa0+7uuKD74jNDVNLNOS1GmU14MgaA95pY5e1fyaRBPPX8Gtt89niz2CLOY711AV17RPZTe/e60w==
"@tiptap/extension-bubble-menu@^2.0.0-beta.24": "@tiptap/extension-bubble-menu@^2.0.0-beta.31":
version "2.0.0-beta.24" version "2.0.0-beta.31"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.24.tgz#e6db5bc0386ccdbd483e57296b22eb6dd55914ba" resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.0-beta.31.tgz#0bf1bf3bc9d1e89830abe0af2f6796bcda87d66a"
integrity sha512-u1btwasgaidUr9JLQwFQwf9oeXUYPv9TyBzUn/soj9F8qKrWxQxTi/EQUsudvjumzsQOX+tZQIj/YtO5EzR+hA== integrity sha512-O0U12A+4tWZo97MRWOhGrZ+Z0DWYHPzLP3rbUMl1bClvOoggKgMZnSdvgjC7LmP5h/8Y+qB92swk5LVYvrOcDQ==
dependencies: dependencies:
prosemirror-state "^1.3.4" prosemirror-state "^1.3.4"
prosemirror-view "^1.18.8" prosemirror-view "^1.19.3"
tippy.js "^6.3.1" tippy.js "^6.3.1"
"@tiptap/extension-bullet-list@^2.0.0-beta.15": "@tiptap/extension-bullet-list@^2.0.0-beta.15":
@ -1517,19 +1517,19 @@
dependencies: dependencies:
prosemirror-inputrules "^1.1.3" prosemirror-inputrules "^1.1.3"
"@tiptap/extension-code-block-lowlight@2.0.0-beta.32": "@tiptap/extension-code-block-lowlight@2.0.0-beta.35":
version "2.0.0-beta.32" version "2.0.0-beta.35"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.0.0-beta.32.tgz#ef9ff6883f2d669e6be79c69f26749641462e1ea" resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.0.0-beta.35.tgz#a08e98d7c2fcc4a80f927766842bfc9980e5b55e"
integrity sha512-RnKAlE981k7VYIUUZ2jYZVGzZJalzrRw6dCf0rfgPvSY3T+ih9gVjKr+APGTuX3tsSR+s3UHs6YUI9+83pje3A== integrity sha512-lPjrZg9bJp83O7EJaDU2Ial15JU0SNX9zbXpdpatbzxFOKsXpgMuRPrYxMYelbIq2XuhEOdu/Q9cc6+vtqmfFQ==
dependencies: dependencies:
"@tiptap/extension-code-block" "^2.0.0-beta.16" "@tiptap/extension-code-block" "^2.0.0-beta.17"
"@types/lowlight" "^0.0.3" "@types/lowlight" "^0.0.3"
lowlight "^1.20.0" lowlight "^1.20.0"
prosemirror-model "^1.14.2" prosemirror-model "^1.14.3"
prosemirror-state "^1.3.4" prosemirror-state "^1.3.4"
prosemirror-view "^1.18.8" prosemirror-view "^1.19.3"
"@tiptap/extension-code-block@^2.0.0-beta.16": "@tiptap/extension-code-block@^2.0.0-beta.17":
version "2.0.0-beta.17" version "2.0.0-beta.17"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.17.tgz#b12ab35561da08b359f4d8dced2b8c30eb62fcdb" resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.0.0-beta.17.tgz#b12ab35561da08b359f4d8dced2b8c30eb62fcdb"
integrity sha512-u3RY991mXtjuw+trVaDwbAhuPPlU8l6kS4rXIxWJ5W/sNElbmfHLVu7RP++YwM8KOQrCrQl8TJbZTEIekMw61w== integrity sha512-u3RY991mXtjuw+trVaDwbAhuPPlU8l6kS4rXIxWJ5W/sNElbmfHLVu7RP++YwM8KOQrCrQl8TJbZTEIekMw61w==
@ -1546,21 +1546,21 @@
resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.0-beta.13.tgz#8cfb29d4de64bf4a790817f730c05b4f9b7167b2" resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.0.0-beta.13.tgz#8cfb29d4de64bf4a790817f730c05b4f9b7167b2"
integrity sha512-nrufdKziA/wovaY4DjGkc8OGuIZi8CH8CW3+yYfeWbruwFKkyZHlZy9nplFWSEqBHPAeqD+px9r91yGMW3ontA== integrity sha512-nrufdKziA/wovaY4DjGkc8OGuIZi8CH8CW3+yYfeWbruwFKkyZHlZy9nplFWSEqBHPAeqD+px9r91yGMW3ontA==
"@tiptap/extension-dropcursor@^2.0.0-beta.18": "@tiptap/extension-dropcursor@^2.0.0-beta.19":
version "2.0.0-beta.18" version "2.0.0-beta.19"
resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.18.tgz#25f0676b0cae6900ac18e11a2e1ea2627904dfa3" resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.0-beta.19.tgz#8a37ffe27e484eb44dd18297830d1fd8ce0c50ce"
integrity sha512-P9cMKO7YXsqp62WA2sliWA6TZThO0yoQprv8Em5BPnW53ttZn9RR9sZaeLL/y02cl/aLVtqdLtl2CPSER43ieA== integrity sha512-rslIcVvD42NNh5sEbkCkG03DWMFBrS5KoK+lDOdIcC1DjmTtpVgcLvvE01btzaB3ljx+UVqI2Zaxa6VOiTeEMw==
dependencies: dependencies:
"@types/prosemirror-dropcursor" "^1.0.2" "@types/prosemirror-dropcursor" "^1.0.3"
prosemirror-dropcursor "^1.3.5" prosemirror-dropcursor "^1.3.5"
"@tiptap/extension-floating-menu@^2.0.0-beta.18": "@tiptap/extension-floating-menu@^2.0.0-beta.25":
version "2.0.0-beta.18" version "2.0.0-beta.25"
resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.18.tgz#4d9b7f58c73f6c718a74503c5ff514b06f615e27" resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.0-beta.25.tgz#9b8dcbdd6f844d077483d6c631800c29f57273e6"
integrity sha512-1fCRGdTxCiRm5DV91GwKYn9yu43oonq6iuRAlgcTZ2ON03MAAG55j+cDA2S3JSwbsA7Vr49ijmXBY/fEdU/fiQ== integrity sha512-nXBi1eA3Kji8tk+gOIyxXKsaTpGBgXSX9hHTgIvbBMMvfP9onLKuZIAKG/cBUMBzt+CKns1XooE71UqyMESDhQ==
dependencies: dependencies:
prosemirror-state "^1.3.4" prosemirror-state "^1.3.4"
prosemirror-view "^1.18.8" prosemirror-view "^1.19.3"
tippy.js "^6.3.1" tippy.js "^6.3.1"
"@tiptap/extension-gapcursor@^2.0.0-beta.19": "@tiptap/extension-gapcursor@^2.0.0-beta.19":
@ -1571,7 +1571,7 @@
"@types/prosemirror-gapcursor" "^1.0.4" "@types/prosemirror-gapcursor" "^1.0.4"
prosemirror-gapcursor "^1.1.5" prosemirror-gapcursor "^1.1.5"
"@tiptap/extension-hard-break@^2.0.0-beta.14": "@tiptap/extension-hard-break@^2.0.0-beta.15":
version "2.0.0-beta.15" version "2.0.0-beta.15"
resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.15.tgz#ce00dd40f5abeaff8574f2288ade6815ab696c94" resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.0.0-beta.15.tgz#ce00dd40f5abeaff8574f2288ade6815ab696c94"
integrity sha512-MS7MjGOtKtC1bVNAShwCetFRuk8nPr/j18OOzKChNrJFrZXWNJrid3dUojwDLqCraYdzSTmiOmMgU+yoUe/gnw== integrity sha512-MS7MjGOtKtC1bVNAShwCetFRuk8nPr/j18OOzKChNrJFrZXWNJrid3dUojwDLqCraYdzSTmiOmMgU+yoUe/gnw==
@ -1687,14 +1687,14 @@
resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.0.0-beta.13.tgz#da0af8d9a3f149d20076e15d88c6af21fb6d940f" resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.0.0-beta.13.tgz#da0af8d9a3f149d20076e15d88c6af21fb6d940f"
integrity sha512-0EtAwuRldCAoFaL/iXgkRepEeOd55rPg5N4FQUN1xTwZT7PDofukP0DG/2jff/Uj17x4uTaJAa9qlFWuNnDvjw== integrity sha512-0EtAwuRldCAoFaL/iXgkRepEeOd55rPg5N4FQUN1xTwZT7PDofukP0DG/2jff/Uj17x4uTaJAa9qlFWuNnDvjw==
"@tiptap/vue-2@^2.0.0-beta.39": "@tiptap/vue-2@^2.0.0-beta.48":
version "2.0.0-beta.39" version "2.0.0-beta.48"
resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.39.tgz#f6d75af99b072848381f0c443b50ec09186eb43b" resolved "https://registry.yarnpkg.com/@tiptap/vue-2/-/vue-2-2.0.0-beta.48.tgz#ee0bfec8819ab588c558dfa39f56269099a226bf"
integrity sha512-O8hCzrAZTbjebcD3XWsbUieudnD7rvDFGmHSRmb0igg//ARO43IWe2xdu2Hlx1MT9b+83YjgDhRyMjHcsKRtzw== integrity sha512-Cx8n8a2UwuJKyAheZKmAQe4s3gCmmPsgzZeh3FYtomp0xmf12H+dZbejqbv/w8pnCc/ATMdl3szf7NKA4hNz1Q==
dependencies: dependencies:
"@tiptap/extension-bubble-menu" "^2.0.0-beta.24" "@tiptap/extension-bubble-menu" "^2.0.0-beta.31"
"@tiptap/extension-floating-menu" "^2.0.0-beta.18" "@tiptap/extension-floating-menu" "^2.0.0-beta.25"
prosemirror-view "^1.18.8" prosemirror-view "^1.19.3"
"@toast-ui/editor@^2.5.2": "@toast-ui/editor@^2.5.2":
version "2.5.2" version "2.5.2"
@ -1877,7 +1877,7 @@
"@types/prosemirror-state" "*" "@types/prosemirror-state" "*"
"@types/prosemirror-view" "*" "@types/prosemirror-view" "*"
"@types/prosemirror-dropcursor@^1.0.2": "@types/prosemirror-dropcursor@^1.0.3":
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/prosemirror-dropcursor/-/prosemirror-dropcursor-1.0.3.tgz#49250849b8a0b86e8c29eb1ba70a463e53e46947" resolved "https://registry.yarnpkg.com/@types/prosemirror-dropcursor/-/prosemirror-dropcursor-1.0.3.tgz#49250849b8a0b86e8c29eb1ba70a463e53e46947"
integrity sha512-b0/8njnJ4lwyHKcGuCMf3x7r1KjxyugB1R/c2iMCjplsJHSC7UY9+OysqgJR5uUXRekUSGniiLgBtac/lvH6wg== integrity sha512-b0/8njnJ4lwyHKcGuCMf3x7r1KjxyugB1R/c2iMCjplsJHSC7UY9+OysqgJR5uUXRekUSGniiLgBtac/lvH6wg==
@ -1918,7 +1918,7 @@
"@types/prosemirror-state" "*" "@types/prosemirror-state" "*"
"@types/prosemirror-view" "*" "@types/prosemirror-view" "*"
"@types/prosemirror-model@*", "@types/prosemirror-model@^1.13.1": "@types/prosemirror-model@*", "@types/prosemirror-model@^1.13.2":
version "1.13.2" version "1.13.2"
resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.13.2.tgz#2adad3ec478f83204f155d7fb94c9dfde2fc3296" resolved "https://registry.yarnpkg.com/@types/prosemirror-model/-/prosemirror-model-1.13.2.tgz#2adad3ec478f83204f155d7fb94c9dfde2fc3296"
integrity sha512-a2rDB0aZ+7aIP7uBqQq1wLb4Hg4qqEvpkCqvhsgT/gG8IWC0peCAZfQ24sgTco0qSJLeDgIbtPeU6mgr869/kg== integrity sha512-a2rDB0aZ+7aIP7uBqQq1wLb4Hg4qqEvpkCqvhsgT/gG8IWC0peCAZfQ24sgTco0qSJLeDgIbtPeU6mgr869/kg==
@ -10078,7 +10078,7 @@ prosemirror-markdown@^1.5.1:
markdown-it "^10.0.0" markdown-it "^10.0.0"
prosemirror-model "^1.0.0" prosemirror-model "^1.0.0"
prosemirror-model@^1.0.0, prosemirror-model@^1.13.1, prosemirror-model@^1.13.3, prosemirror-model@^1.14.2, prosemirror-model@^1.14.3, prosemirror-model@^1.2.0, prosemirror-model@^1.8.1: prosemirror-model@^1.0.0, prosemirror-model@^1.13.1, prosemirror-model@^1.14.3, prosemirror-model@^1.2.0, prosemirror-model@^1.8.1:
version "1.14.3" version "1.14.3"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.14.3.tgz#a9c250d3c4023ddf10ecb41a0a7a130e9741d37e" resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.14.3.tgz#a9c250d3c4023ddf10ecb41a0a7a130e9741d37e"
integrity sha512-yzZlBaSxfUPIIP6U5Edh5zKxJPZ5f7bwZRhiCuH3UYkWhj+P3d8swHsbuAMOu/iDatDc5J/Qs5Mb3++mZf+CvQ== integrity sha512-yzZlBaSxfUPIIP6U5Edh5zKxJPZ5f7bwZRhiCuH3UYkWhj+P3d8swHsbuAMOu/iDatDc5J/Qs5Mb3++mZf+CvQ==
@ -10131,7 +10131,7 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor
dependencies: dependencies:
prosemirror-model "^1.0.0" prosemirror-model "^1.0.0"
prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.16.5, prosemirror-view@^1.18.8, prosemirror-view@^1.19.3: prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.16.5, prosemirror-view@^1.19.3:
version "1.19.3" version "1.19.3"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.19.3.tgz#8d9bc91705bcf9cb5ae3b4de2668f73c7b93fa14" resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.19.3.tgz#8d9bc91705bcf9cb5ae3b4de2668f73c7b93fa14"
integrity sha512-YP/ZzVwqPPwbHbJi97U2/CeyZ8PIHmLJt0gIhZWP8XfnuBRGG3y+jwLzUoBVmiuoUCy3R6PSB+pOATliGzLfPg== integrity sha512-YP/ZzVwqPPwbHbJi97U2/CeyZ8PIHmLJt0gIhZWP8XfnuBRGG3y+jwLzUoBVmiuoUCy3R6PSB+pOATliGzLfPg==
@ -11913,7 +11913,7 @@ tiptap-commands@^1.17.1:
prosemirror-tables "^1.1.1" prosemirror-tables "^1.1.1"
tiptap-utils "^1.13.1" tiptap-utils "^1.13.1"
tiptap-extensions@^1.35.1: tiptap-extensions@^1.35.2:
version "1.35.2" version "1.35.2"
resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.35.2.tgz#83dd6ee703ae8c83b58c7608f97253fcc4f1a94c" resolved "https://registry.yarnpkg.com/tiptap-extensions/-/tiptap-extensions-1.35.2.tgz#83dd6ee703ae8c83b58c7608f97253fcc4f1a94c"
integrity sha512-TIMbHVJe0/3aVeTeCmqGbatDkfxduPYFOffNCmuKR+h6oQNzTu6rLVhRzoNqktfxIoi/b44SiDPorTjSN72dCw== integrity sha512-TIMbHVJe0/3aVeTeCmqGbatDkfxduPYFOffNCmuKR+h6oQNzTu6rLVhRzoNqktfxIoi/b44SiDPorTjSN72dCw==
@ -11939,7 +11939,7 @@ tiptap-utils@^1.13.1:
prosemirror-state "^1.3.3" prosemirror-state "^1.3.3"
prosemirror-tables "^1.1.1" prosemirror-tables "^1.1.1"
tiptap@^1.32.1, tiptap@^1.32.2: tiptap@^1.32.2:
version "1.32.2" version "1.32.2"
resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.32.2.tgz#cd6259e853652bfc6860758ff44ebb695d5edd1c" resolved "https://registry.yarnpkg.com/tiptap/-/tiptap-1.32.2.tgz#cd6259e853652bfc6860758ff44ebb695d5edd1c"
integrity sha512-5IwVj8nGo8y5V3jbdtoEd7xNUsi8Q0N6WV2Nfs70olqz3fldXkiImBrDhZJ4Anx8vhyP6PIBttrg0prFVmwIvw== integrity sha512-5IwVj8nGo8y5V3jbdtoEd7xNUsi8Q0N6WV2Nfs70olqz3fldXkiImBrDhZJ4Anx8vhyP6PIBttrg0prFVmwIvw==