add eslint

add prettier
integrate concept of runner libs to share tasks
This commit is contained in:
Florian Schade
2020-12-03 16:06:04 +01:00
parent e7ee1c3c9e
commit bd773b54ef
24 changed files with 655 additions and 368 deletions

View File

@@ -1,4 +1,8 @@
{
"plugins": [
"simple-import-sort",
"import"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
@@ -10,5 +14,10 @@
"plugin:prettier/recommended"
],
"rules": {
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
"import/first": "error",
"import/newline-after-import": "error",
"import/no-duplicates": "error",
}
}

View File

@@ -36,8 +36,10 @@
"babel-plugin-lodash": "^3.3.4",
"eslint": "^7.14.0",
"eslint-config-prettier": "^6.15.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^23.8.2",
"eslint-plugin-prettier": "^3.2.0",
"eslint-plugin-simple-import-sort": "^6.0.1",
"husky": "^4.3.0",
"jest": "^25.4.0",
"k6": "^0.0.0",

View File

@@ -1,8 +1,8 @@
import commonjs from '@rollup/plugin-commonjs'
import json from '@rollup/plugin-json'
import resolve from '@rollup/plugin-node-resolve'
import babel from 'rollup-plugin-babel'
import { terser } from 'rollup-plugin-terser'
import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import resolve from '@rollup/plugin-node-resolve';
import babel from 'rollup-plugin-babel';
import { terser } from 'rollup-plugin-terser';
import multiInput from 'rollup-plugin-multi-input';
import utils from '@rollup/pluginutils';
import pkg from './package.json';
@@ -10,36 +10,31 @@ import pkg from './package.json';
const extensions = ['.js', '.ts'];
export default [
{
input: ['src/test/**/*.ts'],
external: utils.createFilter([
'k6/**',
...Object.keys(pkg.devDependencies),
], null, { resolve: false }),
output: [
{
dir: 'dist',
format: 'cjs',
exports: 'named',
chunkFileNames: '_chunks/[name]-[hash].js'
},
],
plugins: [
multiInput({
transformOutputPath: (output, input) => `${output.split('/').join('-')}`,
}),
json(),
resolve(
{
extensions,
}
),
commonjs(),
babel({
extensions,
include: ['src/**/*'],
}),
terser(),
],
}
]
{
input: ['src/test/**/*.ts', '!src/test/**/*.lib.ts', '!src/test/**/index.ts', '!src/test/**/_*.ts'],
external: utils.createFilter(['k6/**', ...Object.keys(pkg.devDependencies)], null, { resolve: false }),
output: [
{
dir: 'dist',
format: 'cjs',
exports: 'named',
chunkFileNames: '_chunks/[name]-[hash].js',
},
],
plugins: [
multiInput({
transformOutputPath: (output, input) => `${output.split('/').join('-')}`,
}),
json(),
resolve({
extensions,
}),
commonjs(),
babel({
extensions,
include: ['src/**/*'],
}),
terser(),
],
},
];

View File

