Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
e86001df37
commit
41ec6319e8
|
|
@ -1,5 +1,6 @@
|
|||
<script>
|
||||
import {
|
||||
GlBadge,
|
||||
GlSkeletonLoader,
|
||||
GlTable,
|
||||
GlLink,
|
||||
|
|
@ -7,10 +8,12 @@ import {
|
|||
GlButton,
|
||||
GlIcon,
|
||||
GlPagination,
|
||||
GlPopover,
|
||||
GlFormCheckbox,
|
||||
GlTooltipDirective,
|
||||
} from '@gitlab/ui';
|
||||
import CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';
|
||||
import { s__, sprintf } from '~/locale';
|
||||
import { createAlert } from '~/alert';
|
||||
import { scrollToElement } from '~/lib/utils/common_utils';
|
||||
import { getIdFromGraphQLId, convertToGraphQLId } from '~/graphql_shared/utils';
|
||||
|
|
@ -59,6 +62,7 @@ const INITIAL_PAGINATION_STATE = {
|
|||
export default {
|
||||
name: 'JobArtifactsTable',
|
||||
components: {
|
||||
GlBadge,
|
||||
GlSkeletonLoader,
|
||||
GlTable,
|
||||
GlLink,
|
||||
|
|
@ -66,6 +70,7 @@ export default {
|
|||
GlButton,
|
||||
GlIcon,
|
||||
GlPagination,
|
||||
GlPopover,
|
||||
GlFormCheckbox,
|
||||
TimeAgo,
|
||||
CiIcon,
|
||||
|
|
@ -336,6 +341,38 @@ export default {
|
|||
this.jobArtifactsToDelete = job.artifacts.nodes.map((node) => node.id);
|
||||
this.handleBulkDeleteModalShow();
|
||||
},
|
||||
artifactBadges(artifacts = []) {
|
||||
if (!artifacts.length) {
|
||||
return { first: null, remaining: [] };
|
||||
}
|
||||
|
||||
// Extract file types and normalize to lowercase
|
||||
const fileTypeList = artifacts.map((artifact) => artifact.fileType?.toLowerCase() || '');
|
||||
|
||||
// Find the first security file type (sast/dast)
|
||||
const securityFileType = fileTypeList.find(
|
||||
(fileType) => fileType === 'sast' || fileType === 'dast',
|
||||
);
|
||||
|
||||
if (securityFileType) {
|
||||
const index = fileTypeList.findIndex((fileType) => fileType === securityFileType);
|
||||
// Move security file type to the front of the array
|
||||
fileTypeList.unshift(fileTypeList.splice(index, 1)[0]);
|
||||
}
|
||||
|
||||
return {
|
||||
first: fileTypeList.shift(),
|
||||
remaining: fileTypeList,
|
||||
};
|
||||
},
|
||||
popoverText(remaining = []) {
|
||||
return sprintf(s__('Artifacts|+%{count} more'), {
|
||||
count: remaining.length,
|
||||
});
|
||||
},
|
||||
popoverTarget(id) {
|
||||
return `artifact-popover-${id}`;
|
||||
},
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
|
|
@ -473,6 +510,27 @@ export default {
|
|||
<gl-link :href="item.webPath">
|
||||
{{ item.name }}
|
||||
</gl-link>
|
||||
<template v-if="artifactBadges(item.artifacts.nodes)">
|
||||
<gl-badge data-testid="visible-file-type-badge">
|
||||
{{ artifactBadges(item.artifacts.nodes).first }}
|
||||
</gl-badge>
|
||||
<template v-if="artifactBadges(item.artifacts.nodes).remaining.length">
|
||||
<gl-badge :id="popoverTarget(item.id)" data-testid="file-types-popover-text">
|
||||
{{ popoverText(artifactBadges(item.artifacts.nodes).remaining) }}
|
||||
</gl-badge>
|
||||
<gl-popover :target="popoverTarget(item.id)" placement="right" triggers="hover focus">
|
||||
<div class="gl-flex gl-flex-wrap gl-gap-3">
|
||||
<gl-badge
|
||||
v-for="(fileType, index) in artifactBadges(item.artifacts.nodes).remaining"
|
||||
:key="index"
|
||||
data-testid="remaining-file-type-badges"
|
||||
>
|
||||
{{ fileType }}
|
||||
</gl-badge>
|
||||
</div>
|
||||
</gl-popover>
|
||||
</template>
|
||||
</template>
|
||||
</div>
|
||||
<div class="gl-mb-1">
|
||||
<gl-icon name="pipeline" class="gl-mr-2" />
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ import NewResourceDropdown from '~/vue_shared/components/new_resource_dropdown/n
|
|||
import {
|
||||
WORK_ITEM_TYPE_ENUM_OBJECTIVE,
|
||||
DETAIL_VIEW_QUERY_PARAM_NAME,
|
||||
INJECTION_LINK_CHILD_PREVENT_ROUTER_NAVIGATION,
|
||||
} from '~/work_items/constants';
|
||||
import WorkItemDrawer from '~/work_items/components/work_item_drawer.vue';
|
||||
import { makeDrawerUrlParam } from '~/work_items/utils';
|
||||
|
|
@ -165,6 +166,9 @@ export default {
|
|||
GlTooltip: GlTooltipDirective,
|
||||
},
|
||||
mixins: [glFeatureFlagMixin(), hasNewIssueDropdown()],
|
||||
provide: {
|
||||
[INJECTION_LINK_CHILD_PREVENT_ROUTER_NAVIGATION]: true,
|
||||
},
|
||||
inject: [
|
||||
'autocompleteAwardEmojisPath',
|
||||
'calendarPath',
|
||||
|
|
@ -586,7 +590,7 @@ export default {
|
|||
return !isEmpty(this.activeIssuable);
|
||||
},
|
||||
issuesDrawerEnabled() {
|
||||
return this.glFeatures?.issuesListDrawer;
|
||||
return this.glFeatures?.issuesListDrawer || gon.current_user_use_work_items_view;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ export default {
|
|||
projectPath: this.projectPath,
|
||||
maxAllowedFileSize: this.maxAllowedFileSize,
|
||||
markdownPreviewPath: this.markdownPreviewPath,
|
||||
canWriteModelRegistry: this.canWriteModelRegistry,
|
||||
};
|
||||
},
|
||||
props: {
|
||||
|
|
@ -200,7 +201,6 @@ export default {
|
|||
:error-message="errorMessage"
|
||||
:is-loading="isLoading"
|
||||
:sortable-fields="$options.sortableFields"
|
||||
can-write-model-registry
|
||||
@fetch-page="fetchPage"
|
||||
>
|
||||
<template #empty-state>
|
||||
|
|
|
|||
|
|
@ -311,12 +311,7 @@ export default {
|
|||
@click="goTo($options.ROUTE_PERFORMANCE)"
|
||||
/>
|
||||
</gl-tabs>
|
||||
<router-view
|
||||
:model-version="modelVersion"
|
||||
can-write-model-registry
|
||||
import-path
|
||||
allow-artifact-import
|
||||
/>
|
||||
<router-view :model-version="modelVersion" import-path allow-artifact-import />
|
||||
</load-or-error-or-show>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,6 @@ export default {
|
|||
:error-message="errorMessage"
|
||||
:is-loading="isLoading"
|
||||
:sortable-fields="$options.sortableFields"
|
||||
can-write-model-registry
|
||||
@fetch-page="fetchPage"
|
||||
>
|
||||
<template #empty-state>
|
||||
|
|
|
|||
|
|
@ -22,15 +22,12 @@ export default {
|
|||
directives: {
|
||||
GlTooltip,
|
||||
},
|
||||
inject: ['canWriteModelRegistry'],
|
||||
props: {
|
||||
items: {
|
||||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
canWriteModelRegistry: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
computedFields() {
|
||||
|
|
|
|||
|
|
@ -28,15 +28,12 @@ export default {
|
|||
directives: {
|
||||
GlTooltip,
|
||||
},
|
||||
inject: ['canWriteModelRegistry'],
|
||||
props: {
|
||||
items: {
|
||||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
canWriteModelRegistry: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
tableFields() {
|
||||
|
|
|
|||
|
|
@ -62,11 +62,6 @@ export default {
|
|||
required: false,
|
||||
default: () => [],
|
||||
},
|
||||
canWriteModelRegistry: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
const query = queryToObject(window.location.search);
|
||||
|
|
@ -162,15 +157,9 @@ export default {
|
|||
<model-versions-table
|
||||
v-if="modelVersions.length"
|
||||
:items="modelVersions"
|
||||
can-write-model-registry
|
||||
@model-versions-update="submitFilters"
|
||||
/>
|
||||
<models-table
|
||||
v-else-if="models.length"
|
||||
:items="models"
|
||||
can-write-model-registry
|
||||
@models-update="submitFilters"
|
||||
/>
|
||||
<models-table v-else-if="models.length" :items="models" @models-update="submitFilters" />
|
||||
<candidates-table v-else-if="candidates.length" :items="candidates" />
|
||||
<slot v-else name="empty-state"></slot>
|
||||
<gl-keyset-pagination
|
||||
|
|
|
|||
|
|
@ -4,7 +4,10 @@ import { __ } from '~/locale';
|
|||
import deleteWorkItemMutation from '~/work_items/graphql/delete_work_item.mutation.graphql';
|
||||
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
|
||||
import { TYPE_EPIC, TYPE_ISSUE } from '~/issues/constants';
|
||||
import { DETAIL_VIEW_QUERY_PARAM_NAME } from '~/work_items/constants';
|
||||
import {
|
||||
DETAIL_VIEW_QUERY_PARAM_NAME,
|
||||
INJECTION_LINK_CHILD_PREVENT_ROUTER_NAVIGATION,
|
||||
} from '~/work_items/constants';
|
||||
import * as Sentry from '~/sentry/sentry_browser_wrapper';
|
||||
import { visitUrl, setUrlParams, updateHistory, removeParams } from '~/lib/utils/url_utility';
|
||||
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
|
||||
|
|
@ -23,7 +26,14 @@ export default {
|
|||
WorkItemDetail: () => import('~/work_items/components/work_item_detail.vue'),
|
||||
},
|
||||
mixins: [glFeatureFlagMixin()],
|
||||
inject: ['fullPath', 'isGroup'],
|
||||
inject: {
|
||||
preventRouterNav: {
|
||||
from: INJECTION_LINK_CHILD_PREVENT_ROUTER_NAVIGATION,
|
||||
default: false,
|
||||
},
|
||||
isGroup: {},
|
||||
fullPath: {},
|
||||
},
|
||||
inheritAttrs: false,
|
||||
props: {
|
||||
open: {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ module Types
|
|||
class DescriptionTemplateType < BaseObject
|
||||
graphql_name 'WorkItemDescriptionTemplate'
|
||||
|
||||
field :category, GraphQL::Types::String,
|
||||
description: 'Category of description template.', null: true, calls_gitaly: true
|
||||
field :content, GraphQL::Types::String,
|
||||
description: 'Content of Description Template.', null: false, calls_gitaly: true
|
||||
field :name, GraphQL::Types::String,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ module Packages
|
|||
|
||||
update_project_statistics project_statistics_name: :packages_size
|
||||
|
||||
validates :package, :file, :file_path, :signature, :object_storage_key, :size, presence: true
|
||||
validates :package, :project, :file, :file_path, :signature, :object_storage_key, :size, presence: true
|
||||
validates :object_storage_key, uniqueness: true
|
||||
|
||||
validate :unique_signature_and_file_path_when_installable_package, on: :create
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ module Import
|
|||
|
||||
GIT_SERVICE_NAME = "git-upload-pack"
|
||||
GIT_EXPECTED_FIRST_PACKET_LINE = "# service=#{GIT_SERVICE_NAME}"
|
||||
GIT_BODY_MESSAGE_REGEXP = /^[0-9a-f]{4}#{GIT_EXPECTED_FIRST_PACKET_LINE}/
|
||||
GIT_BODY_MESSAGE_REGEXP = /^[0-9a-fA-F]{4}#{GIT_EXPECTED_FIRST_PACKET_LINE}/
|
||||
# https://github.com/git/git/blob/master/Documentation/technical/protocol-common.txt#L56-L59
|
||||
GIT_PROTOCOL_PKT_LEN = 4
|
||||
GIT_MINIMUM_RESPONSE_LENGTH = GIT_PROTOCOL_PKT_LEN + GIT_EXPECTED_FIRST_PACKET_LINE.length
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
issues_path: project_issues_path(@project),
|
||||
project_path: @project.full_path } }
|
||||
|
||||
- if Feature.enabled?(:work_items_view_preference, current_user) && current_user&.user_preference&.use_work_items_view
|
||||
- if @project&.work_items_alpha_feature_flag_enabled? && current_user&.user_preference&.use_work_items_view
|
||||
#js-work-items{ data: work_items_show_data(@project, current_user) }
|
||||
- else
|
||||
.js-issues-list-root{ data: project_issues_list_data(@project, current_user) }
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ if commit
|
|||
xml.title truncate(tag.name, length: 160)
|
||||
xml.summary strip_signature(tag.message)
|
||||
xml.content markdown_field(release, :description), type: 'html'
|
||||
xml.updated release.updated_at.xmlschema if release
|
||||
xml.updated commit.committed_date.xmlschema
|
||||
xml.media :thumbnail, width: '40', height: '40', url: image_url(avatar_icon_for_email(author_email))
|
||||
xml.author do |author|
|
||||
xml.name commit.author_name
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
first_tag_commit = @repository.commit(@tags.first.dereferenced_target) if @tags.any?
|
||||
|
||||
xml.title "#{@project.name} tags"
|
||||
xml.link href: project_tags_url(@project, @ref, rss_url_options), rel: 'self', type: 'application/atom+xml'
|
||||
xml.link href: project_tags_url(@project, @ref), rel: 'alternate', type: 'text/html'
|
||||
xml.id project_tags_url(@project, @ref)
|
||||
xml.updated @releases.first.updated_at.xmlschema if @releases.any?
|
||||
xml.updated first_tag_commit.committed_date.xmlschema if first_tag_commit
|
||||
|
||||
xml << render(partial: 'tag', collection: @tags) if @tags.any?
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@ feature_category: package_registry
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/166743
|
||||
milestone: '17.6'
|
||||
queued_migration_version: 20240911173549
|
||||
finalized_by: # version of the migration that finalized this BBM
|
||||
finalized_by: 20250115085553
|
||||
|
|
|
|||
|
|
@ -8,14 +8,6 @@ description: Nuget package symbols
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129916
|
||||
milestone: '16.4'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
desired_sharding_key:
|
||||
project_id:
|
||||
references: projects
|
||||
backfill_via:
|
||||
parent:
|
||||
foreign_key: package_id
|
||||
table: packages_packages
|
||||
sharding_key: project_id
|
||||
belongs_to: package
|
||||
desired_sharding_key_migration_job_name: BackfillPackagesNugetSymbolsProjectId
|
||||
table_size: small
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class FinalizeBackfillPackagesNugetSymbolsProjectId < Gitlab::Database::Migration[2.2]
|
||||
disable_ddl_transaction!
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
milestone '17.9'
|
||||
|
||||
def up
|
||||
ensure_batched_background_migration_is_finished(
|
||||
job_class_name: 'BackfillPackagesNugetSymbolsProjectId',
|
||||
table_name: :packages_nuget_symbols,
|
||||
column_name: :id,
|
||||
job_arguments: [
|
||||
:project_id,
|
||||
:packages_packages,
|
||||
:project_id,
|
||||
:package_id
|
||||
],
|
||||
finalize: true
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddNotNullConstraintToPackagesNugetSymbolsProjectId < Gitlab::Database::Migration[2.2]
|
||||
disable_ddl_transaction!
|
||||
milestone '17.9'
|
||||
|
||||
def up
|
||||
add_not_null_constraint :packages_nuget_symbols, :project_id
|
||||
end
|
||||
|
||||
def down
|
||||
remove_not_null_constraint :packages_nuget_symbols, :project_id
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
d8c50fe3ab156987bd4eae3d976818b9b863fbf44ba633eb12369b0303ceee16
|
||||
|
|
@ -0,0 +1 @@
|
|||
33e2516e7f19eddc90f786dc9cb2193c10c44f9d026c7b88b702b6fd06638657
|
||||
|
|
@ -17528,6 +17528,7 @@ CREATE TABLE packages_nuget_symbols (
|
|||
CONSTRAINT check_0e93ca58b7 CHECK ((char_length(file) <= 255)),
|
||||
CONSTRAINT check_28b82b08fa CHECK ((char_length(object_storage_key) <= 255)),
|
||||
CONSTRAINT check_30b0ef2ca2 CHECK ((char_length(file_path) <= 255)),
|
||||
CONSTRAINT check_7a67b0fc8b CHECK ((project_id IS NOT NULL)),
|
||||
CONSTRAINT check_8dc7152679 CHECK ((char_length(signature) <= 255))
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ GET /projects/:id/error_tracking/settings
|
|||
| `id` | integer | yes | The ID or [URL-encoded path of the project](rest/index.md#namespaced-paths) |
|
||||
|
||||
```shell
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/error_tracking/settings"
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" \
|
||||
--url "https://gitlab.example.com/api/v4/projects/1/error_tracking/settings"
|
||||
```
|
||||
|
||||
Example response:
|
||||
|
|
@ -66,7 +67,8 @@ Supported attributes:
|
|||
Example request:
|
||||
|
||||
```shell
|
||||
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/error_tracking/settings?active=true&integrated=true"
|
||||
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
|
||||
--url "https://gitlab.example.com/api/v4/projects/1/error_tracking/settings?active=true&integrated=true"
|
||||
```
|
||||
|
||||
Example response:
|
||||
|
|
@ -97,7 +99,8 @@ PATCH /projects/:id/error_tracking/settings
|
|||
| `integrated` | boolean | no | Pass `true` to enable the integrated error tracking backend. |
|
||||
|
||||
```shell
|
||||
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/error_tracking/settings?active=true"
|
||||
curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" \
|
||||
--url "https://gitlab.example.com/api/v4/projects/1/error_tracking/settings?active=true"
|
||||
```
|
||||
|
||||
Example response:
|
||||
|
|
@ -128,7 +131,8 @@ GET /projects/:id/error_tracking/client_keys
|
|||
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](rest/index.md#namespaced-paths). |
|
||||
|
||||
```shell
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/error_tracking/client_keys"
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" \
|
||||
--url "https://gitlab.example.com/api/v4/projects/5/error_tracking/client_keys"
|
||||
```
|
||||
|
||||
Example response:
|
||||
|
|
@ -163,8 +167,10 @@ POST /projects/:id/error_tracking/client_keys
|
|||
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](rest/index.md#namespaced-paths). |
|
||||
|
||||
```shell
|
||||
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" \
|
||||
"https://gitlab.example.com/api/v4/projects/5/error_tracking/client_keys"
|
||||
curl --request POST \
|
||||
--header "PRIVATE-TOKEN: <your_access_token>" \
|
||||
--header "Content-Type: application/json" \
|
||||
--url "https://gitlab.example.com/api/v4/projects/5/error_tracking/client_keys"
|
||||
```
|
||||
|
||||
Example response:
|
||||
|
|
@ -192,5 +198,6 @@ DELETE /projects/:id/error_tracking/client_keys/:key_id
|
|||
| `key_id` | integer | yes | The ID of the client key. |
|
||||
|
||||
```shell
|
||||
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/error_tracking/client_keys/13"
|
||||
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
|
||||
--url "https://gitlab.example.com/api/v4/projects/5/error_tracking/client_keys/13"
|
||||
```
|
||||
|
|
|
|||
|
|
@ -37982,6 +37982,7 @@ Returns [`String!`](#string).
|
|||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="workitemdescriptiontemplatecategory"></a>`category` | [`String`](#string) | Category of description template. |
|
||||
| <a id="workitemdescriptiontemplatecontent"></a>`content` | [`String!`](#string) | Content of Description Template. |
|
||||
| <a id="workitemdescriptiontemplatename"></a>`name` | [`String!`](#string) | Name of Description Template. |
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ GET /version
|
|||
```
|
||||
|
||||
```shell
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/version"
|
||||
curl --header "PRIVATE-TOKEN: <your_access_token>" \
|
||||
"https://gitlab.example.com/api/v4/version"
|
||||
```
|
||||
|
||||
## Example responses
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ If you use self-signed certificates to connect to your GitLab instance, read the
|
|||
| `gitlab.duoCodeSuggestions.enabled` | true | Toggle to enable or disable AI-assisted code suggestions. |
|
||||
| `gitlab.duoCodeSuggestions.enabledSupportedLanguages` | Not applicable | The [supported languages](../../user/project/repository/code_suggestions/supported_extensions.md#supported-languages) for which to enable Code Suggestions. By default, all supported languages are enabled. |
|
||||
| `gitlab.duoCodeSuggestions.openTabsContext` | true | Toggle to enable or disable sending of context across open tabs to improve Code Suggestions. |
|
||||
| `gitlab.keybindingHints.enabled"` | true | Enable keybinding hints for GitLab Duo. |
|
||||
| `gitlab.pipelineGitRemoteName` | null | The name of the Git remote name corresponding to the GitLab repository with your pipelines. If set to `null` or missing, then the extension uses the same remote as for the non-pipeline features. |
|
||||
| `gitlab.showPipelineUpdateNotifications` | false | Set to `true` to show an alert when a pipeline completes. |
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ Use these variables to customize and deploy your build.
|
|||
| `AUTO_BUILD_IMAGE_VERSION` | Customize the image version used for the `build` job. See [list of versions](https://gitlab.com/gitlab-org/cluster-integration/auto-build-image/-/releases). |
|
||||
| `AUTO_DEPLOY_IMAGE_VERSION` | Customize the image version used for Kubernetes deployment jobs. See [list of versions](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image/-/releases). |
|
||||
| `AUTO_DEVOPS_ATOMIC_RELEASE` | Auto DevOps uses [`--atomic`](https://v2.helm.sh/docs/helm/#options-43) for Helm deployments by default. Set this variable to `false` to disable the use of `--atomic` |
|
||||
| `AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER` | The builder used when building with Cloud Native Buildpacks. The default builder is `heroku/buildpacks:18`. [More details](stages.md#auto-build-using-cloud-native-buildpacks). |
|
||||
| `AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER` | The builder used when building with Cloud Native Buildpacks. The default builder is `heroku/buildpacks:22`. [More details](stages.md#auto-build-using-cloud-native-buildpacks). |
|
||||
| `AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS` | Extra arguments to be passed to the `docker build` command. Using quotes doesn't prevent word splitting. [More details](customize.md#pass-arguments-to-docker-build). |
|
||||
| `AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES` | A [comma-separated list of CI/CD variable names](customize.md#forward-cicd-variables-to-the-build-environment) to be forwarded to the build environment (the buildpack builder or `docker build`). |
|
||||
| `AUTO_DEVOPS_BUILD_IMAGE_CNB_PORT` | In GitLab 15.0 and later, port exposed by the generated Docker image. Set to `false` to prevent exposing any ports. Defaults to `5000`. |
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ This table lists the secrets detected by:
|
|||
|
||||
| Description | ID | Pipeline secret detection | Client-side secret detection | Secret push protection |
|
||||
|:----------------------------------------------|:----------------------------------------------|:--------------------------|:-----------------------------|:-----------------------|
|
||||
| Adobe Client ID (Oauth Web) | Adobe Client ID (Oauth Web) | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
|
||||
| Adobe Client ID (OAuth Web) | Adobe Client ID (OAuth Web) | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
|
||||
| Adobe Client Secret | Adobe Client Secret | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
|
||||
| Age secret key | Age secret key | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
|
||||
| Alibaba AccessKey ID | Alibaba AccessKey ID | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@ To enable secret push protection in a project:
|
|||
1. On the left sidebar, select **Secure > Security configuration**.
|
||||
1. Turn on the **Secret push protection** toggle.
|
||||
|
||||
You can also enable secret push protection for all projects in a group [with the API](../../../../api/group_security_settings.md#update-secret_push_protection_enabled-setting).
|
||||
|
||||
## Coverage
|
||||
|
||||
By default, secret push protection checks the content of each file modified in a commit. If you
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ If you have selected code in the editor, this selection is sent along with your
|
|||
|
||||
> - Introduced in GitLab 16.6 as an [experiment](../../policy/development_stages_support.md#experiment).
|
||||
> - Changed to generally available in GitLab 16.11.
|
||||
> - Status [added](https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/issues/1712) in the GitLab Workflow extension for VS Code 5.29.0.
|
||||
|
||||
Prerequisites:
|
||||
|
||||
|
|
@ -143,6 +144,8 @@ To use GitLab Duo Chat in GitLab Workflow extension for VS Code:
|
|||
1. Select **Explain selected code** or **Generate Tests**.
|
||||
- Use the keyboard shortcut: <kbd>ALT</kbd>+<kbd>d</kbd> (on Windows and Linux) or <kbd>Option</kbd>+<kbd>d</kbd> (on Mac).
|
||||
1. In the message box, enter your question and press **Enter** or select **Send**.
|
||||
1. In the chat pane, on the top right corner, select **Show Status** to show information
|
||||
in the Command Palette.
|
||||
|
||||
If you have selected code in the editor, this selection is sent along with your question to the AI. This way you can ask questions about this code selection. For instance, `Could you simplify this?`.
|
||||
|
||||
|
|
|
|||
|
|
@ -7989,6 +7989,9 @@ msgid_plural "Artifacts|%{strongStart}%{count}%{strongEnd} artifacts selected"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Artifacts|+%{count} more"
|
||||
msgstr ""
|
||||
|
||||
msgid "Artifacts|An error occurred while deleting the artifact"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -256,8 +256,9 @@
|
|||
"@vitejs/plugin-vue2": "^2.3.3",
|
||||
"@vue/compat": "^3.5.13",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"@vue/server-renderer": "^3.5.13",
|
||||
"@vue/test-utils": "1.3.6",
|
||||
"@vue/test-utils-vue3": "npm:@vue/test-utils@2",
|
||||
"@vue/test-utils-vue3": "npm:@vue/test-utils@^2.4.6",
|
||||
"@vue/vue2-jest": "^28.1.0",
|
||||
"@vue/vue3-jest": "^29.2.3",
|
||||
"ajv": "^8.10.0",
|
||||
|
|
|
|||
|
|
@ -1,15 +1,14 @@
|
|||
diff --git a/node_modules/@vue/test-utils-vue3/dist/vue-test-utils.cjs.js b/node_modules/@vue/test-utils-vue3/dist/vue-test-utils.cjs.js
|
||||
index 2902a1e..0c1e6b5 100644
|
||||
index 118b9b3..5083f20 100644
|
||||
--- a/node_modules/@vue/test-utils-vue3/dist/vue-test-utils.cjs.js
|
||||
+++ b/node_modules/@vue/test-utils-vue3/dist/vue-test-utils.cjs.js
|
||||
@@ -7945,7 +7945,9 @@ function createStubComponentsTransformer(_a) {
|
||||
var stubName = name || registeredName || componentName;
|
||||
@@ -8025,7 +8025,8 @@ function createStubComponentsTransformer(_a) {
|
||||
return ((_c = (_b = (_a = config.plugins).createStubs) === null || _b === void 0 ? void 0 : _b.call(_a, {
|
||||
name: stubName,
|
||||
- component: type
|
||||
+ component: type,
|
||||
+ registerStub,
|
||||
+ stubs
|
||||
component: type,
|
||||
- registerStub: registerStub
|
||||
+ registerStub: registerStub,
|
||||
+ stubs: stubs
|
||||
})) !== null && _c !== void 0 ? _c : createStub({
|
||||
name: stubName,
|
||||
type: type,
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
ARG GDK_SHA=10f5424aee5ca5a0ce76b1d7e698bdd1b1491a66
|
||||
ARG GDK_SHA=ac07225dc7faa0b88559a91208e57cea83756cfe
|
||||
# Use tag prefix when running on 'stable' branch to make sure 'protected' image is used which is not deleted by registry cleanup
|
||||
ARG GDK_BASE_TAG_PREFIX
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ gemspec
|
|||
group :test do
|
||||
gem "climate_control", "~> 1.2.0"
|
||||
gem "gitlab-styles", "~> 13.0.2"
|
||||
gem "pry", "~> 0.15.0"
|
||||
gem "pry", "~> 0.15.2"
|
||||
gem "rspec", "~> 3.13"
|
||||
gem "simplecov", "~> 0.22.0"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ GEM
|
|||
racc
|
||||
pastel (0.8.0)
|
||||
tty-color (~> 0.5)
|
||||
pry (0.15.0)
|
||||
pry (0.15.2)
|
||||
coderay (~> 1.1)
|
||||
method_source (~> 1.0)
|
||||
racc (1.8.1)
|
||||
|
|
@ -142,7 +142,7 @@ DEPENDENCIES
|
|||
climate_control (~> 1.2.0)
|
||||
gitlab-cng!
|
||||
gitlab-styles (~> 13.0.2)
|
||||
pry (~> 0.15.0)
|
||||
pry (~> 0.15.2)
|
||||
rspec (~> 3.13)
|
||||
simplecov (~> 0.22.0)
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ ee/spec/frontend/dependencies/components/app_spec.js
|
|||
ee/spec/frontend/dependencies/components/dependency_location_spec.js
|
||||
ee/spec/frontend/dependencies/components/dependency_path_viewer_spec.js
|
||||
ee/spec/frontend/dependencies/components/filtered_search/tokens/component_token_spec.js
|
||||
ee/spec/frontend/diffs/components/shared/findings_drawer_spec.js
|
||||
ee/spec/frontend/geo_sites/components/details/secondary_site/geo_site_replication_details_responsive_spec.js
|
||||
ee/spec/frontend/geo_sites/index_spec.js
|
||||
ee/spec/frontend/groups/components/invite_members_spec.js
|
||||
|
|
@ -80,7 +79,6 @@ ee/spec/frontend/roles_and_permissions/components/create_member_role_spec.js
|
|||
ee/spec/frontend/roles_and_permissions/components/role_selector_spec.js
|
||||
ee/spec/frontend/security_configuration/components/app_spec.js
|
||||
ee/spec/frontend/security_configuration/components/dynamic_fields_spec.js
|
||||
ee/spec/frontend/security_configuration/components/expandable_section_spec.js
|
||||
ee/spec/frontend/security_configuration/dast_profiles/components/dast_profiles_list_spec.js
|
||||
ee/spec/frontend/security_configuration/dast_profiles/dast_profile_selector/scanner_profile_selector_spec.js
|
||||
ee/spec/frontend/security_configuration/dast_profiles/dast_profile_selector/site_profile_selector_spec.js
|
||||
|
|
@ -89,13 +87,11 @@ ee/spec/frontend/security_dashboard/components/shared/vulnerability_details_grap
|
|||
ee/spec/frontend/security_dashboard/components/shared/vulnerability_report/vulnerability_list_graphql_spec.js
|
||||
ee/spec/frontend/security_dashboard/components/shared/vulnerability_report/vulnerability_report_spec.js
|
||||
ee/spec/frontend/security_dashboard/components/shared/vulnerability_report/vulnerability_report_tabs_spec.js
|
||||
ee/spec/frontend/sidebar/components/cve_id_request/cve_id_request_spec.js
|
||||
ee/spec/frontend/sidebar/components/sidebar_dropdown_widget_spec.js
|
||||
ee/spec/frontend/status_checks/components/modal_create_spec.js
|
||||
ee/spec/frontend/status_checks/mount_spec.js
|
||||
ee/spec/frontend/tracing/details/tracing_details_spec.js
|
||||
ee/spec/frontend/tracing/details/tracing_header_spec.js
|
||||
ee/spec/frontend/tracing/details/tracing_span_chart_spec.js
|
||||
ee/spec/frontend/usage_quotas/code_suggestions/components/add_on_eligible_user_list_spec.js
|
||||
ee/spec/frontend/usage_quotas/transfer/components/usage_by_month_spec.js
|
||||
ee/spec/frontend/users/identity_verification/components/international_phone_input_spec.js
|
||||
|
|
@ -103,6 +99,7 @@ ee/spec/frontend/users/identity_verification/components/verify_phone_verificatio
|
|||
ee/spec/frontend/vue_merge_request_widget/components/mr_widget_pipeline_container_spec.js
|
||||
ee/spec/frontend/vue_shared/components/groups_list/groups_list_item_spec.js
|
||||
ee/spec/frontend/vue_shared/components/projects_list/projects_list_item_spec.js
|
||||
ee/spec/frontend/vulnerabilities/generic_report/report_item_graphql_spec.js
|
||||
ee/spec/frontend/vulnerabilities/related_issues_spec.js
|
||||
spec/frontend/__helpers__/vue_test_utils_helper_spec.js
|
||||
spec/frontend/access_tokens/index_spec.js
|
||||
|
|
@ -205,7 +202,6 @@ spec/frontend/notebook/cells/output/html_spec.js
|
|||
spec/frontend/notes/components/discussion_notes_spec.js
|
||||
spec/frontend/notes/components/note_preview_spec.js
|
||||
spec/frontend/notes/components/notes_app_spec.js
|
||||
spec/frontend/notes/components/timeline_toggle_spec.js
|
||||
spec/frontend/organizations/groups_and_projects/components/app_spec.js
|
||||
spec/frontend/organizations/shared/components/new_edit_form_spec.js
|
||||
spec/frontend/packages_and_registries/container_registry/explorer/components/list_page/image_list_row_spec.js
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
export function stubTransition() {
|
||||
return {
|
||||
render() {
|
||||
// eslint-disable-next-line no-underscore-dangle
|
||||
return this.$options._renderChildren;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
// Fixtures located in spec/frontend/fixtures/job_artifacts.rb
|
||||
import getJobArtifactsResponse from 'test_fixtures/graphql/ci/artifacts/graphql/queries/get_job_artifacts.query.graphql.json';
|
||||
|
||||
export const jobArtifactsResponseWithSecurityFiles = {
|
||||
data: {
|
||||
...getJobArtifactsResponse.data,
|
||||
project: {
|
||||
...getJobArtifactsResponse.data.project,
|
||||
jobs: {
|
||||
nodes: [
|
||||
{
|
||||
...getJobArtifactsResponse.data.project.jobs.nodes[0],
|
||||
artifacts: {
|
||||
nodes: [
|
||||
{
|
||||
id: 'gid://gitlab/Ci::JobArtifact/9539',
|
||||
name: 'job.log',
|
||||
fileType: 'TRACE',
|
||||
downloadPath:
|
||||
'/root/security-reports/-/jobs/12281/artifacts/download?file_type=trace',
|
||||
size: '1842',
|
||||
expireAt: null,
|
||||
},
|
||||
{
|
||||
id: 'gid://gitlab/Ci::JobArtifact/9500',
|
||||
name: 'gl-sast-report.json',
|
||||
fileType: 'SAST',
|
||||
downloadPath:
|
||||
'/root/security-reports/-/jobs/12281/artifacts/download?file_type=sast',
|
||||
size: '2036',
|
||||
expireAt: '2025-02-08T17:00:46Z',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
pageInfo: { ...getJobArtifactsResponse.data.project.jobs.pageInfo },
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
@ -3,11 +3,13 @@ import {
|
|||
GlTable,
|
||||
GlLink,
|
||||
GlPagination,
|
||||
GlPopover,
|
||||
GlModal,
|
||||
GlFormCheckbox,
|
||||
} from '@gitlab/ui';
|
||||
import Vue, { nextTick } from 'vue';
|
||||
import VueApollo from 'vue-apollo';
|
||||
// Fixtures located in spec/frontend/fixtures/job_artifacts.rb
|
||||
import getJobArtifactsResponse from 'test_fixtures/graphql/ci/artifacts/graphql/queries/get_job_artifacts.query.graphql.json';
|
||||
import CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';
|
||||
import waitForPromises from 'helpers/wait_for_promises';
|
||||
|
|
@ -32,6 +34,7 @@ import {
|
|||
} from '~/ci/artifacts/constants';
|
||||
import { totalArtifactsSizeForJob } from '~/ci/artifacts/utils';
|
||||
import { createAlert } from '~/alert';
|
||||
import { jobArtifactsResponseWithSecurityFiles } from './constants';
|
||||
|
||||
const jobArtifactsCountLimit = 100;
|
||||
|
||||
|
|
@ -97,6 +100,12 @@ describe('JobArtifactsTable component', () => {
|
|||
await waitForPromises();
|
||||
};
|
||||
|
||||
const findVisibleFileTypeBadge = () => wrapper.findByTestId('visible-file-type-badge');
|
||||
const findPopoverText = () => wrapper.findByTestId('file-types-popover-text');
|
||||
const findAllRemainingFileTypeBadges = () =>
|
||||
wrapper.findAllByTestId('remaining-file-type-badges');
|
||||
const findPopover = () => wrapper.findComponent(GlPopover);
|
||||
|
||||
const projectId = 'some/project/id';
|
||||
|
||||
let enoughJobsToPaginate = [...getJobArtifactsResponse.data.project.jobs.nodes];
|
||||
|
|
@ -925,4 +934,43 @@ describe('JobArtifactsTable component', () => {
|
|||
expect(findPagination().props('value')).toEqual(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('file type badges', () => {
|
||||
it('displays file type badge', async () => {
|
||||
createComponent();
|
||||
|
||||
await waitForPromises();
|
||||
|
||||
expect(findVisibleFileTypeBadge().text()).toBe('archive');
|
||||
});
|
||||
|
||||
it('displays reamining file types in popover', async () => {
|
||||
createComponent();
|
||||
|
||||
await waitForPromises();
|
||||
|
||||
expect(findPopoverText().text()).toBe('+2 more');
|
||||
expect(findPopover().exists()).toBe(true);
|
||||
expect(findAllRemainingFileTypeBadges().at(0).text()).toBe('metadata');
|
||||
expect(findAllRemainingFileTypeBadges().at(1).text()).toBe('trace');
|
||||
});
|
||||
|
||||
describe('with security file types', () => {
|
||||
const query = jest.fn().mockResolvedValue(jobArtifactsResponseWithSecurityFiles);
|
||||
|
||||
beforeEach(async () => {
|
||||
createComponent({
|
||||
handlers: {
|
||||
getJobArtifactsQuery: query,
|
||||
},
|
||||
});
|
||||
|
||||
await waitForPromises();
|
||||
});
|
||||
|
||||
it('displays security badge first in the list', () => {
|
||||
expect(findVisibleFileTypeBadge().text()).toBe('sast');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import { nextTick } from 'vue';
|
|||
import { shallowMount } from '@vue/test-utils';
|
||||
import { GlAlert } from '@gitlab/ui';
|
||||
import { extendedWrapper } from 'helpers/vue_test_utils_helper';
|
||||
import { createMockDirective } from 'helpers/vue_mock_directive';
|
||||
import PipelineEditorFileTreeContainer from '~/ci/pipeline_editor/components/file_tree/container.vue';
|
||||
import PipelineEditorFileTreeItem from '~/ci/pipeline_editor/components/file_tree/file_item.vue';
|
||||
import { FILE_TREE_TIP_DISMISSED_KEY } from '~/ci/pipeline_editor/constants';
|
||||
|
|
@ -21,9 +20,6 @@ describe('Pipeline editor file nav', () => {
|
|||
propsData: {
|
||||
includes,
|
||||
},
|
||||
directives: {
|
||||
GlTooltip: createMockDirective('gl-tooltip'),
|
||||
},
|
||||
stubs,
|
||||
}),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ class CustomEnvironment extends TestEnvironment {
|
|||
this.jestConsoleWatcher = setupConsoleWatcher(this, context.console, {
|
||||
ignores: [
|
||||
/The updateQuery callback for fetchMore is deprecated/,
|
||||
/^\[Vue warn\]: Wrong type passed as event handler to .* - did you forget @ or : in front of your prop\?/,
|
||||
// TODO: Remove this and replace with localized calls to `ignoreVueConsoleWarnings`
|
||||
// https://gitlab.com/gitlab-org/gitlab/-/issues/396779#note_1788506238
|
||||
/^\[Vue warn\]: Missing required prop/,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import Vue from 'vue';
|
|||
import VueApollo from 'vue-apollo';
|
||||
import { GlCollapse, GlIcon } from '@gitlab/ui';
|
||||
import { mountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import { stubTransition } from 'helpers/stub_transition';
|
||||
import createMockApollo from 'helpers/mock_apollo_helper';
|
||||
import DeployBoardWrapper from '~/environments/components/deploy_board_wrapper.vue';
|
||||
import DeployBoard from '~/environments/components/deploy_board.vue';
|
||||
|
|
@ -22,7 +21,6 @@ describe('~/environments/components/deploy_board_wrapper.vue', () => {
|
|||
return mountExtended(DeployBoardWrapper, {
|
||||
propsData: { environment: resolvedEnvironment, rolloutStatus, ...propsData },
|
||||
provide: { helpPagePath: '/help' },
|
||||
stubs: { transition: stubTransition() },
|
||||
apolloProvider: mockApollo,
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import { GlCollapse, GlIcon } from '@gitlab/ui';
|
|||
import waitForPromises from 'helpers/wait_for_promises';
|
||||
import createMockApollo from 'helpers/mock_apollo_helper';
|
||||
import { mountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import { stubTransition } from 'helpers/stub_transition';
|
||||
import { sprintf } from '~/locale';
|
||||
import EnvironmentsFolder from '~/environments/components/environment_folder.vue';
|
||||
import EnvironmentItem from '~/environments/components/new_environment_item.vue';
|
||||
|
|
@ -42,7 +41,6 @@ describe('~/environments/components/environments_folder.vue', () => {
|
|||
search: '',
|
||||
...propsData,
|
||||
},
|
||||
stubs: { transition: stubTransition() },
|
||||
provide: { helpPagePath: '/help', projectId: '1', projectPath: 'path/to/project' },
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import { GlModal } from '@gitlab/ui';
|
|||
import { shallowMount } from '@vue/test-utils';
|
||||
import { nextTick } from 'vue';
|
||||
import { stubComponent } from 'helpers/stub_component';
|
||||
import { stubTransition } from 'helpers/stub_transition';
|
||||
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
|
||||
import waitForPromises from 'helpers/wait_for_promises';
|
||||
import { projectData } from 'jest/ide/mock_data';
|
||||
|
|
@ -36,7 +35,6 @@ describe('IDE commit form', () => {
|
|||
show: showModalSpy,
|
||||
},
|
||||
}),
|
||||
transition: stubTransition(),
|
||||
},
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -28,9 +28,6 @@ describe('~/vue_shared/components/content_transition.vue', () => {
|
|||
dne: '<p>DOES NOT EXIST</p>',
|
||||
...slots,
|
||||
},
|
||||
stubs: {
|
||||
transition: true,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -18,16 +18,15 @@ describe('PerformanceGraph', () => {
|
|||
});
|
||||
};
|
||||
|
||||
const findGraph = () => wrapper.findComponent(PerformanceGraph);
|
||||
const findLineChart = () => findGraph().findComponent(GlLineChart);
|
||||
const findLineChart = () => wrapper.findComponent(GlLineChart);
|
||||
const findEmptyState = () => wrapper.findComponent(GlEmptyState);
|
||||
|
||||
describe('rendering', () => {
|
||||
it('renders the component', () => {
|
||||
createWrapper();
|
||||
|
||||
expect(findGraph().props('candidates')).toEqual(MOCK_CANDIDATES);
|
||||
expect(findGraph().props('metricNames')).toEqual(MOCK_METRICS);
|
||||
expect(wrapper.props('candidates')).toEqual(MOCK_CANDIDATES);
|
||||
expect(wrapper.props('metricNames')).toEqual(MOCK_METRICS);
|
||||
expect(findEmptyState().exists()).toBe(false);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ Vue.use(VueApollo);
|
|||
|
||||
const defaultProps = {
|
||||
projectPath: 'path/to/project',
|
||||
canWriteModelRegistry: false,
|
||||
canWriteModelRegistry: true,
|
||||
maxAllowedFileSize: 99999,
|
||||
markdownPreviewPath: '/markdown-preview',
|
||||
createModelPath: 'path/to/project/-/ml/models/new,',
|
||||
|
|
@ -94,7 +94,12 @@ describeSkipVue3(skipReason, () => {
|
|||
describe('create button', () => {
|
||||
describe('when user has no permission to write model registry', () => {
|
||||
it('does not display create button', async () => {
|
||||
await createWrapper({ resolver: emptyQueryResolver() });
|
||||
await createWrapper({
|
||||
props: {
|
||||
canWriteModelRegistry: false,
|
||||
},
|
||||
resolver: emptyQueryResolver(),
|
||||
});
|
||||
|
||||
expect(findModelCreate().exists()).toBe(false);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -13,8 +13,6 @@ describe('ModelsTable', () => {
|
|||
wrapper = mount(ModelsTable, {
|
||||
propsData: {
|
||||
items,
|
||||
canWriteModelRegistry,
|
||||
|
||||
...props,
|
||||
},
|
||||
stubs: {
|
||||
|
|
@ -26,6 +24,7 @@ describe('ModelsTable', () => {
|
|||
},
|
||||
provide: {
|
||||
projectPath: 'projectPath',
|
||||
canWriteModelRegistry,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ describe('ml/model_registry/components/searchable_table.vue', () => {
|
|||
errorMessage: '',
|
||||
showSearch: false,
|
||||
sortableFields: [],
|
||||
canWriteModelRegistry: true,
|
||||
};
|
||||
|
||||
const mountComponent = (props = {}) => {
|
||||
|
|
@ -114,7 +113,6 @@ describe('ml/model_registry/components/searchable_table.vue', () => {
|
|||
pageInfo: defaultPageInfo,
|
||||
showSearch: false,
|
||||
sortableFields: [],
|
||||
canWriteModelRegistry: true,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -147,7 +145,6 @@ describe('ml/model_registry/components/searchable_table.vue', () => {
|
|||
pageInfo: defaultPageInfo,
|
||||
showSearch: false,
|
||||
sortableFields: [],
|
||||
canWriteModelRegistry: true,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -180,7 +177,6 @@ describe('ml/model_registry/components/searchable_table.vue', () => {
|
|||
pageInfo: defaultPageInfo,
|
||||
showSearch: false,
|
||||
sortableFields: [],
|
||||
canWriteModelRegistry: true,
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { GlButton } from '@gitlab/ui';
|
||||
import { shallowMount } from '@vue/test-utils';
|
||||
import { mount } from '@vue/test-utils';
|
||||
import Vue, { nextTick } from 'vue';
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import Vuex from 'vuex';
|
||||
|
|
@ -23,7 +23,7 @@ describe('Timeline toggle', () => {
|
|||
jest.spyOn(store, 'dispatch').mockImplementation();
|
||||
jest.spyOn(Tracking, 'event').mockImplementation();
|
||||
|
||||
wrapper = shallowMount(TimelineToggle, {
|
||||
wrapper = mount(TimelineToggle, {
|
||||
store,
|
||||
});
|
||||
};
|
||||
|
|
@ -63,7 +63,7 @@ describe('Timeline toggle', () => {
|
|||
findGlButton().vm.$emit('click', mockEvent);
|
||||
await nextTick();
|
||||
expect(findGlButton().attributes('title')).toBe(timelineEnabledTooltip);
|
||||
expect(findGlButton().attributes('selected')).toBe('true');
|
||||
expect(findGlButton().props('selected')).toBe(true);
|
||||
expect(mockEvent.currentTarget.blur).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { mount } from '@vue/test-utils';
|
||||
|
||||
import { nextTick } from 'vue';
|
||||
import { stubTransition } from 'helpers/stub_transition';
|
||||
import { createMockDirective } from 'helpers/vue_mock_directive';
|
||||
import TimeTracker from '~/sidebar/components/time_tracking/time_tracker.vue';
|
||||
import SidebarEventHub from '~/sidebar/event_hub';
|
||||
|
|
@ -33,9 +32,6 @@ describe('Issuable Time Tracker', () => {
|
|||
return mount(TimeTracker, {
|
||||
propsData: { ...defaultProps, ...props },
|
||||
directives: { GlTooltip: createMockDirective('gl-tooltip') },
|
||||
stubs: {
|
||||
transition: stubTransition(),
|
||||
},
|
||||
provide: {
|
||||
issuableType,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -213,24 +213,4 @@ if (global.document) {
|
|||
|
||||
return stub;
|
||||
};
|
||||
|
||||
/**
|
||||
* VTU stubs "transition" and "transition-group" by default.
|
||||
*
|
||||
* In vue/test-utils@2.3.1, with vue/compat@v3.4.22 (or higher) this generates many warnings when stubbing <transition> that look like:
|
||||
* [Vue warn]: Wrong type passed as event handler to onBeforeEnter - did you forget @ or : in front of your prop?
|
||||
* Expected function or array of functions, received type string.
|
||||
* at <Transition onBeforeEnter=fn<bound onBeforeEnter> onEnter=fn<bound onEnter> onAfterEnter=fn<bound onAfterEnter> ... >
|
||||
*
|
||||
* "transition" and "transition-group" stubs are not created by the custom `plugins.createStubs` so we can't patch this stubbing.
|
||||
*
|
||||
* This problem has been fixed at https://github.com/vuejs/test-utils/pull/2413, so this config can be removed when we update to
|
||||
* a newer version of vue/test-utils.
|
||||
*
|
||||
* TLDR: Remove this after updating vue/test-utils@2
|
||||
*/
|
||||
if (VTU.config.stubs) {
|
||||
VTU.config.stubs.transition = false;
|
||||
VTU.config.stubs['transition-group'] = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,6 @@ describe('InputCopyToggleVisibility', () => {
|
|||
const createComponent = ({ props, ...options } = {}) => {
|
||||
wrapper = mountExtended(InputCopyToggleVisibility, {
|
||||
propsData: props,
|
||||
directives: {
|
||||
GlTooltip: createMockDirective('gl-tooltip'),
|
||||
},
|
||||
...options,
|
||||
});
|
||||
};
|
||||
|
|
@ -118,6 +115,9 @@ describe('InputCopyToggleVisibility', () => {
|
|||
value: valueProp,
|
||||
readonly: true,
|
||||
},
|
||||
directives: {
|
||||
GlTooltip: createMockDirective('gl-tooltip'),
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -233,91 +233,107 @@ describe('InputCopyToggleVisibility', () => {
|
|||
});
|
||||
|
||||
describe('and `value` prop is passed', () => {
|
||||
beforeEach(() => {
|
||||
createComponent({
|
||||
props: {
|
||||
value: valueProp,
|
||||
readonly: false,
|
||||
},
|
||||
describe('tooltip', () => {
|
||||
beforeEach(() => {
|
||||
createComponent({
|
||||
props: {
|
||||
value: valueProp,
|
||||
readonly: false,
|
||||
},
|
||||
directives: {
|
||||
GlTooltip: createMockDirective('gl-tooltip'),
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('renders a reveal button', () => {
|
||||
const revealButton = findRevealButton();
|
||||
|
||||
expect(revealButton.exists()).toBe(true);
|
||||
|
||||
const tooltip = getBinding(revealButton.element, 'gl-tooltip');
|
||||
|
||||
expect(tooltip.value).toBe(InputCopyToggleVisibility.i18n.toggleVisibilityLabelReveal);
|
||||
});
|
||||
|
||||
it('renders a hide button once revealed', async () => {
|
||||
const revealButton = findRevealButton();
|
||||
await revealButton.trigger('click');
|
||||
await nextTick();
|
||||
|
||||
const hideButton = findHideButton();
|
||||
expect(hideButton.exists()).toBe(true);
|
||||
|
||||
const tooltip = getBinding(hideButton.element, 'gl-tooltip');
|
||||
|
||||
expect(tooltip.value).toBe(InputCopyToggleVisibility.i18n.toggleVisibilityLabelHide);
|
||||
});
|
||||
});
|
||||
|
||||
it('renders a reveal button', () => {
|
||||
const revealButton = findRevealButton();
|
||||
|
||||
expect(revealButton.exists()).toBe(true);
|
||||
|
||||
const tooltip = getBinding(revealButton.element, 'gl-tooltip');
|
||||
|
||||
expect(tooltip.value).toBe(InputCopyToggleVisibility.i18n.toggleVisibilityLabelReveal);
|
||||
});
|
||||
|
||||
it('renders a hide button once revealed', async () => {
|
||||
const revealButton = findRevealButton();
|
||||
await revealButton.trigger('click');
|
||||
await nextTick();
|
||||
|
||||
const hideButton = findHideButton();
|
||||
expect(hideButton.exists()).toBe(true);
|
||||
|
||||
const tooltip = getBinding(hideButton.element, 'gl-tooltip');
|
||||
|
||||
expect(tooltip.value).toBe(InputCopyToggleVisibility.i18n.toggleVisibilityLabelHide);
|
||||
});
|
||||
|
||||
it('emits `input` event when editing', () => {
|
||||
expect(wrapper.emitted('input')).toBeUndefined();
|
||||
const newVal = 'ding!';
|
||||
|
||||
const input = findFormInput();
|
||||
input.element.value = newVal;
|
||||
input.trigger('input');
|
||||
|
||||
expect(wrapper.emitted()).toHaveProperty('input');
|
||||
expect(wrapper.emitted('input')).toHaveLength(1);
|
||||
expect(wrapper.emitted('input')[0][0]).toBe(newVal);
|
||||
});
|
||||
|
||||
it('copies updated value to clipboard after editing', async () => {
|
||||
const writeTextSpy = jest.spyOn(global.navigator.clipboard, 'writeText');
|
||||
|
||||
triggerCopyShortcut();
|
||||
await nextTick();
|
||||
|
||||
expect(wrapper.emitted('copy')).toHaveLength(1);
|
||||
expect(writeTextSpy).toHaveBeenCalledWith(valueProp);
|
||||
|
||||
const updatedValue = 'wow amazing';
|
||||
wrapper.setProps({ value: updatedValue });
|
||||
await nextTick();
|
||||
|
||||
triggerCopyShortcut();
|
||||
await nextTick();
|
||||
|
||||
expect(wrapper.emitted('copy')).toHaveLength(2);
|
||||
expect(writeTextSpy).toHaveBeenCalledWith(updatedValue);
|
||||
});
|
||||
|
||||
describe('when input is clicked', () => {
|
||||
it('shows the actual value', async () => {
|
||||
const input = findFormInput();
|
||||
|
||||
expectInputToBeMasked();
|
||||
await findFormInput().trigger('click');
|
||||
|
||||
expect(input.element.value).toBe(valueProp);
|
||||
describe('no tooltip', () => {
|
||||
beforeEach(() => {
|
||||
createComponent({
|
||||
props: {
|
||||
value: valueProp,
|
||||
readonly: false,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('ensures the selection start/end are in the correct position once the actual value has been revealed', async () => {
|
||||
it('emits `input` event when editing', () => {
|
||||
expect(wrapper.emitted('input')).toBeUndefined();
|
||||
const newVal = 'ding!';
|
||||
|
||||
const input = findFormInput();
|
||||
const selectionStart = 2;
|
||||
const selectionEnd = 4;
|
||||
input.element.value = newVal;
|
||||
input.trigger('input');
|
||||
|
||||
input.element.setSelectionRange(selectionStart, selectionEnd);
|
||||
await input.trigger('click');
|
||||
expect(wrapper.emitted()).toHaveProperty('input');
|
||||
expect(wrapper.emitted('input')).toHaveLength(1);
|
||||
expect(wrapper.emitted('input')[0][0]).toBe(newVal);
|
||||
});
|
||||
|
||||
expect(input.element.selectionStart).toBe(selectionStart);
|
||||
expect(input.element.selectionEnd).toBe(selectionEnd);
|
||||
it('copies updated value to clipboard after editing', async () => {
|
||||
const writeTextSpy = jest.spyOn(global.navigator.clipboard, 'writeText');
|
||||
|
||||
triggerCopyShortcut();
|
||||
await nextTick();
|
||||
|
||||
expect(wrapper.emitted('copy')).toHaveLength(1);
|
||||
expect(writeTextSpy).toHaveBeenCalledWith(valueProp);
|
||||
|
||||
const updatedValue = 'wow amazing';
|
||||
wrapper.setProps({ value: updatedValue });
|
||||
await nextTick();
|
||||
|
||||
triggerCopyShortcut();
|
||||
await nextTick();
|
||||
|
||||
expect(wrapper.emitted('copy')).toHaveLength(2);
|
||||
expect(writeTextSpy).toHaveBeenCalledWith(updatedValue);
|
||||
});
|
||||
|
||||
describe('when input is clicked', () => {
|
||||
it('shows the actual value', async () => {
|
||||
const input = findFormInput();
|
||||
|
||||
expectInputToBeMasked();
|
||||
await findFormInput().trigger('click');
|
||||
|
||||
expect(input.element.value).toBe(valueProp);
|
||||
});
|
||||
|
||||
it('ensures the selection start/end are in the correct position once the actual value has been revealed', async () => {
|
||||
const input = findFormInput();
|
||||
const selectionStart = 2;
|
||||
const selectionEnd = 4;
|
||||
|
||||
input.element.setSelectionRange(selectionStart, selectionEnd);
|
||||
await input.trigger('click');
|
||||
|
||||
expect(input.element.selectionStart).toBe(selectionStart);
|
||||
expect(input.element.selectionEnd).toBe(selectionEnd);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -16,9 +16,6 @@ const issuableTitleProps = {
|
|||
const createComponent = (propsData = issuableTitleProps) =>
|
||||
shallowMount(IssuableTitle, {
|
||||
propsData,
|
||||
stubs: {
|
||||
transition: true,
|
||||
},
|
||||
slots: {
|
||||
'status-badge': 'Open',
|
||||
},
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ RSpec.describe Types::WorkItems::DescriptionTemplateType, feature_category: :por
|
|||
include GraphqlHelpers
|
||||
|
||||
it 'exposes the expected fields' do
|
||||
expected_fields = %i[content name]
|
||||
expected_fields = %i[content name category]
|
||||
|
||||
expected_fields.each do |field|
|
||||
expect(described_class).to have_graphql_field(field)
|
||||
|
|
|
|||
|
|
@ -108,6 +108,14 @@ RSpec.describe Projects::Ml::ModelRegistryHelper, feature_category: :mlops do
|
|||
expect(parsed['canWriteModelRegistry']).to eq(false)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when no user' do
|
||||
let_it_be(:user) { nil }
|
||||
|
||||
it 'canWriteModelRegistry is false' do
|
||||
expect(parsed['canWriteModelRegistry']).to eq(nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#edit_ml_model_data' do
|
||||
|
|
|
|||
|
|
@ -86,7 +86,10 @@ RSpec.describe 'new tables missing sharding_key', feature_category: :cell do
|
|||
# allowed as it points to itself
|
||||
'organizations.id',
|
||||
# contains an object storage reference. Group_id is the sharding key but we can't use the usual cascade delete FK.
|
||||
'virtual_registries_packages_maven_cache_entries.group_id'
|
||||
'virtual_registries_packages_maven_cache_entries.group_id',
|
||||
# The table contains references in the object storage and thus can't have cascading delete
|
||||
# nor being NULL by the definition of a sharding key.
|
||||
'packages_nuget_symbols.project_id'
|
||||
]
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -26,13 +26,23 @@ RSpec.describe Packages::Nuget::Symbol, type: :model, feature_category: :package
|
|||
it { is_expected.to validate_presence_of(:object_storage_key) }
|
||||
it { is_expected.to validate_presence_of(:size) }
|
||||
it { is_expected.to validate_uniqueness_of(:object_storage_key).case_insensitive }
|
||||
it { is_expected.to validate_presence_of(:project) }
|
||||
|
||||
context 'for signature & file_path uniqueness' do
|
||||
let(:new_symbol) { build(:nuget_symbol, signature: symbol.signature) }
|
||||
let(:package) { build_stubbed(:nuget_package) }
|
||||
|
||||
context 'when package is nil' do
|
||||
let(:new_symbol) do
|
||||
build(
|
||||
:nuget_symbol,
|
||||
signature: symbol.signature,
|
||||
package: package,
|
||||
project: package.project
|
||||
)
|
||||
end
|
||||
|
||||
context 'when symbol has basic validation error' do
|
||||
before do
|
||||
symbol.package = nil
|
||||
new_symbol.project = nil
|
||||
new_symbol.validate
|
||||
end
|
||||
|
||||
|
|
@ -41,9 +51,8 @@ RSpec.describe Packages::Nuget::Symbol, type: :model, feature_category: :package
|
|||
end
|
||||
end
|
||||
|
||||
context 'when package is installable' do
|
||||
context 'when symbol does not have basic validation errors' do
|
||||
before do
|
||||
new_symbol.object_storage_key = '123/foobar/456'
|
||||
new_symbol.validate
|
||||
end
|
||||
|
||||
|
|
@ -52,11 +61,10 @@ RSpec.describe Packages::Nuget::Symbol, type: :model, feature_category: :package
|
|||
end
|
||||
end
|
||||
|
||||
context 'when package is not installable' do
|
||||
context 'when existing package is not installable' do
|
||||
before do
|
||||
new_symbol.package = symbol.package if package_exists
|
||||
symbol.package.update_column(:status, :pending_destruction)
|
||||
new_symbol.object_storage_key = '123/foobar/456'
|
||||
new_symbol.validate
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ RSpec.describe 'getting work item description templates', feature_category: :gro
|
|||
workItemDescriptionTemplates
|
||||
{
|
||||
nodes {
|
||||
category
|
||||
name
|
||||
content
|
||||
}
|
||||
|
|
@ -49,6 +50,7 @@ RSpec.describe 'getting work item description templates', feature_category: :gro
|
|||
expected_graphql_data.each_with_index do |template, index|
|
||||
expect(".gitlab/issue_templates/#{template['name']}.md").to eq(template_files.to_a[index][0])
|
||||
expect(template["content"]).to eq(template_files.to_a[index][1])
|
||||
expect(template["category"]).to eq("Project Templates")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -61,6 +63,8 @@ RSpec.describe 'getting work item description templates', feature_category: :gro
|
|||
expect(expected_graphql_data.first["name"]).to eq("project_issues_template_a")
|
||||
|
||||
expect(expected_graphql_data.first["content"]).to eq("project_issues_template_a content")
|
||||
|
||||
expect(expected_graphql_data.first["category"]).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -71,6 +71,23 @@ RSpec.describe Import::ValidateRemoteGitEndpointService, feature_category: :impo
|
|||
expect(result.success?).to be(true)
|
||||
end
|
||||
|
||||
context 'when server reply with capitized 001e# reply (Bonobo server)' do
|
||||
let(:valid_response) do
|
||||
{ status: 200,
|
||||
body: '001E# service=git-upload-pack',
|
||||
headers: { 'Content-Type': 'application/x-git-upload-pack-advertisement' } }
|
||||
end
|
||||
|
||||
it 'returns success when HTTP response is valid and contains correct payload' do
|
||||
stub_full_request(endpoint_url, method: :get).to_return(valid_response)
|
||||
|
||||
result = subject.execute
|
||||
|
||||
expect(result).to be_a(ServiceResponse)
|
||||
expect(result.success?).to be(true)
|
||||
end
|
||||
end
|
||||
|
||||
it 'reports error when status code is not 200' do
|
||||
error_response = { status: 401 }
|
||||
stub_full_request(endpoint_url, method: :get).to_return(error_response)
|
||||
|
|
|
|||
207
yarn.lock
207
yarn.lock
|
|
@ -326,7 +326,7 @@
|
|||
js-tokens "^4.0.0"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.16.8", "@babel/parser@^7.23.5", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7", "@babel/parser@^7.25.3":
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.23.5", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7", "@babel/parser@^7.25.3":
|
||||
version "7.26.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234"
|
||||
integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==
|
||||
|
|
@ -1412,7 +1412,8 @@
|
|||
resolved "https://registry.yarnpkg.com/@gitlab/fonts/-/fonts-1.3.0.tgz#df89c1bb6714e4a8a5d3272568aa4de7fb337267"
|
||||
integrity sha512-DoMUIN3DqjEn7wvcxBg/b7Ite5fTdF5EmuOZoBRo2j0UBGweDXmNBi+9HrTZs4cBU660dOxcf1hATFcG3npbPg==
|
||||
|
||||
"@gitlab/noop@^1.0.0":
|
||||
"@gitlab/noop@^1.0.0", jackspeak@^3.1.2, "jackspeak@npm:@gitlab/noop@1.0.0":
|
||||
name jackspeak
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@gitlab/noop/-/noop-1.0.0.tgz#b1ecb8ae6b2abf9b2e28927e4fbb05b7a1b2704b"
|
||||
integrity sha512-nOltttik5o2BjBo8LnyeTFzHoLpMY/XcCVOC+lm9ZwU+ivEam8wafacMF0KTbRn1KVrIoHYdo70QnqS+vJiOVw==
|
||||
|
|
@ -2097,6 +2098,11 @@
|
|||
dependencies:
|
||||
mkdirp "^1.0.4"
|
||||
|
||||
"@one-ini/wasm@0.1.1":
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323"
|
||||
integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==
|
||||
|
||||
"@originjs/vite-plugin-commonjs@^1.0.3":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@originjs/vite-plugin-commonjs/-/vite-plugin-commonjs-1.0.3.tgz#2e3fb11ec78847da9422b79c103953f94d667f09"
|
||||
|
|
@ -3809,16 +3815,6 @@
|
|||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.2.0"
|
||||
|
||||
"@vue/compiler-core@3.2.47":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz#3e07c684d74897ac9aa5922c520741f3029267f8"
|
||||
integrity sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.16.4"
|
||||
"@vue/shared" "3.2.47"
|
||||
estree-walker "^2.0.2"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@vue/compiler-core@3.5.13":
|
||||
version "3.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05"
|
||||
|
|
@ -3830,15 +3826,7 @@
|
|||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.2.0"
|
||||
|
||||
"@vue/compiler-dom@3.2.47":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz#a0b06caf7ef7056939e563dcaa9cbde30794f305"
|
||||
integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.2.47"
|
||||
"@vue/shared" "3.2.47"
|
||||
|
||||
"@vue/compiler-dom@3.5.13", "@vue/compiler-dom@^3.0.1":
|
||||
"@vue/compiler-dom@3.5.13":
|
||||
version "3.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58"
|
||||
integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==
|
||||
|
|
@ -3872,14 +3860,6 @@
|
|||
postcss "^8.4.48"
|
||||
source-map-js "^1.2.0"
|
||||
|
||||
"@vue/compiler-ssr@3.2.47":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz#35872c01a273aac4d6070ab9d8da918ab13057ee"
|
||||
integrity sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.2.47"
|
||||
"@vue/shared" "3.2.47"
|
||||
|
||||
"@vue/compiler-ssr@3.5.13":
|
||||
version "3.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz#e771adcca6d3d000f91a4277c972a996d07f43ba"
|
||||
|
|
@ -3909,33 +3889,26 @@
|
|||
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.3.tgz#b23a588154cba8986bba82b6e1d0248bde3fd1a0"
|
||||
integrity sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==
|
||||
|
||||
"@vue/server-renderer@^3.0.1":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz#8aa1d1871fc4eb5a7851aa7f741f8f700e6de3c0"
|
||||
integrity sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==
|
||||
"@vue/server-renderer@^3.5.13":
|
||||
version "3.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz#429ead62ee51de789646c22efe908e489aad46f7"
|
||||
integrity sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==
|
||||
dependencies:
|
||||
"@vue/compiler-ssr" "3.2.47"
|
||||
"@vue/shared" "3.2.47"
|
||||
|
||||
"@vue/shared@3.2.47":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.47.tgz#e597ef75086c6e896ff5478a6bfc0a7aa4bbd14c"
|
||||
integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==
|
||||
"@vue/compiler-ssr" "3.5.13"
|
||||
"@vue/shared" "3.5.13"
|
||||
|
||||
"@vue/shared@3.5.13":
|
||||
version "3.5.13"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f"
|
||||
integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
|
||||
|
||||
"@vue/test-utils-vue3@npm:@vue/test-utils@2":
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.3.1.tgz#411883ea52091fa3e59d9b0b83f2934111c10776"
|
||||
integrity sha512-tRtHRPEETQSUrqXgAewNZHm5iypxDFxwenfdcvMRm1kbGo4bcqHb1XHHlsaIjoDbLkuE2NYiF8vBQDNYrzlrSA==
|
||||
"@vue/test-utils-vue3@npm:@vue/test-utils@^2.4.6":
|
||||
version "2.4.6"
|
||||
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.6.tgz#7d534e70c4319d2a587d6a3b45a39e9695ade03c"
|
||||
integrity sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==
|
||||
dependencies:
|
||||
js-beautify "1.14.6"
|
||||
optionalDependencies:
|
||||
"@vue/compiler-dom" "^3.0.1"
|
||||
"@vue/server-renderer" "^3.0.1"
|
||||
js-beautify "^1.14.9"
|
||||
vue-component-type-helpers "^2.0.0"
|
||||
|
||||
"@vue/test-utils@1.3.6":
|
||||
version "1.3.6"
|
||||
|
|
@ -4173,11 +4146,16 @@ abab@^2.0.6:
|
|||
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
|
||||
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
|
||||
|
||||
abbrev@1, abbrev@^1.0.0:
|
||||
abbrev@1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||
|
||||
abbrev@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf"
|
||||
integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==
|
||||
|
||||
abort-controller@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
|
||||
|
|
@ -5391,7 +5369,7 @@ commander@7, commander@^7.0.0, commander@^7.2.0:
|
|||
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
|
||||
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
|
||||
|
||||
commander@^10.0.1:
|
||||
commander@^10.0.0, commander@^10.0.1:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
|
||||
integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
|
||||
|
|
@ -6822,6 +6800,16 @@ editorconfig@^0.15.3:
|
|||
semver "^5.6.0"
|
||||
sigmund "^1.0.1"
|
||||
|
||||
editorconfig@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3"
|
||||
integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==
|
||||
dependencies:
|
||||
"@one-ini/wasm" "0.1.1"
|
||||
commander "^10.0.0"
|
||||
minimatch "9.0.1"
|
||||
semver "^7.5.3"
|
||||
|
||||
ee-first@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||
|
|
@ -8206,27 +8194,17 @@ glob-to-regexp@^0.4.1:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^10.3.10, glob@^10.3.7:
|
||||
version "10.3.10"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b"
|
||||
integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
|
||||
glob@^10.3.10, glob@^10.3.3, glob@^10.3.7:
|
||||
version "10.4.5"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
|
||||
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
|
||||
dependencies:
|
||||
foreground-child "^3.1.0"
|
||||
jackspeak "^2.3.5"
|
||||
minimatch "^9.0.1"
|
||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
path-scurry "^1.10.1"
|
||||
|
||||
glob@^8.0.3:
|
||||
version "8.0.3"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e"
|
||||
integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^5.0.1"
|
||||
once "^1.3.0"
|
||||
jackspeak "^3.1.2"
|
||||
minimatch "^9.0.4"
|
||||
minipass "^7.1.2"
|
||||
package-json-from-dist "^1.0.0"
|
||||
path-scurry "^1.11.1"
|
||||
|
||||
global-modules@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
|
@ -9351,11 +9329,6 @@ iterall@^1.2.1:
|
|||
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
|
||||
integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
|
||||
|
||||
jackspeak@^2.3.5, "jackspeak@npm:@gitlab/noop@1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@gitlab/noop/-/noop-1.0.0.tgz#b1ecb8ae6b2abf9b2e28927e4fbb05b7a1b2704b"
|
||||
integrity sha512-nOltttik5o2BjBo8LnyeTFzHoLpMY/XcCVOC+lm9ZwU+ivEam8wafacMF0KTbRn1KVrIoHYdo70QnqS+vJiOVw==
|
||||
|
||||
jed@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jed/-/jed-1.1.1.tgz#7a549bbd9ffe1585b0cd0a191e203055bee574b4"
|
||||
|
|
@ -9794,20 +9767,21 @@ jquery@^3.6.0:
|
|||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
|
||||
integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==
|
||||
|
||||
js-beautify@1.14.6, js-beautify@^1.6.12:
|
||||
version "1.14.6"
|
||||
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.6.tgz#b23ca5d74a462c282c7711bb51150bcc97f2b507"
|
||||
integrity sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==
|
||||
js-beautify@^1.14.9, js-beautify@^1.6.12:
|
||||
version "1.15.1"
|
||||
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.15.1.tgz#4695afb508c324e1084ee0b952a102023fc65b64"
|
||||
integrity sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==
|
||||
dependencies:
|
||||
config-chain "^1.1.13"
|
||||
editorconfig "^0.15.3"
|
||||
glob "^8.0.3"
|
||||
nopt "^6.0.0"
|
||||
editorconfig "^1.0.4"
|
||||
glob "^10.3.3"
|
||||
js-cookie "^3.0.5"
|
||||
nopt "^7.2.0"
|
||||
|
||||
js-cookie@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.1.tgz#9e39b4c6c2f56563708d7d31f6f5f21873a92414"
|
||||
integrity sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==
|
||||
js-cookie@^3.0.0, js-cookie@^3.0.5:
|
||||
version "3.0.5"
|
||||
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
|
||||
integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
|
@ -10196,6 +10170,11 @@ lowlight@^2.9.0:
|
|||
fault "^2.0.0"
|
||||
highlight.js "~11.8.0"
|
||||
|
||||
lru-cache@^10.2.0:
|
||||
version "10.4.3"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
|
||||
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
|
||||
|
||||
lru-cache@^4.1.2, lru-cache@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||
|
|
@ -10218,11 +10197,6 @@ lru-cache@^6.0.0:
|
|||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
"lru-cache@^9.1.1 || ^10.0.0":
|
||||
version "9.1.2"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-9.1.2.tgz#255fdbc14b75589d6d0e73644ca167a8db506835"
|
||||
integrity sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==
|
||||
|
||||
magic-string@^0.30.11:
|
||||
version "0.30.17"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
|
||||
|
|
@ -11230,6 +11204,13 @@ minimatch@4.2.3:
|
|||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@9.0.1:
|
||||
version "9.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253"
|
||||
integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^3.0.4, minimatch@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
|
|
@ -11237,13 +11218,6 @@ minimatch@^3.0.4, minimatch@^3.1.2:
|
|||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^5.0.1:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
|
||||
integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^7.4.3:
|
||||
version "7.4.6"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb"
|
||||
|
|
@ -11251,7 +11225,7 @@ minimatch@^7.4.3:
|
|||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^9.0.1, minimatch@^9.0.4:
|
||||
minimatch@^9.0.4:
|
||||
version "9.0.5"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
|
||||
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
|
||||
|
|
@ -11291,11 +11265,16 @@ minipass@^3.0.0, minipass@^3.1.1:
|
|||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minipass@^5.0.0, "minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
|
||||
minipass@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
|
||||
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
|
||||
|
||||
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||
|
||||
minizlib@^2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
|
||||
|
|
@ -11630,12 +11609,12 @@ nopt@^5.0.0:
|
|||
dependencies:
|
||||
abbrev "1"
|
||||
|
||||
nopt@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d"
|
||||
integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==
|
||||
nopt@^7.2.0:
|
||||
version "7.2.1"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7"
|
||||
integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==
|
||||
dependencies:
|
||||
abbrev "^1.0.0"
|
||||
abbrev "^2.0.0"
|
||||
|
||||
nopt@~1.0.10:
|
||||
version "1.0.10"
|
||||
|
|
@ -11950,6 +11929,11 @@ p-try@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
|
||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||
|
||||
package-json-from-dist@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
|
||||
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
|
||||
|
||||
pako@~1.0.2, pako@~1.0.5:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
||||
|
|
@ -12092,12 +12076,12 @@ path-parse@^1.0.7:
|
|||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
path-scurry@^1.10.1:
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
|
||||
integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
|
||||
path-scurry@^1.11.1:
|
||||
version "1.11.1"
|
||||
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
|
||||
integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
|
||||
dependencies:
|
||||
lru-cache "^9.1.1 || ^10.0.0"
|
||||
lru-cache "^10.2.0"
|
||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
|
||||
path-to-regexp@0.1.10:
|
||||
|
|
@ -15211,6 +15195,11 @@ vue-apollo@^3.0.7:
|
|||
serialize-javascript "^4.0.0"
|
||||
throttle-debounce "^2.1.0"
|
||||
|
||||
vue-component-type-helpers@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-2.2.0.tgz#de5fa802b6beae7125595ec0d3d5195a22691623"
|
||||
integrity sha512-cYrAnv2me7bPDcg9kIcGwjJiSB6Qyi08+jLDo9yuvoFQjzHiPTzML7RnkJB1+3P6KMsX/KbCD4QE3Tv/knEllw==
|
||||
|
||||
vue-demi@^0.14.10:
|
||||
version "0.14.10"
|
||||
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
|
||||
|
|
|
|||
Loading…
Reference in New Issue