adsafdsdfsa
This commit is contained in:
parent
dd7bc37c8b
commit
37e21cbc70
13 changed files with 275 additions and 435 deletions
|
@ -21,6 +21,7 @@
|
|||
"@tailwindcss/forms": "^0.5.2",
|
||||
"@tailwindcss/typography": "^0.5.3",
|
||||
"@types/minio": "^7.0.16",
|
||||
"@types/semver": "^7.3.13",
|
||||
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
||||
"@typescript-eslint/parser": "^5.45.0",
|
||||
"autoprefixer": "^10.4.7",
|
||||
|
@ -49,6 +50,7 @@
|
|||
"minio": "^7.0.32",
|
||||
"nano": "^10.1.2",
|
||||
"nanoid": "^4.0.1",
|
||||
"semver": "^7.3.8",
|
||||
"svelte-feather-icons": "^4.0.0",
|
||||
"zod": "^3.20.6"
|
||||
}
|
||||
|
|
41
src/lib/fetchutils.ts
Normal file
41
src/lib/fetchutils.ts
Normal file
|
@ -0,0 +1,41 @@
|
|||
const ratelimits: Record<string, Promise<void>> = {};
|
||||
|
||||
export async function fetch_with_ratelimit(
|
||||
ratelimit_id: string,
|
||||
input: RequestInfo | URL,
|
||||
init?: RequestInit | undefined
|
||||
): Promise<Response> {
|
||||
if (ratelimit_id in ratelimits) {
|
||||
await ratelimits[ratelimit_id];
|
||||
}
|
||||
if (!init) {
|
||||
init = {
|
||||
headers: {
|
||||
'User-Agent': 'NotModdermore/noversion (+https://git.skye.vg/me/not-moddermore/)'
|
||||
}
|
||||
};
|
||||
}
|
||||
const response = await fetch(input, init);
|
||||
if (response.status == 429 || response.headers.get('X-Ratelimit-Remaining') == '0') {
|
||||
const retryAfter = response.headers.get('Retry-After');
|
||||
const ratelimitReset = response.headers.get('X-Ratelimit-Reset');
|
||||
if (retryAfter) {
|
||||
ratelimits[ratelimit_id] = new Promise((resolve) => {
|
||||
setTimeout(resolve, parseInt(retryAfter) * 1000);
|
||||
});
|
||||
return await fetch_with_ratelimit(ratelimit_id, input, init);
|
||||
} else if (ratelimitReset) {
|
||||
if (parseInt(ratelimitReset) > 1678000000) {
|
||||
ratelimits[ratelimit_id] = new Promise((resolve) => {
|
||||
setTimeout(() => resolve(), parseInt(ratelimitReset) * 1000 - Date.now());
|
||||
});
|
||||
} else {
|
||||
ratelimits[ratelimit_id] = new Promise((resolve) => {
|
||||
setTimeout(() => resolve(), parseInt(ratelimitReset) * 1000);
|
||||
});
|
||||
}
|
||||
return await fetch_with_ratelimit(ratelimit_id, input, init);
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
import { z } from 'zod';
|
||||
import { fetch_with_ratelimit } from './fetchutils';
|
||||
|
||||
export const searchProjectsHit = z.object({
|
||||
slug: z.string().regex(/^[\w!@$()`.+,"\-']{3,64}$/),
|
||||
|
@ -8,14 +9,14 @@ export const searchProjectsHit = z.object({
|
|||
client_side: z.enum(['required', 'optional', 'unsupported', 'unknown']),
|
||||
server_side: z.enum(['required', 'optional', 'unsupported', 'unknown']),
|
||||
project_type: z.enum(['mod', 'modpack', 'resourcepack', 'shader']),
|
||||
downloads: z.number(),
|
||||
downloads: z.number().int(),
|
||||
icon_url: z.union([z.string().url(), z.literal('').transform(() => '/favicon.png')]),
|
||||
color: z.number().nullable(),
|
||||
color: z.number().int().nullable(),
|
||||
project_id: z.string(),
|
||||
author: z.string(),
|
||||
display_categories: z.string().array().default([]),
|
||||
versions: z.string().array(),
|
||||
follows: z.number(),
|
||||
follows: z.number().int(),
|
||||
date_created: z.string().datetime({ offset: true }),
|
||||
date_modified: z.string().datetime({ offset: true }),
|
||||
latest_version: z.string().optional(),
|
||||
|
@ -26,9 +27,9 @@ export const searchProjectsHit = z.object({
|
|||
|
||||
export const searchProjectsResponse = z.object({
|
||||
hits: searchProjectsHit.array(),
|
||||
offset: z.number(),
|
||||
limit: z.number(),
|
||||
total_hits: z.number()
|
||||
offset: z.number().int(),
|
||||
limit: z.number().int(),
|
||||
total_hits: z.number().int()
|
||||
});
|
||||
|
||||
const searchProjectsRequest = z.object({
|
||||
|
@ -40,8 +41,8 @@ const searchProjectsRequest = z.object({
|
|||
.array()
|
||||
.default([]),
|
||||
index: z.enum(['relevance', 'downloads', 'follows', 'newest', 'updated']).default('relevance'),
|
||||
offset: z.number().default(0),
|
||||
limit: z.number().default(10),
|
||||
offset: z.number().int().default(0),
|
||||
limit: z.number().int().default(10),
|
||||
filters: z.string().optional()
|
||||
});
|
||||
|
||||
|
@ -67,10 +68,60 @@ export async function searchProjects(
|
|||
): Promise<z.infer<typeof searchProjectsResponse>> {
|
||||
const parsedRequest = searchProjectsRequest.parse(request);
|
||||
const params = searchProjectsRequestToUrlParams(parsedRequest);
|
||||
const response = await fetch('https://api.modrinth.com/v2/search?' + params.toString(), {
|
||||
headers: {
|
||||
'User-Agent': 'NotModdermore/noversion (+https://git.skye.vg/me/not-moddermore/)'
|
||||
}
|
||||
});
|
||||
const response = await fetch_with_ratelimit(
|
||||
'modrinth',
|
||||
'https://api.modrinth.com/v2/search?' + params.toString()
|
||||
);
|
||||
return searchProjectsResponse.parse(await response.json());
|
||||
}
|
||||
|
||||
export const projectVersion = z.object({
|
||||
name: z.string(),
|
||||
version_number: z.string(),
|
||||
changelog: z.string().nullable(),
|
||||
dependencies: z
|
||||
.object({
|
||||
version_id: z.string().nullable(),
|
||||
project_id: z.string().nullable(),
|
||||
file_name: z.string().nullable(),
|
||||
dependency_type: z.enum(['required', 'optional', 'incompatible', 'embedded'])
|
||||
})
|
||||
.array(),
|
||||
game_versions: z.string().array(),
|
||||
version_type: z.enum(['release', 'beta', 'alpha']),
|
||||
loaders: z.string().array(),
|
||||
featured: z.boolean(),
|
||||
status: z.enum(['listed', 'archived', 'draft', 'unlisted', 'scheduled', 'unknown']),
|
||||
requested_status: z.enum(['listed', 'archived', 'draft', 'unlisted']).nullable(),
|
||||
id: z.string(),
|
||||
project_id: z.string(),
|
||||
author_id: z.string(),
|
||||
date_published: z.string().datetime({ offset: true }),
|
||||
downloads: z.number().int(),
|
||||
changelog_url: z.null(),
|
||||
files: z
|
||||
.object({
|
||||
hashes: z.object({
|
||||
sha512: z.string().regex(/^[a-f0-9]{128}$/),
|
||||
sha1: z.string().regex(/^[a-f0-9]{40}$/)
|
||||
}),
|
||||
url: z.string().url(),
|
||||
filename: z.string(),
|
||||
primary: z.boolean(),
|
||||
size: z.number().int(),
|
||||
file_type: z.enum(['required-resource-pack', 'optional-resource-pack']).nullable()
|
||||
})
|
||||
.array()
|
||||
});
|
||||
|
||||
export const listProjectVersionsResponse = projectVersion.array();
|
||||
|
||||
export async function listProjectVersions(
|
||||
id: string
|
||||
): Promise<z.infer<typeof listProjectVersionsResponse>> {
|
||||
const response = await fetch_with_ratelimit(
|
||||
'modrinth',
|
||||
`https://api.modrinth.com/v2/project/${id}/version`
|
||||
);
|
||||
return listProjectVersionsResponse.parse(await response.json());
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ export const indexSchema = z.object({
|
|||
metafile: z.boolean().default(false),
|
||||
preserve: z.boolean().default(false)
|
||||
})
|
||||
.array(),
|
||||
.array()
|
||||
});
|
||||
|
||||
// export const metafileSchema = z.object({
|
||||
|
@ -90,7 +90,7 @@ export const metafileSchema = z.union([
|
|||
'hash-format': z.enum(['sha256', 'sha512', 'sha1', 'md5', 'murmur2']),
|
||||
hash: z.string().regex(/^[a-fA-F0-9]+$/),
|
||||
url: z.string().url(),
|
||||
mode: z.literal('url').default('url')
|
||||
mode: z.literal('url').optional()
|
||||
}),
|
||||
update: z
|
||||
.object({
|
||||
|
|
|
@ -6,5 +6,5 @@ export const createRequestSchema = z.object({
|
|||
name: z.string(),
|
||||
description: z.string(),
|
||||
versions: versionsSchema,
|
||||
tree: fileTreeSchema,
|
||||
})
|
||||
tree: fileTreeSchema
|
||||
});
|
||||
|
|
|
@ -13,3 +13,13 @@ export function get_blobs(tree: FileTree): FileBlob[] {
|
|||
}
|
||||
return blobs;
|
||||
}
|
||||
|
||||
export async function digest(algorithm: string, data: BufferSource): string {
|
||||
const hashBuffer = await crypto.subtle.digest(algorithm, data);
|
||||
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
||||
const hash = hashArray
|
||||
.map((b) => b.toString(16).padStart(2, '0'))
|
||||
.join('')
|
||||
.toLowerCase();
|
||||
return hash;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import type { Actions } from './$types';
|
||||
import { COUCHDB_DB_NAME, S3_BUCKET_NAME } from '$env/static/private';
|
||||
import { fail, redirect } from '@sveltejs/kit';
|
||||
import { get_blobs } from '$lib/utils';
|
||||
import { digest, get_blobs } from '$lib/utils';
|
||||
import type { Modpack } from '$lib/types';
|
||||
import { nanoid } from 'nanoid';
|
||||
import { minioClient, nano } from '$lib/server/clients';
|
||||
|
@ -24,12 +24,7 @@ export const actions: Actions = {
|
|||
if (typeof file != 'object' || !file) throw fail(400);
|
||||
if (file.size > 8 * 1024 * 1024) throw fail(400);
|
||||
const buf = await file.arrayBuffer();
|
||||
const hashBuffer = await crypto.subtle.digest('SHA-512', buf);
|
||||
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
||||
const hash = hashArray
|
||||
.map((b) => b.toString(16).padStart(2, '0'))
|
||||
.join('')
|
||||
.toLowerCase();
|
||||
const hash = await digest('SHA-512', buf);
|
||||
if (hash != blob.sha512) throw fail(400);
|
||||
let exists = false;
|
||||
try {
|
||||
|
|
|
@ -16,12 +16,18 @@
|
|||
} from '@rgossiaux/svelte-headlessui';
|
||||
import { FolderIcon, PlusIcon } from 'svelte-feather-icons';
|
||||
import {
|
||||
listProjectVersions,
|
||||
type listProjectVersionsResponse,
|
||||
projectVersion,
|
||||
searchProjects,
|
||||
type searchProjectsHit,
|
||||
type searchProjectsResponse
|
||||
} from '$lib/modrinth';
|
||||
import type { z } from 'zod';
|
||||
import toml from '@ltd/j-toml';
|
||||
import semver from 'semver';
|
||||
import type { metafileSchema, versionsSchema } from '$lib/packwiz-types';
|
||||
import { digest } from '$lib/utils';
|
||||
let fileTree: Folder = {
|
||||
type: 'folder',
|
||||
children: {
|
||||
|
@ -79,7 +85,11 @@ version = "2sIhirkG"
|
|||
}
|
||||
};
|
||||
let blobs: Blob[] = [];
|
||||
let isOpen = false;
|
||||
let versions: z.infer<typeof versionsSchema> = {
|
||||
minecraft: '1.19.3',
|
||||
quilt: '0.18.3'
|
||||
};
|
||||
|
||||
let modalStatus:
|
||||
| 'none'
|
||||
| 'search:mods'
|
||||
|
@ -129,13 +139,111 @@ version = "2sIhirkG"
|
|||
searchLoadingMore = false;
|
||||
}
|
||||
|
||||
async function addMod(mod: z.infer<typeof searchProjectsHit>) {}
|
||||
let versionCandidates: z.infer<typeof listProjectVersionsResponse> = [];
|
||||
|
||||
function semver_gt(lhs: string, rhs: string): boolean | undefined {
|
||||
try {
|
||||
return semver.gt(lhs, rhs);
|
||||
} catch {
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
async function addMod(mod: z.infer<typeof searchProjectsHit>) {
|
||||
const modVersions = await listProjectVersions(mod.project_id);
|
||||
let candidate: null | z.infer<typeof projectVersion> = null;
|
||||
for (const version of modVersions) {
|
||||
if (version.game_versions.includes(versions.minecraft)) {
|
||||
let compatible = false;
|
||||
for (const loader of version.loaders) {
|
||||
if (loader in versions) {
|
||||
compatible = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (compatible) {
|
||||
if (!candidate) candidate = version;
|
||||
const is_later = new Date(version.date_published) > new Date(candidate.date_published);
|
||||
const is_semver_later = semver_gt(version.version_number, candidate.version_number) ?? is_later;
|
||||
if ((is_later && !is_semver_later) || (!is_later && is_semver_later)) {
|
||||
// semver is later, but the date is not
|
||||
// can't really determine precedence
|
||||
// fallback to manual
|
||||
candidate = null;
|
||||
break;
|
||||
} else if (is_later && is_semver_later) {
|
||||
candidate = version;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!candidate) {
|
||||
modalStatus = 'select:modversion';
|
||||
versionCandidates = modVersions;
|
||||
return;
|
||||
}
|
||||
if (!('mods' in fileTree.children)) {
|
||||
fileTree.children.mods = {
|
||||
type: 'folder',
|
||||
children: {}
|
||||
};
|
||||
}
|
||||
if (fileTree.children.mods.type != 'folder') {
|
||||
// give up
|
||||
// why is /mods a file
|
||||
return;
|
||||
}
|
||||
|
||||
let primaryFile = candidate.files[0];
|
||||
|
||||
for (const file of candidate.files) {
|
||||
if (file.primary) {
|
||||
primaryFile = file;
|
||||
}
|
||||
}
|
||||
|
||||
console.log(mod);
|
||||
|
||||
const server_side = mod.server_side == 'optional' || mod.server_side == 'required';
|
||||
const client_side = mod.client_side == 'optional' || mod.client_side == 'required';
|
||||
const side = server_side ? (client_side ? 'both' : 'server') : client_side ? 'client' : 'both';
|
||||
|
||||
const content: z.input<typeof metafileSchema> = {
|
||||
name: mod.title,
|
||||
filename: primaryFile.filename,
|
||||
side: side,
|
||||
download: {
|
||||
url: primaryFile.url,
|
||||
'hash-format': 'sha512',
|
||||
hash: primaryFile.hashes.sha512
|
||||
},
|
||||
update: {
|
||||
modrinth: {
|
||||
'mod-id': mod.project_id,
|
||||
version: candidate.id
|
||||
}
|
||||
}
|
||||
};
|
||||
const content_str = toml.stringify(content, { newline: '\n' });
|
||||
const content_buf = new TextEncoder().encode(content_str);
|
||||
console.log(content_str);
|
||||
|
||||
fileTree.children.mods.children[mod.slug + '.pw.toml'] = {
|
||||
type: 'file',
|
||||
inline: true,
|
||||
metafile: true,
|
||||
ignored: false,
|
||||
content: content_str,
|
||||
sha1: await digest('SHA-1', content_buf),
|
||||
sha512: await digest('SHA-512', content_buf)
|
||||
};
|
||||
}
|
||||
|
||||
let editPath: string[] = [];
|
||||
function getFileFromPath(path: string[], tree: Folder): File | undefined {
|
||||
const segment = editPath.shift();
|
||||
if (typeof segment == 'undefined') {
|
||||
return undefined
|
||||
return undefined;
|
||||
}
|
||||
const next = tree.children[segment];
|
||||
if (!next) {
|
||||
|
@ -302,6 +410,36 @@ version = "2sIhirkG"
|
|||
{@const parsed = toml.parse(file.content)}
|
||||
{JSON.stringify(parsed)}
|
||||
{/if}
|
||||
{:else if modalStatus == 'select:modversion'}
|
||||
<DialogTitle class="text-xl">Select version</DialogTitle>
|
||||
<DialogDescription>
|
||||
Could not determine latest version automatically.<br>
|
||||
Please choose a version.
|
||||
</DialogDescription>
|
||||
<ul class="flex flex-col gap-2 mt-2">
|
||||
{#each versionCandidates as version}
|
||||
<li class="flex flex-col rounded bg-surface0 gap-2 p-1 w-md max-w-md min-w-md shadow">
|
||||
<div>
|
||||
<h1 class="inline text-lg">{version.name}</h1>
|
||||
<h2 class="inline text-sm">({version.version_number})</h2>
|
||||
</div>
|
||||
<div>
|
||||
{#if version.loaders.includes("fabric")}
|
||||
<img src="/icons/Fabric.svg" alt="Fabric icon" class="w-4 h-4">
|
||||
{/if}
|
||||
{#if version.loaders.includes("forge")}
|
||||
<img src="/icons/Forge.svg" alt="Forge icon" class="w-4 h-4">
|
||||
{/if}
|
||||
{#if version.loaders.includes("quilt")}
|
||||
<img src="/icons/Quilt.svg" alt="Quilt icon" class="w-4 h-4">
|
||||
{/if}
|
||||
{#if version.loaders.includes("liteloader")}
|
||||
<img src="/icons/LiteLoader.svg" alt="LiteLoader icon" class="w-4 h-4">
|
||||
{/if}
|
||||
</div>
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
|
1
static/icons/Fabric.svg
Normal file
1
static/icons/Fabric.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" clip-rule="evenodd" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path fill="none" stroke="#000" stroke-width="1.99" d="M21.318 10.069c-1.885-1.927-5.654-5.779-7.427-7.605-.398-.409-.899-.836-2.239.085-1.726 1.186-.734 1.898-.455 2.204.713.784 7.294 7.719 8.431 9.021.21.241-1.758-1.951-.569-3.447.475-.599 1.563-1.043 2.259-.258.565.638.923 1.568-.3 2.578-2.137 1.766-8.839 7.144-11.003 8.928-1.089.898-2.48.204-3.107-.526-.655-.764-2.655-2.992-4.447-5.036-.48-.547-.36-1.701.192-2.176 3.045-2.627 7.973-6.396 9.704-7.866"/></svg>
|
After Width: | Height: | Size: 671 B |
1
static/icons/Forge.svg
Normal file
1
static/icons/Forge.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" clip-rule="evenodd" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path fill="none" stroke="#000" stroke-width="2" d="M2 7.5h8v-2h12v2s-7 3.448-7 6 3.108 3.108 3.108 3.108L19 20.5l-14-.055 1.054-4.054S9.751 16.5 10 13.5c.228-2.741-6.532-.732-8-6Z"/></svg>
|
After Width: | Height: | Size: 418 B |
1
static/icons/LiteLoader.svg
Normal file
1
static/icons/LiteLoader.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5" clip-rule="evenodd" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><clipPath id="a"><path d="M0 0h24v24H0z"/></clipPath><g fill="none" stroke="#000" stroke-width="2" clip-path="url(#a)"><path d="m10.25 16.208 4.125-2.185-8.25-4.372L2 11.837"/><path d="M10.25 20.58 2 16.208v-4.371m8.25 8.743 4.125-2.186v-4.371m-8.25-4.372V5.279L12.312 2l8.25 4.372-6.187 3.279v4.372"/><path d="M8.844 10.048V7.167L6.125 5.726m5.156 5.715V8.559L14 10m.375 8.394v4.372L20.5 19.52l.062-4.404V6.372M2 11.837l8.25 4.371m0 0v4.372m-.938-.497 5.063 2.683m6.187 9.837L35 24.952m-10.313 1.093-2.062-1.093"/></g></svg>
|
After Width: | Height: | Size: 754 B |
1
static/icons/Quilt.svg
Normal file
1
static/icons/Quilt.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path fill="none" stroke="#000" stroke-width="2" d="M10.324 3.958a.354.354 0 0 0-.354-.354H3.955a.353.353 0 0 0-.354.354v5.999c0 .196.158.355.354.355H9.97a.355.355 0 0 0 .354-.355V3.958Zm0 10.087a.354.354 0 0 0-.354-.354H3.955a.353.353 0 0 0-.354.354v5.999c0 .196.158.355.354.355H9.97a.355.355 0 0 0 .354-.355v-5.999ZM20.408 3.958a.353.353 0 0 0-.354-.354h-6.015a.354.354 0 0 0-.354.354v5.999c0 .196.159.355.354.355h6.015a.354.354 0 0 0 .354-.355V3.958Zm1.705 14.239a.354.354 0 0 0 0-.5l-3.925-3.925a.355.355 0 0 0-.501 0l-3.915 3.915a.355.355 0 0 0 0 .501l3.925 3.924a.353.353 0 0 0 .501 0l3.915-3.915Z"/></svg>
|
After Width: | Height: | Size: 839 B |
405
yarn.lock
405
yarn.lock
|
@ -195,11 +195,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
||||
|
||||
"@iarna/toml@^2.2.5":
|
||||
version "2.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
|
||||
integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==
|
||||
|
||||
"@jridgewell/resolve-uri@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
|
||||
|
@ -244,231 +239,6 @@
|
|||
"@nodelib/fs.scandir" "2.1.5"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@octokit/app@^13.1.1":
|
||||
version "13.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/app/-/app-13.1.2.tgz#81fdee338abddda9c016e5beccdb19ff5110bb66"
|
||||
integrity sha512-Kf+h5sa1SOI33hFsuHvTsWj1jUrjp1x4MuiJBq7U/NicfEGa6nArPUoDnyfP/YTmcQ5cQ5yvOgoIBkbwPg6kzQ==
|
||||
dependencies:
|
||||
"@octokit/auth-app" "^4.0.8"
|
||||
"@octokit/auth-unauthenticated" "^3.0.0"
|
||||
"@octokit/core" "^4.0.0"
|
||||
"@octokit/oauth-app" "^4.0.7"
|
||||
"@octokit/plugin-paginate-rest" "^6.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
"@octokit/webhooks" "^10.0.0"
|
||||
|
||||
"@octokit/auth-app@^4.0.8":
|
||||
version "4.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-4.0.9.tgz#66500c8f66545d970a19123b9b364c678c972d6b"
|
||||
integrity sha512-VFpKIXhHO+kVJtane5cEvdYPtjDKCOI0uKsRrsZfJP+uEu7rcPbQCLCcRKgyT+mUIzGr1IIOmwP/lFqSip1dXA==
|
||||
dependencies:
|
||||
"@octokit/auth-oauth-app" "^5.0.0"
|
||||
"@octokit/auth-oauth-user" "^2.0.0"
|
||||
"@octokit/request" "^6.0.0"
|
||||
"@octokit/request-error" "^3.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
"@types/lru-cache" "^5.1.0"
|
||||
deprecation "^2.3.1"
|
||||
lru-cache "^6.0.0"
|
||||
universal-github-app-jwt "^1.1.1"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/auth-oauth-app@^5.0.0":
|
||||
version "5.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.5.tgz#be2a93d72835133b4866ac4721aa628849475525"
|
||||
integrity sha512-UPX1su6XpseaeLVCi78s9droxpGtBWIgz9XhXAx9VXabksoF0MyI5vaa1zo1njyYt6VaAjFisC2A2Wchcu2WmQ==
|
||||
dependencies:
|
||||
"@octokit/auth-oauth-device" "^4.0.0"
|
||||
"@octokit/auth-oauth-user" "^2.0.0"
|
||||
"@octokit/request" "^6.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
"@types/btoa-lite" "^1.0.0"
|
||||
btoa-lite "^1.0.0"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/auth-oauth-device@^4.0.0":
|
||||
version "4.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.4.tgz#b8dde812a38bf5cb0696b6e7d0a74681d437c390"
|
||||
integrity sha512-Xl85BZYfqCMv+Uvz33nVVUjE7I/PVySNaK6dRRqlkvYcArSr9vRcZC9KVjXYObGRTCN6mISeYdakAZvWEN4+Jw==
|
||||
dependencies:
|
||||
"@octokit/oauth-methods" "^2.0.0"
|
||||
"@octokit/request" "^6.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/auth-oauth-user@^2.0.0":
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.1.tgz#d900972f3d9247924637ab3343a8305746feadb2"
|
||||
integrity sha512-JgqnNNPf9CaWLxWm9uh2WgxcaVYhxBR09NVIPTiMU2dVZ3FObOHs3njBiLNw+zq84k+rEdm5Y7AsiASrZ84Apg==
|
||||
dependencies:
|
||||
"@octokit/auth-oauth-device" "^4.0.0"
|
||||
"@octokit/oauth-methods" "^2.0.0"
|
||||
"@octokit/request" "^6.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
btoa-lite "^1.0.0"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/auth-token@^3.0.0":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c"
|
||||
integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==
|
||||
dependencies:
|
||||
"@octokit/types" "^9.0.0"
|
||||
|
||||
"@octokit/auth-unauthenticated@^3.0.0":
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.4.tgz#347d3f3a6fefb22d399a941b986bac5361fc95df"
|
||||
integrity sha512-AT74XGBylcLr4lmUp1s6mjSUgphGdlse21Qjtv5DzpX1YOl5FXKwvNcZWESdhyBbpDT8VkVyLFqa/7a7eqpPNw==
|
||||
dependencies:
|
||||
"@octokit/request-error" "^3.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
|
||||
"@octokit/core@^4.0.0", "@octokit/core@^4.0.4":
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648"
|
||||
integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==
|
||||
dependencies:
|
||||
"@octokit/auth-token" "^3.0.0"
|
||||
"@octokit/graphql" "^5.0.0"
|
||||
"@octokit/request" "^6.0.0"
|
||||
"@octokit/request-error" "^3.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
before-after-hook "^2.2.0"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/endpoint@^7.0.0":
|
||||
version "7.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1"
|
||||
integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==
|
||||
dependencies:
|
||||
"@octokit/types" "^9.0.0"
|
||||
is-plain-object "^5.0.0"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/graphql@^5.0.0":
|
||||
version "5.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2"
|
||||
integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==
|
||||
dependencies:
|
||||
"@octokit/request" "^6.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/oauth-app@^4.0.6", "@octokit/oauth-app@^4.0.7":
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/oauth-app/-/oauth-app-4.2.0.tgz#f965496b1d957c3ff0275a5d5233b380181ce72b"
|
||||
integrity sha512-gyGclT77RQMkVUEW3YBeAKY+LBSc5u3eC9Wn/Uwt3WhuKuu9mrV18EnNpDqmeNll+mdV02yyBROU29Tlili6gg==
|
||||
dependencies:
|
||||
"@octokit/auth-oauth-app" "^5.0.0"
|
||||
"@octokit/auth-oauth-user" "^2.0.0"
|
||||
"@octokit/auth-unauthenticated" "^3.0.0"
|
||||
"@octokit/core" "^4.0.0"
|
||||
"@octokit/oauth-authorization-url" "^5.0.0"
|
||||
"@octokit/oauth-methods" "^2.0.0"
|
||||
"@types/aws-lambda" "^8.10.83"
|
||||
fromentries "^1.3.1"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/oauth-authorization-url@^5.0.0":
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz#029626ce87f3b31addb98cd0d2355c2381a1c5a1"
|
||||
integrity sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==
|
||||
|
||||
"@octokit/oauth-methods@^2.0.0":
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/oauth-methods/-/oauth-methods-2.0.5.tgz#b11ce2205c46ffcd731c7332b21bb62dad10ce24"
|
||||
integrity sha512-yQP6B5gE3axNxuM3U9KqWs/ErAQ+WLPaPgC/7EjsZsQibkf8sjdAfF8/y/EJW+Dd05XQvadX4WhQZPMnO1SE1A==
|
||||
dependencies:
|
||||
"@octokit/oauth-authorization-url" "^5.0.0"
|
||||
"@octokit/request" "^6.2.3"
|
||||
"@octokit/request-error" "^3.0.3"
|
||||
"@octokit/types" "^9.0.0"
|
||||
btoa-lite "^1.0.0"
|
||||
|
||||
"@octokit/openapi-types@^16.0.0":
|
||||
version "16.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-16.0.0.tgz#d92838a6cd9fb4639ca875ddb3437f1045cc625e"
|
||||
integrity sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==
|
||||
|
||||
"@octokit/plugin-paginate-rest@^6.0.0":
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz#f34b5a7d9416019126042cd7d7b811e006c0d561"
|
||||
integrity sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==
|
||||
dependencies:
|
||||
"@octokit/types" "^9.0.0"
|
||||
|
||||
"@octokit/plugin-rest-endpoint-methods@^7.0.0":
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz#f7ebe18144fd89460f98f35a587b056646e84502"
|
||||
integrity sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==
|
||||
dependencies:
|
||||
"@octokit/types" "^9.0.0"
|
||||
deprecation "^2.3.1"
|
||||
|
||||
"@octokit/plugin-retry@^4.0.3":
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-4.1.2.tgz#4a8be9cdd75c0b650a5547b1b527a1498391242f"
|
||||
integrity sha512-hscf7p/6DIQ8xbfDrMl9IflxugED6sFQvAUbSi75R6h/6hcNQgrb2vpfPTmyYKkdAEeTkUsEpzpQFdTAhSITOw==
|
||||
dependencies:
|
||||
"@octokit/types" "^9.0.0"
|
||||
bottleneck "^2.15.3"
|
||||
|
||||
"@octokit/plugin-throttling@^5.0.0":
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-5.0.1.tgz#e3ba0a49830a777097b6d49615782a0a5e51e743"
|
||||
integrity sha512-I4qxs7wYvYlFuY3PAUGWAVPhFXG3RwnvTiSr5Fu/Auz7bYhDLnzS2MjwV8nGLq/FPrWwYiweeZrI5yjs1YG4tQ==
|
||||
dependencies:
|
||||
"@octokit/types" "^9.0.0"
|
||||
bottleneck "^2.15.3"
|
||||
|
||||
"@octokit/request-error@^3.0.0", "@octokit/request-error@^3.0.3":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69"
|
||||
integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==
|
||||
dependencies:
|
||||
"@octokit/types" "^9.0.0"
|
||||
deprecation "^2.0.0"
|
||||
once "^1.4.0"
|
||||
|
||||
"@octokit/request@^6.0.0", "@octokit/request@^6.2.3":
|
||||
version "6.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.3.tgz#76d5d6d44da5c8d406620a4c285d280ae310bdb4"
|
||||
integrity sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==
|
||||
dependencies:
|
||||
"@octokit/endpoint" "^7.0.0"
|
||||
"@octokit/request-error" "^3.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
is-plain-object "^5.0.0"
|
||||
node-fetch "^2.6.7"
|
||||
universal-user-agent "^6.0.0"
|
||||
|
||||
"@octokit/types@^9.0.0":
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.0.0.tgz#6050db04ddf4188ec92d60e4da1a2ce0633ff635"
|
||||
integrity sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==
|
||||
dependencies:
|
||||
"@octokit/openapi-types" "^16.0.0"
|
||||
|
||||
"@octokit/webhooks-methods@^3.0.0":
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/webhooks-methods/-/webhooks-methods-3.0.2.tgz#cece91cc72714a1c83b35d121e04334f051e509c"
|
||||
integrity sha512-Vlnv5WBscf07tyAvfDbp7pTkMZUwk7z7VwEF32x6HqI+55QRwBTcT+D7DDjZXtad/1dU9E32x0HmtDlF9VIRaQ==
|
||||
|
||||
"@octokit/webhooks-types@6.10.0":
|
||||
version "6.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/webhooks-types/-/webhooks-types-6.10.0.tgz#b441780d26370c7682f4f964d4b36b5cb0c757f8"
|
||||
integrity sha512-lDNv83BeEyxxukdQ0UttiUXawk9+6DkdjjFtm2GFED+24IQhTVaoSbwV9vWWKONyGLzRmCQqZmoEWkDhkEmPlw==
|
||||
|
||||
"@octokit/webhooks@^10.0.0":
|
||||
version "10.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-10.7.0.tgz#ec05e655d309383e2cd08dafe51abd1705df6d4a"
|
||||
integrity sha512-zZBbQMpXXnK/ki/utrFG/TuWv9545XCSLibfDTxrYqR1PmU6zel02ebTOrA7t5XIGHzlEOc/NgISUIBUe7pMFA==
|
||||
dependencies:
|
||||
"@octokit/request-error" "^3.0.0"
|
||||
"@octokit/webhooks-methods" "^3.0.0"
|
||||
"@octokit/webhooks-types" "6.10.0"
|
||||
aggregate-error "^3.1.0"
|
||||
|
||||
"@panva/hkdf@^1.0.2", "@panva/hkdf@^1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@panva/hkdf/-/hkdf-1.0.4.tgz#4e02bb248402ff6c5c024e23a68438e2b0e69d67"
|
||||
|
@ -549,16 +319,6 @@
|
|||
lodash.merge "^4.6.2"
|
||||
postcss-selector-parser "6.0.10"
|
||||
|
||||
"@types/aws-lambda@^8.10.83":
|
||||
version "8.10.111"
|
||||
resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.111.tgz#9107c405f3011a5c423b5ac93fbf279439558571"
|
||||
integrity sha512-8HR9UjIKmoemEzE2BviVtFkeenxfbizSu8raFjnT2VXxguZZ2JTlNww7INOH7IA0J/zRa3TjOftkYq6hVNkxDA==
|
||||
|
||||
"@types/btoa-lite@^1.0.0":
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/btoa-lite/-/btoa-lite-1.0.0.tgz#e190a5a548e0b348adb0df9ac7fa5f1151c7cca4"
|
||||
integrity sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==
|
||||
|
||||
"@types/chai-subset@^1.3.3":
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94"
|
||||
|
@ -581,18 +341,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
|
||||
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
|
||||
|
||||
"@types/jsonwebtoken@^9.0.0":
|
||||
version "9.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#29b1369c4774200d6d6f63135bf3d1ba3ef997a4"
|
||||
integrity sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/lru-cache@^5.1.0":
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef"
|
||||
integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==
|
||||
|
||||
"@types/minio@^7.0.16":
|
||||
version "7.0.16"
|
||||
resolved "https://registry.yarnpkg.com/@types/minio/-/minio-7.0.16.tgz#704b827f22baaa95b7bade90f3336494762b90f9"
|
||||
|
@ -617,7 +365,7 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/semver@^7.3.12":
|
||||
"@types/semver@^7.3.12", "@types/semver@^7.3.13":
|
||||
version "7.3.13"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
|
||||
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
|
||||
|
@ -706,11 +454,6 @@
|
|||
"@typescript-eslint/types" "5.54.0"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@xmcl/modrinth@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@xmcl/modrinth/-/modrinth-1.1.0.tgz#77a129cc682614781999b9e4de5d871a648e4856"
|
||||
integrity sha512-sKGQhr+yKFISnEobLtBPqzpiJHy+OBt653iQ+rNkLUQlSbiyR9k2rTSfAQ7FgPHB37koCbgKMuD1Ah5vFRPTMg==
|
||||
|
||||
"@zxing/text-encoding@0.9.0":
|
||||
version "0.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b"
|
||||
|
@ -750,14 +493,6 @@ acorn@^8.8.0, acorn@^8.8.1, acorn@^8.8.2:
|
|||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
|
||||
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
|
||||
|
||||
aggregate-error@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
|
||||
integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
|
||||
dependencies:
|
||||
clean-stack "^2.0.0"
|
||||
indent-string "^4.0.0"
|
||||
|
||||
ajv@^6.10.0, ajv@^6.12.4:
|
||||
version "6.12.6"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
|
||||
|
@ -859,11 +594,6 @@ balanced-match@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
before-after-hook@^2.2.0:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c"
|
||||
integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==
|
||||
|
||||
binary-extensions@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||
|
@ -886,11 +616,6 @@ bn.js@^5.0.0, bn.js@^5.1.1:
|
|||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
|
||||
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
|
||||
|
||||
bottleneck@^2.15.3:
|
||||
version "2.19.5"
|
||||
resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91"
|
||||
integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
|
@ -980,21 +705,11 @@ browserslist@^4.21.4:
|
|||
node-releases "^2.0.8"
|
||||
update-browserslist-db "^1.0.10"
|
||||
|
||||
btoa-lite@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
|
||||
integrity sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==
|
||||
|
||||
buffer-crc32@^0.2.13, buffer-crc32@^0.2.5:
|
||||
version "0.2.13"
|
||||
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
|
||||
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
|
||||
|
||||
buffer-equal-constant-time@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
|
||||
integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==
|
||||
|
||||
buffer-xor@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
|
||||
|
@ -1079,11 +794,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
|
|||
inherits "^2.0.1"
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
clean-stack@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
|
||||
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
|
||||
|
||||
color-convert@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
|
||||
|
@ -1214,11 +924,6 @@ delayed-stream@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
||||
|
||||
deprecation@^2.0.0, deprecation@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
|
||||
integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
|
||||
|
||||
des.js@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
|
||||
|
@ -1279,13 +984,6 @@ doctrine@^3.0.0:
|
|||
dependencies:
|
||||
esutils "^2.0.2"
|
||||
|
||||
ecdsa-sig-formatter@1.0.11:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
|
||||
integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
electron-to-chromium@^1.4.284:
|
||||
version "1.4.313"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz#ff95f01926ab748c65beb23fc55f2f178e7a24a9"
|
||||
|
@ -1598,11 +1296,6 @@ fraction.js@^4.2.0:
|
|||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
|
||||
integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
|
||||
|
||||
fromentries@^1.3.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
|
||||
integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
|
@ -1777,11 +1470,6 @@ imurmurhash@^0.1.4:
|
|||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
|
||||
|
||||
indent-string@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
|
||||
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
|
@ -1856,11 +1544,6 @@ is-path-inside@^3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
|
||||
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
|
||||
|
||||
is-plain-object@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
|
||||
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
|
||||
|
||||
is-typed-array@^1.1.10, is-typed-array@^1.1.3:
|
||||
version "1.1.10"
|
||||
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f"
|
||||
|
@ -1909,33 +1592,6 @@ json-stream@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/json-stream/-/json-stream-1.0.0.tgz#1a3854e28d2bbeeab31cc7ddf683d2ddc5652708"
|
||||
integrity sha512-H/ZGY0nIAg3QcOwE1QN/rK/Fa7gJn7Ii5obwp6zyPO4xiPNwpIMjqy2gwjBEGqzkF/vSWEIBQCBuN19hYiL6Qg==
|
||||
|
||||
jsonwebtoken@^9.0.0:
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
|
||||
integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==
|
||||
dependencies:
|
||||
jws "^3.2.2"
|
||||
lodash "^4.17.21"
|
||||
ms "^2.1.1"
|
||||
semver "^7.3.8"
|
||||
|
||||
jwa@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
|
||||
integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
|
||||
dependencies:
|
||||
buffer-equal-constant-time "1.0.1"
|
||||
ecdsa-sig-formatter "1.0.11"
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
jws@^3.2.2:
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
|
||||
integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
|
||||
dependencies:
|
||||
jwa "^1.4.1"
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
kleur@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
|
||||
|
@ -2152,11 +1808,6 @@ ms@2.1.2:
|
|||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
nano@^10.1.2:
|
||||
version "10.1.2"
|
||||
resolved "https://registry.yarnpkg.com/nano/-/nano-10.1.2.tgz#2ed9902d29b029ac4f23b694f4d0359aecfa1b01"
|
||||
|
@ -2191,13 +1842,6 @@ node-abort-controller@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548"
|
||||
integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==
|
||||
|
||||
node-fetch@^2.6.7:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6"
|
||||
integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==
|
||||
dependencies:
|
||||
whatwg-url "^5.0.0"
|
||||
|
||||
node-releases@^2.0.8:
|
||||
version "2.0.10"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
|
||||
|
@ -2228,21 +1872,7 @@ object-inspect@^1.9.0:
|
|||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
|
||||
integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
|
||||
|
||||
octokit@^2.0.14:
|
||||
version "2.0.14"
|
||||
resolved "https://registry.yarnpkg.com/octokit/-/octokit-2.0.14.tgz#e2057097a6c9cac3e7724a4365b450b7c694a6a4"
|
||||
integrity sha512-z6cgZBFxirpFEQ1La8Lg83GCs5hOV2EPpkYYdjsGNbfQMv8qUGjq294MiRBCbZqLufviakGsPUxaNKe3JrPmsA==
|
||||
dependencies:
|
||||
"@octokit/app" "^13.1.1"
|
||||
"@octokit/core" "^4.0.4"
|
||||
"@octokit/oauth-app" "^4.0.6"
|
||||
"@octokit/plugin-paginate-rest" "^6.0.0"
|
||||
"@octokit/plugin-rest-endpoint-methods" "^7.0.0"
|
||||
"@octokit/plugin-retry" "^4.0.3"
|
||||
"@octokit/plugin-throttling" "^5.0.0"
|
||||
"@octokit/types" "^9.0.0"
|
||||
|
||||
once@^1.3.0, once@^1.4.0:
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
|
@ -2921,11 +2551,6 @@ totalist@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.0.tgz#4ef9c58c5f095255cdc3ff2a0a55091c57a3a1bd"
|
||||
integrity sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==
|
||||
|
||||
tr46@~0.0.3:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
|
||||
|
||||
tslib@^1.8.1:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
|
@ -2972,19 +2597,6 @@ undici@5.20.0:
|
|||
dependencies:
|
||||
busboy "^1.6.0"
|
||||
|
||||
universal-github-app-jwt@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz#d57cee49020662a95ca750a057e758a1a7190e6e"
|
||||
integrity sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==
|
||||
dependencies:
|
||||
"@types/jsonwebtoken" "^9.0.0"
|
||||
jsonwebtoken "^9.0.0"
|
||||
|
||||
universal-user-agent@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
|
||||
integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
|
||||
|
||||
update-browserslist-db@^1.0.10:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
|
||||
|
@ -3062,19 +2674,6 @@ web-encoding@^1.1.5:
|
|||
optionalDependencies:
|
||||
"@zxing/text-encoding" "0.9.0"
|
||||
|
||||
webidl-conversions@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
|
||||
|
||||
whatwg-url@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
|
||||
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
|
||||
dependencies:
|
||||
tr46 "~0.0.3"
|
||||
webidl-conversions "^3.0.0"
|
||||
|
||||
which-typed-array@^1.1.2:
|
||||
version "1.1.9"
|
||||
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
|
||||
|
|
Loading…
Reference in a new issue