From 04a92dae375a3963b5b3171381fdc67b750fa190 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 1 Jul 2023 17:41:39 +0330 Subject: [PATCH] digital ocean spaces/aws S3 integratoin --- .env.sample | 12 +- .github/SECURITY.md | 17 + .gitignore | 3 + lib/api/archive.ts | 15 +- .../collections/deleteCollection.ts | 10 +- .../controllers/collections/postCollection.ts | 6 +- lib/api/controllers/links/deleteLink.ts | 11 +- lib/api/controllers/links/postLink.ts | 9 +- lib/api/controllers/users/updateUser.ts | 19 +- lib/api/storage/createFile.ts | 40 + lib/api/storage/createFolder.ts | 14 + lib/api/storage/readFile.ts | 74 ++ lib/api/storage/removeFile.ts | 26 + lib/api/storage/removeFolder.ts | 59 + lib/api/storage/s3Client.ts | 19 + package.json | 3 +- pages/api/archives/[...params].ts | 21 +- pages/api/avatar/[id].ts | 17 +- types/enviornment.d.ts | 19 + yarn.lock | 1014 ++++++++++++++++- 20 files changed, 1330 insertions(+), 78 deletions(-) create mode 100644 .github/SECURITY.md create mode 100644 lib/api/storage/createFile.ts create mode 100644 lib/api/storage/createFolder.ts create mode 100644 lib/api/storage/readFile.ts create mode 100644 lib/api/storage/removeFile.ts create mode 100644 lib/api/storage/removeFolder.ts create mode 100644 lib/api/storage/s3Client.ts create mode 100644 types/enviornment.d.ts diff --git a/.env.sample b/.env.sample index bdcd182..c43e252 100644 --- a/.env.sample +++ b/.env.sample @@ -1,4 +1,12 @@ -NEXTAUTH_SECRET=very_sensitive_secret2 +NEXTAUTH_SECRET=very_sensitive_secret DATABASE_URL=postgresql://user:password@localhost:5432/linkwarden NEXTAUTH_URL=http://localhost:3000 -PAGINATION_TAKE_COUNT=20 \ No newline at end of file +PAGINATION_TAKE_COUNT=20 +STORAGE_FOLDER=data + +# Linkwarden Cloud specific configs (Ignore - Not applicable for self-hosted version) +IS_CLOUD_INSTANCE= +SPACES_KEY= +SPACES_SECRET= +SPACES_ENDPOINT= +SPACES_REGION= \ No newline at end of file diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..cfe046c --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,17 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | --------- | +| 1.x.x | ✅ | + +## Reporting a Vulnerability + +First off, we really appreciate the time you spent! + +If you found a vulnerability, these are the ways you can reach us: + +Email: [hello@linkwarden.app](mailto:hello@daniel31x13.io) + +Or you can directly reach me via Twitter: [@daniel31x13](https://twitter.com/Daniel31X13). diff --git a/.gitignore b/.gitignore index bebba3a..5c93b61 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,6 @@ next-env.d.ts # generated files and folders /data + +# tests +/tests \ No newline at end of file diff --git a/lib/api/archive.ts b/lib/api/archive.ts index 27da315..60050f7 100644 --- a/lib/api/archive.ts +++ b/lib/api/archive.ts @@ -3,15 +3,13 @@ import { prisma } from "@/lib/api/db"; import puppeteer from "puppeteer-extra"; import AdblockerPlugin from "puppeteer-extra-plugin-adblocker"; import StealthPlugin from "puppeteer-extra-plugin-stealth"; -import fs from "fs"; +import createFile from "@/lib/api/storage/createFile"; export default async function archive( url: string, collectionId: number, linkId: number ) { - const archivePath = `data/archives/${collectionId}/${linkId}`; - const browser = await puppeteer.launch(); try { @@ -42,11 +40,14 @@ export default async function archive( fullPage: true, }); - fs.writeFile(archivePath + ".pdf", pdf, function (err) { - console.log(err); + createFile({ + data: screenshot, + filePath: `archives/${collectionId}/${linkId}.png`, }); - fs.writeFile(archivePath + ".png", screenshot, function (err) { - console.log(err); + + createFile({ + data: pdf, + filePath: `archives/${collectionId}/${linkId}.pdf`, }); } diff --git a/lib/api/controllers/collections/deleteCollection.ts b/lib/api/controllers/collections/deleteCollection.ts index e6354f1..c42ba52 100644 --- a/lib/api/controllers/collections/deleteCollection.ts +++ b/lib/api/controllers/collections/deleteCollection.ts @@ -1,7 +1,7 @@ import { prisma } from "@/lib/api/db"; import getPermission from "@/lib/api/getPermission"; import { Collection, UsersAndCollections } from "@prisma/client"; -import fs from "fs"; +import removeFolder from "@/lib/api/storage/removeFolder"; export default async function deleteCollection( collection: { id: number }, @@ -56,13 +56,7 @@ export default async function deleteCollection( }, }); - try { - fs.rmdirSync(`data/archives/${collectionId}`, { recursive: true }); - } catch (error) { - console.log( - "Collection's archive directory wasn't deleted most likely because it didn't exist..." - ); - } + removeFolder({ filePath: `archives/${collectionId}` }); return await prisma.collection.delete({ where: { diff --git a/lib/api/controllers/collections/postCollection.ts b/lib/api/controllers/collections/postCollection.ts index a62db39..c6735e4 100644 --- a/lib/api/controllers/collections/postCollection.ts +++ b/lib/api/controllers/collections/postCollection.ts @@ -1,6 +1,6 @@ import { prisma } from "@/lib/api/db"; import { CollectionIncludingMembersAndLinkCount } from "@/types/global"; -import { existsSync, mkdirSync } from "fs"; +import createFolder from "@/lib/api/storage/createFolder"; export default async function postCollection( collection: CollectionIncludingMembersAndLinkCount, @@ -66,9 +66,7 @@ export default async function postCollection( }, }); - const collectionPath = `data/archives/${newCollection.id}`; - if (!existsSync(collectionPath)) - mkdirSync(collectionPath, { recursive: true }); + createFolder({ filePath: `archives/${newCollection.id}` }); return { response: newCollection, status: 200 }; } diff --git a/lib/api/controllers/links/deleteLink.ts b/lib/api/controllers/links/deleteLink.ts index d52d333..cddfe28 100644 --- a/lib/api/controllers/links/deleteLink.ts +++ b/lib/api/controllers/links/deleteLink.ts @@ -1,8 +1,8 @@ import { prisma } from "@/lib/api/db"; import { LinkIncludingShortenedCollectionAndTags } from "@/types/global"; -import fs from "fs"; import { Collection, Link, UsersAndCollections } from "@prisma/client"; import getPermission from "@/lib/api/getPermission"; +import removeFile from "@/lib/api/storage/removeFile"; export default async function deleteLink( link: LinkIncludingShortenedCollectionAndTags, @@ -33,13 +33,8 @@ export default async function deleteLink( }, }); - fs.unlink(`data/archives/${link.collectionId}/${link.id}.pdf`, (err) => { - if (err) console.log(err); - }); - - fs.unlink(`data/archives/${link.collectionId}/${link.id}.png`, (err) => { - if (err) console.log(err); - }); + removeFile({ filePath: `archives/${link.collectionId}/${link.id}.pdf` }); + removeFile({ filePath: `archives/${link.collectionId}/${link.id}.png` }); return { response: deleteLink, status: 200 }; } diff --git a/lib/api/controllers/links/postLink.ts b/lib/api/controllers/links/postLink.ts index 474b517..940e318 100644 --- a/lib/api/controllers/links/postLink.ts +++ b/lib/api/controllers/links/postLink.ts @@ -1,10 +1,9 @@ import { prisma } from "@/lib/api/db"; import { LinkIncludingShortenedCollectionAndTags } from "@/types/global"; -import getTitle from "../../getTitle"; -import archive from "../../archive"; +import getTitle from "@/lib/api/getTitle"; +import archive from "@/lib/api/archive"; import { Collection, Link, UsersAndCollections } from "@prisma/client"; import getPermission from "@/lib/api/getPermission"; -import { existsSync, mkdirSync } from "fs"; export default async function postLink( link: LinkIncludingShortenedCollectionAndTags, @@ -84,10 +83,6 @@ export default async function postLink( include: { tags: true, collection: true }, }); - const collectionPath = `data/archives/${newLink.collectionId}`; - if (!existsSync(collectionPath)) - mkdirSync(collectionPath, { recursive: true }); - archive(newLink.url, newLink.collectionId, newLink.id); return { response: newLink, status: 200 }; diff --git a/lib/api/controllers/users/updateUser.ts b/lib/api/controllers/users/updateUser.ts index ef19c80..0838141 100644 --- a/lib/api/controllers/users/updateUser.ts +++ b/lib/api/controllers/users/updateUser.ts @@ -1,8 +1,8 @@ import { prisma } from "@/lib/api/db"; import { AccountSettings } from "@/types/global"; -import fs from "fs"; -import path from "path"; import bcrypt from "bcrypt"; +import removeFile from "@/lib/api/storage/removeFile"; +import createFile from "@/lib/api/storage/createFile"; export default async function updateUser( user: AccountSettings, @@ -43,15 +43,12 @@ export default async function updateUser( if (profilePic.startsWith("data:image/jpeg;base64")) { if (user.profilePic.length < 1572864) { try { - const filePath = path.join( - process.cwd(), - `data/uploads/avatar/${userId}.jpg` - ); - const base64Data = profilePic.replace(/^data:image\/jpeg;base64,/, ""); - fs.writeFile(filePath, base64Data, "base64", function (err) { - console.log(err); + await createFile({ + filePath: `uploads/avatar/${userId}.jpg`, + data: base64Data, + isBase64: true, }); } catch (err) { console.log("Error saving image:", err); @@ -64,9 +61,7 @@ export default async function updateUser( }; } } else if (profilePic == "") { - fs.unlink(`data/uploads/avatar/${userId}.jpg`, (err) => { - if (err) console.log(err); - }); + removeFile({ filePath: `uploads/avatar/${userId}.jpg` }); } // Other settings diff --git a/lib/api/storage/createFile.ts b/lib/api/storage/createFile.ts new file mode 100644 index 0000000..1190ec8 --- /dev/null +++ b/lib/api/storage/createFile.ts @@ -0,0 +1,40 @@ +import { PutObjectCommand, PutObjectCommandInput } from "@aws-sdk/client-s3"; +import fs from "fs"; +import path from "path"; +import s3Client from "./s3Client"; + +export default async function createFile({ + filePath, + data, + isBase64, +}: { + filePath: string; + data: Buffer | string; + isBase64?: boolean; +}) { + if (s3Client) { + const bucketParams: PutObjectCommandInput = { + Bucket: process.env.BUCKET_NAME, + Key: filePath, + Body: isBase64 ? Buffer.from(data as string, "base64") : data, + }; + + try { + await s3Client.send(new PutObjectCommand(bucketParams)); + + return true; + } catch (err) { + console.log("Error", err); + return false; + } + } else { + const storagePath = process.env.STORAGE_FOLDER; + const creationPath = path.join(process.cwd(), storagePath + "/" + filePath); + + fs.writeFile(creationPath, data, isBase64 ? "base64" : {}, function (err) { + if (err) console.log(err); + }); + + return true; + } +} diff --git a/lib/api/storage/createFolder.ts b/lib/api/storage/createFolder.ts new file mode 100644 index 0000000..18fc0d7 --- /dev/null +++ b/lib/api/storage/createFolder.ts @@ -0,0 +1,14 @@ +import fs from "fs"; +import path from "path"; +import s3Client from "./s3Client"; + +export default function createFolder({ filePath }: { filePath: string }) { + if (s3Client) { + // Do nothing, S3 builds files recursively + } else { + const storagePath = process.env.STORAGE_FOLDER; + const creationPath = path.join(process.cwd(), storagePath + "/" + filePath); + + fs.mkdirSync(creationPath, { recursive: true }); + } +} diff --git a/lib/api/storage/readFile.ts b/lib/api/storage/readFile.ts new file mode 100644 index 0000000..74fdc3e --- /dev/null +++ b/lib/api/storage/readFile.ts @@ -0,0 +1,74 @@ +import { GetObjectCommand, GetObjectCommandInput } from "@aws-sdk/client-s3"; +import fs from "fs"; +import path from "path"; +import s3Client from "./s3Client"; + +export default async function readFile({ filePath }: { filePath: string }) { + let contentType: + | "text/plain" + | "image/jpeg" + | "image/png" + | "application/pdf"; + + if (s3Client) { + const bucketParams: GetObjectCommandInput = { + Bucket: process.env.BUCKET_NAME, + Key: filePath, + }; + + try { + const response = await s3Client.send(new GetObjectCommand(bucketParams)); + const data = await streamToBuffer(response.Body); + + if (filePath.endsWith(".pdf")) { + contentType = "application/pdf"; + } else if (filePath.endsWith(".png")) { + contentType = "image/png"; + } else { + // if (filePath.endsWith(".jpg")) + contentType = "image/jpeg"; + } + + return { file: data, contentType }; + } catch (err) { + console.log("Error", err); + + contentType = "text/plain"; + + return { + file: "File not found, it's possible that the file you're looking for either doesn't exist or hasn't been created yet.", + contentType, + }; + } + } else { + const storagePath = process.env.STORAGE_FOLDER; + const creationPath = path.join(process.cwd(), storagePath + "/" + filePath); + + const file = fs.existsSync(creationPath) + ? fs.readFileSync(creationPath) + : "File not found, it's possible that the file you're looking for either doesn't exist or hasn't been created yet."; + + if (file.toString().startsWith("File not found")) { + contentType = "text/plain"; + } else if (filePath.endsWith(".pdf")) { + contentType = "application/pdf"; + } else if (filePath.endsWith(".png")) { + contentType = "image/png"; + } else { + // if (filePath.endsWith(".jpg")) + contentType = "image/jpeg"; + } + + return { file, contentType }; + } +} + +// Turn the file's body into buffer +const streamToBuffer = (stream: any) => { + const chunks: any = []; + return new Promise((resolve, reject) => { + stream.on("data", (chunk: any) => chunks.push(Buffer.from(chunk))); + stream.on("error", (err: any) => reject(err)); + stream.on("end", () => resolve(Buffer.concat(chunks))); + }); +}; diff --git a/lib/api/storage/removeFile.ts b/lib/api/storage/removeFile.ts new file mode 100644 index 0000000..83e4bdd --- /dev/null +++ b/lib/api/storage/removeFile.ts @@ -0,0 +1,26 @@ +import fs from "fs"; +import path from "path"; +import s3Client from "./s3Client"; +import { PutObjectCommandInput, DeleteObjectCommand } from "@aws-sdk/client-s3"; + +export default async function removeFile({ filePath }: { filePath: string }) { + if (s3Client) { + const bucketParams: PutObjectCommandInput = { + Bucket: process.env.BUCKET_NAME, + Key: filePath, + }; + + try { + await s3Client.send(new DeleteObjectCommand(bucketParams)); + } catch (err) { + console.log("Error", err); + } + } else { + const storagePath = process.env.STORAGE_FOLDER; + const creationPath = path.join(process.cwd(), storagePath + "/" + filePath); + + fs.unlink(creationPath, (err) => { + if (err) console.log(err); + }); + } +} diff --git a/lib/api/storage/removeFolder.ts b/lib/api/storage/removeFolder.ts new file mode 100644 index 0000000..54f6632 --- /dev/null +++ b/lib/api/storage/removeFolder.ts @@ -0,0 +1,59 @@ +import fs from "fs"; +import path from "path"; +import s3Client from "./s3Client"; +import { + DeleteObjectsCommand, + DeleteObjectsCommandInput, + ListObjectsCommand, +} from "@aws-sdk/client-s3"; + +async function emptyS3Directory(bucket: string, dir: string) { + if (s3Client) { + const listParams = { + Bucket: bucket, + Prefix: dir, + }; + + const deleteParams: DeleteObjectsCommandInput = { + Bucket: bucket, + Delete: { Objects: [] }, + }; + + const listedObjects = await s3Client.send( + new ListObjectsCommand(listParams) + ); + + if (listedObjects.Contents?.length === 0) return; + + listedObjects.Contents?.forEach(({ Key }) => { + deleteParams.Delete?.Objects?.push({ Key }); + }); + + console.log(listedObjects); + + await s3Client.send(new DeleteObjectsCommand(deleteParams)); + + if (listedObjects.IsTruncated) await emptyS3Directory(bucket, dir); + } +} + +export default async function removeFolder({ filePath }: { filePath: string }) { + if (s3Client) { + try { + await emptyS3Directory(process.env.BUCKET_NAME as string, filePath); + } catch (err) { + console.log("Error", err); + } + } else { + const storagePath = process.env.STORAGE_FOLDER; + const creationPath = path.join(process.cwd(), storagePath + "/" + filePath); + + try { + fs.rmdirSync(creationPath, { recursive: true }); + } catch (error) { + console.log( + "Collection's archive directory wasn't deleted most likely because it didn't exist..." + ); + } + } +} diff --git a/lib/api/storage/s3Client.ts b/lib/api/storage/s3Client.ts new file mode 100644 index 0000000..8b0ccd5 --- /dev/null +++ b/lib/api/storage/s3Client.ts @@ -0,0 +1,19 @@ +import { S3 } from "@aws-sdk/client-s3"; + +const s3Client: S3 | undefined = + process.env.SPACES_ENDPOINT && + process.env.SPACES_REGION && + process.env.SPACES_KEY && + process.env.SPACES_SECRET + ? new S3({ + forcePathStyle: false, + endpoint: process.env.SPACES_ENDPOINT, + region: process.env.SPACES_REGION, + credentials: { + accessKeyId: process.env.SPACES_KEY, + secretAccessKey: process.env.SPACES_SECRET, + }, + }) + : undefined; + +export default s3Client; diff --git a/package.json b/package.json index 7873b8d..179cb2a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linkwarden", - "version": "3.0.0", + "version": "1.0.0", "main": "index.js", "repository": "https://github.com/Daniel31x13/link-warden.git", "author": "Daniel31X13 ", @@ -13,6 +13,7 @@ "lint": "next lint" }, "dependencies": { + "@aws-sdk/client-s3": "^3.363.0", "@fortawesome/fontawesome-svg-core": "^6.3.0", "@fortawesome/free-regular-svg-icons": "^6.3.0", "@fortawesome/free-solid-svg-icons": "^6.3.0", diff --git a/pages/api/archives/[...params].ts b/pages/api/archives/[...params].ts index cae7425..003a2ef 100644 --- a/pages/api/archives/[...params].ts +++ b/pages/api/archives/[...params].ts @@ -1,9 +1,8 @@ import type { NextApiRequest, NextApiResponse } from "next"; import { getServerSession } from "next-auth/next"; import { authOptions } from "pages/api/auth/[...nextauth]"; -import path from "path"; -import fs from "fs"; import getPermission from "@/lib/api/getPermission"; +import readFile from "@/lib/api/storage/readFile"; export default async function Index(req: NextApiRequest, res: NextApiResponse) { if (!req.query.params) @@ -27,20 +26,10 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) { .status(401) .json({ response: "You don't have access to this collection." }); - const requestedPath = `data/archives/${collectionId}/${linkId}`; - - const filePath = path.join(process.cwd(), requestedPath); - - const file = fs.existsSync(filePath) - ? fs.readFileSync(filePath) - : "File not found, it's possible that the file you're looking for either doesn't exist or hasn't been created yet."; - - if (!fs.existsSync(filePath)) - res.setHeader("Content-Type", "text/plain").status(404); - else if (filePath.endsWith(".pdf")) - res.setHeader("Content-Type", "application/pdf").status(200); - else if (filePath.endsWith(".png")) - res.setHeader("Content-Type", "image/png").status(200); + const { file, contentType } = await readFile({ + filePath: `archives/${collectionId}/${linkId}`, + }); + res.setHeader("Content-Type", contentType).status(200); return res.send(file); } diff --git a/pages/api/avatar/[id].ts b/pages/api/avatar/[id].ts index faad6ed..dd129ea 100644 --- a/pages/api/avatar/[id].ts +++ b/pages/api/avatar/[id].ts @@ -2,8 +2,7 @@ import type { NextApiRequest, NextApiResponse } from "next"; import { getServerSession } from "next-auth/next"; import { authOptions } from "pages/api/auth/[...nextauth]"; import { prisma } from "@/lib/api/db"; -import path from "path"; -import fs from "fs"; +import readFile from "@/lib/api/storage/readFile"; export default async function Index(req: NextApiRequest, res: NextApiResponse) { const session = await getServerSession(req, res, authOptions); @@ -41,17 +40,11 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) { } } - const filePath = path.join( - process.cwd(), - `data/uploads/avatar/${queryId}.jpg` - ); + const { file, contentType } = await readFile({ + filePath: `uploads/avatar/${queryId}.jpg`, + }); - const file = fs.existsSync(filePath) - ? fs.readFileSync(filePath) - : "File not found."; - - if (!fs.existsSync(filePath)) res.setHeader("Content-Type", "text/plain"); - else res.setHeader("Content-Type", "image/jpeg"); + res.setHeader("Content-Type", contentType); return res.send(file); } diff --git a/types/enviornment.d.ts b/types/enviornment.d.ts new file mode 100644 index 0000000..20fe67c --- /dev/null +++ b/types/enviornment.d.ts @@ -0,0 +1,19 @@ +declare global { + namespace NodeJS { + interface ProcessEnv { + NEXTAUTH_SECRET: string; + DATABASE_URL: string; + NEXTAUTH_URL: string; + PAGINATION_TAKE_COUNT: string; + STORAGE_FOLDER?: string; + IS_CLOUD_INSTANCE?: true; + SPACES_KEY?: string; + SPACES_SECRET?: string; + SPACES_ENDPOINT?: string; + BUCKET_NAME?: string; + SPACES_REGION?: string; + } + } +} + +export {}; diff --git a/yarn.lock b/yarn.lock index 7c6e627..759d1d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,612 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" + integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" + integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.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@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/sha256-js" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.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@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/chunked-blob-reader@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.310.0.tgz#2ada1b024a2745c2fe7e869606fab781325f981e" + integrity sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/client-s3@^3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.363.0.tgz#757384d92c32a407ab0aaecf6f54d47cd9053514" + integrity sha512-LNnfg/t8wG5Fqj6l+PSV/t+IXDq9r3Kj9jEHn84513+p7bewXYSSreSpmLjG8OcKuMfHc9EJGNQ3DkMyFaLoWg== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.363.0" + "@aws-sdk/credential-provider-node" "3.363.0" + "@aws-sdk/hash-blob-browser" "3.357.0" + "@aws-sdk/hash-stream-node" "3.357.0" + "@aws-sdk/md5-js" "3.357.0" + "@aws-sdk/middleware-bucket-endpoint" "3.363.0" + "@aws-sdk/middleware-expect-continue" "3.363.0" + "@aws-sdk/middleware-flexible-checksums" "3.363.0" + "@aws-sdk/middleware-host-header" "3.363.0" + "@aws-sdk/middleware-location-constraint" "3.363.0" + "@aws-sdk/middleware-logger" "3.363.0" + "@aws-sdk/middleware-recursion-detection" "3.363.0" + "@aws-sdk/middleware-sdk-s3" "3.363.0" + "@aws-sdk/middleware-signing" "3.363.0" + "@aws-sdk/middleware-ssec" "3.363.0" + "@aws-sdk/middleware-user-agent" "3.363.0" + "@aws-sdk/signature-v4-multi-region" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.363.0" + "@aws-sdk/util-user-agent-node" "3.363.0" + "@aws-sdk/xml-builder" "3.310.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/eventstream-serde-browser" "^1.0.1" + "@smithy/eventstream-serde-config-resolver" "^1.0.1" + "@smithy/eventstream-serde-node" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.1" + "@smithy/middleware-retry" "^1.0.2" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.0.1" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.0.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.2" + "@smithy/util-stream" "^1.0.1" + "@smithy/util-utf8" "^1.0.1" + "@smithy/util-waiter" "^1.0.1" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/client-sso-oidc@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.363.0.tgz#71240d729a0847fd5a7aaac09ed5a3a07c3666cf" + integrity sha512-V3Ebiq/zNtDS/O92HUWGBa7MY59RYSsqWd+E0XrXv6VYTA00RlMTbNcseivNgp2UghOgB9a20Nkz6EqAeIN+RQ== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/middleware-host-header" "3.363.0" + "@aws-sdk/middleware-logger" "3.363.0" + "@aws-sdk/middleware-recursion-detection" "3.363.0" + "@aws-sdk/middleware-user-agent" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.363.0" + "@aws-sdk/util-user-agent-node" "3.363.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.1" + "@smithy/middleware-retry" "^1.0.2" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.0.1" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.0.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.2" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/client-sso@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.363.0.tgz#b1939ee6769cf208f1dd4fbfa924c223da9d60ec" + integrity sha512-PZ+HfKSgS4hlMnJzG+Ev8/mgHd/b/ETlJWPSWjC/f2NwVoBQkBnqHjdyEx7QjF6nksJozcVh5Q+kkYLKc/QwBQ== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/middleware-host-header" "3.363.0" + "@aws-sdk/middleware-logger" "3.363.0" + "@aws-sdk/middleware-recursion-detection" "3.363.0" + "@aws-sdk/middleware-user-agent" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.363.0" + "@aws-sdk/util-user-agent-node" "3.363.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.1" + "@smithy/middleware-retry" "^1.0.2" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.0.1" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.0.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.2" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/client-sts@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.363.0.tgz#c02b3cf3bd2ef9d54195323370db964cd1df4711" + integrity sha512-0jj14WvBPJQ8xr72cL0mhlmQ90tF0O0wqXwSbtog6PsC8+KDE6Yf+WsxsumyI8E5O8u3eYijBL+KdqG07F/y/w== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/credential-provider-node" "3.363.0" + "@aws-sdk/middleware-host-header" "3.363.0" + "@aws-sdk/middleware-logger" "3.363.0" + "@aws-sdk/middleware-recursion-detection" "3.363.0" + "@aws-sdk/middleware-sdk-sts" "3.363.0" + "@aws-sdk/middleware-signing" "3.363.0" + "@aws-sdk/middleware-user-agent" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@aws-sdk/util-user-agent-browser" "3.363.0" + "@aws-sdk/util-user-agent-node" "3.363.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.1" + "@smithy/middleware-retry" "^1.0.1" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.2" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.1" + "@smithy/util-utf8" "^1.0.1" + fast-xml-parser "4.2.5" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-env@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.363.0.tgz#5b8471a243cdb54696ecae99ad4cc1c48d687657" + integrity sha512-VAQ3zITT2Q0acht0HezouYnMFKZ2vIOa20X4zQA3WI0HfaP4D6ga6KaenbDcb/4VFiqfqiRHfdyXHP0ThcDRMA== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-ini@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.363.0.tgz#e77e65e1ffc7c736aa724ebdf038e99dca57a87b" + integrity sha512-ZYN+INoqyX5FVC3rqUxB6O8nOWkr0gHRRBm1suoOlmuFJ/WSlW/uUGthRBY5x1AQQnBF8cpdlxZzGHd41lFVNw== + dependencies: + "@aws-sdk/credential-provider-env" "3.363.0" + "@aws-sdk/credential-provider-process" "3.363.0" + "@aws-sdk/credential-provider-sso" "3.363.0" + "@aws-sdk/credential-provider-web-identity" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-node@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.363.0.tgz#70815b3c8bc98d9afd148b851c8fdae9ce11fcd6" + integrity sha512-C1qXFIN2yMxD6pGgug0vR1UhScOki6VqdzuBHzXZAGu7MOjvgHNdscEcb3CpWnITHaPL2ztkiw75T1sZ7oIgQg== + dependencies: + "@aws-sdk/credential-provider-env" "3.363.0" + "@aws-sdk/credential-provider-ini" "3.363.0" + "@aws-sdk/credential-provider-process" "3.363.0" + "@aws-sdk/credential-provider-sso" "3.363.0" + "@aws-sdk/credential-provider-web-identity" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-process@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.363.0.tgz#08608f6da246084f9b20481ac0de17f04ae54b4d" + integrity sha512-fOKAINU7Rtj2T8pP13GdCt+u0Ml3gYynp8ki+1jMZIQ+Ju/MdDOqZpKMFKicMn3Z1ttUOgqr+grUdus6z8ceBQ== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-sso@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.363.0.tgz#949190c9ea510d9772aef9c61345575f4b40b44d" + integrity sha512-5RUZ5oM0lwZSo3EehT0dXggOjgtxFogpT3cZvoLGtIwrPBvm8jOQPXQUlaqCj10ThF1sYltEyukz/ovtDwYGew== + dependencies: + "@aws-sdk/client-sso" "3.363.0" + "@aws-sdk/token-providers" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/credential-provider-web-identity@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.363.0.tgz#a5312519126ff7c3fea56ffefa0e51ef9383663c" + integrity sha512-Z6w7fjgy79pAax580wdixbStQw10xfyZ+hOYLcPudoYFKjoNx0NQBejg5SwBzCF/HQL23Ksm9kDfbXDX9fkPhA== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/hash-blob-browser@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.357.0.tgz#e507929499fe0fe128664b67cd26f63f16ed4d25" + integrity sha512-RDd6UgrGHDmleTnXM9LRSSVa69euSAG2mlNhZMEDWk3OFseXVYqBDaqroVbQ01rM2UAe8MeBFchlV9OmxuVgvw== + dependencies: + "@aws-sdk/chunked-blob-reader" "3.310.0" + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/hash-stream-node@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.357.0.tgz#a78c6d1ae1c78cb52854311bad50988e8fc12142" + integrity sha512-KZjN1VAw1KHNp+xKVOWBGS+MpaYQTjZFD5f+7QQqW4TfbAkFFwIAEYIHq5Q8Gw+jVh0h61OrV/LyW3J2PVzc+w== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/is-array-buffer@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz#f87a79f1b858c88744f07e8d8d0a791df204017e" + integrity sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/md5-js@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.357.0.tgz#61853f562e71af0ec58aeede7883de122177ed55" + integrity sha512-to42sFAL7KgV/X9X40LLfEaNMHMGQL6/7mPMVCL/W2BZf3zw5OTl3lAaNyjXA+gO5Uo4lFEiQKAQVKNbr8b8Nw== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-utf8" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-bucket-endpoint@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.363.0.tgz#6c9b2dda20eaaf9171b7f2c4faff3b34b4331522" + integrity sha512-kR8+0X50zslpzRW29q4JbpPMadE1z39ZfGwPaBLKpoWvSGt4x+75FaoK71TH7urPPoFyD2Y+XKGA6YRYTUNHSQ== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-arn-parser" "3.310.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + "@smithy/util-config-provider" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-expect-continue@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.363.0.tgz#125356f3685e14eaa8816383bbf5f3de05dd856e" + integrity sha512-I88xneZp6jRwySmIl9uI7eZCcTsqRVnTDfUr1JiXt7zonqNNm80PVYMs6pwaw7t97ec1AQJcsONjuXZyCMnu5g== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-flexible-checksums@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.363.0.tgz#99cd3e09183768ac378eae5c5f4e54189147921d" + integrity sha512-FBYmrMRX01uNximNN0WLgpf97GN4xNTLaKsDlkjYRWKJ+J97ICkvLG0FcSu7+SNCpCdJJBeQ5tRVOPVpUu6nmA== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/types" "3.357.0" + "@smithy/is-array-buffer" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-host-header@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.363.0.tgz#3fc25569c1fdbb29ee7b95690d222743b9791210" + integrity sha512-FobpclDCf5Y1ueyJDmb9MqguAdPssNMlnqWQpujhYVABq69KHu73fSCWSauFPUrw7YOpV8kG1uagDF0POSxHzA== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-location-constraint@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.363.0.tgz#48c8a16698d7678578a5f06e0eb7f8118ec86f82" + integrity sha512-piNzpNNI/fChSGOZxcq/2msN2qFUSEAbhqs91zbcpv8CEPekVLc4W9laXCG764BEMyfG97ZU8MtzwHeMhELhBA== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-logger@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.363.0.tgz#64ebef9910802f9437cae8900e8825ca5141c9ed" + integrity sha512-SSGgthScYnFGTOw8EzbkvquqweFmvn7uJihkpFekbtBNGC/jGOGO+8ziHjTQ8t/iI/YKubEwv+LMi0f77HKSEg== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-recursion-detection@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.363.0.tgz#bd8b8010f5be5d7e90a97bf9e55a7980289b1600" + integrity sha512-MWD/57QgI/N7fG8rtzDTUdSqNpYohQfgj9XCFAoVeI/bU4usrkOrew43L4smJG4XrDxlNT8lSJlDtd64tuiUZA== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-s3@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.363.0.tgz#35e77ad14b6799b0be1c313d9c8b7ca0ad2f4fdb" + integrity sha512-npC8vLCero+vULizrK0QPjNanWbgH4A/2Llc1nO8N005uvUe7co6WglILF2W3guZrFk/0uGEdX67OnLxUD97pw== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-arn-parser" "3.310.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-sdk-sts@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.363.0.tgz#41b10aa8b8004bda9156cadde3b2302a84309e6a" + integrity sha512-1yy2Ac50FO8BrODaw5bPWvVrRhaVLqXTFH6iHB+dJLPUkwtY5zLM3Mp+9Ilm7kME+r7oIB1wuO6ZB1Lf4ZszIw== + dependencies: + "@aws-sdk/middleware-signing" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-signing@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.363.0.tgz#81067698e0566584f0ca30be56232758f69e2232" + integrity sha512-/7qia715pt9JKYIPDGu22WmdZxD8cfF/5xB+1kmILg7ZtjO0pPuTaCNJ7xiIuFd7Dn7JXp5lop08anX/GOhNRQ== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/signature-v4" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-middleware" "^1.0.1" + tslib "^2.5.0" + +"@aws-sdk/middleware-ssec@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.363.0.tgz#9dde9e09660bcb6a0d39939d7f1ab043b93fefdb" + integrity sha512-pN+QN1rMShYpJnTJSCIYnNRhD0S8xSZsTn6ThgcO559Xiwz5LMHFOfOXUCEyxtbVW5kMHLUh3w101AMUKae99A== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/middleware-user-agent@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.363.0.tgz#a75a7ca5c791a68d750736c87b968b54d394443d" + integrity sha512-ri8YaQvXP6odteVTMfxPqFR26Q0h9ejtqhUDv47P34FaKXedEM4nC6ix6o+5FEYj6l8syGyktftZ5O70NoEhug== + dependencies: + "@aws-sdk/types" "3.357.0" + "@aws-sdk/util-endpoints" "3.357.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/signature-v4-multi-region@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.363.0.tgz#7c64ba8a6af6f52f73ef849d4fcdd102f63ad606" + integrity sha512-iWamQSpaBKg88LKuiUq8xO/7iyxJ+ORkA3qDhAwUqyTJOg87ma47yFf4ycCKqINnflc3AIGLGzBHnkBc4cMF5g== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/signature-v4" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/token-providers@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.363.0.tgz#c211ed6db62620c46194506db6d785f5c36aedc5" + integrity sha512-6+0aJ1zugNgsMmhTtW2LBWxOVSaXCUk2q3xyTchSXkNzallYaRiZMRkieW+pKNntnu0g5H1T0zyfCO0tbXwxEA== + dependencies: + "@aws-sdk/client-sso-oidc" "3.363.0" + "@aws-sdk/types" "3.357.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/types@3.357.0", "@aws-sdk/types@^3.222.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.357.0.tgz#8491da71a4291cc2661c26a75089e86532b6a3b5" + integrity sha512-/riCRaXg3p71BeWnShrai0y0QTdXcouPSM0Cn1olZbzTf7s71aLEewrc96qFrL70XhY4XvnxMpqQh+r43XIL3g== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-arn-parser@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba" + integrity sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-buffer-from@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz#7a72cb965984d3c6a7e256ae6cf1621f52e54a57" + integrity sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw== + dependencies: + "@aws-sdk/is-array-buffer" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/util-endpoints@3.357.0": + version "3.357.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.357.0.tgz#eaa7b4481bbd9fc8f13412b308ba4129d8fa2004" + integrity sha512-XHKyS5JClT9su9hDif715jpZiWHQF9gKZXER8tW0gOizU3R9cyWc9EsJ2BRhFNhi7nt/JF/CLUEc5qDx3ETbUw== + dependencies: + "@aws-sdk/types" "3.357.0" + tslib "^2.5.0" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz#b071baf050301adee89051032bd4139bba32cc40" + integrity sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w== + dependencies: + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-browser@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.363.0.tgz#6f0655976f4f5889d6f0abed6c6cdc665cab524f" + integrity sha512-fk9ymBUIYbxiGm99Cn+kAAXmvMCWTf/cHAcB79oCXV4ELXdPa9lN5xQhZRFNxLUeXG4OAMEuCAUUuZEj8Fnc1Q== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/types" "^1.1.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@aws-sdk/util-user-agent-node@3.363.0": + version "3.363.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.363.0.tgz#9df26188a3d22694b4d06f5f40c489cb22fddb48" + integrity sha512-Fli/dvgGA9hdnQUrYb1//wNSFlK2jAfdJcfNXA6SeBYzSeH5pVGYF4kXF0FCdnMA3Fef+Zn1zAP/hw9v8VJHWQ== + dependencies: + "@aws-sdk/types" "3.357.0" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz#4a7b9dcebb88e830d3811aeb21e9a6df4273afb4" + integrity sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA== + dependencies: + "@aws-sdk/util-buffer-from" "3.310.0" + tslib "^2.5.0" + +"@aws-sdk/xml-builder@3.310.0": + version "3.310.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz#f0236f2103b438d16117e0939a6305ad69b7ff76" + integrity sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw== + dependencies: + tslib "^2.5.0" + "@babel/code-frame@^7.0.0": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -513,6 +1119,390 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== +"@smithy/abort-controller@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-1.0.1.tgz#cfccff9200091bbbaa76a1b9c115978a4e49bae3" + integrity sha512-An6irzp9NCji2JtJHhrEFlDbxLwHd6c6Y9fq3ZeomyUR8BIXlGXVTxsemUSZVVgOq3166iYbYs/CrPAmgRSFLw== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/config-resolver@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-1.0.1.tgz#da1c9f13f485e7cbb46e8aa62fe31c98deb6c403" + integrity sha512-quj0xUiEVG/UHfY82EtthR/+S5/17p3IxXArC3NFSNqryMobWbG9oWgJy2s2cgUSVZLzxevjKKvxrilK7JEDaA== + dependencies: + "@smithy/types" "^1.1.0" + "@smithy/util-config-provider" "^1.0.1" + "@smithy/util-middleware" "^1.0.1" + tslib "^2.5.0" + +"@smithy/credential-provider-imds@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.1.tgz#650b0f1d839e65accf9d5d20e216b61eb17c8f87" + integrity sha512-hkRJoxVCh4CEt1zYOBElE+G/MV6lyx3g68hSJpesM4pwMT/bzEVo5E5XzXY+6dVq8yszeatWKbFuqCCBQte8tg== + dependencies: + "@smithy/node-config-provider" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + tslib "^2.5.0" + +"@smithy/eventstream-codec@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-1.0.1.tgz#d35b29c501a39a7025be74f650f50dfe84471b85" + integrity sha512-cpcTXQEOEs2wEvIyxW/iTHJ2m0RVqoEOTjjWEXD6SY8Gcs3FCFP6E8MXadC098tdH5ctMIUXc8POXyMpxzGnjw== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^1.1.0" + "@smithy/util-hex-encoding" "^1.0.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-browser@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-1.0.1.tgz#d03e5262f6444708bf8313ab0e08179ab2718b0b" + integrity sha512-oc8vxe+AU2RzvXH/Ehh0TzM/Nsw3I3ywu7V3qaCzqdkBIntAwK9JGZqcSDsqTK0WxZKBRgFIEwopcuZ2slVnFQ== + dependencies: + "@smithy/eventstream-serde-universal" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/eventstream-serde-config-resolver@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-1.0.1.tgz#8e18dbca8874481ad3de5047a42e20eb77a5fa1b" + integrity sha512-TJwaXima0djnNY819utO1j93qZHaheFH1bhHxBkMrImtEOuXY48Tjma/L2m8swkIq8dy8jFC9hrYOkD0eYHkFA== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/eventstream-serde-node@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-1.0.1.tgz#5765af12cadcde7fcc75db1c161f51c50adb1caf" + integrity sha512-JEj8w7IRs4l+kcwKxbv3pNuu8n7ORC4pMFrIOrM4rERzrRnI7vMNTRzvAPGYA53rqm/Y9tBA9dw4C+H6hLXcsA== + dependencies: + "@smithy/eventstream-serde-universal" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/eventstream-serde-universal@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-1.0.1.tgz#cb19a8381986a83b6d2c1ca0e72466140e0dfaa7" + integrity sha512-c6m9DH7m6D2S93dof4wSxysaGSQdauO20TNcSePzrgHd4rkTnz5pqZ1a7Pt22q2SKf09SvTugq5cV2Sy4r8zHw== + dependencies: + "@smithy/eventstream-codec" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/fetch-http-handler@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.1.tgz#0326ed6f4165a40a1979ed990f633c640846c4de" + integrity sha512-/e2A8eOMk4FVZBQ0o6uF/ttLtFZcmsK5MIwDu1UE3crM4pCAIP19Ul8U9rdLlHhIu81X4AcJmSw55RDSpVRL/w== + dependencies: + "@smithy/protocol-http" "^1.1.0" + "@smithy/querystring-builder" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-base64" "^1.0.1" + tslib "^2.5.0" + +"@smithy/hash-node@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-1.0.1.tgz#9cffefd78f74a99d7f0d99f19596be1a163f70b1" + integrity sha512-eCz08BySBcOjVObjbRAS/XMKUGY4ujnuS+GoWeEpzpCSKDnO8/YQ0rStRt4C0llRmhApizYc1tK9DiJwfvXcBg== + dependencies: + "@smithy/types" "^1.1.0" + "@smithy/util-buffer-from" "^1.0.1" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@smithy/invalid-dependency@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-1.0.1.tgz#1dde6b71b91e29e3f347a56e9d246c0c48a81748" + integrity sha512-kib63GFlAzRn/wf8M0cRWrZA1cyOy5IvpTkLavCY782DPFMP0EaEeD6VrlNIOvD6ncf7uCJ68HqckhwK1qLT3g== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/is-array-buffer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-1.0.1.tgz#42997d8321234438c141089120b5d3c9d68b0400" + integrity sha512-fHSTW70gANnzPYWNDcWkPXpp+QMbHhKozbQm/+Denkhp4gwSiPuAovWZRpJa9sXO+Q4dOnNzYN2max1vTCEroA== + dependencies: + tslib "^2.5.0" + +"@smithy/middleware-content-length@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-1.0.1.tgz#78747dfc7079e542c04675bb3ab1370c35511f7b" + integrity sha512-vWWigayk5i2cFp9xPX5vdzHyK+P0t/xZ3Ovp4Ss+c8JQ1Hlq2kpJZVWtTKsmdfND5rVo5lu0kD5wgAMUCcmuhw== + dependencies: + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/middleware-endpoint@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.1.tgz#c1d047bd9de815cd08c5c9de7ed026754f68ac2c" + integrity sha512-XEHPq73PPm0sXul//5MRC8JKDwHTaNjV3myd9FJ5YoUT+QMJ27gqiwwAMVASJ6vC4ELHzgQdmoTZxVX83Jx17w== + dependencies: + "@smithy/middleware-serde" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-middleware" "^1.0.1" + tslib "^2.5.0" + +"@smithy/middleware-retry@^1.0.1", "@smithy/middleware-retry@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-1.0.2.tgz#2033f82fdbd210efe70f5a35b761b13fe570d7b2" + integrity sha512-Osj+XsqJ67RuX1MLc3+7LDtlRz8eNVqr/Pim9yPAjRa03Xberu6ST3a3oV3NqRpcUgMTifxuaKVIciuPE3rTWA== + dependencies: + "@smithy/protocol-http" "^1.1.0" + "@smithy/service-error-classification" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-middleware" "^1.0.1" + "@smithy/util-retry" "^1.0.2" + tslib "^2.5.0" + uuid "^8.3.2" + +"@smithy/middleware-serde@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-1.0.1.tgz#b2f0e13abe3d0becb9c5b19d751fbb4b28bd9b1d" + integrity sha512-bn5lWk8UUeXFCQfkrNErz5SbeNd+2hgYegHMLsOLPt4URDIsyREar6wMsdsR+8UCdgR5s8udG3Zalgc7puizIQ== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/middleware-stack@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-1.0.1.tgz#cfa8de79ca8bc09fc3c266a0e0241c639b571870" + integrity sha512-T6+gsAO1JYamOJqmORCrByDeQ/NB+ggjHb33UDOgdX4xIjXz/FB/3UqHgQu6PL1cSFrK+i4oteDIwqARDs/Szw== + dependencies: + tslib "^2.5.0" + +"@smithy/node-config-provider@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-1.0.1.tgz#c9b3c1f49a5238b398ad7ff1f2df28315672853f" + integrity sha512-FRxifH/J2SgOaVLihIqBFuGhiHR/NfzbZYp5nYO7BGgT/gc/f9nAuuRJcEy/hwO3aI6ThyG5apH4tGec6A2sCw== + dependencies: + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/node-http-handler@^1.0.1", "@smithy/node-http-handler@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-1.0.2.tgz#fe27a3a5d83874a23d24c29cd2bf0258a5e4730b" + integrity sha512-PzPrGRSt3kNuruLCeR4ffJp57ZLVnIukMXVL3Ppr65ZoxiE+HBsOVAa/Z/T+4HzjCM6RaXnnmB8YKfsDjlb0iA== + dependencies: + "@smithy/abort-controller" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/querystring-builder" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/property-provider@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-1.0.1.tgz#b4c2f41313fcfe33d64f6198f91fc9edd96dc28d" + integrity sha512-3EG/61Ls1MrgEaafpltXBJHSqFPqmTzEX7QKO7lOEHuYGmGYzZ08t1SsTgd1vM74z0IihoZyGPynZ7WmXKvTeg== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/protocol-http@^1.0.1", "@smithy/protocol-http@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.0.tgz#caf22e01cb825d7490a4915e03d6fa64954ff535" + integrity sha512-H5y/kZOqfJSqRkwtcAoVbqONmhdXwSgYNJ1Glk5Ry8qlhVVy5qUzD9EklaCH8/XLnoCsLO/F/Giee8MIvaBRkg== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/querystring-builder@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-1.0.1.tgz#c8e9ca45c072763ad34b34a4aaf6a85eb37eafd3" + integrity sha512-J5Tzkw1PMtu01h6wl+tlN5vsyROmS6/z5lEfNlLo/L4ELHeVkQ4Q0PEIjDddPLfjVLCm8biQTESE5GCMixSRNQ== + dependencies: + "@smithy/types" "^1.1.0" + "@smithy/util-uri-escape" "^1.0.1" + tslib "^2.5.0" + +"@smithy/querystring-parser@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-1.0.1.tgz#bf5e326debaecb9e1db44972f1eb87d64e8915e8" + integrity sha512-zauxdMc3cwxoLitI5DZqH7xN6Fk0mwRxrUMAETbav2j6Se2U0UGak/55rZcDg2yGzOURaLYi5iOm1gHr98P+Bw== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/service-error-classification@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-1.0.1.tgz#a8528087b5ac02ef7e0cd2190bed8399b78efa47" + integrity sha512-EcFVOHFv4YZHUrJ6161tpPKXNlQsTAQKoKorODxuOQW1my14mgoyiiMXrlnSMaYRF//oaONYfFOQ2EMAUTC5DQ== + +"@smithy/shared-ini-file-loader@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.1.tgz#6bc72721e0b1148b199bd2bb21b4d5d3083534bb" + integrity sha512-EztziuIPoNronENGqh+MWVKJErA4rJpaPzJCPukzBeEoG2USka0/q4B5Mr/1zszOnrb49fPNh4u3u5LfiH7QzA== + dependencies: + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/signature-v4@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-1.0.1.tgz#03e9d8e3fd5d4f449fc3c188402f5655231d91aa" + integrity sha512-2D69je14ou1vBTnAQeysSK4QVMm0j3WHS3MDg/DnHnFFcXRCzVl/xAARO7POD8+fpi4tMFPs8Z4hzo1Zw40L0Q== + dependencies: + "@smithy/eventstream-codec" "^1.0.1" + "@smithy/is-array-buffer" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-hex-encoding" "^1.0.1" + "@smithy/util-middleware" "^1.0.1" + "@smithy/util-uri-escape" "^1.0.1" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@smithy/smithy-client@^1.0.2", "@smithy/smithy-client@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-1.0.3.tgz#f31bf64fc4a21fc42171120635e6af2b58dabc22" + integrity sha512-Wh1mNP/1yUZK0uYkgCQ6NMxpBT3Fmc45TMdUfOlH1xD2zGYL7U4yDHFOhEZdi/suyjaelFobXB2p9pPIw6LjRQ== + dependencies: + "@smithy/middleware-stack" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-stream" "^1.0.1" + tslib "^2.5.0" + +"@smithy/types@^1.0.0", "@smithy/types@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.0.tgz#f30a23202c97634cca5c1ac955a9bf149c955226" + integrity sha512-KzmvisMmuwD2jZXuC9e65JrgsZM97y5NpDU7g347oB+Q+xQLU6hQZ5zFNNbEfwwOJHoOvEVTna+dk1h/lW7alw== + dependencies: + tslib "^2.5.0" + +"@smithy/url-parser@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-1.0.1.tgz#a7e52ebb4c8c1d19aa47397b7d78ebcdf767013a" + integrity sha512-33vWEtE6HzmwjEcEb4I58XMLRAchwPS93YhfDyXAXr1jwDCzfXmMayQwwpyW847rpWj0XJimxqia8q0z+k/ybw== + dependencies: + "@smithy/querystring-parser" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/util-base64@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-1.0.1.tgz#69f682a542ca57ffb732da6f2e9309d238d52d84" + integrity sha512-rJcpRi/yUi6TyCEkjdTH86/ExBuKlfctEXhG9/4gMJ3/cnPcHJJnr0mQ9evSEO+3DbpT/Nxq90bcTBdTIAmCig== + dependencies: + "@smithy/util-buffer-from" "^1.0.1" + tslib "^2.5.0" + +"@smithy/util-body-length-browser@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.1.tgz#42b3042a4a58119aa97e9b85c1f7bb11dcc3b472" + integrity sha512-Pdp744fmF7E1NWoSb7256Anhm8eYoCubvosdMwXzOnHuPRVbDa15pKUz2027K3+jrfGpXo1r+MnDerajME1Osw== + dependencies: + tslib "^2.5.0" + +"@smithy/util-body-length-node@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-1.0.1.tgz#7909b05c8d5963ce44b1fc424bb1cdda7615af94" + integrity sha512-4PIHjDFwG07SNensAiVq/CJmubEVuwclWSYOTNtzBNTvxOeGLznvygkGYgPzS3erByT8C4S9JvnLYgtrsVV3nQ== + dependencies: + tslib "^2.5.0" + +"@smithy/util-buffer-from@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-1.0.1.tgz#ec73eb769b246062ae86d037c2f3d54868a7c803" + integrity sha512-363N7Wq0ceUgE5lLe6kaR6GlJs2/m4r9V6bRMfIszb6P1FZbbRRM2FQYUWWPFSsRymm9mJL18b3fjiVsIvhDGg== + dependencies: + "@smithy/is-array-buffer" "^1.0.1" + tslib "^2.5.0" + +"@smithy/util-config-provider@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-1.0.1.tgz#597d4f9a0bc9eab62c0d082b8e0772f92d85f99c" + integrity sha512-4Qy38Oy5/q43MpTwCLV1P+7NeaOp4W2etQDxMjgEeRlOyGGNlgttn0syi4g2rVSukFVqQ6FbeRs5xbnFmS6kaQ== + dependencies: + tslib "^2.5.0" + +"@smithy/util-defaults-mode-browser@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.1.tgz#609074d664dacb7fe6567d8fc259a85da2d4d262" + integrity sha512-/9ObwNch4Z/NJYfkO4AvqBWku60Ju+c2Ck32toPOLmWe/V6eI9FLn8C1abri+GxDRCkLIqvkaWU1lgZ3nWZIIw== + dependencies: + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + bowser "^2.11.0" + tslib "^2.5.0" + +"@smithy/util-defaults-mode-node@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.1.tgz#5efe0bc575ec2253a4723d05a6f1fd28a567996e" + integrity sha512-XQM3KvqRLgv7bwAzVkXTITkOmcOINoG9icJiGT8FA0zV35lY5UvyIsg5kHw01xigQS8ufa/33AwG3ZoXip+V5g== + dependencies: + "@smithy/config-resolver" "^1.0.1" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + +"@smithy/util-hex-encoding@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.1.tgz#78778f664fa2624b2892d73e82df29b6d8e02380" + integrity sha512-FPTtMz/t02/rbfq5Pdll/TWUYP+GVFLCQNr+DgifrLzVRU0g8rdRjyFpDh8nPTdkDDusTTo9P1bepAYj68s0eA== + dependencies: + tslib "^2.5.0" + +"@smithy/util-middleware@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-1.0.1.tgz#8c1b04e9eb60e135a7083fc3ff729f969cd38d6a" + integrity sha512-u9akN3Zmbr0vZH4F+2iehG7cFg+3fvDfnvS/hhsXH4UHuhqiQ+ADefibnLzPoz1pooY7rvwaQ/TVHyJmZHdLdQ== + dependencies: + tslib "^2.5.0" + +"@smithy/util-retry@^1.0.1", "@smithy/util-retry@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-1.0.2.tgz#404ab400d3a1027acd3649b031f4108c148f10ba" + integrity sha512-LqzAy1QzeAHpSZpsd2LtKZRbco7F5gF+Zpoa4TuuFq9f+CGmH6OuTCIN3I13LPEBa4zs2AgvGnXljvMbUw5WGw== + dependencies: + "@smithy/service-error-classification" "^1.0.1" + tslib "^2.5.0" + +"@smithy/util-stream@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-1.0.1.tgz#3a8ec036ab429a150f2e36fb8a4b947255a7a258" + integrity sha512-4aBCIz35aZAnt2Rbq341KrnUzGhWv2/Zu8HouJqYLvSWCzlrvsNCGlXP4e70Kjzcw8hSuuCNtdUICwQ5qUWLxg== + dependencies: + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/types" "^1.1.0" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-buffer-from" "^1.0.1" + "@smithy/util-hex-encoding" "^1.0.1" + "@smithy/util-utf8" "^1.0.1" + tslib "^2.5.0" + +"@smithy/util-uri-escape@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-1.0.1.tgz#16422dc996767c459b12bf045a942e4044a32952" + integrity sha512-IJUrRnXKEIc+PKnU1XzTsIENVR+60jUDPBP3iWX/EvuuT3Xfob47x1FGUe2c3yMXNuU6ax8VDk27hL5LKNoehQ== + dependencies: + tslib "^2.5.0" + +"@smithy/util-utf8@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-1.0.1.tgz#6ce31e1f165212b1060aae11f7de4fe06ce8533a" + integrity sha512-iX6XHpjh4DFEUIBSKp2tjy3pYnLQMsJ62zYi1BVAC0kobE6p8AVpiZnxsU3ZkgQatAsUaEspFHUZ7CL7oSqaPQ== + dependencies: + "@smithy/util-buffer-from" "^1.0.1" + tslib "^2.5.0" + +"@smithy/util-waiter@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-1.0.1.tgz#d0ef960684f0755028abd02b8866e9b377363170" + integrity sha512-dsn8O0s3pFIgxFzySLe1dv0w4tEQizEP6UqbgZ4r/Kar4n8pSdrPi6DJg8BzXwkwEIZpMtV4/nhSeGZ7HksDXA== + dependencies: + "@smithy/abort-controller" "^1.0.1" + "@smithy/types" "^1.1.0" + tslib "^2.5.0" + "@swc/helpers@0.4.14": version "0.4.14" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" @@ -1023,6 +2013,11 @@ bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" +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" @@ -1862,6 +2857,13 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -3896,6 +4898,11 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + styled-jsx@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" @@ -4099,11 +5106,16 @@ tsconfig-paths@^3.14.1: 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" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.3.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + tslib@^2.4.0, tslib@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"