From 8c794304b61d817496faa578f3b0b4bf3afc1947 Mon Sep 17 00:00:00 2001 From: Nikita Melnikov Date: Sat, 8 Oct 2022 14:26:11 +0400 Subject: [PATCH] S3 uploads support (#273) * finish s3 uploads implementation * remove unnecessary file * fix docs * update DEVELOPMENT.md * update doc * update default uploads path --- DEVELOPMENT.md | 28 + app-config.yaml | 12 +- package.json | 3 + src/backend/.eslintrc | 3 +- src/backend/app.ts | 6 +- src/backend/controllers/transport.ts | 146 ++-- src/backend/models/file.ts | 20 +- src/backend/routes/api/transport.ts | 148 ++-- src/backend/uploads/index.ts | 10 + src/backend/uploads/local.ts | 72 ++ src/backend/uploads/s3.ts | 88 +++ src/backend/uploads/types.ts | 21 + src/backend/utils/appConfig.ts | 30 +- src/backend/utils/objects.ts | 38 - src/frontend/js/classes/editor.js | 7 - yarn.lock | 989 ++++++++++++++++++++++++++- 16 files changed, 1373 insertions(+), 248 deletions(-) create mode 100644 src/backend/uploads/index.ts create mode 100644 src/backend/uploads/local.ts create mode 100644 src/backend/uploads/s3.ts create mode 100644 src/backend/uploads/types.ts delete mode 100644 src/backend/utils/objects.ts diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index a95ef5c..920ef80 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -64,3 +64,31 @@ Run it with ```shell node bin/db-converter --db-path=./db --mongodb-uri=mongodb://localhost:27017/docs ``` + +## Using S3 uploads driver + +Uploads driver is used to store files uploaded by users. +By default, the application uses local filesystem to store files, but S3 driver is also available. + +### 1. Get credentials for S3 bucket +Create a S3 bucket and get access key and secret key (or use existing ones) + +### 2. Setup S3 driver in app-config.local.yaml + +```yaml +uploads: + driver: "s3" + s3: + bucket: example.codex.so + region: "eu-central-1" + baseUrl: "http://example.codex.so.s3-website.eu-central-1.amazonaws.com" + keyPrefix: "docs-test" + accessKeyId: "" + secretAccessKey: " +``` + +### 3. Run the application + +```shell +yarn dev +``` diff --git a/app-config.yaml b/app-config.yaml index c47edb2..573a981 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -1,6 +1,16 @@ port: 3000 host: "localhost" -uploads: "./uploads" +uploads: + driver: "local" + local: + path: "./public/uploads" + s3: + bucket: "my-bucket" + region: "eu-central-1" + baseUrl: "http://docs-static.codex.so.s3-website.eu-central-1.amazonaws.com" + keyPrefix: "/" + accessKeyId: "my-access-key" + secretAccessKey: "my-secret-key" password: secretpassword frontend: title: "CodeX Docs" diff --git a/package.json b/package.json index de38dde..857c56f 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,12 @@ "editor-upgrade": "yarn add -D @editorjs/{editorjs,header,code,delimiter,list,link,image,table,inline-code,marker,warning,checklist,raw}@latest" }, "dependencies": { + "@aws-sdk/client-s3": "^3.181.0", "@codex-team/config-loader": "0.0.1-alpha.2", "@codexteam/shortcuts": "^1.2.0", "@hawk.so/javascript": "^3.0.1", "@hawk.so/nodejs": "^3.1.4", + "@types/multer-s3": "^3.0.0", "arg": "^5.0.2", "config": "^3.3.6", "cookie-parser": "^1.4.5", @@ -38,6 +40,7 @@ "mongodb": "^4.10.0", "morgan": "^1.10.0", "multer": "^1.4.2", + "multer-s3": "^3.0.1", "nedb": "^1.8.0", "node-cache": "^5.1.2", "node-fetch": "^3.2.10", diff --git a/src/backend/.eslintrc b/src/backend/.eslintrc index da3a58e..1231130 100644 --- a/src/backend/.eslintrc +++ b/src/backend/.eslintrc @@ -6,7 +6,8 @@ "chai-friendly" ], "env": { - "mocha": true + "mocha": true, + "node": true }, "rules": { "no-unused-expressions": 1, diff --git a/src/backend/app.ts b/src/backend/app.ts index 7df23b9..313e7df 100644 --- a/src/backend/app.ts +++ b/src/backend/app.ts @@ -67,7 +67,11 @@ app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, '../../public'))); -app.use('/uploads', express.static(appConfig.uploads)); + +if (appConfig.uploads.driver === 'local') { + app.use('/uploads', express.static(appConfig.uploads.local.path)); +} + app.use('/favicon', express.static(downloadedFaviconFolder)); app.use('/', routes); diff --git a/src/backend/controllers/transport.ts b/src/backend/controllers/transport.ts index 8db5f88..5727c4d 100644 --- a/src/backend/controllers/transport.ts +++ b/src/backend/controllers/transport.ts @@ -1,142 +1,74 @@ -import fileType from 'file-type'; import fetch from 'node-fetch'; -import fs from 'fs'; import nodePath from 'path'; import File, { FileData } from '../models/file.js'; -import crypto from '../utils/crypto.js'; -import deepMerge from '../utils/objects.js'; -import appConfig from '../utils/appConfig.js'; +import { uploadsDriver } from '../uploads/index.js'; -const random16 = crypto.random16; - -interface Dict { - [key: string]: any; +/** + * Represents file data from multer + */ +interface MulterLocalFile { + originalname: string; + mimetype: string; + filename: string; + size: number; } /** - * @class Transport - * @classdesc Transport controller - * - * Allows to save files from client or fetch them by URL + * Represents file data from multer S3 plugin + */ +interface MulterS3File { + originalname: string + mimetype: string + key: string + size: number +} + +/** + * Represents file data from multer (both local and s3 plugins) + */ +type MulterFile = MulterLocalFile | MulterS3File; + +/** + * Transport controller allows to save files from client or fetch them by URL */ class Transport { /** * Saves file passed from client * - * @param {object} multerData - file data from multer - * @param {string} multerData.originalname - original name of the file - * @param {string} multerData.filename - name of the uploaded file - * @param {string} multerData.path - path to the uploaded file - * @param {number} multerData.size - size of the uploaded file - * @param {string} multerData.mimetype - MIME type of the uploaded file - * @param {object} map - object that represents how should fields of File object should be mapped to response - * @returns {Promise} + * @param fileData - file data to save */ - public static async save(multerData: Dict, map: Dict): Promise { - const { originalname: name, path, filename, size, mimetype, url } = multerData; - + public static async save(fileData: MulterFile): Promise { const file = new File({ - name, - filename, - path, - size, - mimetype, - url, + name: fileData.originalname, + filename: 'filename' in fileData? fileData.filename : fileData.key, + mimetype: fileData.mimetype, + size: fileData.size, }); await file.save(); - let response = file.data; - - if (map) { - response = Transport.composeResponse(file, map); - } - - return response; + return file.data; } /** * Fetches file by passed URL * * @param {string} url - URL of the file - * @param {object} map - object that represents how should fields of File object should be mapped to response * @returns {Promise} */ - public static async fetch(url: string, map: Dict): Promise { + public static async fetch(url: string): Promise { const fetchedFile = await fetch(url); - const buffer = await fetchedFile.buffer(); - const filename = await random16(); + const buffer = Buffer.from(await fetchedFile.arrayBuffer()); + const fetchedContentType = fetchedFile.headers.get('content-type'); + const fetchedMimeType = fetchedContentType ? fetchedContentType : undefined; - const type = await fileType.fromBuffer(buffer); - const ext = type ? type.ext : nodePath.extname(url).slice(1); + const fileData = await uploadsDriver.save(buffer, fetchedMimeType, nodePath.extname(url).slice(1)); - fs.writeFileSync(`${appConfig.uploads}/${filename}.${ext}`, buffer); - - const fetchedContentType: string | null = fetchedFile.headers.get('content-type'); - let fetchedMimeType: string | undefined; - - if (fetchedContentType === null) { - fetchedMimeType = undefined; - } else { - fetchedMimeType = fetchedContentType; - } - - const mimeType = type ? type.mime : fetchedMimeType; - - const file = new File({ - name: url, - filename: `${filename}.${ext}`, - path: `${appConfig.uploads}/${filename}.${ext}`, - size: buffer.length, - mimetype: mimeType, - }); + const file = new File(fileData); await file.save(); - let response = file.data; - - if (map) { - response = Transport.composeResponse(file, map); - } - - return response; - } - - /** - * Map fields of File object to response by provided map object - * - * @param {File} file - file object - * @param {object} map - object that represents how should fields of File object should be mapped to response - */ - public static composeResponse(file: File, map: Dict): Dict { - const response: Dict = {}; - const data = file.data as Record; - - Object.entries(map).forEach(([name, path]) => { - const fields: string[] = path.split(':'); - - if (fields.length > 1) { - let object: Dict = {}; - const result = object; - - fields.forEach((field, i) => { - if (i === fields.length - 1) { - object[field] = data[name]; - - return; - } - - object[field] = {}; - object = object[field]; - }); - - deepMerge(response, result); - } else { - response[fields[0]] = data[name]; - } - }); - - return response; + return file.data; } } diff --git a/src/backend/models/file.ts b/src/backend/models/file.ts index fac77b8..8c95876 100644 --- a/src/backend/models/file.ts +++ b/src/backend/models/file.ts @@ -17,9 +17,7 @@ export interface FileData { _id?: EntityId; name?: string; filename?: string; - path?: string; mimetype?: string; - url?: string; size?: number; } @@ -37,10 +35,8 @@ class File { public _id?: EntityId; public name?: string; public filename?: string; - public path?: string; public mimetype?: string; public size?: number; - public url?: string; /** * @class @@ -99,14 +95,12 @@ class File { * @param {FileData} fileData - info about file */ public set data(fileData: FileData) { - const { name, filename, path, mimetype, size, url } = fileData; + const { name, filename, mimetype, size } = fileData; this.name = name || this.name; this.filename = filename || this.filename; - this.path = path ? this.processPath(path) : this.path; this.mimetype = mimetype || this.mimetype; this.size = size || this.size; - this.url = url || this.url; } /** @@ -119,10 +113,8 @@ class File { _id: this._id, name: this.name, filename: this.filename, - path: this.path, mimetype: this.mimetype, size: this.size, - url: this.url, }; } @@ -164,16 +156,6 @@ class File { public toJSON(): FileData { return this.data; } - - /** - * Removes unnecessary public folder prefix - * - * @param {string} path - input path to be processed - * @returns {string} - */ - private processPath(path: string): string { - return path.replace(/^public/, ''); - } } export default File; diff --git a/src/backend/routes/api/transport.ts b/src/backend/routes/api/transport.ts index a62fe12..7ded928 100644 --- a/src/backend/routes/api/transport.ts +++ b/src/backend/routes/api/transport.ts @@ -1,31 +1,13 @@ import { Request, Response, Router } from 'express'; -import multer, { StorageEngine } from 'multer'; -import mime from 'mime'; -import mkdirp from 'mkdirp'; +import multer from 'multer'; import Transport from '../../controllers/transport.js'; -import { random16 } from '../../utils/crypto.js'; import appConfig from '../../utils/appConfig.js'; +import { FileData } from '../../models/file.js'; +import { uploadsDriver } from '../../uploads/index.js'; const router = Router(); -/** - * Multer storage for uploaded files and images - * - * @type {StorageEngine} - */ -const storage: StorageEngine = multer.diskStorage({ - destination: (req, file, cb) => { - const dir: string = appConfig.uploads || 'public/uploads'; - - mkdirp(dir); - cb(null, dir); - }, - filename: async (req, file, cb) => { - const filename = await random16(); - - cb(null, `${filename}.${mime.getExtension(file.mimetype)}`); - }, -}); +const storage = uploadsDriver.createStorageEngine(); /** * Multer middleware for image uploading @@ -50,50 +32,66 @@ const imageUploader = multer({ * Multer middleware for file uploading */ const fileUploader = multer({ - storage: storage, + storage, }).fields([ { name: 'file', maxCount: 1, } ]); +/** + * Computes URL to uploaded file + * + * @param fileData - file data to process + */ +function getFileUrl(fileData: FileData): string { + if (appConfig.uploads.driver === 'local') { + return '/uploads/' + fileData.filename; + } else { + const baseUrlWithoutTrailingSlash = appConfig.uploads.s3.baseUrl.replace(/\/+$/, ''); + + return baseUrlWithoutTrailingSlash + '/' + fileData.filename; + } +} + /** * Accepts images to upload */ router.post('/transport/image', imageUploader, async (req: Request, res: Response) => { - const response = { - success: 0, - message: '', - }; - if (req.files === undefined) { - response.message = 'No files found'; - res.status(400).json(response); + res.status(400).json({ + success: 0, + message: 'No files found', + }); return; } if (!('image' in req.files)) { - res.status(400).json(response); + res.status(400).json({ + success: 0, + message: 'No images found', + }); return; } - const fileData = { - ...req.files.image[0], - url: '/uploads/' + req.files.image[0].filename, - }; - - console.log(fileData); - try { - Object.assign( - response, - await Transport.save(fileData, req.body.map ? JSON.parse(req.body.map) : undefined) - ); + const fileData = await Transport.save(req.files.image[0]); + const url = getFileUrl(fileData); - response.success = 1; - res.status(200).json(response); + res.status(200).json({ + success: 1, + file: { + url, + mime: fileData.mimetype, + size: fileData.size, + }, + message: '', + }); } catch (e) { - res.status(500).json(response); + res.status(500).json({ + success: 0, + message: e, + }); } }); @@ -101,29 +99,41 @@ router.post('/transport/image', imageUploader, async (req: Request, res: Respons * Accepts files to upload */ router.post('/transport/file', fileUploader, async (req: Request, res: Response) => { - const response = { success: 0 }; - if (req.files === undefined) { - res.status(400).json(response); + res.status(400).json({ + success: 0, + message: 'No files found', + }); return; } if (!('file' in req.files)) { - res.status(400).json(response); + res.status(400).json({ + success: 0, + message: 'No file found', + }); return; } try { - Object.assign( - response, - await Transport.save(req.files.file[0], req.body.map ? JSON.parse(req.body.map) : undefined) - ); + const fileData = await Transport.save(req.files.file[0]); + const url = getFileUrl(fileData); - response.success = 1; - res.status(200).json(response); + res.status(200).json({ + success: 1, + file: { + url, + mime: fileData.mimetype, + size: fileData.size, + }, + message: '', + }); } catch (e) { - res.status(500).json(response); + res.status(500).json({ + success: 0, + message: e, + }); } }); @@ -131,22 +141,34 @@ router.post('/transport/file', fileUploader, async (req: Request, res: Response) * Accept file url to fetch */ router.post('/transport/fetch', multer().none(), async (req: Request, res: Response) => { - const response = { success: 0 }; - if (!req.body.url) { - res.status(400).json(response); + res.status(400).json({ + success: 0, + message: 'No url provided', + }); return; } try { - Object.assign(response, await Transport.fetch(req.body.url, req.body.map ? JSON.parse(req.body.map) : undefined)); + const fileData = await Transport.fetch(req.body.url); + const url = getFileUrl(fileData); - response.success = 1; - res.status(200).json(response); + res.status(200).json({ + success: 1, + file: { + url, + mime: fileData.mimetype, + size: fileData.size, + }, + message: '', + }); } catch (e) { console.log(e); - res.status(500).json(response); + res.status(500).json({ + success: 0, + message: e, + }); } }); diff --git a/src/backend/uploads/index.ts b/src/backend/uploads/index.ts new file mode 100644 index 0000000..a0fbdb8 --- /dev/null +++ b/src/backend/uploads/index.ts @@ -0,0 +1,10 @@ +import appConfig from '../utils/appConfig.js'; +import S3UploadsDriver from './s3.js'; +import LocalUploadsDriver from './local.js'; + +/** + * Initialize the uploads driver based on the configuration + */ +export const uploadsDriver = appConfig.uploads.driver === 'local' + ? new LocalUploadsDriver(appConfig.uploads) + : new S3UploadsDriver(appConfig.uploads); diff --git a/src/backend/uploads/local.ts b/src/backend/uploads/local.ts new file mode 100644 index 0000000..e4be8bf --- /dev/null +++ b/src/backend/uploads/local.ts @@ -0,0 +1,72 @@ +import { UploadsDriver } from './types.js'; +import multer from 'multer'; +import mkdirp from 'mkdirp'; +import { random16 } from '../utils/crypto.js'; +import mime from 'mime'; +import appConfig, { LocalUploadsConfig } from '../utils/appConfig.js'; +import fs from 'fs'; +import fileType from 'file-type'; +import { FileData } from '../models/file.js'; + +/** + * Uploads driver for local storage + */ +export default class LocalUploadsDriver implements UploadsDriver { + /** + * Configuration for local uploads + */ + private readonly config: LocalUploadsConfig; + + /** + * Create a new instance of LocalUploadsDriver + * + * @param config - configuration for local uploads + */ + constructor(config: LocalUploadsConfig) { + this.config = config; + } + + + /** + * Creates multer storage engine for local uploads + */ + public createStorageEngine(): multer.StorageEngine { + return multer.diskStorage({ + destination: (req, file, cb) => { + const dir: string = this.config.local.path; + + mkdirp(dir); + cb(null, dir); + }, + filename: async (req, file, cb) => { + const filename = await random16(); + + cb(null, `${filename}.${mime.getExtension(file.mimetype)}`); + }, + }); + } + + /** + * Saves passed file to the local storage + * + * @param data - file data to save + * @param mimetype - file mimetype + * @param possibleExtension + */ + public async save(data: Buffer, mimetype?: string, possibleExtension?: string): Promise { + const filename = await random16(); + + const type = await fileType.fromBuffer(data); + const ext = type ? type.ext : possibleExtension; + const fullName = `${filename}.${ext}`; + + fs.writeFileSync(`${appConfig.uploads}/${fullName}`, data); + + return { + name: fullName, + filename: fullName, + size: data.length, + mimetype, + }; + } +} diff --git a/src/backend/uploads/s3.ts b/src/backend/uploads/s3.ts new file mode 100644 index 0000000..142df36 --- /dev/null +++ b/src/backend/uploads/s3.ts @@ -0,0 +1,88 @@ +import { UploadsDriver } from './types.js'; +import multerS3 from 'multer-s3'; +import { random16 } from '../utils/crypto.js'; +import path from 'path'; +import mime from 'mime'; +import multer from 'multer'; +import { S3UploadsConfig } from '../utils/appConfig.js'; +import { FileData } from '../models/file.js'; +import { PutObjectCommand, S3Client } from '@aws-sdk/client-s3'; +import fileType from 'file-type'; + +/** + * Uploads driver for S3 storage + */ +export default class S3UploadsDriver implements UploadsDriver { + /** + * Configuration for S3 uploads + */ + private readonly config: S3UploadsConfig; + + /** + * S3 client for uploads + */ + private readonly s3Client: S3Client; + + /** + * Create a new instance of S3UploadsDriver + * + * @param config - configuration for s3 uploads + */ + constructor(config: S3UploadsConfig) { + this.config = config; + this.s3Client = new S3Client({ + region: this.config.s3.region, + credentials: { + accessKeyId: this.config.s3.accessKeyId, + secretAccessKey: this.config.s3.secretAccessKey, + }, + }); + } + + /** + * Creates multer storage engine for S3 + */ + public createStorageEngine(): multer.StorageEngine { + const config = this.config; + + return multerS3({ + s3: this.s3Client, + bucket: config.s3.bucket, + key: async function (req, file, cb) { + const filename = await random16(); + + cb(null, path.posix.join(config.s3.keyPrefix, `${filename}.${mime.getExtension(file.mimetype)}`)); + }, + }); + } + + /** + * Saves passed file to the storage + * + * @param data - file data to save + * @param mimetype - file mimetype + * @param possibleExtension - possible file extension + */ + public async save(data: Buffer, mimetype?: string, possibleExtension?: string): Promise { + const filename = await random16(); + + const type = await fileType.fromBuffer(data); + const ext = type ? type.ext : possibleExtension; + const fullName = `${filename}.${ext}`; + const fileKey = path.posix.join(this.config.s3.keyPrefix, fullName); + + await this.s3Client.send(new PutObjectCommand({ + Bucket: this.config.s3.bucket, + Key: fileKey, + Body: data, + ContentType: mimetype, + })); + + return { + name: fileKey, + filename: fileKey, + size: data.length, + mimetype, + }; + } +} diff --git a/src/backend/uploads/types.ts b/src/backend/uploads/types.ts new file mode 100644 index 0000000..12a3460 --- /dev/null +++ b/src/backend/uploads/types.ts @@ -0,0 +1,21 @@ +import multer from 'multer'; +import { FileData } from '../models/file.js'; + +/** + * Represents common uploads driver functionality + */ +export interface UploadsDriver { + /** + * Returns multer storage instance + */ + createStorageEngine(): multer.StorageEngine + + /** + * Saves passed file + * + * @param data - file data to save + * @param mimetype - file mimetype + * @param possibleExtension - possible file extension + */ + save(data: Buffer, mimetype?: string, possibleExtension?: string): Promise; +} diff --git a/src/backend/utils/appConfig.ts b/src/backend/utils/appConfig.ts index 06a892e..1426787 100644 --- a/src/backend/utils/appConfig.ts +++ b/src/backend/utils/appConfig.ts @@ -12,6 +12,34 @@ const HawkConfig = z.object({ frontendToken: z.string().optional(), // Hawk frontend token }); +/** + * Config for local uploads driver + */ +const LocalUploadsConfig = z.object({ + driver: z.literal('local'), + local: z.object({ + path: z.string(), // path to the database directory + }), +}); + +/** + * Config for S3 uploads driver + */ +const S3UploadsConfig = z.object({ + driver: z.literal('s3'), + s3: z.object({ + bucket: z.string(), + region: z.string(), + baseUrl: z.string(), + keyPrefix: z.string(), + accessKeyId: z.string(), + secretAccessKey: z.string(), + }), +}); + +export type LocalUploadsConfig = z.infer; +export type S3UploadsConfig = z.infer; + /** * Config for local database driver */ @@ -63,7 +91,7 @@ const AppConfig = z.object({ port: z.number(), // Port to listen on host: z.string(), // Host to listen on favicon: z.string().optional(), // Path or URL to favicon - uploads: z.string(), // Path to uploads folder + uploads: z.union([LocalUploadsConfig, S3UploadsConfig]), // Uploads configuration hawk: HawkConfig.optional().nullable(), // Hawk configuration password: z.string(), // Password for admin panel frontend: FrontendConfig, // Frontend configuration diff --git a/src/backend/utils/objects.ts b/src/backend/utils/objects.ts deleted file mode 100644 index 7eb5d06..0000000 --- a/src/backend/utils/objects.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Merge to objects recursively - * - * @param {object} target - * @param {object[]} sources - * @returns {object} - */ - -/** - * @param {Record} target - target to merge into - * @param {...any[]} sources - sources to merge from - */ -function deepMerge(target: Record, ...sources: any[]): Record { - const isObject = (item: unknown): boolean => !!item && typeof item === 'object' && !Array.isArray(item); - - if (!sources.length) { - return target; - } - const source = sources.shift(); - - if (isObject(target) && isObject(source)) { - for (const key in source) { - if (isObject(source[key])) { - if (!target[key]) { - Object.assign(target, { [key]: {} }); - } - - deepMerge(target[key], source[key]); - } else { - Object.assign(target, { [key]: source[key] }); - } - } - } - - return deepMerge(target, ...sources); -} - -export default deepMerge; diff --git a/src/frontend/js/classes/editor.js b/src/frontend/js/classes/editor.js index 044a294..5fd1963 100644 --- a/src/frontend/js/classes/editor.js +++ b/src/frontend/js/classes/editor.js @@ -53,13 +53,6 @@ export default class Editor { byFile: '/api/transport/image', byUrl: '/api/transport/fetch', }, - additionalRequestData: { - map: JSON.stringify({ - url: 'file:url', - size: 'file:size', - mimetype: 'file:mime', - }), - }, }, }, diff --git a/yarn.lock b/yarn.lock index 7c13a57..a2d5c74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,916 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@aws-crypto/crc32@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-2.0.0.tgz#4ad432a3c03ec3087c5540ff6e41e6565d2dc153" + integrity sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-2.0.0.tgz#4235336ef78f169f6a05248906703b9b78da676e" + integrity sha512-vF0eMdMHx3O3MoOXUfBZry8Y4ZDtcuskjjKgJz8YfIDjLStxTZrYXk+kZqtl6A0uCmmiN/Eb/JbC/CndTV1MHg== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz#9c39f4a5558196636031a933ec1b4792de959d6a" + integrity sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-2.0.0.tgz#71e735df20ea1d38f59259c4b1a2e00ca74a0eea" + integrity sha512-3fIVRjPFY8EG5HWXR+ZJZMdWNRpwbxGzJ9IH9q93FpbgCH8u8GHRi46mZXp3cYD7gealmyqpm3ThZwLKJjWJhA== + dependencies: + "@aws-crypto/ie11-detection" "^2.0.0" + "@aws-crypto/supports-web-crypto" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz#741c9024df55ec59b51e5b1f5d806a4852699fb5" + integrity sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A== + dependencies: + "@aws-crypto/ie11-detection" "^2.0.0" + "@aws-crypto/sha256-js" "^2.0.0" + "@aws-crypto/supports-web-crypto" "^2.0.0" + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz#f1f936039bdebd0b9e2dd834d65afdc2aac4efcb" + integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== + dependencies: + "@aws-crypto/util" "^2.0.0" + "@aws-sdk/types" "^3.1.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz#c81e5d378b8a74ff1671b58632779986e50f4c99" + integrity sha512-iXLdKH19qPmIC73fVCrHWCSYjN/sxaAvZ3jNNyw6FclmHyjLKg0f69WlC9KTnyElxCR5MO9SKaG00VwlJwyAkQ== + dependencies: + "@aws-crypto/util" "^2.0.2" + "@aws-sdk/types" "^3.110.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz#9f02aafad8789cac9c0ab5faaebb1ab8aa841338" + integrity sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-2.0.2.tgz#adf5ff5dfbc7713082f897f1d01e551ce0edb9c0" + integrity sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA== + dependencies: + "@aws-sdk/types" "^3.110.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.178.0.tgz#fd189d62a689add822c3f40b2827f887639f015c" + integrity sha512-ptDkCB06BJrYdhKzamM9yI15LxcGkPczY80hzKAY/aecm09alnW27uCt5HJJx2nCd18IUH28ZO1sc7DTLOWb3A== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/chunked-blob-reader-native@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.170.0.tgz#a277f4aec88246c6de69d4f15e5fd5e262f0ac6b" + integrity sha512-haJ7fdWaOgAM4trw2LBd1VIvRFzMMPz2jy9mu4rE+z1uHbPZHNMGytBo1FJO2DShzUCmJZi3t3CD/7aE3H38+w== + dependencies: + "@aws-sdk/util-base64-browser" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/chunked-blob-reader@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.170.0.tgz#059fd50c8ed7ddc9219f483258ec3a0cab6ca699" + integrity sha512-73Fy1u9zR9ZMC59QobuCWg3LoYfcrFsrP8569vvqtlGqPuQUW+RW3gfx0omIDmxaSg8qq8REPLJFrAGfeL7VtQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/client-s3@^3.0.0", "@aws-sdk/client-s3@^3.181.0": + version "3.181.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.181.0.tgz#192fa617c6f75e578f20a53671759628dd095e9e" + integrity sha512-EUJ/Y8SWALh5bfxcg+LQytpI/R3KXHYilWRnBBsKLBUfAWPj+8NzZdDK8wD/6htBtAV4XnqHux3cMCnpeoRf8g== + dependencies: + "@aws-crypto/sha1-browser" "2.0.0" + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/client-sts" "3.181.0" + "@aws-sdk/config-resolver" "3.178.0" + "@aws-sdk/credential-provider-node" "3.181.0" + "@aws-sdk/eventstream-serde-browser" "3.178.0" + "@aws-sdk/eventstream-serde-config-resolver" "3.178.0" + "@aws-sdk/eventstream-serde-node" "3.178.0" + "@aws-sdk/fetch-http-handler" "3.178.0" + "@aws-sdk/hash-blob-browser" "3.178.0" + "@aws-sdk/hash-node" "3.178.0" + "@aws-sdk/hash-stream-node" "3.178.0" + "@aws-sdk/invalid-dependency" "3.178.0" + "@aws-sdk/md5-js" "3.178.0" + "@aws-sdk/middleware-bucket-endpoint" "3.178.0" + "@aws-sdk/middleware-content-length" "3.178.0" + "@aws-sdk/middleware-expect-continue" "3.178.0" + "@aws-sdk/middleware-flexible-checksums" "3.178.0" + "@aws-sdk/middleware-host-header" "3.178.0" + "@aws-sdk/middleware-location-constraint" "3.178.0" + "@aws-sdk/middleware-logger" "3.178.0" + "@aws-sdk/middleware-recursion-detection" "3.178.0" + "@aws-sdk/middleware-retry" "3.178.0" + "@aws-sdk/middleware-sdk-s3" "3.178.0" + "@aws-sdk/middleware-serde" "3.178.0" + "@aws-sdk/middleware-signing" "3.179.0" + "@aws-sdk/middleware-ssec" "3.178.0" + "@aws-sdk/middleware-stack" "3.178.0" + "@aws-sdk/middleware-user-agent" "3.178.0" + "@aws-sdk/node-config-provider" "3.178.0" + "@aws-sdk/node-http-handler" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/signature-v4-multi-region" "3.180.0" + "@aws-sdk/smithy-client" "3.180.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/url-parser" "3.178.0" + "@aws-sdk/util-base64-browser" "3.170.0" + "@aws-sdk/util-base64-node" "3.170.0" + "@aws-sdk/util-body-length-browser" "3.170.0" + "@aws-sdk/util-body-length-node" "3.170.0" + "@aws-sdk/util-defaults-mode-browser" "3.180.0" + "@aws-sdk/util-defaults-mode-node" "3.180.0" + "@aws-sdk/util-stream-browser" "3.178.0" + "@aws-sdk/util-stream-node" "3.178.0" + "@aws-sdk/util-user-agent-browser" "3.178.0" + "@aws-sdk/util-user-agent-node" "3.178.0" + "@aws-sdk/util-utf8-browser" "3.170.0" + "@aws-sdk/util-utf8-node" "3.170.0" + "@aws-sdk/util-waiter" "3.180.0" + "@aws-sdk/xml-builder" "3.170.0" + entities "2.2.0" + fast-xml-parser "3.19.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso@3.181.0": + version "3.181.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.181.0.tgz#ab981a4cc048905239e4c610174a056ea9123cc6" + integrity sha512-p/HsYVAO7fgjFfn4LqlnlpSKPXGPegAwjPpY+SqyK3/Hj1OtED4whG8LTgxZSTtYwNIkHEjrHnXTiymyXh34Aw== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.178.0" + "@aws-sdk/fetch-http-handler" "3.178.0" + "@aws-sdk/hash-node" "3.178.0" + "@aws-sdk/invalid-dependency" "3.178.0" + "@aws-sdk/middleware-content-length" "3.178.0" + "@aws-sdk/middleware-host-header" "3.178.0" + "@aws-sdk/middleware-logger" "3.178.0" + "@aws-sdk/middleware-recursion-detection" "3.178.0" + "@aws-sdk/middleware-retry" "3.178.0" + "@aws-sdk/middleware-serde" "3.178.0" + "@aws-sdk/middleware-stack" "3.178.0" + "@aws-sdk/middleware-user-agent" "3.178.0" + "@aws-sdk/node-config-provider" "3.178.0" + "@aws-sdk/node-http-handler" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/smithy-client" "3.180.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/url-parser" "3.178.0" + "@aws-sdk/util-base64-browser" "3.170.0" + "@aws-sdk/util-base64-node" "3.170.0" + "@aws-sdk/util-body-length-browser" "3.170.0" + "@aws-sdk/util-body-length-node" "3.170.0" + "@aws-sdk/util-defaults-mode-browser" "3.180.0" + "@aws-sdk/util-defaults-mode-node" "3.180.0" + "@aws-sdk/util-user-agent-browser" "3.178.0" + "@aws-sdk/util-user-agent-node" "3.178.0" + "@aws-sdk/util-utf8-browser" "3.170.0" + "@aws-sdk/util-utf8-node" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/client-sts@3.181.0": + version "3.181.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.181.0.tgz#d9a3dfce4a1c7ea83d2a0e076600c56633428885" + integrity sha512-j//F9kjdSv9lUa8p87cg+xk6l5E8o8+GTYP5838eFQR7XcEc3yEljSCkuj2xIzrtf1jKuMXBnswTKmxJhjbTzQ== + dependencies: + "@aws-crypto/sha256-browser" "2.0.0" + "@aws-crypto/sha256-js" "2.0.0" + "@aws-sdk/config-resolver" "3.178.0" + "@aws-sdk/credential-provider-node" "3.181.0" + "@aws-sdk/fetch-http-handler" "3.178.0" + "@aws-sdk/hash-node" "3.178.0" + "@aws-sdk/invalid-dependency" "3.178.0" + "@aws-sdk/middleware-content-length" "3.178.0" + "@aws-sdk/middleware-host-header" "3.178.0" + "@aws-sdk/middleware-logger" "3.178.0" + "@aws-sdk/middleware-recursion-detection" "3.178.0" + "@aws-sdk/middleware-retry" "3.178.0" + "@aws-sdk/middleware-sdk-sts" "3.179.0" + "@aws-sdk/middleware-serde" "3.178.0" + "@aws-sdk/middleware-signing" "3.179.0" + "@aws-sdk/middleware-stack" "3.178.0" + "@aws-sdk/middleware-user-agent" "3.178.0" + "@aws-sdk/node-config-provider" "3.178.0" + "@aws-sdk/node-http-handler" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/smithy-client" "3.180.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/url-parser" "3.178.0" + "@aws-sdk/util-base64-browser" "3.170.0" + "@aws-sdk/util-base64-node" "3.170.0" + "@aws-sdk/util-body-length-browser" "3.170.0" + "@aws-sdk/util-body-length-node" "3.170.0" + "@aws-sdk/util-defaults-mode-browser" "3.180.0" + "@aws-sdk/util-defaults-mode-node" "3.180.0" + "@aws-sdk/util-user-agent-browser" "3.178.0" + "@aws-sdk/util-user-agent-node" "3.178.0" + "@aws-sdk/util-utf8-browser" "3.170.0" + "@aws-sdk/util-utf8-node" "3.170.0" + entities "2.2.0" + fast-xml-parser "3.19.0" + tslib "^2.3.1" + +"@aws-sdk/config-resolver@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.178.0.tgz#83a66f79bc1c25450b0ab4dffe48288dfb3df3bb" + integrity sha512-8xL98TGMaVULIN7HRWV2q1o0Y2p38QuweehzM8yXCZrrLOyHgWo3waP2RNVeddOB7MrSwwU/gw9rXSv7YHLZ6w== + dependencies: + "@aws-sdk/signature-v4" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-config-provider" "3.170.0" + "@aws-sdk/util-middleware" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-env@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.178.0.tgz#0f497bb9924eef70b070bc9c6acb0a7c55d6114d" + integrity sha512-5CMswTJ188RuK9TmI5yAosIsyu4Mm9Cdq1068tRls5EqqwGK1PI7Q007b6rD7zqCb5IgeFBV0t2DxHkBmHRd3w== + dependencies: + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-imds@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.178.0.tgz#e1ecb0df813e4f6c25deaa9e8266682ede6fdb8e" + integrity sha512-ZvqQTi3+S13LACVgaWNCOKBv5jROIz7rqyZh56QunAkaAUqPbpM4VFODgAGZYPCOSggZbEUUqXOVB9xSnshLnA== + dependencies: + "@aws-sdk/node-config-provider" "3.178.0" + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/url-parser" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-ini@3.181.0": + version "3.181.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.181.0.tgz#a1fa02aaf0991754a03824b70a6fe6f3fae35039" + integrity sha512-jOa42qYFgkdMumw0IRO0ASAjM0vZMXvPpy3DGOaG0Ehy4KHeykEj4/J23SxCTCkOqAbz2+8XVCuyTExUmWCuWw== + dependencies: + "@aws-sdk/credential-provider-env" "3.178.0" + "@aws-sdk/credential-provider-imds" "3.178.0" + "@aws-sdk/credential-provider-sso" "3.181.0" + "@aws-sdk/credential-provider-web-identity" "3.178.0" + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/shared-ini-file-loader" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-node@3.181.0": + version "3.181.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.181.0.tgz#a781ce2cba8a99840a7a762809333cfd88ac28b7" + integrity sha512-RlLdp+7faCKzJsmUlBSr4CjqN9WG+YZpmuVVlW5fXGUdXLBLEvLMTl5rmwKtRSUytyYK0Vqtmt48I4nBze8MrA== + dependencies: + "@aws-sdk/credential-provider-env" "3.178.0" + "@aws-sdk/credential-provider-imds" "3.178.0" + "@aws-sdk/credential-provider-ini" "3.181.0" + "@aws-sdk/credential-provider-process" "3.178.0" + "@aws-sdk/credential-provider-sso" "3.181.0" + "@aws-sdk/credential-provider-web-identity" "3.178.0" + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/shared-ini-file-loader" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-process@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.178.0.tgz#60fe3de1fb142cce563cdf1a582c9b7c670dfe5a" + integrity sha512-J4TldKrAnfayvRfxNEnLJUnTgkpTcct6rc7PwZlVSGSUgjglbcqfemUOP/pisLKbVNNL742lsUXmkUVH4km0Fw== + dependencies: + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/shared-ini-file-loader" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-sso@3.181.0": + version "3.181.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.181.0.tgz#727b72c85ec49fbbc3df2b9d9d8a441837f14a9f" + integrity sha512-03YAvns+P7hw5rLwYLExezn9iGX9HD2GAKCEgpSaZSlNLzMw0jU7VEmqJvrLqi+xAoshuRR5A3v8HFQU246QRA== + dependencies: + "@aws-sdk/client-sso" "3.181.0" + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/shared-ini-file-loader" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-web-identity@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.178.0.tgz#5cb626980777a45496c478c6730d73a37de04396" + integrity sha512-aei8o9ALtzwgYsZCAWdr+ItJyYTkYRmCoKstM4mkGtWNK9BjdISaVUAnndl6Pc/l/5eiK+2rlA+6Ujs4H8m+XQ== + dependencies: + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-codec@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.178.0.tgz#bcda3cd121625bd3cb09933af4ddeb816fb1162a" + integrity sha512-x18waxfidmI9i4BLpnwV37rxHPyyviyWo5qRgYWX+gLxhN6Z6sB3/Pc/s8/yQmywMs6/DlMBYJUDTvYXR1cezA== + dependencies: + "@aws-crypto/crc32" "2.0.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-hex-encoding" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-browser@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.178.0.tgz#b38638cbc65eee48d4dabdd8c24ac6017561d1c5" + integrity sha512-UMlCevpJoQ8oMlNKlQF0Ti5zIztLzx9zcrxfi4KK1A22qXamTA5kHloyq1mFwrTkbcr4uhQ9omDDx//hYQ+yNw== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-config-resolver@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.178.0.tgz#24f683ab3e8839dd45906f9cd462e18f0cb38840" + integrity sha512-LmH5JuNCOvUI2g/7e2qlvHqRQW316J5iTawZQd233xUlmRO49kHc8HFvKPo98/V/S4MFsjlrZF9dcnly2txCxw== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-node@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.178.0.tgz#2cd1ece8523a8adefa5548d96e6de4eae146c70e" + integrity sha512-YsFoZ8MlVReGm7GKMjvo5vxLVo/ZPSDg6ckp7kff18zZMlbNtuK+zfgub3tX1f2hbDoV2bBVL3xuZJkeBELpHQ== + dependencies: + "@aws-sdk/eventstream-serde-universal" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/eventstream-serde-universal@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.178.0.tgz#71887fa3c784cbd895d52d8a43b68f12c669abf5" + integrity sha512-Rd8QjqzN2roSHsLn0y1iCt/KrEQL2qlNdunXRjBwXvjZGuODa6M8gpOvaPNpTWLiD+V6mO0zuPp+tWiLZxMndw== + dependencies: + "@aws-sdk/eventstream-codec" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/fetch-http-handler@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.178.0.tgz#1d6489041d7334de4f924b24c909647b3c0b6d5f" + integrity sha512-T/LCNwCihdVNzGn39Dw7tk2U1fMlupFlCsAvDBbO+FOM3h+y9WLHzxmlAVsjPrFXlzdONKf9zd5cuQ+ZW93yAQ== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/querystring-builder" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-base64-browser" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/hash-blob-browser@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.178.0.tgz#573f4ef6ce4cc824e15beda4986dca26bd137275" + integrity sha512-LgrKDNi56q3ayxcvbC0MMt/fgliKgMb8G2o1y6bUAKzlEtBHLFfTUjvzW1WsDfK8ZSrtz/bZNGECIjeFEdTggQ== + dependencies: + "@aws-sdk/chunked-blob-reader" "3.170.0" + "@aws-sdk/chunked-blob-reader-native" "3.170.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/hash-node@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.178.0.tgz#140b716e40bbcb30aae16a6446b6c79e61e200ab" + integrity sha512-mqYraRQlvPO5egUKTNZ1kP52sfwBlsz7woOewQTHOGomZBDXrh8bl1J+sgaDi1NAwXdZUgxuD3QKxxAKRs9a2Q== + dependencies: + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-buffer-from" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/hash-stream-node@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.178.0.tgz#c14058ca153aed0877bc425fffd430b12e012365" + integrity sha512-YzockpOajp5WOweB+/hIrQy9KNVXEgnbMDcuCmevYfoub+BJbjCs5eAZrhCJBkXpRKBz3X1U0vlYp7twFacPqw== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/invalid-dependency@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.178.0.tgz#0e4a4793a912bf67e0c484da666d2e047357cde2" + integrity sha512-JJNaiLr3nbRYym6oUAAaoFFYtDnIZ9Scco2p4sG/thT2eyAfXcEdNl1cSD3E/R1J+Ml/YplqTiIY4u1KPAriRw== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/is-array-buffer@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.170.0.tgz#a34b82b0d7c534544db001837785ed086d99344c" + integrity sha512-yYXqgp8rilBckIvNRs22yAXHKcXb86/g+F+hsTZl38OJintTsLQB//O5v6EQTYhSW7T3wMe1NHDrjZ+hFjAy4Q== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/lib-storage@^3.46.0": + version "3.182.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.182.0.tgz#cdca16445ac65afbb4d9acbc1b149761d6293113" + integrity sha512-12MleBxo9f74R1x4rvVYEkyJyUtp+YNbpCSR+8v7VuBJm0LVugCbKRasle+xmWsWI/Pd20OXalzManWZIWMQDA== + dependencies: + "@aws-sdk/middleware-endpoint" "3.182.0" + "@aws-sdk/smithy-client" "3.180.0" + buffer "5.6.0" + events "3.3.0" + stream-browserify "3.0.0" + tslib "^2.3.1" + +"@aws-sdk/md5-js@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.178.0.tgz#b3bdc6099361fa2d9f5838a442cc9cb4d08d3abc" + integrity sha512-o/F4QKjJL2gQdGq5eQnVGc9SlJ+/TjUBDJfn0Nyz4/OhDYVRvf4yJLT3+I9ZQN5M6DoFgqrLPH0MUHv4EmDPpw== + dependencies: + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-utf8-browser" "3.170.0" + "@aws-sdk/util-utf8-node" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-bucket-endpoint@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.178.0.tgz#0d10257138387201a10b963a0f01f5f309ba87a2" + integrity sha512-HCHonBmv5SWZMZqVNtWr73d6moZfcqTI87Xmi0Ofpra8tmu99WQpYgXmVLqK13wlPP2MJErBLkcDt15dsS0pJw== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-arn-parser" "3.170.0" + "@aws-sdk/util-config-provider" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-content-length@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.178.0.tgz#53ed59ff542b86e7cfe1223572fb68e5223db6f0" + integrity sha512-p3n3IzU03eRzZivEoQn1HA83LbAKukZwRevsJpya1UfCUtWkXQO3v0jU8rhZE4deGa9k7zuCAEmJ8nCw3QxclQ== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-endpoint@3.182.0": + version "3.182.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.182.0.tgz#dd36357977437fc336e564ef0ef5508030b12853" + integrity sha512-F51nTuxdZ0oTuqU2+Ca+l/Ysvn6ukLyujvHhyJfolquKX+ra/CBEC/Unhksl7ORolehm+iwbryyO7MHq7BWGkA== + dependencies: + "@aws-sdk/middleware-serde" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/signature-v4" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/url-parser" "3.178.0" + "@aws-sdk/util-config-provider" "3.170.0" + "@aws-sdk/util-middleware" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-expect-continue@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.178.0.tgz#7e6f927badb4f909b3edf9d298be405563c5fd0b" + integrity sha512-4OJgVeN2fBRHpRBNq1cCkT02QmsIZmiqsCXDgoRRlHJdcrbE5vLVs/PG/B1LB5ugxLD8EzwgoTbnOxIk0R1Weg== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-flexible-checksums@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.178.0.tgz#be52f7d364860e144b0a8875672d582c0e751259" + integrity sha512-nd9mvl7uF3S3ok4u9O/Avlc5d9YL8/OMDnKBoGeIYuop5bAdcO1t/sEJWEex6YYgtj0e20fIosO7maCXs8/C1A== + dependencies: + "@aws-crypto/crc32" "2.0.0" + "@aws-crypto/crc32c" "2.0.0" + "@aws-sdk/is-array-buffer" "3.170.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-host-header@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.178.0.tgz#1482cbbb7b83145b659f3504b83b998e26a2bbcc" + integrity sha512-EFc9S63iwCmudVpVSiVPiTnp6WCfsRYUmTrZJJouZzthEhJwcrunwu7Fa9lHYb0zcWLgVFLhzs1Z34J/Er4JoQ== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-location-constraint@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.178.0.tgz#81792cd114b8dc538124b62ebff3cce564e8b538" + integrity sha512-0Zrcdy75Q1CpAfjOFddiZSvK5iyeyh6fI7YRpUC8Fa3H+1kgW5sHESw0zyoC0NMAQkp1TgFrgxpaBuhAkdUzkg== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-logger@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.178.0.tgz#c8547ba355d96cd942efcfb8cdcdae1211bbb861" + integrity sha512-k4jnB+ryGiAhv6vyNFz2YoaVodldjkbz4mqDlVzhwEn77LT/TcwdBoown3cJD/45LEtiuPqeONoTcNCsuCkRFQ== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-recursion-detection@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.178.0.tgz#6c43015ea8a618f1c0ededcb9af17c53329578a2" + integrity sha512-dVgSoP2Mer8A0JGaWgpC/f4vPyvHh7laES/u5sTy6RfwrR87oTx+uhKrc6eh+9NkMR2xdRyaNJAMIXwL5bsVzg== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-retry@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.178.0.tgz#e787a93185ca72a346db93624da4f8d03f5f8f8b" + integrity sha512-glBXpAqt+4KQ7q8y2/kwDX2ujCvCSQok5rlAmUjaQjVPc3cX77QwATIRQTS2nBC4v9tfMc7yL64ZeRbx6n0RAQ== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/service-error-classification" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-middleware" "3.178.0" + tslib "^2.3.1" + uuid "^8.3.2" + +"@aws-sdk/middleware-sdk-s3@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.178.0.tgz#b692c76926e623f91bbe73df478255690120107a" + integrity sha512-/4IMPfSCsHZ3nFPPOFdNh+KlKkQE7LhesaxHEZA8f4qn/AnzBJUQLQ7iN4uvE+mD/WjNDUhNXX3ZqDRVaI2a+w== + dependencies: + "@aws-sdk/middleware-bucket-endpoint" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-arn-parser" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-sdk-sts@3.179.0": + version "3.179.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.179.0.tgz#9460fabca9657303bbc65e6dd57dad41136ec0d9" + integrity sha512-uU9UdG9ornvblXdLLNsZNpgMOA9vgFMB93zo3DL/Q6MPmYprZYyK7dUiA06i1pe4HP2gR3N3hxXwzmKU6Bjt6A== + dependencies: + "@aws-sdk/middleware-signing" "3.179.0" + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/signature-v4" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-serde@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.178.0.tgz#09bfdcf83782381078523db549734be837a087bc" + integrity sha512-TERiu/B4hYi5Jd4iQN9ECTWbt2IZweAgFB010MboM4CAPm6EcszEc/uCB4faLZNdJaksk1BhAR7koURcda8Sew== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-signing@3.179.0": + version "3.179.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.179.0.tgz#ff4e1ebdabe00fcd1105ece645ab13201addb0d2" + integrity sha512-rtB6t3w1Km3ngO1yoiEUqsobujcBk36oPs2fTUKTbmuTr+54YH3NF0zAwVJv08lpfAs56holtp+bYyAxZJIxSQ== + dependencies: + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/signature-v4" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-middleware" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-ssec@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.178.0.tgz#fdc1943fe3b813e8399ec7ce087bb69cb85a71cc" + integrity sha512-6TcOTv03X8ygg9XnGTN2nTC1gSNaSIPBFvvQntVGr08umIajtalnI+2a9F3/+DQkUk/3u/V5j39mL9m0oAiMVw== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/middleware-stack@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.178.0.tgz#42e92ef9aaa3c1fdaca159ac6c24c37629dd4aee" + integrity sha512-ELYM5Imhlcz2zT1Z4OjVZwO564KvI4L9dMBxuUgO0fwommzjWqxR03yaRGhpGwpCP64d0Op5Koc/RKq5V92Wbw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/middleware-user-agent@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.178.0.tgz#f212079c2691d27df665b6a88532cee1dc3a4f2d" + integrity sha512-xkKBxrFbs+UwUPpfIGEPuHeBWS2Jgmcd+ipEJUQRR3lY4h1fJ6mPGeyyaVDvwaJp9KgESSI6QTp6V15l8GXXgQ== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/node-config-provider@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.178.0.tgz#4b709f3c23a88c96eaf4e9941f501b149131693a" + integrity sha512-yb5XJcC7SxkZ5oxu3zQ/foBdMkLBKryzx/CVg5BNSsKDjfbouf/ZYPcJDHhc2gzCtZcx18GjFBOnv8cpo/tyXQ== + dependencies: + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/shared-ini-file-loader" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/node-http-handler@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.178.0.tgz#5b68f09b3b23f0c4cafd175b0013560050bcd90a" + integrity sha512-EtH6YiX1IX0QraQ/+kKBWAEtsFYBnFyxOimTBtlpDYwFpgDzIZ1GFn2wORYomEWALg10kphs8n3E5/7b5t5OWQ== + dependencies: + "@aws-sdk/abort-controller" "3.178.0" + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/querystring-builder" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/property-provider@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.178.0.tgz#5d322cc52b866c4d03469163a57d2fd2fe16271f" + integrity sha512-+Fh1aUANa+Gt/rh4SUHO0yHwKsibyZGk2LLDUcM1+9r0pUZT0qy3h0UCl5Kkj9HUcDJMD73wHTx4UB440xRobw== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/protocol-http@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.178.0.tgz#e6582feaab8cfbd6a278eb628e9d01f25ba2c631" + integrity sha512-GsnANW60mVYMlE16UGNSOwYZ6TbkoODvmDQi95SEPjM7asf4vihEyDvhxiGS/JvC18UyxRVWT89l/V3hR/SF7w== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-builder@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.178.0.tgz#1d096111321e46a5eaa4ac1de56030d3e3c6de9e" + integrity sha512-vJXlExSshlHtGVvan/U6JihWvzf8t9QwH5I4F6HUY+exxMy5vFDYCnNqGAzbJwq7w/HME1gQWLoXq2k0uODz7g== + dependencies: + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-uri-escape" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-parser@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.178.0.tgz#8a608fbb65b31ffd14d4d25b0851b0d5368d12a6" + integrity sha512-dp3pLnsOvAcIF7Yn2PY5CIVWX7GvC33nSlWDYeLeCMapccwTbe6zBqreWbScmIGJra4QJTdjccpwo2Yxwhr5QQ== + dependencies: + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/service-error-classification@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.178.0.tgz#a0887bd30e07fe5a0328c0b993a74bf55d8e7396" + integrity sha512-tDKTBXxck2N4bhAnQaeokx9ps38V3G70lcDdHS/N9hmqcQQmH5x+1/AMwYWLjUZmOQPBW9sFoG4B3psnl+sefw== + +"@aws-sdk/shared-ini-file-loader@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.178.0.tgz#cd8f2bff7faf4111134ecbf76a8c3a2b395dcfc9" + integrity sha512-nZGmuhGLDFbXsb7QYDg7PiPMAmsdlSshKJ+AhKSZF/J0SK94kdZgGnGXGUZe52S3G41E3CZIgnLnnsMXq0uErA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/signature-v4-multi-region@3.180.0": + version "3.180.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.180.0.tgz#b51aba230a7a1d5940e296c39ee7a495b0097a8e" + integrity sha512-3IjwOy/x6UroV3TAbeCwpCRmt/8TW89JI1r8gtDbpQ42WiQ/1J+R5a78NP8bYa53kiDghW6pKlvLcbuoh3zWHQ== + dependencies: + "@aws-sdk/protocol-http" "3.178.0" + "@aws-sdk/signature-v4" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-arn-parser" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.178.0.tgz#02f874021725c328a7b044cd71af118fba7d6b11" + integrity sha512-8oOx6o0uOqlCDPM0dszfR1WHqd0E1VuFqez8iNItp0DhmhaCuanEwKYYA6HOkVu/MA6CsG6zDIJaFr5ODU2NvQ== + dependencies: + "@aws-sdk/is-array-buffer" "3.170.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-hex-encoding" "3.170.0" + "@aws-sdk/util-middleware" "3.178.0" + "@aws-sdk/util-uri-escape" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/smithy-client@3.180.0": + version "3.180.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.180.0.tgz#03953e5d4f0dc3607d422021550126f5a32c2423" + integrity sha512-1vWafiUdn6RvOsD4CyNjMeDtDujuPi4Iq4Db6HrFmVPpJAutOLlCg52Dt7k96KCcIKgxVAs6Br0Waef+pcoGNA== + dependencies: + "@aws-sdk/middleware-stack" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/types@3.178.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.178.0.tgz#2b79d705be218f8c9b5829ec71284549c37733be" + integrity sha512-CrHxHzXSEr/Z3NLFvJgSGHGcD9tYUZ0Rhp8tFCSpD3TpBo3/Y7RIvqaEPvECsL52UEloeBhQf65AO8590YkVmQ== + +"@aws-sdk/url-parser@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.178.0.tgz#aee06f73313154d9d0e34e16a974a6d35bbf7d93" + integrity sha512-+Ch29d+IZG6zD1gNDVgFC00huY8ytrPdijAuNJ4DtPBTGP4zbrImw3js0GfvfBjLrQYBnclcAvSx4J1Q/8tqBQ== + dependencies: + "@aws-sdk/querystring-parser" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/util-arn-parser@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.170.0.tgz#42587a958fd892ae51a447606e34ab5614bcb616" + integrity sha512-2ivABL9GNsucfMMkgGjVdFidbDogtSr4FBVW12D4ltijOL82CAynGrnxHAczRGnmi5/1/Ir4ipkr9pAdRMGiGw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-base64-browser@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.170.0.tgz#3352aeb2891f650fa0eda75d8be38ebdc6f98b43" + integrity sha512-uLP9Kp74+jc+UWI392LSWIaUj9eXZBhkAiSm8dXAyrr+5GFOKvmEdidFoZKKcFcZ2v3RMonDgFVcDBiZ33w7BQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-base64-node@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.170.0.tgz#434f719d467e04f553f3dc8991aec40483078607" + integrity sha512-sjpOmfyW0RWCLXU8Du0ZtwgFoxIuKQIyVygXJ4qxByoa3jIUJXf4U33uSRMy47V3JoogdZuKSpND9hiNk2wU4w== + dependencies: + "@aws-sdk/util-buffer-from" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/util-body-length-browser@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.170.0.tgz#4f88ad2493e7088a8b22972d4ff512a64f02fc7b" + integrity sha512-SqSWA++gsZgHw6tlcEXx9K6R6cVKNYzOq6bca+NR7jXvy1hfqiv9Gx5TZrG4oL4JziP8QA0fTklmI1uQJ4HBRA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-body-length-node@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.170.0.tgz#ef69fc0895338c2b15b5b4c9b201e72d4232cba1" + integrity sha512-sFb85ngsgfpamwDn22LC/+FkbDTNiddbMHptkajw+CAD2Rb4SJDp2PfXZ6k883BueJWhmxZ9+lApHZqYtgPdzw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-buffer-from@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.170.0.tgz#efa9e74cd6fda5d711a99dc8a6f288afabe3b9fe" + integrity sha512-3ClE3wgN/Zw0ahfVAY5KQ/y3K2c+SYHwVUQaGSuVQlPOCDInGYjE/XEFwCeGJzncRPHIKDRPEsHCpm1uwgwEqQ== + dependencies: + "@aws-sdk/is-array-buffer" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/util-config-provider@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.170.0.tgz#85ad4dfa8102fe44b737c0aee23e63ae37ff9022" + integrity sha512-VV6lfss6Go00TF2hRVJnN8Uf2FOwC++1e8glaeU7fMWluYCBjwl+116mPOPFaxvkJCg0dui2tFroXioslM/rvQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-browser@3.180.0": + version "3.180.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.180.0.tgz#7705fece381857e4f867ed9f168da92aea78d4e6" + integrity sha512-XGq/RUuhqnLlApETBmBWDszNG4TR3FCOSNwFvok1UIPgFXxjh0JOzNc5mAX1St2hfx1IDb9Ja4BmTkYKix7byg== + dependencies: + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/types" "3.178.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-node@3.180.0": + version "3.180.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.180.0.tgz#dd3d9528daa91b80ba877a09c1602c7230b3a5d5" + integrity sha512-ch9VR4OKYGEaNbLhX/EyZDpNZst5T+/VYsFyqMA47J0YyMbg7GWyn2FjjhZ7qOV3XU6W8YEBNdd7U/LFFVp8uA== + dependencies: + "@aws-sdk/config-resolver" "3.178.0" + "@aws-sdk/credential-provider-imds" "3.178.0" + "@aws-sdk/node-config-provider" "3.178.0" + "@aws-sdk/property-provider" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/util-hex-encoding@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.170.0.tgz#e81f0fd8c951e0da7ada8d3148ead9b15c57f2f8" + integrity sha512-BDYyMqaxX4/N7rYOIYlqgpZaBuHw3kNXKgOkWtJdzndIZbQX8HnyJ+rF0Pr1aVsOpVDM+fY1prERleFh/ZRTCg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.170.0.tgz#acc8717abe1e568de41d9b8ede33a49c6c1e108d" + integrity sha512-uQvn3ZaAokWcNSY+tNR71RGXPPncv5ejrpGa/MGOCioeBjkU5n5OJp7BdaTGouZu4fffeVpdZJ/ZNld8LWMgLw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-middleware@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.178.0.tgz#c628d6df8f5f1bc9391c07621d899213e41c8207" + integrity sha512-93WgrJKuwtv3f2r1Q04emzjMiwpYR5hysOHKMkrGOvAVZdDqe1UTjmtuxQadVi3DBr1KOT/d5uP9MjV8LqaUUA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-stream-browser@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-browser/-/util-stream-browser-3.178.0.tgz#a659b9b5af9efc936edd039cb8e6f8e639eb5665" + integrity sha512-CgXIJjDtkJPpig3/37xNzwPvtySN21m3nI/61CDjmQTFU9CfrfFplR/K3yBhB465AyINrLcDyuiBBcv78wqBzg== + dependencies: + "@aws-sdk/fetch-http-handler" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-base64-browser" "3.170.0" + "@aws-sdk/util-hex-encoding" "3.170.0" + "@aws-sdk/util-utf8-browser" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/util-stream-node@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream-node/-/util-stream-node-3.178.0.tgz#a49f0c1332f446ed7b0b57a63908c294670544b7" + integrity sha512-SarpMLzoG49Tosp+s+yMsE2rGwsDqa6NDP6umqo2HXX3D26I3uqaefoB0E+Jn/VAJZcKbwxRZUPKnwQEOn1xMA== + dependencies: + "@aws-sdk/node-http-handler" "3.178.0" + "@aws-sdk/types" "3.178.0" + "@aws-sdk/util-buffer-from" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/util-uri-escape@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.170.0.tgz#1121fb47a59dab0f732b881742e9871c3690367c" + integrity sha512-Fof0urZ3Lx6z6LNKSEO6T4DNaNh6sLJaSWFaC6gtVDPux/C3R7wy2RQRDp0baHxE8m1KMB0XnKzHizJNrbDI1w== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-browser@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.178.0.tgz#c9e02d4cb7edee51cfdc36179036b01120e1b0c1" + integrity sha512-LxOrn7Ai88n0i5J5rTb5Bt0TAycPvDYzjdCwmd2mahsPHZGSDLeCeh6KOIxZsEfnzYRl4HGWvIEXdHIYZ3RTug== + dependencies: + "@aws-sdk/types" "3.178.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-user-agent-node@3.178.0": + version "3.178.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.178.0.tgz#45c4c90550bdf66092682abfea36a68504b1e433" + integrity sha512-TrP6v+V4Qnv3E9CNgwR/G+1xiy8fa9j5LAm43qwp9PfJHchNyWOJ0FURD3Ne2sm/388Ybzjb1DRYRZ7B+xbnOw== + dependencies: + "@aws-sdk/node-config-provider" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/util-utf8-browser@3.170.0", "@aws-sdk/util-utf8-browser@^3.0.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.170.0.tgz#3fcea278e7a6fca4fef3d562300a3eea9a2f244f" + integrity sha512-tJby9krepSwDsBK+KQF5ACacZQ4LH1Aheh5Dy0pghxsN/9IRw7kMWTumuRCnSntLFFphDD7GM494/Dvnl1UCLA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8-node@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.170.0.tgz#8f46d05bc887a7a8e3372a25e0f46035290a9aad" + integrity sha512-52QWGNoNQoyT2CuoQz6LjBKxHQtN/ceMFLW+9J1E0I1ni8XTuTYP52BlMe5484KkmZKsHOm+EWe4xuwwVetTxg== + dependencies: + "@aws-sdk/util-buffer-from" "3.170.0" + tslib "^2.3.1" + +"@aws-sdk/util-waiter@3.180.0": + version "3.180.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.180.0.tgz#79def96db5b960ae99518cf3cfc05318a7a7686c" + integrity sha512-fDBGplYp6pIIfrB7073tUhU4zppRaSiPjBCCT00yth9woWwZPUCIg7iQZKEqkBmvCzcJSYn0jRopLhf3Y7i5Wg== + dependencies: + "@aws-sdk/abort-controller" "3.178.0" + "@aws-sdk/types" "3.178.0" + tslib "^2.3.1" + +"@aws-sdk/xml-builder@3.170.0": + version "3.170.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.170.0.tgz#bee57bd55db4003bbd09ca3d2fa7a001b24ed21c" + integrity sha512-eN458rrukeI62yU1k4a+032IfpAS7aK30VEITzKanklMW6AxTpxUC6vGrP6bwtIpCFDN8yVaIiAwGXQg5l1X4g== + dependencies: + tslib "^2.3.1" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -1380,7 +2290,15 @@ version "0.7.31" resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" -"@types/multer@^1.4.7": +"@types/multer-s3@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/multer-s3/-/multer-s3-3.0.0.tgz#db798a5335d095b8944861237167d91e2c840ac5" + integrity sha512-s8dZjVsLBdaOaCzWjmn6x7WA1LjWgfhCgc2cIK21EI0pgrROFvooAJSrULdD+8qiW51DnYWAY8pOanBe6LLXzg== + dependencies: + "@aws-sdk/client-s3" "^3.0.0" + "@types/multer" "*" + +"@types/multer@*", "@types/multer@^1.4.7": version "1.4.7" resolved "https://registry.yarnpkg.com/@types/multer/-/multer-1.4.7.tgz#89cf03547c28c7bbcc726f029e2a76a7232cc79e" dependencies: @@ -1937,7 +2855,7 @@ balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" -base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -1982,6 +2900,11 @@ boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2035,6 +2958,14 @@ buffer-from@^1.0.0, buffer-from@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" +buffer@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -2802,7 +3733,7 @@ enhanced-resolve@^5.10.0: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@^2.0.0: +entities@2.2.0, entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -3131,7 +4062,7 @@ etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" -events@^3.2.0: +events@3.3.0, events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -3209,6 +4140,11 @@ fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +fast-xml-parser@3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== + fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -3248,6 +4184,11 @@ file-type@^16.5.4: strtok3 "^6.2.4" token-types "^4.1.1" +file-type@^3.3.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -3591,6 +4532,11 @@ hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" +html-comment-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -3651,7 +4597,7 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -3692,7 +4638,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" @@ -4431,6 +5377,16 @@ ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" +multer-s3@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/multer-s3/-/multer-s3-3.0.1.tgz#4ba7eb8c1eb94a7a64f0de37d414a88c4876d5d8" + integrity sha512-BFwSO80a5EW4GJRBdUuSHblz2jhVSAze33ZbnGpcfEicoT0iRolx4kWR+AJV07THFRCQ78g+kelKFdjkCCaXeQ== + dependencies: + "@aws-sdk/lib-storage" "^3.46.0" + file-type "^3.3.0" + html-comment-regex "^1.1.2" + run-parallel "^1.1.6" + multer@^1.4.2: version "1.4.4" resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.4.tgz#e2bc6cac0df57a8832b858d7418ccaa8ebaf7d8c" @@ -5334,7 +6290,7 @@ readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.6.0: +readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" dependencies: @@ -5500,7 +6456,7 @@ rndm@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" -run-parallel@^1.1.9: +run-parallel@^1.1.6, run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" dependencies: @@ -5768,6 +6724,14 @@ statuses@2.0.1: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" +stream-browserify@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + streamsearch@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" @@ -6073,11 +7037,11 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.5.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: +tslib@^1.11.1, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" -tslib@^2.1.0: +tslib@^2.1.0, tslib@^2.3.1: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" @@ -6208,6 +7172,11 @@ uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"