@@ -1,9 +1,10 @@
import encoding from 'k6/encoding';
import * as types from '../types';
import * as defaults from '../defaults';
import { merge } from 'lodash';
import http, { RefinedParams, RefinedResponse, RequestBody, ResponseType } from 'k6/http';
import { bytes } from 'k6';
import encoding from 'k6/encoding';
import http, { RefinedParams, RefinedResponse, RequestBody, ResponseType } from 'k6/http';
import { merge } from 'lodash';
import * as defaults from '../defaults';
import * as types from '../types';
export const buildHeaders = ({ credential }: { credential?: types.Credential }): { [key: string]: string } => {
const isOIDCGuard = (credential as types.Token).tokenType !== undefined;

View File

@@ -1,6 +1,7 @@
import { RefinedResponse, ResponseType } from 'k6/http';
import * as api from './api';
import * as types from '../types';
import * as api from './api';
export class Upload {
public static exec({

View File

@@ -1,6 +1,7 @@
import { RefinedResponse, ResponseType } from 'k6/http';
import * as api from './api';
import * as types from '../types';
import * as api from './api';
export class Create {
public static exec({

View File

@@ -1,9 +1,10 @@
import * as defaults from './defaults';
import http from 'k6/http';
import queryString from 'query-string';
import * as types from './types';
import { fail } from 'k6';
import http from 'k6/http';
import { get } from 'lodash';
import queryString from 'query-string';
import * as defaults from './defaults';
import * as types from './types';
export default class Factory {
private provider!: types.AuthProvider;

View File

@@ -1,6 +1,6 @@
export * as api from './api';
export * as playbook from './playbook';
export * as auth from './auth';
export { default as auth } from './auth';
export * as defaults from './defaults';
export * as playbook from './playbook';
export * as types from './types';
export * as utils from './utils';

View File

@@ -1,7 +1,8 @@
import * as api from '../api';
import { check } from 'k6';
import * as types from '../types';
import { RefinedResponse, ResponseType } from 'k6/http';
import * as api from '../api';
import * as types from '../types';
import { Play } from './playbook';
export class Upload extends Play {

View File

@@ -1,7 +1,8 @@
import * as api from '../api';
import { check } from 'k6';
import * as types from '../types';
import { RefinedResponse, ResponseType } from 'k6/http';
import * as api from '../api';
import * as types from '../types';
import { Play } from './playbook';
export class Create extends Play {

View File

@@ -1,5 +1,6 @@
import { bytes } from 'k6';
import { randomBytes as k6_randomBytes } from 'k6/crypto';
import * as defaults from './defaults';
import * as types from './types';

View File

@@ -1,34 +1,43 @@
import { Options, Threshold } from 'k6/options';
import { utils, auth, defaults, playbook, types } from '../../../../../../lib';
import { times } from 'lodash';
// Unpack standard data tarball, run PROPFIND on each dir
import { playbook, types, utils } from '../../../../../../lib';
const files: {
interface File {
size: number;
unit: types.AssetUnit;
}[] = times(1000, () => ({ size: 1, unit: 'KB' }));
const authFactory = new auth.default(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davPropfind: new playbook.dav.Propfind(),
davCreate: new playbook.dav.Create(),
davDelete: new playbook.dav.Delete(),
}
interface Plays {
davUpload: playbook.dav.Upload;
davPropfind: playbook.dav.Propfind;
davCreate: playbook.dav.Create;
davDelete: playbook.dav.Delete;
}
export const options = ({ files, plays }: { files: File[]; plays: Plays }): Options => {
return {
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davCreate.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davCreate.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
export default (): void => {
export default ({
files,
account,
credential,
plays,
}: {
plays: Plays;
files: File[];
account: types.Account;
credential: types.Credential;
}): void => {
const filesUploaded: { id: string; name: string; folder: string }[] = [];
const { account, credential } = authFactory;
files.forEach((f) => {
const id = f.unit + f.size.toString();

View File

@@ -0,0 +1,27 @@
import { Options } from 'k6/options';
import { times } from 'lodash';
import { auth, defaults, playbook, types, utils } from '../../../../../../lib';
import { default as propfind, options as propfindOptions } from './deep.lib';
// put 1000 files into nested dirs and run a 'PROPFIND' through API
const files: {
size: number;
unit: types.AssetUnit;
}[] = times(1000, () => ({ size: 1, unit: 'KB' }));
const authFactory = new auth(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davCreate: new playbook.dav.Create(),
davPropfind: new playbook.dav.Propfind(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
...propfindOptions({ plays, files }),
};
export default (): void => propfind({ files, plays, credential: authFactory.credential, account: authFactory.account });

View File

@@ -0,0 +1,71 @@
import { Options, Threshold } from 'k6/options';
import { playbook, types, utils } from '../../../../../../lib';
interface File {
size: number;
unit: types.AssetUnit;
}
interface Plays {
davUpload: playbook.dav.Upload;
davPropfind: playbook.dav.Propfind;
davDelete: playbook.dav.Delete;
}
export const options = ({ files, plays }: { files: File[]; plays: Plays }): Options => {
return {
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
};
export default ({
files,
account,
credential,
plays,
}: {
plays: Plays;
files: File[];
account: types.Account;
credential: types.Credential;
}): void => {
const filesUploaded: { id: string; name: string }[] = [];
files.forEach((f) => {
const id = f.unit + f.size.toString();
const asset = utils.buildAsset({
name: `${account.login}-dummy.zip`,
unit: f.unit,
size: f.size,
});
plays.davUpload.exec({
credential,
asset,
userName: account.login,
tags: { asset: id },
});
filesUploaded.push({ id, name: asset.name });
});
plays.davPropfind.exec({
credential,
userName: account.login,
});
filesUploaded.forEach((f) => {
plays.davDelete.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
};

View File

@@ -0,0 +1,26 @@
import { Options } from 'k6/options';
import { times } from 'lodash';
import { auth, defaults, playbook, types, utils } from '../../../../../../lib';
import { default as propfind, options as propfindOptions } from './flat.lib';
// put 1000 files into one dir and run a 'PROPFIND' through API
const files: {
size: number;
unit: types.AssetUnit;
}[] = times(1000, () => ({ size: 1, unit: 'KB' }));
const authFactory = new auth(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davPropfind: new playbook.dav.Propfind(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
...propfindOptions({ plays, files }),
};
export default (): void => propfind({ files, plays, credential: authFactory.credential, account: authFactory.account });

View File

@@ -0,0 +1,33 @@
import { Options } from 'k6/options';
import { auth, defaults, playbook, types, utils } from '../../../../../../lib';
import { default as upDownDelete, options as upDownDeleteOptions } from './shared.lib';
// upload, download and delete of many files with several sizes and summary size of 500 MB in one directory
const files: {
size: number;
unit: types.AssetUnit;
}[] = [
{ size: 50, unit: 'KB' },
{ size: 500, unit: 'KB' },
{ size: 5, unit: 'MB' },
{ size: 50, unit: 'MB' },
{ size: 500, unit: 'MB' },
{ size: 1, unit: 'GB' },
];
const authFactory = new auth(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davDownload: new playbook.dav.Download(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
...upDownDeleteOptions({ plays, files }),
};
export default (): void =>
upDownDelete({ files, plays, credential: authFactory.credential, account: authFactory.account });

View File

@@ -0,0 +1,31 @@
import { Options } from 'k6/options';
import { times } from 'lodash';
import { auth, defaults, playbook, types, utils } from '../../../../../../lib';
import { default as upDownDelete, options as upDownDeleteOptions } from './shared.lib';
// upload, download and delete of many files with several sizes and summary size of 500 MB in one directory
const files: {
size: number;
unit: types.AssetUnit;
}[] = [
...times(100, () => ({ size: 500, unit: 'KB' as types.AssetUnit })),
...times(50, () => ({ size: 5, unit: 'MB' as types.AssetUnit })),
...times(10, () => ({ size: 25, unit: 'MB' as types.AssetUnit })),
];
const authFactory = new auth(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davDownload: new playbook.dav.Download(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
...upDownDeleteOptions({ plays, files }),
};
export default (): void =>
upDownDelete({ files, plays, credential: authFactory.credential, account: authFactory.account });

View File

@@ -0,0 +1,76 @@
import { Options, Threshold } from 'k6/options';
import { playbook, types, utils } from '../../../../../../lib';
interface File {
size: number;
unit: types.AssetUnit;
}
interface Plays {
davUpload: playbook.dav.Upload;
davDownload: playbook.dav.Download;
davDelete: playbook.dav.Delete;
}
export const options = ({ files, plays }: { files: File[]; plays: Plays }): Options => {
return {
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDownload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
};
export default ({
files,
account,
credential,
plays,
}: {
plays: Plays;
files: File[];
account: types.Account;
credential: types.Credential;
}): void => {
const filesUploaded: { id: string; name: string }[] = [];
files.forEach((f) => {
const id = f.unit + f.size.toString();
const asset = utils.buildAsset({
name: `${account.login}-dummy.zip`,
unit: f.unit,
size: f.size,
});
plays.davUpload.exec({
credential,
asset,
userName: account.login,
tags: { asset: id },
});
filesUploaded.push({ id, name: asset.name });
});
filesUploaded.forEach((f) => {
plays.davDownload.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
filesUploaded.forEach((f) => {
plays.davDelete.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
};

View File

@@ -0,0 +1,44 @@
import { Options } from 'k6/options';
import { times } from 'lodash';
import { auth, defaults, playbook, types, utils } from '../../../../../../lib';
import { default as upDownDelete, options as upDownDeleteOptions } from './shared.lib';
// create 10 users. Do the Simple Uploads & downloads with each user in parallel.
const files: {
size: number;
unit: types.AssetUnit;
}[] = times(10, () => ({ size: 1, unit: 'KB' as types.AssetUnit }));
const authFactory = new auth(utils.buildAccount({ login: defaults.ACCOUNTS.ADMIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davDownload: new playbook.dav.Download(),
davDelete: new playbook.dav.Delete(),
usersCreate: new playbook.users.Create(),
usersDelete: new playbook.users.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 10,
vus: 10,
...upDownDeleteOptions({ plays, files }),
};
export default (): void => {
const userName: string = utils.randomString();
const password: string = utils.randomString();
plays.usersCreate.exec({
userName,
password,
email: `${userName}@owncloud.com`,
credential: authFactory.credential,
});
const userAuthFactory = new auth({ login: userName, password });
upDownDelete({ files, plays, credential: userAuthFactory.credential, account: userAuthFactory.account });
plays.usersDelete.exec({ userName: userName, credential: authFactory.credential });
};

View File

@@ -1,73 +0,0 @@
import { Options, Threshold } from 'k6/options';
import { utils, auth, defaults, playbook, types } from '../../../../../lib';
const files: Array<{
size: number;
unit: types.AssetUnit;
}> = [
{ size: 50, unit: 'KB' },
{ size: 500, unit: 'KB' },
{ size: 5, unit: 'MB' },
{ size: 50, unit: 'MB' },
];
const adminAuthFactory = new auth.default(utils.buildAccount({ login: defaults.ACCOUNTS.ADMIN }));
const plays = {
usersCreate: new playbook.users.Create(),
usersDelete: new playbook.users.Delete(),
davUpload: new playbook.dav.Upload(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 10,
vus: 10,
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
export default (): void => {
const userName: string = utils.randomString();
const password: string = utils.randomString();
plays.usersCreate.exec({
userName,
password,
email: `${userName}@owncloud.com`,
credential: adminAuthFactory.credential,
});
const userAuthFactory = new auth.default({ login: userName, password });
const filesUploaded: { id: string; name: string }[] = [];
files.forEach((f) => {
const id = f.unit + f.size.toString();
const asset = utils.buildAsset({
name: `${userName}-dummy.zip`,
unit: f.unit,
size: f.size,
});
plays.davUpload.exec({
credential: userAuthFactory.credential,
asset,
userName,
tags: { asset: id },
});
filesUploaded.push({ id, name: asset.name });
});
filesUploaded.forEach((f) => {
plays.davDelete.exec({
credential: userAuthFactory.credential,
userName: userAuthFactory.account.login,
path: f.name,
tags: { asset: f.id },
});
});
plays.usersDelete.exec({ userName: userName, credential: adminAuthFactory.credential });
};

View File

@@ -1,63 +0,0 @@
import { Options, Threshold } from 'k6/options';
import { utils, auth, defaults, playbook, types } from '../../../../../../lib';
import { times } from 'lodash';
// put 1000 files into one dir and run a 'PROPFIND' through API
const files: {
size: number;
unit: types.AssetUnit;
}[] = times(1000, () => ({ size: 1, unit: 'KB' }));
const authFactory = new auth.default(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davPropfind: new playbook.dav.Propfind(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
export default (): void => {
const filesUploaded: { id: string; name: string }[] = [];
const { account, credential } = authFactory;
files.forEach((f) => {
const id = f.unit + f.size.toString();
const asset = utils.buildAsset({
name: `${account.login}-dummy.zip`,
unit: f.unit,
size: f.size,
});
plays.davUpload.exec({
credential,
asset,
userName: account.login,
tags: { asset: id },
});
filesUploaded.push({ id, name: asset.name });
});
plays.davPropfind.exec({
credential,
userName: account.login,
});
filesUploaded.forEach((f) => {
plays.davDelete.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
};

View File

@@ -1,72 +0,0 @@
import { Options, Threshold } from 'k6/options';
import { utils, auth, defaults, playbook, types } from '../../../../../../lib';
import { times } from 'lodash';
// upload, download and delete of many files with several sizes and summary size of 500 MB in one directory
const files: {
size: number;
unit: types.AssetUnit;
}[] = [
...times(100, () => ({ size: 500, unit: 'KB' as types.AssetUnit })),
...times(50, () => ({ size: 5, unit: 'MB' as types.AssetUnit })),
...times(10, () => ({ size: 25, unit: 'MB' as types.AssetUnit })),
];
const authFactory = new auth.default(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davDownload: new playbook.dav.Download(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDownload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
export default (): void => {
const filesUploaded: { id: string; name: string }[] = [];
const { account, credential } = authFactory;
files.forEach((f) => {
const id = f.unit + f.size.toString();
const asset = utils.buildAsset({
name: `${account.login}-dummy.zip`,
unit: f.unit,
size: f.size,
});
plays.davUpload.exec({
credential,
asset,
userName: account.login,
tags: { asset: id },
});
filesUploaded.push({ id, name: asset.name });
});
filesUploaded.forEach((f) => {
plays.davDownload.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
filesUploaded.forEach((f) => {
plays.davDelete.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
};

View File

@@ -1,75 +0,0 @@
import { Options, Threshold } from 'k6/options';
import { utils, auth, defaults, playbook, types } from '../../../../../../lib';
// upload, download and delete of one file with sizes 50kb, 500kb, 5MB, 50MB, 500MB, 1GB
const files: {
size: number;
unit: types.AssetUnit;
}[] = [
{ size: 50, unit: 'KB' },
{ size: 500, unit: 'KB' },
{ size: 5, unit: 'MB' },
{ size: 50, unit: 'MB' },
{ size: 500, unit: 'MB' },
{ size: 1, unit: 'GB' },
];
const authFactory = new auth.default(utils.buildAccount({ login: defaults.ACCOUNTS.EINSTEIN }));
const plays = {
davUpload: new playbook.dav.Upload(),
davDownload: new playbook.dav.Download(),
davDelete: new playbook.dav.Delete(),
};
export const options: Options = {
insecureSkipTLSVerify: true,
iterations: 3,
vus: 1,
thresholds: files.reduce((acc: { [name: string]: Threshold[] }, c) => {
acc[`${plays.davUpload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDownload.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
acc[`${plays.davDelete.metricTrendName}{asset:${c.unit + c.size.toString()}}`] = [];
return acc;
}, {}),
};
export default (): void => {
const filesUploaded: { id: string; name: string }[] = [];
const { account, credential } = authFactory;
files.forEach((f) => {
const id = f.unit + f.size.toString();
const asset = utils.buildAsset({
name: `${account.login}-dummy.zip`,
unit: f.unit,
size: f.size,
});
plays.davUpload.exec({
credential,
asset,
userName: account.login,
tags: { asset: id },
});
filesUploaded.push({ id, name: asset.name });
});
filesUploaded.forEach((f) => {
plays.davDownload.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
filesUploaded.forEach((f) => {
plays.davDelete.exec({
credential,
userName: account.login,
path: f.name,
tags: { asset: f.id },
});
});
};

View File

@@ -1378,6 +1378,11 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==
"@types/json5@^0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
"@types/k6@^0.28.2":
version "0.28.2"
resolved "https://registry.yarnpkg.com/@types/k6/-/k6-0.28.2.tgz#619cd018ea43f47457a940cec2579fe00591c980"
@@ -1741,6 +1746,17 @@ array-ify@^1.0.0:
resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
array-includes@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8"
integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
get-intrinsic "^1.0.1"
is-string "^1.0.5"
array-union@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
@@ -1751,6 +1767,15 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
array.prototype.flat@^1.2.3:
version "1.2.4"
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123"
integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -2262,6 +2287,11 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
contains-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
conventional-changelog-angular@^1.3.3:
version "1.6.6"
resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f"
@@ -2413,7 +2443,7 @@ data-urls@^1.1.0:
whatwg-mimetype "^2.2.0"
whatwg-url "^7.0.0"
debug@^2.2.0, debug@^2.3.3:
debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -2516,6 +2546,14 @@ dlv@^1.1.0:
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
doctrine@1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
dependencies:
esutils "^2.0.2"
isarray "^1.0.0"
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -2574,13 +2612,40 @@ enquirer@^2.3.5, enquirer@^2.3.6:
dependencies:
ansi-colors "^4.1.1"
error-ex@^1.3.1:
error-ex@^1.2.0, error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.18.0-next.1:
version "1.18.0-next.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
dependencies:
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
is-callable "^1.2.2"
is-negative-zero "^2.0.0"
is-regex "^1.1.1"
object-inspect "^1.8.0"
object-keys "^1.1.1"
object.assign "^4.1.1"
string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1"
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
is-symbol "^1.0.2"
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -2615,6 +2680,41 @@ eslint-config-prettier@^6.15.0:
dependencies:
get-stdin "^6.0.0"
eslint-import-resolver-node@^0.3.4:
version "0.3.4"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
dependencies:
debug "^2.6.9"
resolve "^1.13.1"
eslint-module-utils@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
dependencies:
debug "^2.6.9"
pkg-dir "^2.0.0"
eslint-plugin-import@^2.22.1:
version "2.22.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
dependencies:
array-includes "^3.1.1"
array.prototype.flat "^1.2.3"
contains-path "^0.1.0"
debug "^2.6.9"
doctrine "1.5.0"
eslint-import-resolver-node "^0.3.4"
eslint-module-utils "^2.6.0"
has "^1.0.3"
minimatch "^3.0.4"
object.values "^1.1.1"
read-pkg-up "^2.0.0"
resolve "^1.17.0"
tsconfig-paths "^3.9.0"
eslint-plugin-jest@^23.8.2:
version "23.20.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.20.0.tgz#e1d69c75f639e99d836642453c4e75ed22da4099"
@@ -2629,6 +2729,11 @@ eslint-plugin-prettier@^3.2.0:
dependencies:
prettier-linter-helpers "^1.0.0"
eslint-plugin-simple-import-sort@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-6.0.1.tgz#24a3af3b745dcd389c060db28e22d0f5e3edf86e"
integrity sha512-RfFnoi7fQtv7z9sZNJidIcZgWc0ZJe8uOPC3ldmatai4Igr5iDpzTmSUDEZKYm4TnrR01N0X32kfKvax7bivHQ==
eslint-scope@^5.0.0, eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
@@ -2964,7 +3069,7 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
find-up@^2.0.0:
find-up@^2.0.0, find-up@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
@@ -3061,7 +3166,7 @@ get-caller-file@^2.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.0.0:
get-intrinsic@^1.0.0, get-intrinsic@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be"
integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==
@@ -3422,6 +3527,11 @@ is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-callable@^1.1.4, is-callable@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
@@ -3450,6 +3560,11 @@ is-data-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
is-date-object@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
is-descriptor@^0.1.0:
version "0.1.6"
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
@@ -3522,6 +3637,11 @@ is-module@^1.0.0:
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
is-negative-zero@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
is-number@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@@ -3558,6 +3678,13 @@ is-reference@^1.1.2:
dependencies:
"@types/estree" "*"
is-regex@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
dependencies:
has-symbols "^1.0.1"
is-regexp@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
@@ -3573,6 +3700,18 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
is-string@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
is-symbol@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
dependencies:
has-symbols "^1.0.1"
is-text-path@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
@@ -3597,7 +3736,7 @@ is-wsl@^2.1.1:
dependencies:
is-docker "^2.0.0"
isarray@1.0.0, isarray@~1.0.0:
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -4127,6 +4266,13 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
json5@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
dependencies:
minimist "^1.2.0"
json5@^2.1.2:
version "2.1.3"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
@@ -4244,6 +4390,16 @@ listr2@^3.2.2:
rxjs "^6.6.3"
through "^2.3.8"
load-json-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
dependencies:
graceful-fs "^4.1.2"
parse-json "^2.2.0"
pify "^2.0.0"
strip-bom "^3.0.0"
load-json-file@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
@@ -4672,6 +4828,11 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
object-inspect@^1.8.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
@@ -4684,7 +4845,7 @@ object-visit@^1.0.0:
dependencies:
isobject "^3.0.0"
object.assign@^4.1.0:
object.assign@^4.1.0, object.assign@^4.1.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
@@ -4701,6 +4862,16 @@ object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
object.values@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731"
integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
has "^1.0.3"
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -4811,6 +4982,13 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
parse-json@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
dependencies:
error-ex "^1.2.0"
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -4869,6 +5047,13 @@ path-parse@^1.0.6:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
path-type@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
dependencies:
pify "^2.0.0"
path-type@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
@@ -4891,6 +5076,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
pify@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
@@ -4903,6 +5093,13 @@ pirates@^4.0.1:
dependencies:
node-modules-regexp "^1.0.0"
pkg-dir@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
dependencies:
find-up "^2.1.0"
pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
@@ -5062,6 +5259,14 @@ react-is@^16.12.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
read-pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
dependencies:
find-up "^2.0.0"
read-pkg "^2.0.0"
read-pkg-up@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
@@ -5079,6 +5284,15 @@ read-pkg-up@^7.0.1:
read-pkg "^5.2.0"
type-fest "^0.8.1"
read-pkg@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
dependencies:
load-json-file "^2.0.0"
normalize-package-data "^2.3.2"
path-type "^2.0.0"
read-pkg@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
@@ -5328,7 +5542,7 @@ resolve@1.1.7:
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
resolve@^1.10.0, resolve@^1.11.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2:
resolve@^1.10.0, resolve@^1.11.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.3.2:
version "1.19.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
@@ -5804,6 +6018,22 @@ string-width@^4.1.0, string-width@^4.2.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0"
string.prototype.trimend@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
string.prototype.trimstart@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -6076,6 +6306,16 @@ trim-off-newlines@^1.0.0:
resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
tsconfig-paths@^3.9.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
dependencies:
"@types/json5" "^0.0.29"
json5 "^1.0.1"
minimist "^1.2.0"
strip-bom "^3.0.0"
tslib@^1.8.1, tslib@^1.9.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"