Compare commits

...

2 commits

Author SHA1 Message Date
37e21cbc70
adsafdsdfsa 2023-03-09 22:28:55 +09:00
dd7bc37c8b
what am I doing 2023-03-09 20:30:18 +09:00
14 changed files with 305 additions and 462 deletions

View file

@ -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
View 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;
}

View file

@ -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());
}

View file

@ -1,5 +1,13 @@
import { z } from 'zod';
export const versionsSchema = z.object({
minecraft: z.string(),
fabric: z.string().optional(),
forge: z.string().optional(),
liteloader: z.string().optional(),
quilt: z.string().optional()
});
export const packSchema = z.object({
index: z.object({
file: z.string(),
@ -8,13 +16,7 @@ export const packSchema = z.object({
}),
name: z.string(),
'pack-format': z.string().default('packwiz:1.0.0'),
versions: z.object({
minecraft: z.string(),
fabric: z.string().optional(),
forge: z.string().optional(),
liteloader: z.string().optional(),
quilt: z.string().optional()
}),
versions: versionsSchema,
author: z.string().optional(),
description: z.string().optional(),
version: z.string().optional()
@ -26,28 +28,12 @@ export const indexSchema = z.object({
.object({
file: z.string(),
hash: z.string().regex(/^[a-fA-F0-9]+$/),
alias: z.string(),
'hash-format': z.enum(['sha256', 'sha512', 'sha1', 'md5', 'murmur2']),
alias: z.string().optional(),
'hash-format': z.enum(['sha256', 'sha512', 'sha1', 'md5', 'murmur2']).optional(),
metafile: z.boolean().default(false),
preserve: z.boolean().default(false)
})
.array(),
update: z
.object({
curseforge: z
.object({
'file-id': z.number(),
'project-id': z.number()
})
.optional(),
modrinth: z
.object({
'mod-id': z.string(),
version: z.string()
})
.optional()
})
.default({})
.array()
});
// export const metafileSchema = z.object({
@ -104,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({

10
src/lib/rpc-types.ts Normal file
View file

@ -0,0 +1,10 @@
import { z } from 'zod';
import { versionsSchema } from './packwiz-types';
import { fileTreeSchema } from './types-zod';
export const createRequestSchema = z.object({
name: z.string(),
description: z.string(),
versions: versionsSchema,
tree: fileTreeSchema
});

View file

@ -1,4 +1,5 @@
import { z } from 'zod';
import { versionsSchema } from './packwiz-types';
export const revisionTagSchema = z.object({
type: z.enum(['alpha', 'beta', 'rc', 'stable']),
@ -8,6 +9,7 @@ export const revisionTagSchema = z.object({
export const fileInlineSchema = z.object({
type: z.literal('file'),
inline: z.literal(true),
ignored: z.boolean(),
metafile: z.boolean(),
content: z.string().max(256 * 1024),
sha1: z.string().regex(/^[a-f0-9]{40}$/),
@ -17,6 +19,7 @@ export const fileInlineSchema = z.object({
export const fileBlobSchema = z.object({
type: z.literal('file'),
inline: z.literal(false),
ignored: z.boolean(),
sha1: z.string().regex(/^[a-f0-9]{40}$/),
sha512: z.string().regex(/^[a-f0-9]{128}$/)
});
@ -57,6 +60,7 @@ export const revisionDiffSchema = z.object({
tag: revisionTagSchema.optional(),
type: z.literal('diff'),
tree: diffSchema.array(),
versions: versionsSchema.optional(),
message: z.string()
});
@ -65,6 +69,7 @@ export const revisionBaseSchema = z.object({
tag: revisionTagSchema.optional(),
type: z.literal('base'),
tree: fileTreeSchema,
versions: versionsSchema.optional(),
message: z.string()
});
@ -74,6 +79,7 @@ export const modpackSchema = z.object({
_id: z.string().regex(/^[A-Za-z0-9_-]{21}$/),
type: z.literal('modpack'),
name: z.string(),
description: z.string(),
author: z.string().email(),
revisions: revisionSchema.array()
});

View file

@ -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;
}

View file

@ -1,11 +1,11 @@
import type { Actions } from './$types';
import { COUCHDB_DB_NAME, S3_BUCKET_NAME } from '$env/static/private';
import { fail, redirect } from '@sveltejs/kit';
import { fileTreeSchema } from '$lib/types-zod';
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';
import { createRequestSchema } from '$lib/rpc-types';
export const actions: Actions = {
default: async (event) => {
@ -13,25 +13,18 @@ export const actions: Actions = {
if (!session?.user) throw redirect(303, '/auth/signin');
const data = await event.request.formData();
const payload = data.get('payload');
const title = data.get('title');
if (typeof payload != 'string') throw fail(400);
if (typeof title != 'string') throw fail(400);
const payload_decoded = fileTreeSchema.safeParse(JSON.parse(payload));
const payload_decoded = createRequestSchema.safeParse(JSON.parse(payload));
if (!payload_decoded.success) {
throw fail(400);
}
const blobs = get_blobs(payload_decoded.data);
const blobs = get_blobs(payload_decoded.data.tree);
for (const blob of blobs) {
const file = data.get(blob.sha512);
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 {
@ -47,13 +40,14 @@ export const actions: Actions = {
const document: Modpack = {
type: 'modpack',
_id: nanoid(),
name: title,
name: payload_decoded.data.name,
description: payload_decoded.data.description,
author: session.user.email ?? 'unknown@nodomain',
revisions: [
{
id: nanoid(),
type: 'base',
tree: payload_decoded.data,
tree: payload_decoded.data.tree,
message: 'initial revision'
}
]

View file

@ -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: {
@ -32,6 +38,7 @@
type: 'file',
inline: true,
metafile: true,
ignored: false,
content: `name = "Quark"
filename = "Quark-3.4-389.jar"
side = "both"
@ -54,6 +61,7 @@ project-id = 243121
type: 'file',
inline: true,
metafile: true,
ignored: false,
content: `name = "Waystones"
filename = "waystones-forge-1.19-11.1.0.jar"
side = "both"
@ -77,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'
@ -127,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) {
@ -300,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
View 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
View 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

View 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
View 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
View file

@ -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"