Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
cd6194eb43
commit
0555b45841
|
|
@ -8,16 +8,18 @@ import {
|
|||
SORT_OPTIONS,
|
||||
isValidSortKey,
|
||||
} from '~/admin/abuse_reports/constants';
|
||||
import { buildFilteredSearchCategoryToken } from '~/admin/abuse_reports/utils';
|
||||
|
||||
export default {
|
||||
name: 'AbuseReportsFilteredSearchBar',
|
||||
components: { FilteredSearchBar },
|
||||
tokens: FILTERED_SEARCH_TOKENS,
|
||||
sortOptions: SORT_OPTIONS,
|
||||
inject: ['categories'],
|
||||
data() {
|
||||
return {
|
||||
initialFilterValue: [],
|
||||
initialSortBy: DEFAULT_SORT,
|
||||
tokens: [...FILTERED_SEARCH_TOKENS, buildFilteredSearchCategoryToken(this.categories)],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
|
@ -36,7 +38,7 @@ export default {
|
|||
this.initialSortBy = query.sort;
|
||||
}
|
||||
|
||||
const tokens = this.$options.tokens
|
||||
const tokens = this.tokens
|
||||
.filter((token) => query[token.type])
|
||||
.map((token) => ({
|
||||
type: token.type,
|
||||
|
|
@ -90,7 +92,7 @@ export default {
|
|||
<template>
|
||||
<filtered-search-bar
|
||||
:namespace="$options.filteredSearchNamespace"
|
||||
:tokens="$options.tokens"
|
||||
:tokens="tokens"
|
||||
:recent-searches-storage-key="$options.recentSearchesStorageKey"
|
||||
:search-input-placeholder="__('Filter reports')"
|
||||
:initial-filter-value="initialFilterValue"
|
||||
|
|
|
|||
|
|
@ -59,4 +59,13 @@ export const isValidSortKey = (key) =>
|
|||
(sort) => sort.sortDirection.ascending === key || sort.sortDirection.descending === key,
|
||||
);
|
||||
|
||||
export const FILTERED_SEARCH_TOKEN_CATEGORY = {
|
||||
type: 'category',
|
||||
icon: 'label',
|
||||
title: __('Category'),
|
||||
token: BaseToken,
|
||||
unique: true,
|
||||
operators: OPERATORS_IS,
|
||||
};
|
||||
|
||||
export const FILTERED_SEARCH_TOKENS = [FILTERED_SEARCH_TOKEN_USER, FILTERED_SEARCH_TOKEN_STATUS];
|
||||
|
|
|
|||
|
|
@ -10,12 +10,16 @@ export const initAbuseReportsApp = () => {
|
|||
}
|
||||
|
||||
const { abuseReportsData } = el.dataset;
|
||||
const { reports, pagination } = convertObjectPropsToCamelCase(JSON.parse(abuseReportsData), {
|
||||
deep: true,
|
||||
});
|
||||
const { categories, reports, pagination } = convertObjectPropsToCamelCase(
|
||||
JSON.parse(abuseReportsData),
|
||||
{
|
||||
deep: true,
|
||||
},
|
||||
);
|
||||
|
||||
return new Vue({
|
||||
el,
|
||||
provide: { categories },
|
||||
render: (createElement) =>
|
||||
createElement(AbuseReportsApp, {
|
||||
props: {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
import { FILTERED_SEARCH_TOKEN_CATEGORY } from './constants';
|
||||
|
||||
export const buildFilteredSearchCategoryToken = (categories) => {
|
||||
const options = categories.map((c) => ({ value: c, title: c }));
|
||||
return { ...FILTERED_SEARCH_TOKEN_CATEGORY, options };
|
||||
};
|
||||
|
|
@ -5,6 +5,7 @@ module Admin
|
|||
def abuse_reports_list_data(reports)
|
||||
{
|
||||
abuse_reports_data: {
|
||||
categories: AbuseReport.categories.keys,
|
||||
reports: Admin::AbuseReportSerializer.new.represent(reports),
|
||||
pagination: {
|
||||
current_page: reports.current_page,
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ rollout_issue_url:
|
|||
milestone: '15.10'
|
||||
type: ops
|
||||
group: group::integrations
|
||||
default_enabled: true
|
||||
default_enabled: false # Keep this value as false, as feature should be disabled by default for self-managed
|
||||
# https://gitlab.com/gitlab-org/gitlab/-/issues/390157.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,19 @@
|
|||
// eslint-disable-next-line import/order
|
||||
const crypto = require('./helpers/patched_crypto');
|
||||
|
||||
const { VUE_VERSION: EXPLICIT_VUE_VERSION } = process.env;
|
||||
if (![undefined, '2', '3'].includes(EXPLICIT_VUE_VERSION)) {
|
||||
throw new Error(
|
||||
`Invalid VUE_VERSION value: ${EXPLICIT_VUE_VERSION}. Only '2' and '3' are supported`,
|
||||
);
|
||||
}
|
||||
const USE_VUE3 = EXPLICIT_VUE_VERSION === '3';
|
||||
|
||||
if (USE_VUE3) {
|
||||
console.log('[V] Using Vue.js 3');
|
||||
}
|
||||
const VUE_LOADER_MODULE = USE_VUE3 ? 'vue-loader-vue3' : 'vue-loader';
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
|
|
@ -12,8 +25,10 @@ const BABEL_LOADER_VERSION = require('babel-loader/package.json').version;
|
|||
const CompressionPlugin = require('compression-webpack-plugin');
|
||||
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
||||
const glob = require('glob');
|
||||
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
||||
const VUE_LOADER_VERSION = require('vue-loader/package.json').version;
|
||||
// eslint-disable-next-line import/no-dynamic-require
|
||||
const { VueLoaderPlugin } = require(VUE_LOADER_MODULE);
|
||||
// eslint-disable-next-line import/no-dynamic-require
|
||||
const VUE_LOADER_VERSION = require(`${VUE_LOADER_MODULE}/package.json`).version;
|
||||
const VUE_VERSION = require('vue/package.json').version;
|
||||
|
||||
const { EsbuildPlugin } = require('esbuild-loader');
|
||||
|
|
@ -285,6 +300,42 @@ if (WEBPACK_USE_ESBUILD_LOADER) {
|
|||
console.log('esbuild-loader is active');
|
||||
}
|
||||
|
||||
const vueLoaderOptions = {
|
||||
cacheDirectory: path.join(CACHE_PATH, 'vue-loader'),
|
||||
cacheIdentifier: [
|
||||
process.env.NODE_ENV || 'development',
|
||||
webpack.version,
|
||||
VUE_VERSION,
|
||||
VUE_LOADER_VERSION,
|
||||
].join('|'),
|
||||
};
|
||||
|
||||
let shouldExcludeFromCompliling = (modulePath) =>
|
||||
/node_modules|vendor[\\/]assets/.test(modulePath) && !/\.vue\.js/.test(modulePath);
|
||||
// We explicitly set VUE_VERSION
|
||||
// Use @gitlab-ui from source to allow us to dig differences
|
||||
// between Vue.js 2 and Vue.js 3 while using built gitlab-ui by default
|
||||
if (EXPLICIT_VUE_VERSION) {
|
||||
Object.assign(alias, {
|
||||
'@gitlab/ui/scss_to_js': path.join(ROOT_PATH, 'node_modules/@gitlab/ui/scss_to_js'),
|
||||
'@gitlab/ui/dist': '@gitlab/ui/src',
|
||||
'@gitlab/ui': '@gitlab/ui/src',
|
||||
});
|
||||
|
||||
const originalShouldExcludeFromCompliling = shouldExcludeFromCompliling;
|
||||
|
||||
shouldExcludeFromCompliling = (modulePath) =>
|
||||
originalShouldExcludeFromCompliling(modulePath) &&
|
||||
!/node_modules[\\/]@gitlab[\\/]ui/.test(modulePath) &&
|
||||
!/node_modules[\\/]bootstrap-vue[\\/]src[\\/]vue\.js/.test(modulePath);
|
||||
}
|
||||
|
||||
if (USE_VUE3) {
|
||||
Object.assign(alias, {
|
||||
vue: '@vue/compat',
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
mode: IS_PRODUCTION ? 'production' : 'development',
|
||||
|
||||
|
|
@ -322,15 +373,13 @@ module.exports = {
|
|||
},
|
||||
WEBPACK_USE_ESBUILD_LOADER && {
|
||||
test: /\.(js|cjs)$/,
|
||||
exclude: (modulePath) =>
|
||||
/node_modules|vendor[\\/]assets/.test(modulePath) && !/\.vue\.js/.test(modulePath),
|
||||
exclude: shouldExcludeFromCompliling,
|
||||
loader: 'esbuild-loader',
|
||||
options: esbuildConfiguration,
|
||||
},
|
||||
!WEBPACK_USE_ESBUILD_LOADER && {
|
||||
test: /\.(js|cjs)$/,
|
||||
exclude: (modulePath) =>
|
||||
/node_modules|vendor[\\/]assets/.test(modulePath) && !/\.vue\.js/.test(modulePath),
|
||||
exclude: shouldExcludeFromCompliling,
|
||||
use: [
|
||||
{
|
||||
loader: 'thread-loader',
|
||||
|
|
@ -370,16 +419,8 @@ module.exports = {
|
|||
},
|
||||
{
|
||||
test: /\.vue$/,
|
||||
loader: 'vue-loader',
|
||||
options: {
|
||||
cacheDirectory: path.join(CACHE_PATH, 'vue-loader'),
|
||||
cacheIdentifier: [
|
||||
process.env.NODE_ENV || 'development',
|
||||
webpack.version,
|
||||
VUE_VERSION,
|
||||
VUE_LOADER_VERSION,
|
||||
].join('|'),
|
||||
},
|
||||
loader: VUE_LOADER_MODULE,
|
||||
options: vueLoaderOptions,
|
||||
},
|
||||
{
|
||||
test: /\.(graphql|gql)$/,
|
||||
|
|
@ -440,7 +481,7 @@ module.exports = {
|
|||
{
|
||||
test: /.css$/,
|
||||
use: [
|
||||
'vue-style-loader',
|
||||
'style-loader',
|
||||
{
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
- title: "Deprecated Consul http metrics" # (required) Clearly explain the change, or planned change. For example, "The `confidential` field for a `Note` is deprecated" or "CI/CD job names will be limited to 250 characters."
|
||||
announcement_milestone: "15.10" # (required) The milestone when this feature was first announced as deprecated.
|
||||
removal_milestone: "16.0" # (required) The milestone when this feature is planned to be removed
|
||||
breaking_change: true # (required) Change to false if this is not a breaking change.
|
||||
reporter: twk3 # (required) GitLab username of the person reporting the change
|
||||
stage: enablement # (required) String value of the stage that the feature was created in. e.g., Growth
|
||||
issue_url: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/7278 # (required) Link to the deprecation issue in GitLab
|
||||
body: | # (required) Do not modify this line, instead modify the lines below.
|
||||
The Consul provided in the GitLab Omnibus package will no longer provide older deprecated Consul metrics starting in GitLab 16.0.
|
||||
|
||||
In GitLab 14.0, [Consul was updated to 1.9.6](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/5344),
|
||||
which deprecated some telemetry metrics from being at the `consul.http` path. In GitLab 16.0, the `consul.http` path will be removed.
|
||||
|
||||
If you have monitoring that consumes Consul metrics, update them to use `consul.api.http` instead of `consul.http`.
|
||||
For more information, see [the deprecation notes for Consul 1.9.0](https://github.com/hashicorp/consul/releases/tag/v1.9.0).
|
||||
|
|
@ -45,6 +45,26 @@ and [GraphQL](https://docs.gitlab.com/ee/api/graphql/removed_items.html) depreca
|
|||
|
||||
## Announced in 15.10
|
||||
|
||||
<div class="deprecation removal-160 breaking-change">
|
||||
|
||||
### Deprecated Consul http metrics
|
||||
|
||||
Planned removal: GitLab <span class="removal-milestone">16.0</span> <span class="removal-date"></span>
|
||||
|
||||
WARNING:
|
||||
This is a [breaking change](https://docs.gitlab.com/ee/development/deprecation_guidelines/).
|
||||
Review the details carefully before upgrading.
|
||||
|
||||
The Consul provided in the GitLab Omnibus package will no longer provide older deprecated Consul metrics starting in GitLab 16.0.
|
||||
|
||||
In GitLab 14.0, [Consul was updated to 1.9.6](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/5344),
|
||||
which deprecated some telemetry metrics from being at the `consul.http` path. In GitLab 16.0, the `consul.http` path will be removed.
|
||||
|
||||
If you have monitoring that consumes Consul metrics, update them to use `consul.api.http` instead of `consul.http`.
|
||||
For more information, see [the deprecation notes for Consul 1.9.0](https://github.com/hashicorp/consul/releases/tag/v1.9.0).
|
||||
|
||||
</div>
|
||||
|
||||
<div class="deprecation removal-170 breaking-change">
|
||||
|
||||
### DingTalk OmniAuth provider
|
||||
|
|
|
|||
|
|
@ -118,11 +118,16 @@ Endpoints should follow these best practices:
|
|||
- Never return `500` server error status responses if the event has been handled as this can cause the webhook to be [temporarily disabled](#failing-webhooks).
|
||||
- Invalid HTTP responses are treated as failed requests.
|
||||
|
||||
### Failing webhooks
|
||||
## Failing webhooks
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60837) in GitLab 13.12 [with a flag](../../../administration/feature_flags.md) named `web_hooks_disable_failed`. Disabled by default.
|
||||
> - [Enabled on GitLab.com and self-managed](https://gitlab.com/gitlab-org/gitlab/-/issues/329849) in GitLab 15.7.
|
||||
> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/329849) in GitLab 15.7. Feature flag `web_hooks_disable_failed` removed.
|
||||
> - [Disabled on self-managed](https://gitlab.com/gitlab-org/gitlab/-/issues/390157) in GitLab 15.10 [with a flag](../../../administration/feature_flags.md) named `auto_disabling_web_hooks`.
|
||||
|
||||
FLAG:
|
||||
On self-managed GitLab, by default this feature is not available. To make it available, ask an administrator to [enable the feature flag](../../../administration/feature_flags.md) named `auto_disabling_web_hooks`.
|
||||
On GitLab.com, this feature is available.
|
||||
|
||||
If a webhook fails repeatedly, it may be disabled automatically.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,15 @@
|
|||
const IS_EE = require('./config/helpers/is_ee_env');
|
||||
const isESLint = require('./config/helpers/is_eslint');
|
||||
const IS_JH = require('./config/helpers/is_jh_env');
|
||||
|
||||
const { VUE_VERSION: EXPLICIT_VUE_VERSION } = process.env;
|
||||
if (![undefined, '2', '3'].includes(EXPLICIT_VUE_VERSION)) {
|
||||
throw new Error(
|
||||
`Invalid VUE_VERSION value: ${EXPLICIT_VUE_VERSION}. Only '2' and '3' are supported`,
|
||||
);
|
||||
}
|
||||
const USE_VUE_3 = EXPLICIT_VUE_VERSION === '3';
|
||||
|
||||
const { TEST_HOST } = require('./spec/frontend/__helpers__/test_constants');
|
||||
|
||||
module.exports = (path, options = {}) => {
|
||||
|
|
@ -11,6 +20,38 @@ module.exports = (path, options = {}) => {
|
|||
} = options;
|
||||
|
||||
const reporters = ['default'];
|
||||
const VUE_JEST_TRANSFORMER = USE_VUE_3 ? '@vue/vue3-jest' : '@vue/vue2-jest';
|
||||
const setupFilesAfterEnv = [`<rootDir>/${path}/test_setup.js`, 'jest-canvas-mock'];
|
||||
const vueModuleNameMappers = {};
|
||||
const globals = {};
|
||||
|
||||
if (EXPLICIT_VUE_VERSION) {
|
||||
Object.assign(vueModuleNameMappers, {
|
||||
'^@gitlab/ui/dist/([^.]*)$': [
|
||||
'<rootDir>/node_modules/@gitlab/ui/src/$1.vue',
|
||||
'<rootDir>/node_modules/@gitlab/ui/src/$1.js',
|
||||
],
|
||||
'^@gitlab/ui$': '<rootDir>/node_modules/@gitlab/ui/src/index.js',
|
||||
});
|
||||
}
|
||||
|
||||
if (USE_VUE_3) {
|
||||
setupFilesAfterEnv.unshift(`<rootDir>/${path}/vue_compat_test_setup.js`);
|
||||
Object.assign(vueModuleNameMappers, {
|
||||
'^vue$': '@vue/compat',
|
||||
'^@vue/test-utils$': '@vue/test-utils-vue3',
|
||||
});
|
||||
Object.assign(globals, {
|
||||
'vue-jest': {
|
||||
experimentalCSSCompile: false,
|
||||
compilerOptions: {
|
||||
compatConfig: {
|
||||
MODE: 2,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
// To have consistent date time parsing both in local and CI environments we set
|
||||
// the timezone of the Node process. https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/27738
|
||||
|
|
@ -72,6 +113,7 @@ module.exports = (path, options = {}) => {
|
|||
'^jquery$': '<rootDir>/node_modules/jquery/dist/jquery.slim.js',
|
||||
'^@sentry/browser$': '<rootDir>/app/assets/javascripts/sentry/sentry_browser_wrapper.js',
|
||||
...extModuleNameMapper,
|
||||
...vueModuleNameMappers,
|
||||
};
|
||||
|
||||
const collectCoverageFrom = ['<rootDir>/app/assets/javascripts/**/*.{js,vue}'];
|
||||
|
|
@ -146,6 +188,7 @@ module.exports = (path, options = {}) => {
|
|||
];
|
||||
|
||||
const transformIgnoreNodeModules = [
|
||||
'vue-test-utils-compat',
|
||||
'@gitlab/ui',
|
||||
'@gitlab/favicon-overlay',
|
||||
'bootstrap-vue',
|
||||
|
|
@ -166,6 +209,7 @@ module.exports = (path, options = {}) => {
|
|||
];
|
||||
|
||||
return {
|
||||
globals,
|
||||
clearMocks: true,
|
||||
testMatch,
|
||||
moduleFileExtensions: ['js', 'json', 'vue', 'gql', 'graphql', 'yaml', 'yml'],
|
||||
|
|
@ -179,14 +223,14 @@ module.exports = (path, options = {}) => {
|
|||
modulePathIgnorePatterns: ['<rootDir>/.yarn-cache/'],
|
||||
reporters,
|
||||
resolver: './jest_resolver.js',
|
||||
setupFilesAfterEnv: [`<rootDir>/${path}/test_setup.js`, 'jest-canvas-mock'],
|
||||
setupFilesAfterEnv,
|
||||
restoreMocks: true,
|
||||
slowTestThreshold: process.env.CI ? 6000 : 500,
|
||||
transform: {
|
||||
'^.+\\.(gql|graphql)$': './spec/frontend/__helpers__/graphql_transformer.js',
|
||||
'^.+_worker\\.js$': './spec/frontend/__helpers__/web_worker_transformer.js',
|
||||
'^.+\\.js$': 'babel-jest',
|
||||
'^.+\\.vue$': '@vue/vue2-jest',
|
||||
'^.+\\.vue$': VUE_JEST_TRANSFORMER,
|
||||
'spec/frontend/editor/schema/ci/yaml_tests/.+\\.(yml|yaml)$':
|
||||
'./spec/frontend/__helpers__/yaml_transformer.js',
|
||||
'^.+\\.(md|zip|png|yml|yaml|sh|ps1)$': './spec/frontend/__helpers__/raw_transformer.js',
|
||||
|
|
@ -204,10 +248,5 @@ module.exports = (path, options = {}) => {
|
|||
url: TEST_HOST,
|
||||
},
|
||||
testRunner: 'jest-jasmine2',
|
||||
globals: {
|
||||
'@vue/vue2-jest': {
|
||||
experimentalCSSCompile: false,
|
||||
},
|
||||
},
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def to_result
|
||||
Yaml::Result.new(load!, error: nil)
|
||||
Yaml::Result.new(config: load!, error: nil)
|
||||
rescue ::Gitlab::Config::Loader::FormatError => e
|
||||
Yaml::Result.new(error: e)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ module Gitlab
|
|||
class Result
|
||||
attr_reader :error
|
||||
|
||||
def initialize(config = nil, error: nil)
|
||||
def initialize(config: nil, error: nil)
|
||||
@config = Array.wrap(config)
|
||||
@error = error
|
||||
end
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
variables:
|
||||
CS_ANALYZER_IMAGE: "$CI_TEMPLATE_REGISTRY_HOST/security-products/container-scanning:5"
|
||||
CS_SCHEMA_MODEL: 15
|
||||
|
||||
container_scanning:
|
||||
image: "$CS_ANALYZER_IMAGE$CS_IMAGE_SUFFIX"
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
variables:
|
||||
CS_ANALYZER_IMAGE: "$CI_TEMPLATE_REGISTRY_HOST/security-products/container-scanning:5"
|
||||
CS_SCHEMA_MODEL: 15
|
||||
|
||||
container_scanning:
|
||||
image: "$CS_ANALYZER_IMAGE$CS_IMAGE_SUFFIX"
|
||||
|
|
|
|||
|
|
@ -8346,6 +8346,9 @@ msgstr ""
|
|||
msgid "CascadingSettings|cannot be nil when locking the attribute"
|
||||
msgstr ""
|
||||
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cause identified"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -215,8 +215,12 @@
|
|||
"@graphql-eslint/eslint-plugin": "3.16.1",
|
||||
"@testing-library/dom": "^7.16.2",
|
||||
"@types/jest": "^28.1.3",
|
||||
"@vue/compat": "^3.2.47",
|
||||
"@vue/compiler-sfc": "^3.2.47",
|
||||
"@vue/test-utils": "1.3.0",
|
||||
"@vue/test-utils-vue3": "npm:@vue/test-utils@2",
|
||||
"@vue/vue2-jest": "^28.1.0",
|
||||
"@vue/vue3-jest": "^29.2.3",
|
||||
"ajv": "^8.10.0",
|
||||
"ajv-formats": "^2.1.1",
|
||||
"axios-mock-adapter": "^1.15.0",
|
||||
|
|
@ -256,6 +260,8 @@
|
|||
"stylelint": "^14.9.1",
|
||||
"swagger-cli": "^4.0.4",
|
||||
"timezone-mock": "^1.0.8",
|
||||
"vue-loader-vue3": "npm:vue-loader@17",
|
||||
"vue-test-utils-compat": "^0.0.11",
|
||||
"webpack-dev-server": "4.11.1",
|
||||
"xhr-mock": "^2.5.1",
|
||||
"yarn-check-webpack-plugin": "^1.2.0",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,78 @@
|
|||
diff --git a/node_modules/vue-loader-vue3/dist/descriptorCache.js b/node_modules/vue-loader-vue3/dist/descriptorCache.js
|
||||
index 65a7318..ee425cd 100644
|
||||
--- a/node_modules/vue-loader-vue3/dist/descriptorCache.js
|
||||
+++ b/node_modules/vue-loader-vue3/dist/descriptorCache.js
|
||||
@@ -2,7 +2,7 @@
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getDescriptor = exports.setDescriptor = void 0;
|
||||
const fs = require("fs");
|
||||
-const compiler_sfc_1 = require("vue/compiler-sfc");
|
||||
+const compiler_sfc_1 = require("@vue/compiler-sfc");
|
||||
const cache = new Map();
|
||||
function setDescriptor(filename, entry) {
|
||||
cache.set(cleanQuery(filename), entry);
|
||||
diff --git a/node_modules/vue-loader-vue3/dist/formatError.js b/node_modules/vue-loader-vue3/dist/formatError.js
|
||||
index b342426..ec51886 100644
|
||||
--- a/node_modules/vue-loader-vue3/dist/formatError.js
|
||||
+++ b/node_modules/vue-loader-vue3/dist/formatError.js
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.formatError = void 0;
|
||||
-const compiler_sfc_1 = require("vue/compiler-sfc");
|
||||
+const compiler_sfc_1 = require("@vue/compiler-sfc");
|
||||
const chalk = require("chalk");
|
||||
function formatError(err, source, file) {
|
||||
const loc = err.loc;
|
||||
diff --git a/node_modules/vue-loader-vue3/dist/index.js b/node_modules/vue-loader-vue3/dist/index.js
|
||||
index 825b3af..263e908 100644
|
||||
--- a/node_modules/vue-loader-vue3/dist/index.js
|
||||
+++ b/node_modules/vue-loader-vue3/dist/index.js
|
||||
@@ -5,7 +5,7 @@ const path = require("path");
|
||||
const qs = require("querystring");
|
||||
const loaderUtils = require("loader-utils");
|
||||
const hash = require("hash-sum");
|
||||
-const compiler_sfc_1 = require("vue/compiler-sfc");
|
||||
+const compiler_sfc_1 = require("@vue/compiler-sfc");
|
||||
const select_1 = require("./select");
|
||||
const hotReload_1 = require("./hotReload");
|
||||
const cssModules_1 = require("./cssModules");
|
||||
diff --git a/node_modules/vue-loader-vue3/dist/resolveScript.js b/node_modules/vue-loader-vue3/dist/resolveScript.js
|
||||
index 31205c6..b15b390 100644
|
||||
--- a/node_modules/vue-loader-vue3/dist/resolveScript.js
|
||||
+++ b/node_modules/vue-loader-vue3/dist/resolveScript.js
|
||||
@@ -2,7 +2,7 @@
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.resolveScript = exports.canInlineTemplate = void 0;
|
||||
const util_1 = require("./util");
|
||||
-const compiler_sfc_1 = require("vue/compiler-sfc");
|
||||
+const compiler_sfc_1 = require("@vue/compiler-sfc");
|
||||
const clientCache = new WeakMap();
|
||||
const serverCache = new WeakMap();
|
||||
/**
|
||||
diff --git a/node_modules/vue-loader-vue3/dist/stylePostLoader.js b/node_modules/vue-loader-vue3/dist/stylePostLoader.js
|
||||
index f694d25..1d15be2 100644
|
||||
--- a/node_modules/vue-loader-vue3/dist/stylePostLoader.js
|
||||
+++ b/node_modules/vue-loader-vue3/dist/stylePostLoader.js
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const qs = require("querystring");
|
||||
-const compiler_sfc_1 = require("vue/compiler-sfc");
|
||||
+const compiler_sfc_1 = require("@vue/compiler-sfc");
|
||||
// This is a post loader that handles scoped CSS transforms.
|
||||
// Injected right before css-loader by the global pitcher (../pitch.js)
|
||||
// for any <style scoped> selection requests initiated from within vue files.
|
||||
diff --git a/node_modules/vue-loader-vue3/dist/templateLoader.js b/node_modules/vue-loader-vue3/dist/templateLoader.js
|
||||
index 78b603c..538f3ca 100644
|
||||
--- a/node_modules/vue-loader-vue3/dist/templateLoader.js
|
||||
+++ b/node_modules/vue-loader-vue3/dist/templateLoader.js
|
||||
@@ -6,7 +6,7 @@ const formatError_1 = require("./formatError");
|
||||
const descriptorCache_1 = require("./descriptorCache");
|
||||
const resolveScript_1 = require("./resolveScript");
|
||||
const util_1 = require("./util");
|
||||
-const compiler_sfc_1 = require("vue/compiler-sfc");
|
||||
+const compiler_sfc_1 = require("@vue/compiler-sfc");
|
||||
// Loader that compiles raw template into JavaScript functions.
|
||||
// This is injected by the global pitcher (../pitch) for template
|
||||
// selection requests initiated from vue files.
|
||||
|
|
@ -13,13 +13,18 @@ export * from '@gitlab/ui';
|
|||
* are imported internally in `@gitlab/ui`.
|
||||
*/
|
||||
|
||||
jest.mock('@gitlab/ui/dist/directives/tooltip.js', () => ({
|
||||
/* eslint-disable global-require */
|
||||
|
||||
jest.mock('@gitlab/ui/src/directives/tooltip.js', () => ({
|
||||
GlTooltipDirective: {
|
||||
bind() {},
|
||||
},
|
||||
}));
|
||||
jest.mock('@gitlab/ui/dist/directives/tooltip.js', () =>
|
||||
require('@gitlab/ui/src/directives/tooltip'),
|
||||
);
|
||||
|
||||
jest.mock('@gitlab/ui/dist/components/base/tooltip/tooltip.js', () => ({
|
||||
jest.mock('@gitlab/ui/src/components/base/tooltip/tooltip.vue', () => ({
|
||||
props: ['target', 'id', 'triggers', 'placement', 'container', 'boundary', 'disabled', 'show'],
|
||||
render(h) {
|
||||
return h(
|
||||
|
|
@ -33,7 +38,11 @@ jest.mock('@gitlab/ui/dist/components/base/tooltip/tooltip.js', () => ({
|
|||
},
|
||||
}));
|
||||
|
||||
jest.mock('@gitlab/ui/dist/components/base/popover/popover.js', () => ({
|
||||
jest.mock('@gitlab/ui/dist/components/base/tooltip/tooltip.js', () =>
|
||||
require('@gitlab/ui/src/components/base/tooltip/tooltip.vue'),
|
||||
);
|
||||
|
||||
jest.mock('@gitlab/ui/src/components/base/popover/popover.vue', () => ({
|
||||
props: {
|
||||
cssClasses: {
|
||||
type: Array,
|
||||
|
|
@ -65,3 +74,6 @@ jest.mock('@gitlab/ui/dist/components/base/popover/popover.js', () => ({
|
|||
);
|
||||
},
|
||||
}));
|
||||
jest.mock('@gitlab/ui/dist/components/base/popover/popover.js', () =>
|
||||
require('@gitlab/ui/src/components/base/popover/popover.vue'),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,13 @@ import {
|
|||
FILTERED_SEARCH_TOKENS,
|
||||
FILTERED_SEARCH_TOKEN_USER,
|
||||
FILTERED_SEARCH_TOKEN_STATUS,
|
||||
FILTERED_SEARCH_TOKEN_CATEGORY,
|
||||
DEFAULT_SORT,
|
||||
SORT_OPTIONS,
|
||||
} from '~/admin/abuse_reports/constants';
|
||||
import FilteredSearchBar from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue';
|
||||
import { FILTERED_SEARCH_TERM } from '~/vue_shared/components/filtered_search_bar/constants';
|
||||
import { buildFilteredSearchCategoryToken } from '~/admin/abuse_reports/utils';
|
||||
|
||||
jest.mock('~/lib/utils/url_utility', () => {
|
||||
const urlUtility = jest.requireActual('~/lib/utils/url_utility');
|
||||
|
|
@ -26,8 +28,12 @@ jest.mock('~/lib/utils/url_utility', () => {
|
|||
describe('AbuseReportsFilteredSearchBar', () => {
|
||||
let wrapper;
|
||||
|
||||
const CATEGORIES = ['spam', 'phishing'];
|
||||
|
||||
const createComponent = () => {
|
||||
wrapper = shallowMount(AbuseReportsFilteredSearchBar);
|
||||
wrapper = shallowMount(AbuseReportsFilteredSearchBar, {
|
||||
provide: { categories: CATEGORIES },
|
||||
});
|
||||
};
|
||||
|
||||
const findFilteredSearchBar = () => wrapper.findComponent(FilteredSearchBar);
|
||||
|
|
@ -39,11 +45,13 @@ describe('AbuseReportsFilteredSearchBar', () => {
|
|||
it('passes correct props to `FilteredSearchBar` component', () => {
|
||||
createComponent();
|
||||
|
||||
const categoryToken = buildFilteredSearchCategoryToken(CATEGORIES);
|
||||
|
||||
expect(findFilteredSearchBar().props()).toMatchObject({
|
||||
namespace: 'abuse_reports',
|
||||
recentSearchesStorageKey: 'abuse_reports',
|
||||
searchInputPlaceholder: 'Filter reports',
|
||||
tokens: FILTERED_SEARCH_TOKENS,
|
||||
tokens: [...FILTERED_SEARCH_TOKENS, categoryToken],
|
||||
initialSortBy: DEFAULT_SORT,
|
||||
sortOptions: SORT_OPTIONS,
|
||||
});
|
||||
|
|
@ -113,6 +121,14 @@ describe('AbuseReportsFilteredSearchBar', () => {
|
|||
type: FILTERED_SEARCH_TOKEN_USER.type,
|
||||
value: { data: 'mr_abuser', operator: '=' },
|
||||
};
|
||||
const STATUS_FILTER_TOKEN = {
|
||||
type: FILTERED_SEARCH_TOKEN_STATUS.type,
|
||||
value: { data: 'open', operator: '=' },
|
||||
};
|
||||
const CATEGORY_FILTER_TOKEN = {
|
||||
type: FILTERED_SEARCH_TOKEN_CATEGORY.type,
|
||||
value: { data: 'spam', operator: '=' },
|
||||
};
|
||||
|
||||
const createComponentAndFilter = (filterTokens, initialLocation) => {
|
||||
if (initialLocation) {
|
||||
|
|
@ -124,19 +140,14 @@ describe('AbuseReportsFilteredSearchBar', () => {
|
|||
findFilteredSearchBar().vm.$emit('onFilter', filterTokens);
|
||||
};
|
||||
|
||||
it('redirects with user query param', () => {
|
||||
createComponentAndFilter([USER_FILTER_TOKEN]);
|
||||
expect(redirectTo).toHaveBeenCalledWith('https://localhost/?user=mr_abuser');
|
||||
});
|
||||
|
||||
it('redirects with status query param', () => {
|
||||
const statusFilterToken = {
|
||||
type: FILTERED_SEARCH_TOKEN_STATUS.type,
|
||||
value: { data: 'open', operator: '=' },
|
||||
};
|
||||
createComponentAndFilter([statusFilterToken]);
|
||||
expect(redirectTo).toHaveBeenCalledWith('https://localhost/?status=open');
|
||||
});
|
||||
it.each([USER_FILTER_TOKEN, STATUS_FILTER_TOKEN, CATEGORY_FILTER_TOKEN])(
|
||||
'redirects with $type query param',
|
||||
(filterToken) => {
|
||||
createComponentAndFilter([filterToken]);
|
||||
const { type, value } = filterToken;
|
||||
expect(redirectTo).toHaveBeenCalledWith(`https://localhost/?${type}=${value.data}`);
|
||||
},
|
||||
);
|
||||
|
||||
it('ignores search query param', () => {
|
||||
const searchFilterToken = { type: FILTERED_SEARCH_TERM, value: { data: 'ignored' } };
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
import { FILTERED_SEARCH_TOKEN_CATEGORY } from '~/admin/abuse_reports/constants';
|
||||
import { buildFilteredSearchCategoryToken } from '~/admin/abuse_reports/utils';
|
||||
|
||||
describe('buildFilteredSearchCategoryToken', () => {
|
||||
it('adds correctly formatted options to FILTERED_SEARCH_TOKEN_CATEGORY', () => {
|
||||
const categories = ['tuxedo', 'tabby'];
|
||||
|
||||
expect(buildFilteredSearchCategoryToken(categories)).toMatchObject({
|
||||
...FILTERED_SEARCH_TOKEN_CATEGORY,
|
||||
options: categories.map((c) => ({ value: c, title: c })),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
/* eslint-disable import/no-commonjs */
|
||||
const Vue = require('vue');
|
||||
const VTU = require('@vue/test-utils');
|
||||
const { installCompat: installVTUCompat, fullCompatConfig } = require('vue-test-utils-compat');
|
||||
|
||||
if (global.document) {
|
||||
const compatConfig = {
|
||||
MODE: 2,
|
||||
|
||||
GLOBAL_MOUNT: 'suppress-warning',
|
||||
GLOBAL_EXTEND: 'suppress-warning',
|
||||
GLOBAL_PROTOTYPE: 'suppress-warning',
|
||||
RENDER_FUNCTION: 'suppress-warning',
|
||||
|
||||
INSTANCE_DESTROY: 'suppress-warning',
|
||||
INSTANCE_DELETE: 'suppress-warning',
|
||||
|
||||
INSTANCE_ATTRS_CLASS_STYLE: 'suppress-warning',
|
||||
INSTANCE_CHILDREN: 'suppress-warning',
|
||||
INSTANCE_SCOPED_SLOTS: 'suppress-warning',
|
||||
INSTANCE_LISTENERS: 'suppress-warning',
|
||||
INSTANCE_EVENT_EMITTER: 'suppress-warning',
|
||||
INSTANCE_EVENT_HOOKS: 'suppress-warning',
|
||||
INSTANCE_SET: 'suppress-warning',
|
||||
GLOBAL_OBSERVABLE: 'suppress-warning',
|
||||
GLOBAL_SET: 'suppress-warning',
|
||||
COMPONENT_FUNCTIONAL: 'suppress-warning',
|
||||
COMPONENT_V_MODEL: 'suppress-warning',
|
||||
CUSTOM_DIR: 'suppress-warning',
|
||||
OPTIONS_BEFORE_DESTROY: 'suppress-warning',
|
||||
OPTIONS_DATA_MERGE: 'suppress-warning',
|
||||
OPTIONS_DATA_FN: 'suppress-warning',
|
||||
OPTIONS_DESTROYED: 'suppress-warning',
|
||||
ATTR_FALSE_VALUE: 'suppress-warning',
|
||||
|
||||
COMPILER_V_ON_NATIVE: 'suppress-warning',
|
||||
COMPILER_V_BIND_OBJECT_ORDER: 'suppress-warning',
|
||||
|
||||
CONFIG_WHITESPACE: 'suppress-warning',
|
||||
CONFIG_OPTION_MERGE_STRATS: 'suppress-warning',
|
||||
PRIVATE_APIS: 'suppress-warning',
|
||||
WATCH_ARRAY: 'suppress-warning',
|
||||
};
|
||||
|
||||
let compatH;
|
||||
Vue.config.compilerOptions.whitespace = 'condense';
|
||||
Vue.createApp({
|
||||
compatConfig: {
|
||||
MODE: 3,
|
||||
RENDER_FUNCTION: 'suppress-warning',
|
||||
},
|
||||
render(h) {
|
||||
compatH = h;
|
||||
},
|
||||
}).mount(document.createElement('div'));
|
||||
|
||||
Vue.configureCompat(compatConfig);
|
||||
installVTUCompat(VTU, fullCompatConfig, compatH);
|
||||
VTU.config.global.renderStubDefaultSlot = true;
|
||||
}
|
||||
|
|
@ -18,6 +18,7 @@ RSpec.describe Admin::AbuseReportsHelper, feature_category: :insider_threat do
|
|||
"total_items" => 1
|
||||
)
|
||||
expect(data['reports'].first).to include("category", "updated_at", "reported_user", "reporter")
|
||||
expect(data['categories']).to match_array(AbuseReport.categories.keys)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,20 +4,20 @@ require 'spec_helper'
|
|||
|
||||
RSpec.describe Gitlab::Ci::Config::Yaml::Result, feature_category: :pipeline_composition do
|
||||
it 'does not have a header when config is a single hash' do
|
||||
result = described_class.new({ a: 1, b: 2 })
|
||||
result = described_class.new(config: { a: 1, b: 2 })
|
||||
|
||||
expect(result).not_to have_header
|
||||
end
|
||||
|
||||
it 'has a header when config is an array of hashes' do
|
||||
result = described_class.new([{ a: 1 }, { b: 2 }])
|
||||
result = described_class.new(config: [{ a: 1 }, { b: 2 }])
|
||||
|
||||
expect(result).to have_header
|
||||
expect(result.header).to eq({ a: 1 })
|
||||
end
|
||||
|
||||
it 'raises an error when reading a header when there is none' do
|
||||
result = described_class.new({ b: 2 })
|
||||
result = described_class.new(config: { b: 2 })
|
||||
|
||||
expect { result.header }.to raise_error(ArgumentError)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ require (
|
|||
github.com/BurntSushi/toml v1.2.1
|
||||
github.com/FZambia/sentinel v1.1.1
|
||||
github.com/alecthomas/chroma/v2 v2.5.0
|
||||
github.com/aws/aws-sdk-go v1.44.215
|
||||
github.com/aws/aws-sdk-go v1.44.216
|
||||
github.com/disintegration/imaging v1.6.2
|
||||
github.com/getsentry/raven-go v0.2.0
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0
|
||||
|
|
|
|||
|
|
@ -569,8 +569,8 @@ github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4
|
|||
github.com/aws/aws-sdk-go v1.44.156/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/aws/aws-sdk-go v1.44.187/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/aws/aws-sdk-go v1.44.200/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/aws/aws-sdk-go v1.44.215 h1:K3KERfO6MaV349idub2w1u1H0R0KSkED0LshPnaAn3Q=
|
||||
github.com/aws/aws-sdk-go v1.44.215/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/aws/aws-sdk-go v1.44.216 h1:nDL5hEGBlUNHXMWbpP4dIyP8IB5tvRgksWE7biVu8JY=
|
||||
github.com/aws/aws-sdk-go v1.44.216/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
|
||||
github.com/aws/aws-sdk-go-v2 v1.17.4 h1:wyC6p9Yfq6V2y98wfDsj6OnNQa4w2BLGCLIxzNhwOGY=
|
||||
github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
|
||||
|
|
|
|||
198
yarn.lock
198
yarn.lock
|
|
@ -338,10 +338,10 @@
|
|||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.18.10", "@babel/parser@^7.19.0":
|
||||
version "7.19.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c"
|
||||
integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.16.8", "@babel/parser@^7.18.10", "@babel/parser@^7.19.0":
|
||||
version "7.21.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3"
|
||||
integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==
|
||||
|
||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12":
|
||||
version "7.17.12"
|
||||
|
|
@ -2544,6 +2544,57 @@
|
|||
"@typescript-eslint/types" "5.38.0"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@vue/compat@^3.2.47":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compat/-/compat-3.2.47.tgz#315c9708a46ce13a1d81e7ff0bec33060a210741"
|
||||
integrity sha512-spULbnhceN3fIGYRRgq75RPRqsakfUV0tyZ4zTweOB48bWtwHUn677exg8/58uLOBc1F5B5lXTD5qf7epqpTuw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.16.4"
|
||||
estree-walker "^2.0.2"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@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-dom@3.2.47", "@vue/compiler-dom@^3.0.1":
|
||||
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-sfc@^3.2.47":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz#1bdc36f6cdc1643f72e2c397eb1a398f5004ad3d"
|
||||
integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.16.4"
|
||||
"@vue/compiler-core" "3.2.47"
|
||||
"@vue/compiler-dom" "3.2.47"
|
||||
"@vue/compiler-ssr" "3.2.47"
|
||||
"@vue/reactivity-transform" "3.2.47"
|
||||
"@vue/shared" "3.2.47"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
postcss "^8.1.10"
|
||||
source-map "^0.6.1"
|
||||
|
||||
"@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/component-compiler-utils@^3.1.0":
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz#f9f5fb53464b0c37b2c8d2f3fbfe44df60f61dc9"
|
||||
|
|
@ -2560,6 +2611,40 @@
|
|||
optionalDependencies:
|
||||
prettier "^1.18.2 || ^2.0.0"
|
||||
|
||||
"@vue/reactivity-transform@3.2.47":
|
||||
version "3.2.47"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz#e45df4d06370f8abf29081a16afd25cffba6d84e"
|
||||
integrity sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.16.4"
|
||||
"@vue/compiler-core" "3.2.47"
|
||||
"@vue/shared" "3.2.47"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.25.7"
|
||||
|
||||
"@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==
|
||||
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/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==
|
||||
dependencies:
|
||||
js-beautify "1.14.6"
|
||||
optionalDependencies:
|
||||
"@vue/compiler-dom" "^3.0.1"
|
||||
"@vue/server-renderer" "^3.0.1"
|
||||
|
||||
"@vue/test-utils@1.3.0":
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.3.0.tgz#d563decdcd9c68a7bca151d4179a2bfd6d5c3e15"
|
||||
|
|
@ -2581,6 +2666,18 @@
|
|||
source-map "0.5.6"
|
||||
tsconfig "^7.0.0"
|
||||
|
||||
"@vue/vue3-jest@^29.2.3":
|
||||
version "29.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@vue/vue3-jest/-/vue3-jest-29.2.3.tgz#79caa80e6faff1f26be90c9da92447e7e03de9a0"
|
||||
integrity sha512-wbit0rGgy9ARUBtc5dZ6PGCrxazCPs5pZ6ycB0qYMoEPmkRj8lIVUfJmTz03ryIAeVQOcTKnEWdcqgrTErl3vg==
|
||||
dependencies:
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.2.0"
|
||||
chalk "^2.1.0"
|
||||
convert-source-map "^1.6.0"
|
||||
css-tree "^2.0.1"
|
||||
source-map "0.5.6"
|
||||
tsconfig "^7.0.0"
|
||||
|
||||
"@webassemblyjs/ast@1.9.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
|
||||
|
|
@ -2784,7 +2881,7 @@ abab@^2.0.5, 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, abbrev@^1.0.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||
|
|
@ -3973,10 +4070,10 @@ condense-newlines@^0.2.1:
|
|||
is-whitespace "^0.3.0"
|
||||
kind-of "^3.0.2"
|
||||
|
||||
config-chain@^1.1.12:
|
||||
version "1.1.12"
|
||||
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
|
||||
integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
|
||||
config-chain@^1.1.13:
|
||||
version "1.1.13"
|
||||
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
|
||||
integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
|
||||
dependencies:
|
||||
ini "^1.3.4"
|
||||
proto-list "~1.2.1"
|
||||
|
|
@ -5766,6 +5863,11 @@ estraverse@^5.1.0, estraverse@^5.2.0:
|
|||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
|
||||
integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
|
||||
|
||||
estree-walker@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
|
|
@ -6376,7 +6478,7 @@ glob-parent@^6.0.2:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@~8.0.3:
|
||||
glob@^8.0.3, 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==
|
||||
|
|
@ -6648,6 +6750,11 @@ hash-sum@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
|
||||
integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==
|
||||
|
||||
hash-sum@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
|
||||
integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
|
||||
|
||||
hash.js@^1.0.0, hash.js@^1.0.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
|
||||
|
|
@ -7881,16 +7988,15 @@ jquery.caret@^0.3.1:
|
|||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
|
||||
integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==
|
||||
|
||||
js-beautify@^1.6.12:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2"
|
||||
integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A==
|
||||
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==
|
||||
dependencies:
|
||||
config-chain "^1.1.12"
|
||||
config-chain "^1.1.13"
|
||||
editorconfig "^0.15.3"
|
||||
glob "^7.1.3"
|
||||
mkdirp "~1.0.3"
|
||||
nopt "^4.0.3"
|
||||
glob "^8.0.3"
|
||||
nopt "^6.0.0"
|
||||
|
||||
js-cookie@^3.0.0:
|
||||
version "3.0.1"
|
||||
|
|
@ -8360,6 +8466,13 @@ lru-cache@^6.0.0:
|
|||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
magic-string@^0.25.7:
|
||||
version "0.25.9"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
|
||||
integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
|
||||
dependencies:
|
||||
sourcemap-codec "^1.4.8"
|
||||
|
||||
make-dir@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||
|
|
@ -9220,7 +9333,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.3:
|
|||
dependencies:
|
||||
minimist "^1.2.5"
|
||||
|
||||
mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.3:
|
||||
mkdirp@^1.0.3, mkdirp@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
|
@ -9439,13 +9552,12 @@ nodemon@^2.0.19:
|
|||
touch "^3.1.0"
|
||||
undefsafe "^2.0.5"
|
||||
|
||||
nopt@^4.0.3:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
|
||||
integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
|
||||
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==
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
osenv "^0.1.4"
|
||||
abbrev "^1.0.0"
|
||||
|
||||
nopt@~1.0.10:
|
||||
version "1.0.10"
|
||||
|
|
@ -9673,24 +9785,11 @@ os-browserify@^0.3.0:
|
|||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
||||
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
|
||||
|
||||
os-homedir@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
|
||||
|
||||
os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
|
||||
os-tmpdir@~1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
||||
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
||||
|
||||
osenv@^0.1.4:
|
||||
version "0.1.5"
|
||||
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
|
||||
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
|
||||
dependencies:
|
||||
os-homedir "^1.0.0"
|
||||
os-tmpdir "^1.0.0"
|
||||
|
||||
p-limit@3.1.0, p-limit@^3.0.2, p-limit@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
|
||||
|
|
@ -10042,7 +10141,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
|
|||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||
|
||||
postcss@8.4.14, postcss@^8.2.1, postcss@^8.4.14:
|
||||
postcss@8.4.14, postcss@^8.1.10, postcss@^8.2.1, postcss@^8.4.14:
|
||||
version "8.4.14"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
|
||||
integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
|
||||
|
|
@ -11298,6 +11397,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
|
|||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
sourcemap-codec@^1.4.8:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||
|
||||
space-separated-tokens@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b"
|
||||
|
|
@ -12468,6 +12572,15 @@ vue-hot-reload-api@^2.3.0:
|
|||
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
|
||||
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
|
||||
|
||||
"vue-loader-vue3@npm:vue-loader@17":
|
||||
version "17.0.1"
|
||||
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-17.0.1.tgz#c0ee8875e0610a0c2d13ba9b4d50a9c8442e7a3a"
|
||||
integrity sha512-/OOyugJnImKCkAKrAvdsWMuwoCqGxWT5USLsjohzWbMgOwpA5wQmzQiLMzZd7DjhIfunzAGIApTOgIylz/kwcg==
|
||||
dependencies:
|
||||
chalk "^4.1.0"
|
||||
hash-sum "^2.0.0"
|
||||
loader-utils "^2.0.0"
|
||||
|
||||
vue-loader@15.9.6:
|
||||
version "15.9.6"
|
||||
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.6.tgz#f4bb9ae20c3a8370af3ecf09b8126d38ffdb6b8b"
|
||||
|
|
@ -12522,6 +12635,11 @@ vue-template-es2015-compiler@^1.9.0:
|
|||
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
|
||||
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
|
||||
|
||||
vue-test-utils-compat@^0.0.11:
|
||||
version "0.0.11"
|
||||
resolved "https://registry.yarnpkg.com/vue-test-utils-compat/-/vue-test-utils-compat-0.0.11.tgz#d3e92bcee6893e7506b5d6463f774678f144fe7a"
|
||||
integrity sha512-vAc19M4GS0qxGZGB0UZg7mG6j90hyNoDQXWYCEG4Sjahyi+v+CHq9xHa6js70S8HExNkm2f4LF3x2+gbCMFVUQ==
|
||||
|
||||
vue-virtual-scroll-list@^1.4.7:
|
||||
version "1.4.7"
|
||||
resolved "https://registry.yarnpkg.com/vue-virtual-scroll-list/-/vue-virtual-scroll-list-1.4.7.tgz#12ee26833885f5bb4d37dc058085ccf3ce5b5a74"
|
||||
|
|
|
|||
Loading…
Reference in New Issue