From 26955c689588a8a00f879701961dfd8f9f772fa1 Mon Sep 17 00:00:00 2001 From: jspark2000 Date: Fri, 1 Mar 2024 10:25:09 +0000 Subject: [PATCH] feat: implements object-storage module --- backend/.swcrc | 3 +- backend/app/src/app.module.ts | 4 +- backend/libs/constants/src/index.ts | 1 + .../libs/constants/src/storage.constants.ts | 1 + .../libs/storage/src/image-storage.service.ts | 126 ++ backend/libs/storage/src/index.ts | 3 + .../libs/storage/src/options/image-options.ts | 21 + backend/libs/storage/src/storage.interface.ts | 20 + backend/libs/storage/src/storage.module.ts | 19 + backend/libs/storage/tsconfig.lib.json | 9 + backend/nest-cli.json | 9 + backend/package.json | 8 +- backend/tsconfig.json | 3 +- backend/vitest.config.ts | 3 +- pnpm-lock.yaml | 1059 +++++++++++++++-- 15 files changed, 1169 insertions(+), 120 deletions(-) create mode 100644 backend/libs/constants/src/storage.constants.ts create mode 100644 backend/libs/storage/src/image-storage.service.ts create mode 100644 backend/libs/storage/src/index.ts create mode 100644 backend/libs/storage/src/options/image-options.ts create mode 100644 backend/libs/storage/src/storage.interface.ts create mode 100644 backend/libs/storage/src/storage.module.ts create mode 100644 backend/libs/storage/tsconfig.lib.json diff --git a/backend/.swcrc b/backend/.swcrc index 0d0b2e8..4246348 100644 --- a/backend/.swcrc +++ b/backend/.swcrc @@ -15,7 +15,8 @@ "@libs/exception": ["./libs/exception/src/index.ts"], "@libs/decorator": ["./libs/decorator/src/index.ts"], "@libs/constants": ["./libs/constants/src/index.ts"], - "@libs/cache": ["./libs/cache/src/index.ts"] + "@libs/cache": ["./libs/cache/src/index.ts"], + "@libs/storage": ["./libs/storage/src/index.ts"] } } } diff --git a/backend/app/src/app.module.ts b/backend/app/src/app.module.ts index 4db923e..fd917f9 100644 --- a/backend/app/src/app.module.ts +++ b/backend/app/src/app.module.ts @@ -6,6 +6,7 @@ import { JwtAuthGuard, JwtAuthModule, RolesModule } from '@libs/auth' import { CacheConfigService } from '@libs/cache' import { ExceptionsFilter } from '@libs/exception' import { PrismaModule } from '@libs/prisma' +import { StorageModule } from '@libs/storage' import { AppController } from './app.controller' import { AppService } from './app.service' import { AuthModule } from './auth/auth.module' @@ -22,7 +23,8 @@ import { UserModule } from './user/user.module' PrismaModule, JwtAuthModule, UserModule, - RolesModule + RolesModule, + StorageModule ], controllers: [AppController], providers: [ diff --git a/backend/libs/constants/src/index.ts b/backend/libs/constants/src/index.ts index e88d815..fc545e6 100644 --- a/backend/libs/constants/src/index.ts +++ b/backend/libs/constants/src/index.ts @@ -1 +1,2 @@ export * from './time.constants' +export * from './storage.constants' diff --git a/backend/libs/constants/src/storage.constants.ts b/backend/libs/constants/src/storage.constants.ts new file mode 100644 index 0000000..577a621 --- /dev/null +++ b/backend/libs/constants/src/storage.constants.ts @@ -0,0 +1 @@ +export const IMAGE_SIZE_LIMIT = 10 * 1024 * 1024 // 10mb diff --git a/backend/libs/storage/src/image-storage.service.ts b/backend/libs/storage/src/image-storage.service.ts new file mode 100644 index 0000000..6e835d5 --- /dev/null +++ b/backend/libs/storage/src/image-storage.service.ts @@ -0,0 +1,126 @@ +import { ConfigService } from '@nestjs/config' +import { + DeleteObjectCommand, + PutObjectCommand, + S3Client +} from '@aws-sdk/client-s3' +import { Service } from '@libs/decorator' +import { + ParameterValidationException, + UnexpectedException +} from '@libs/exception' +import mime from 'mime-types' +import { v4 as uuidv4 } from 'uuid' +import type { ImageStorageService } from './storage.interface' + +@Service() +export class ImageStorageServiceImpl implements ImageStorageService { + private readonly s3: S3Client + + constructor(private readonly configService: ConfigService) { + if (this.configService.get('NODE_ENV') === 'production') { + this.s3 = new S3Client() + } else { + this.s3 = new S3Client({ + region: this.configService.get('AWS_CDN_BUCKET_REGION'), + endpoint: this.configService.get('AWS_CDN_BUCKET_URL'), + forcePathStyle: true, + credentials: { + accessKeyId: this.configService.get('AWS_CDN_ACCESS_KEY') || '', + secretAccessKey: this.configService.get('AWS_CDN_SECRET_KEY') || '' + } + }) + } + } + + async uploadObject( + file: Express.Multer.File, + src: string + ): Promise<{ src: string }> { + try { + const extension = this.getFileExtension(file.originalname) + const keyWithoutExtenstion = `${src}/${this.generateUniqueImageName()}` + const key = keyWithoutExtenstion + `${extension}` + const fileType = this.extractContentType(file) + + await this.s3.send( + new PutObjectCommand({ + Bucket: this.configService.get('AWS_CDN_BUCKET_NAME'), + Key: key, + Body: file.buffer, + ContentType: fileType + }) + ) + + if (this.configService.get('NODE_ENV') === 'production') { + return { + src: keyWithoutExtenstion + } + } else { + return { + src: key + } + } + } catch (error) { + throw new UnexpectedException(error) + } + } + + async deleteObject(src: string): Promise<{ result: string }> { + try { + await this.s3.send( + new DeleteObjectCommand({ + Bucket: this.configService.get('AWS_CDN_ORIGIN_BUCKET_NAME'), + Key: src + }) + ) + + return { result: 'ok' } + } catch (error) { + throw new UnexpectedException(error) + } + } + + /** + * 랜덤한 uuid를 생성하여 리턴합니다. + * + * @returns {string} + */ + private generateUniqueImageName(): string { + const uniqueId = uuidv4() + + return uniqueId + } + + /** + * 파일이름으로 부터 MimeType을 추출하여 리턴합니다. + * @param {Express.Multer.File} file - MimeType을 추출할 파일 + * @returns {string} 추출한 MimeType + */ + private extractContentType(file: Express.Multer.File): string { + if (file.mimetype) { + return file.mimetype.toString() + } + + return file.originalname + ? mime.lookup(file.originalname) || 'application/octet-stream' + : 'application/octet-stream' + } + + /** + * 파일에서 확장자를 추출합니다. + * + * @param {string} filename - 파일 원본명 + * @returns {string} 확장자 + * @throws {ParameterValidationException} 전달받은 파일에 확장자가 없는 경우 발생 + */ + private getFileExtension(filename: string): string { + const match = filename.match(/\.[^.]+$/) + + if (match) { + return match[0] + } + + throw new ParameterValidationException('Unsupported file extension') + } +} diff --git a/backend/libs/storage/src/index.ts b/backend/libs/storage/src/index.ts new file mode 100644 index 0000000..542849b --- /dev/null +++ b/backend/libs/storage/src/index.ts @@ -0,0 +1,3 @@ +export * from './options/image-options' +export * from './storage.module' +export * from './image-storage.service' diff --git a/backend/libs/storage/src/options/image-options.ts b/backend/libs/storage/src/options/image-options.ts new file mode 100644 index 0000000..9a53a74 --- /dev/null +++ b/backend/libs/storage/src/options/image-options.ts @@ -0,0 +1,21 @@ +import type { MulterOptions } from '@nestjs/platform-express/multer/interfaces/multer-options.interface' +import { IMAGE_SIZE_LIMIT } from '@libs/constants' +import type { FileFilterCallback } from 'multer' + +export const IMAGE_OPTIONS: MulterOptions = { + limits: { + fieldSize: IMAGE_SIZE_LIMIT + }, + fileFilter: ( + req: Request, + file: Express.Multer.File, + cb: FileFilterCallback + ) => { + const fileExts = ['png', 'jpg', 'jpeg', 'webp', 'heif', 'heic'] + const ext = file.originalname.split('.').pop().toLocaleLowerCase() + if (!fileExts.includes(ext)) { + return cb(null, false) + } + cb(null, true) + } +} diff --git a/backend/libs/storage/src/storage.interface.ts b/backend/libs/storage/src/storage.interface.ts new file mode 100644 index 0000000..ee11c9f --- /dev/null +++ b/backend/libs/storage/src/storage.interface.ts @@ -0,0 +1,20 @@ +export interface StorageService { + /** + * 파일을 지정한 경로에 저장하고 저장된 파일이름을 포함한 전체 경로를 반환합니다. + * + * @param {Express.Multer.File} file - 저장할 파일 + * @param {string} src - 파일을 저장할 경로 + * @returns {Promise<{src: string}>} 파일이 저장된 경로 + */ + uploadObject(file: Express.Multer.File, src: string): Promise<{ src: string }> + + /** + * 해당 URI에 있는 파일을 삭제하고 삭제 결과를 반환합니다. + * + * @param {string} src - 삭제할 파일이 위치한 경로 + * @returns {Promise<{result: string}>} 파일 삭제 결과 + */ + deleteObject(src: string): Promise<{ result: string }> +} + +export interface ImageStorageService extends StorageService {} diff --git a/backend/libs/storage/src/storage.module.ts b/backend/libs/storage/src/storage.module.ts new file mode 100644 index 0000000..1e5c7d3 --- /dev/null +++ b/backend/libs/storage/src/storage.module.ts @@ -0,0 +1,19 @@ +import { Global, Module } from '@nestjs/common' +import { ImageStorageServiceImpl } from './image-storage.service' + +@Global() +@Module({ + providers: [ + { + provide: 'ImageStorageService', + useClass: ImageStorageServiceImpl + } + ], + exports: [ + { + provide: 'ImageStorageService', + useClass: ImageStorageServiceImpl + } + ] +}) +export class StorageModule {} diff --git a/backend/libs/storage/tsconfig.lib.json b/backend/libs/storage/tsconfig.lib.json new file mode 100644 index 0000000..b99dca8 --- /dev/null +++ b/backend/libs/storage/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "../../dist/libs/storage" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/backend/nest-cli.json b/backend/nest-cli.json index d3bfde4..7c135f0 100644 --- a/backend/nest-cli.json +++ b/backend/nest-cli.json @@ -74,6 +74,15 @@ "compilerOptions": { "tsConfigPath": "libs/cache/tsconfig.lib.json" } + }, + "storage": { + "type": "library", + "root": "libs/storage", + "entryFile": "index", + "sourceRoot": "libs/storage/src", + "compilerOptions": { + "tsConfigPath": "libs/storage/tsconfig.lib.json" + } } } } diff --git a/backend/package.json b/backend/package.json index 2a25f50..abcca2b 100644 --- a/backend/package.json +++ b/backend/package.json @@ -15,6 +15,7 @@ "test:cov": "vitest run --coverage" }, "dependencies": { + "@aws-sdk/client-s3": "^3.525.0", "@nestjs/cache-manager": "^2.2.1", "@nestjs/common": "^10.3.0", "@nestjs/config": "^3.1.1", @@ -28,9 +29,11 @@ "cache-manager-redis-yet": "^4.1.2", "cookie-parser": "^1.4.6", "express": "^4.18.2", + "mime-types": "^2.1.35", "passport-jwt": "^4.0.1", "reflect-metadata": "^0.1.12", - "rxjs": "^7.8.1" + "rxjs": "^7.8.1", + "uuid": "^9.0.1" }, "devDependencies": { "@nestjs/cli": "^10.3.0", @@ -40,7 +43,8 @@ "@swc/core": "^1.3.107", "@swc/register": "^0.1.10", "@types/express": "^4.17.17", - "@types/jest": "^29.5.2", + "@types/mime-types": "^2.1.4", + "@types/multer": "^1.4.11", "@types/node": "^20.3.1", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^2.0.12", diff --git a/backend/tsconfig.json b/backend/tsconfig.json index abe22f1..e994bc0 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -24,7 +24,8 @@ "@libs/exception": ["./libs/exception/src/index.ts"], "@libs/decorator": ["./libs/decorator/src/index.ts"], "@libs/constants": ["./libs/constants/src/index.ts"], - "@libs/cache": ["./libs/cache/src/index.ts"] + "@libs/cache": ["./libs/cache/src/index.ts"], + "@libs/storage": ["./libs/storage/src/index.ts"] } } } diff --git a/backend/vitest.config.ts b/backend/vitest.config.ts index b1ecd78..8ca4dbc 100644 --- a/backend/vitest.config.ts +++ b/backend/vitest.config.ts @@ -20,7 +20,8 @@ export default defineConfig({ '@libs/exception': './libs/exception/src/index.ts', '@libs/decorator': './libs/decorator/src/index.ts', '@libs/constants': './libs/constants/src/index.ts', - '@libs/cache': './libs/cache/src/index.ts' + '@libs/cache': './libs/cache/src/index.ts', + '@libs/storage': './libs/storage/src/index.ts' } }, plugins: [swc.vite()] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d4000f..ac01255 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,6 +56,9 @@ importers: backend: dependencies: + '@aws-sdk/client-s3': + specifier: ^3.525.0 + version: 3.525.0 '@nestjs/cache-manager': specifier: ^2.2.1 version: 2.2.1(@nestjs/common@10.3.1)(@nestjs/core@10.3.1)(cache-manager@5.4.0)(rxjs@7.8.1) @@ -95,6 +98,9 @@ importers: express: specifier: ^4.18.2 version: 4.18.2 + mime-types: + specifier: ^2.1.35 + version: 2.1.35 passport-jwt: specifier: ^4.0.1 version: 4.0.1 @@ -104,6 +110,9 @@ importers: rxjs: specifier: ^7.8.1 version: 7.8.1 + uuid: + specifier: ^9.0.1 + version: 9.0.1 devDependencies: '@nestjs/cli': specifier: ^10.3.0 @@ -126,9 +135,12 @@ importers: '@types/express': specifier: ^4.17.17 version: 4.17.17 - '@types/jest': - specifier: ^29.5.2 - version: 29.5.2 + '@types/mime-types': + specifier: ^2.1.4 + version: 2.1.4 + '@types/multer': + specifier: ^1.4.11 + version: 1.4.11 '@types/node': specifier: ^20.3.1 version: 20.3.1 @@ -395,7 +407,6 @@ packages: '@aws-crypto/util': 3.0.0 '@aws-sdk/types': 3.502.0 tslib: 1.14.1 - dev: true /@aws-crypto/crc32c@3.0.0: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} @@ -403,13 +414,11 @@ packages: '@aws-crypto/util': 3.0.0 '@aws-sdk/types': 3.502.0 tslib: 1.14.1 - dev: true /@aws-crypto/ie11-detection@3.0.0: resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} dependencies: tslib: 1.14.1 - dev: true /@aws-crypto/sha1-browser@3.0.0: resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==} @@ -417,11 +426,10 @@ packages: '@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.502.0 + '@aws-sdk/types': 3.523.0 '@aws-sdk/util-locate-window': 3.495.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 - dev: true /@aws-crypto/sha256-browser@3.0.0: resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} @@ -434,7 +442,6 @@ packages: '@aws-sdk/util-locate-window': 3.495.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 - dev: true /@aws-crypto/sha256-js@3.0.0: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} @@ -442,13 +449,11 @@ packages: '@aws-crypto/util': 3.0.0 '@aws-sdk/types': 3.502.0 tslib: 1.14.1 - dev: true /@aws-crypto/supports-web-crypto@3.0.0: resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} dependencies: tslib: 1.14.1 - dev: true /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} @@ -456,7 +461,6 @@ packages: '@aws-sdk/types': 3.502.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 - dev: true /@aws-sdk/client-s3@3.503.1: resolution: {integrity: sha512-wN7MjCkeWgO55Tu85zpsGXQQOPNBm11elgik2AV2fJQMq5PCFQEZK/3N4ICNt0ZsGkQPVsXQTf+k9GKBxolt0g==} @@ -524,6 +528,72 @@ packages: - aws-crt dev: true + /@aws-sdk/client-s3@3.525.0: + resolution: {integrity: sha512-hoMGH8G9rezZDiJPsMjsyRVNfVHHa4u6lcZ09SQMmtFHWK0FUcC0DIKR5ripV5qGDbnV54i2JotXlLzAv0aNCQ==} + engines: {node: '>=14.0.0'} + 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.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/core': 3.525.0 + '@aws-sdk/credential-provider-node': 3.525.0 + '@aws-sdk/middleware-bucket-endpoint': 3.525.0 + '@aws-sdk/middleware-expect-continue': 3.523.0 + '@aws-sdk/middleware-flexible-checksums': 3.523.0 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-location-constraint': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-sdk-s3': 3.525.0 + '@aws-sdk/middleware-signing': 3.523.0 + '@aws-sdk/middleware-ssec': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/signature-v4-multi-region': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0 + '@aws-sdk/xml-builder': 3.523.0 + '@smithy/config-resolver': 2.1.4 + '@smithy/core': 1.3.5 + '@smithy/eventstream-serde-browser': 2.1.3 + '@smithy/eventstream-serde-config-resolver': 2.1.3 + '@smithy/eventstream-serde-node': 2.1.3 + '@smithy/fetch-http-handler': 2.4.3 + '@smithy/hash-blob-browser': 2.1.3 + '@smithy/hash-node': 2.1.3 + '@smithy/hash-stream-node': 2.1.3 + '@smithy/invalid-dependency': 2.1.3 + '@smithy/md5-js': 2.1.3 + '@smithy/middleware-content-length': 2.1.3 + '@smithy/middleware-endpoint': 2.4.4 + '@smithy/middleware-retry': 2.1.4 + '@smithy/middleware-serde': 2.1.3 + '@smithy/middleware-stack': 2.1.3 + '@smithy/node-config-provider': 2.2.4 + '@smithy/node-http-handler': 2.4.1 + '@smithy/protocol-http': 3.2.1 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/url-parser': 2.1.3 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.4 + '@smithy/util-defaults-mode-node': 2.2.3 + '@smithy/util-endpoints': 1.1.4 + '@smithy/util-retry': 2.1.3 + '@smithy/util-stream': 2.1.3 + '@smithy/util-utf8': 2.1.1 + '@smithy/util-waiter': 2.1.3 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/client-sso-oidc@3.502.0(@aws-sdk/credential-provider-node@3.503.1): resolution: {integrity: sha512-Yc9tZqTOMWtdgpkrdjKShgWb9oKNsFQrItfoiN1xWDllaFFRPi2KTiZiR0AbSTrNasJy13d210DOxrIdte+kWQ==} engines: {node: '>=14.0.0'} @@ -574,6 +644,56 @@ packages: - aws-crt dev: true + /@aws-sdk/client-sso-oidc@3.525.0(@aws-sdk/credential-provider-node@3.525.0): + resolution: {integrity: sha512-zz13k/6RkjPSLmReSeGxd8wzGiiZa4Odr2Tv3wTcxClM4wOjD+zOgGv4Fe32b9AMqaueiCdjbvdu7AKcYxFA4A==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.525.0 + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/core': 3.525.0 + '@aws-sdk/credential-provider-node': 3.525.0 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0 + '@smithy/config-resolver': 2.1.4 + '@smithy/core': 1.3.5 + '@smithy/fetch-http-handler': 2.4.3 + '@smithy/hash-node': 2.1.3 + '@smithy/invalid-dependency': 2.1.3 + '@smithy/middleware-content-length': 2.1.3 + '@smithy/middleware-endpoint': 2.4.4 + '@smithy/middleware-retry': 2.1.4 + '@smithy/middleware-serde': 2.1.3 + '@smithy/middleware-stack': 2.1.3 + '@smithy/node-config-provider': 2.2.4 + '@smithy/node-http-handler': 2.4.1 + '@smithy/protocol-http': 3.2.1 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/url-parser': 2.1.3 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.4 + '@smithy/util-defaults-mode-node': 2.2.3 + '@smithy/util-endpoints': 1.1.4 + '@smithy/util-middleware': 2.1.3 + '@smithy/util-retry': 2.1.3 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/client-sso@3.502.0: resolution: {integrity: sha512-OZAYal1+PQgUUtWiHhRayDtX0OD+XpXHKAhjYgEIPbyhQaCMp3/Bq1xDX151piWXvXqXLJHFKb8DUEqzwGO9QA==} engines: {node: '>=14.0.0'} @@ -619,6 +739,52 @@ packages: - aws-crt dev: true + /@aws-sdk/client-sso@3.525.0: + resolution: {integrity: sha512-6KwGQWFoNLH1UupdWPFdKPfTgjSz1kN8/r8aCzuvvXBe4Pz+iDUZ6FEJzGWNc9AapjvZDNO1hs23slomM9rTaA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.525.0 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0 + '@smithy/config-resolver': 2.1.4 + '@smithy/core': 1.3.5 + '@smithy/fetch-http-handler': 2.4.3 + '@smithy/hash-node': 2.1.3 + '@smithy/invalid-dependency': 2.1.3 + '@smithy/middleware-content-length': 2.1.3 + '@smithy/middleware-endpoint': 2.4.4 + '@smithy/middleware-retry': 2.1.4 + '@smithy/middleware-serde': 2.1.3 + '@smithy/middleware-stack': 2.1.3 + '@smithy/node-config-provider': 2.2.4 + '@smithy/node-http-handler': 2.4.1 + '@smithy/protocol-http': 3.2.1 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/url-parser': 2.1.3 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.4 + '@smithy/util-defaults-mode-node': 2.2.3 + '@smithy/util-endpoints': 1.1.4 + '@smithy/util-middleware': 2.1.3 + '@smithy/util-retry': 2.1.3 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/client-sts@3.502.0(@aws-sdk/credential-provider-node@3.503.1): resolution: {integrity: sha512-0q08gsvn6nuRqjK+i/e30PT/t7vvYwmGJS0PhJikZWv5yRDNSUxSYG0uDwKSbLDzmc2UX5+mLeyjPHlL4hbGlA==} engines: {node: '>=14.0.0'} @@ -669,6 +835,56 @@ packages: - aws-crt dev: true + /@aws-sdk/client-sts@3.525.0(@aws-sdk/credential-provider-node@3.525.0): + resolution: {integrity: sha512-a8NUGRvO6rkfTZCbMaCsjDjLbERCwIUU9dIywFYcRgbFhkupJ7fSaZz3Het98U51M9ZbTEpaTa3fz0HaJv8VJw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.525.0 + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.525.0 + '@aws-sdk/credential-provider-node': 3.525.0 + '@aws-sdk/middleware-host-header': 3.523.0 + '@aws-sdk/middleware-logger': 3.523.0 + '@aws-sdk/middleware-recursion-detection': 3.523.0 + '@aws-sdk/middleware-user-agent': 3.525.0 + '@aws-sdk/region-config-resolver': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@aws-sdk/util-user-agent-browser': 3.523.0 + '@aws-sdk/util-user-agent-node': 3.525.0 + '@smithy/config-resolver': 2.1.4 + '@smithy/core': 1.3.5 + '@smithy/fetch-http-handler': 2.4.3 + '@smithy/hash-node': 2.1.3 + '@smithy/invalid-dependency': 2.1.3 + '@smithy/middleware-content-length': 2.1.3 + '@smithy/middleware-endpoint': 2.4.4 + '@smithy/middleware-retry': 2.1.4 + '@smithy/middleware-serde': 2.1.3 + '@smithy/middleware-stack': 2.1.3 + '@smithy/node-config-provider': 2.2.4 + '@smithy/node-http-handler': 2.4.1 + '@smithy/protocol-http': 3.2.1 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/url-parser': 2.1.3 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.4 + '@smithy/util-defaults-mode-node': 2.2.3 + '@smithy/util-endpoints': 1.1.4 + '@smithy/util-middleware': 2.1.3 + '@smithy/util-retry': 2.1.3 + '@smithy/util-utf8': 2.1.1 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/core@3.496.0: resolution: {integrity: sha512-yT+ug7Cw/3eJi7x2es0+46x12+cIJm5Xv+GPWsrTFD1TKgqO/VPEgfDtHFagDNbFmjNQA65Ygc/kEdIX9ICX/A==} engines: {node: '>=14.0.0'} @@ -681,6 +897,18 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/core@3.525.0: + resolution: {integrity: sha512-E3LtEtMWCriQOFZpVKpLYzbdw/v2PAOEAMhn2VRRZ1g0/g1TXzQrfhEU2yd8l/vQEJaCJ82ooGGg7YECviBUxA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/core': 1.3.5 + '@smithy/protocol-http': 3.2.1 + '@smithy/signature-v4': 2.1.3 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-env@3.502.0: resolution: {integrity: sha512-KIB8Ae1Z7domMU/jU4KiIgK4tmYgvuXlhR54ehwlVHxnEoFPoPuGHFZU7oFn79jhhSLUFQ1lRYMxP0cEwb7XeQ==} engines: {node: '>=14.0.0'} @@ -691,6 +919,16 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/credential-provider-env@3.523.0: + resolution: {integrity: sha512-Y6DWdH6/OuMDoNKVzZlNeBc6f1Yjk1lYMjANKpIhMbkRCvLJw/PYZKOZa8WpXbTYdgg9XLjKybnLIb3ww3uuzA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-http@3.503.1: resolution: {integrity: sha512-rTdlFFGoPPFMF2YjtlfRuSgKI+XsF49u7d98255hySwhsbwd3Xp+utTTPquxP+CwDxMHbDlI7NxDzFiFdsoZug==} engines: {node: '>=14.0.0'} @@ -706,6 +944,21 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/credential-provider-http@3.525.0: + resolution: {integrity: sha512-RNWQGuSBQZhl3iqklOslUEfQ4br1V3DCPboMpeqFtddUWJV3m2u2extFur9/4Uy+1EHVF120IwZUKtd8dF+ibw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/fetch-http-handler': 2.4.3 + '@smithy/node-http-handler': 2.4.1 + '@smithy/property-provider': 2.1.3 + '@smithy/protocol-http': 3.2.1 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/util-stream': 2.1.3 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-ini@3.503.1(@aws-sdk/credential-provider-node@3.503.1): resolution: {integrity: sha512-1RiC72NdWJ5w2IaX/91Fku+FrrChzaHuMCD5wbjk5TMHjwiDZ622wvMKYVmn30biW0RbJidaw38Y9PAGivdZxw==} engines: {node: '>=14.0.0'} @@ -726,6 +979,26 @@ packages: - aws-crt dev: true + /@aws-sdk/credential-provider-ini@3.525.0(@aws-sdk/credential-provider-node@3.525.0): + resolution: {integrity: sha512-JDnccfK5JRb9jcgpc9lirL9PyCwGIqY0nKdw3LlX5WL5vTpTG4E1q7rLAlpNh7/tFD1n66Itarfv2tsyHMIqCw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sts': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/credential-provider-env': 3.523.0 + '@aws-sdk/credential-provider-process': 3.523.0 + '@aws-sdk/credential-provider-sso': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/credential-provider-web-identity': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/types': 3.523.0 + '@smithy/credential-provider-imds': 2.2.4 + '@smithy/property-provider': 2.1.3 + '@smithy/shared-ini-file-loader': 2.3.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + /@aws-sdk/credential-provider-node@3.503.1: resolution: {integrity: sha512-1qsRWnXl8OUZEDpUFF/gjCGjePjZB6fIpX+XQuTpKokeDzYZk0HwQSakPspfmzT8MkyB9IBJVWb7KbFCjKNt0A==} engines: {node: '>=14.0.0'} @@ -746,6 +1019,26 @@ packages: - aws-crt dev: true + /@aws-sdk/credential-provider-node@3.525.0: + resolution: {integrity: sha512-RJXlO8goGXpnoHQAyrCcJ0QtWEOFa34LSbfdqBIjQX/fwnjUuEmiGdXTV3AZmwYQ7juk49tfBneHbtOP3AGqsQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.523.0 + '@aws-sdk/credential-provider-http': 3.525.0 + '@aws-sdk/credential-provider-ini': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/credential-provider-process': 3.523.0 + '@aws-sdk/credential-provider-sso': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/credential-provider-web-identity': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/types': 3.523.0 + '@smithy/credential-provider-imds': 2.2.4 + '@smithy/property-provider': 2.1.3 + '@smithy/shared-ini-file-loader': 2.3.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/credential-provider-process@3.502.0: resolution: {integrity: sha512-fJJowOjQ4infYQX0E1J3xFVlmuwEYJAFk0Mo1qwafWmEthsBJs+6BR2RiWDELHKrSK35u4Pf3fu3RkYuCtmQFw==} engines: {node: '>=14.0.0'} @@ -757,6 +1050,17 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/credential-provider-process@3.523.0: + resolution: {integrity: sha512-f0LP9KlFmMvPWdKeUKYlZ6FkQAECUeZMmISsv6NKtvPCI9e4O4cLTeR09telwDK8P0HrgcRuZfXM7E30m8re0Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.3 + '@smithy/shared-ini-file-loader': 2.3.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-sso@3.503.1(@aws-sdk/credential-provider-node@3.503.1): resolution: {integrity: sha512-Wj+rgpD4EcGB+j6mMYPD4SPNEN0sUSq7UMTTfdzZ+1MSTnbPDC9rgde0D3yJPrJ1le/0j+sXPALvr5RKSpENbg==} engines: {node: '>=14.0.0'} @@ -773,6 +1077,22 @@ packages: - aws-crt dev: true + /@aws-sdk/credential-provider-sso@3.525.0(@aws-sdk/credential-provider-node@3.525.0): + resolution: {integrity: sha512-7V7ybtufxdD3plxeIeB6aqHZeFIUlAyPphXIUgXrGY10iNcosL970rQPBeggsohe4gCM6UvY2TfMeEcr+ZE8FA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.525.0 + '@aws-sdk/token-providers': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.3 + '@smithy/shared-ini-file-loader': 2.3.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + /@aws-sdk/credential-provider-web-identity@3.502.0(@aws-sdk/credential-provider-node@3.503.1): resolution: {integrity: sha512-veBAjDqjMMgA2Qxxf9ywDfHYLeJpaeHWLWCQ9XCHwJJ6ZIGWmAZPTq3he/UMr5JIQXooIccqqyqXMDIXPenXpA==} engines: {node: '>=14.0.0'} @@ -787,6 +1107,20 @@ packages: - aws-crt dev: true + /@aws-sdk/credential-provider-web-identity@3.525.0(@aws-sdk/credential-provider-node@3.525.0): + resolution: {integrity: sha512-sAukOjR1oKb2JXG4nPpuBFpSwGUhrrY17PG/xbTy8NAoLLhrqRwnErcLfdTfmj6tH+3094k6ws/Sh8a35ae7fA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sts': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + /@aws-sdk/middleware-bucket-endpoint@3.502.0: resolution: {integrity: sha512-mUSP2DUcjhO5zM2b21CvZ9AqwI8DaAeZA6NYHOxWGTV9BUxHcdGWXEjDkcVj9CQ0gvNwTtw6B5L/q52rVAnZbw==} engines: {node: '>=14.0.0'} @@ -800,6 +1134,19 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-bucket-endpoint@3.525.0: + resolution: {integrity: sha512-nYfQ2Xspfef7j8mZO7varUWLPH6HQlXateH7tBVtBNUAazyQE4UJEvC0fbQ+Y01e+FKlirim/m2umkdMXqAlTg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-arn-parser': 3.495.0 + '@smithy/node-config-provider': 2.2.4 + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + '@smithy/util-config-provider': 2.2.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-expect-continue@3.502.0: resolution: {integrity: sha512-DxfAuBVuPSt8as9xP57o8ks6ySVSjwO2NNNAdpLwk4KhEAPYEpHlf2yWYorYLrS+dDmwfYgOhRNoguuBdCu6ow==} engines: {node: '>=14.0.0'} @@ -810,6 +1157,16 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-expect-continue@3.523.0: + resolution: {integrity: sha512-E5DyRAHU39VHaAlQLqXYS/IKpgk3vsryuU6kkOcIIK8Dgw0a2tjoh5AOCaNa8pD+KgAGrFp35JIMSX1zui5diA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-flexible-checksums@3.502.0: resolution: {integrity: sha512-kCt2zQDFumz/LnJJJOSd2GW4dr8oT8YMJKgxC/pph3aRXoSHXRwhrMbFnQ8swEE9vjywxtcED8sym0b0tNhhoA==} engines: {node: '>=14.0.0'} @@ -824,6 +1181,20 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-flexible-checksums@3.523.0: + resolution: {integrity: sha512-lIa1TdWY9q4zsDFarfSnYcdrwPR+nypaU4n6hb95i620/1F5M5s6H8P0hYtwTNNvx+slrR8F3VBML9pjBtzAHw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@aws-crypto/crc32c': 3.0.0 + '@aws-sdk/types': 3.523.0 + '@smithy/is-array-buffer': 2.1.1 + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-host-header@3.502.0: resolution: {integrity: sha512-EjnG0GTYXT/wJBmm5/mTjDcAkzU8L7wQjOzd3FTXuTCNNyvAvwrszbOj5FlarEw5XJBbQiZtBs+I5u9+zy560w==} engines: {node: '>=14.0.0'} @@ -834,6 +1205,16 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-host-header@3.523.0: + resolution: {integrity: sha512-4g3q7Ta9sdD9TMUuohBAkbx/e3I/juTqfKi7TPgP+8jxcYX72MOsgemAMHuP6CX27eyj4dpvjH+w4SIVDiDSmg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-location-constraint@3.502.0: resolution: {integrity: sha512-fLRwPuTZvEWQkPjys03m3D6tYN4kf7zU6+c8mJxwvEg+yfBuv2RBsbd+Vn2bTisUjXvIg1kyBzONlpHoIyFneg==} engines: {node: '>=14.0.0'} @@ -843,6 +1224,15 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-location-constraint@3.523.0: + resolution: {integrity: sha512-1QAUXX3U0jkARnU0yyjk81EO4Uw5dCeQOtvUY5s3bUOHatR3ThosQeIr6y9BCsbXHzNnDe1ytCjqAPyo8r/bYw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-logger@3.502.0: resolution: {integrity: sha512-FDyv6K4nCoHxbjLGS2H8ex8I0KDIiu4FJgVRPs140ZJy6gE5Pwxzv6YTzZGLMrnqcIs9gh065Lf6DjwMelZqaw==} engines: {node: '>=14.0.0'} @@ -852,6 +1242,15 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-logger@3.523.0: + resolution: {integrity: sha512-PeDNJNhfiaZx54LBaLTXzUaJ9LXFwDFFIksipjqjvxMafnoVcQwKbkoPUWLe5ytT4nnL1LogD3s55mERFUsnwg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-recursion-detection@3.502.0: resolution: {integrity: sha512-hvbyGJbxeuezxOu8VfFmcV4ql1hKXLxHTe5FNYfEBat2KaZXVhc1Hg+4TvB06/53p+E8J99Afmumkqbxs2esUA==} engines: {node: '>=14.0.0'} @@ -862,6 +1261,16 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-recursion-detection@3.523.0: + resolution: {integrity: sha512-nZ3Vt7ehfSDYnrcg/aAfjjvpdE+61B3Zk68i6/hSUIegT3IH9H1vSW67NDKVp+50hcEfzWwM2HMPXxlzuyFyrw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-sdk-s3@3.502.0: resolution: {integrity: sha512-GbGugrfyL5bNA/zw8iQll92yXBONfWSC8Ns00DtkOU1saPXp4/7WHtyyZGYdvPa73T1IsuZy9egpoYRBmRcd5Q==} engines: {node: '>=14.0.0'} @@ -877,6 +1286,21 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-sdk-s3@3.525.0: + resolution: {integrity: sha512-ewFyyFM6wdFTOqCiId5GQNi7owDdLEonQhB4h8tF6r3HV52bRlDvZA4aDos+ft6N/XY2J6L0qlFTFq+/oiurXw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-arn-parser': 3.495.0 + '@smithy/node-config-provider': 2.2.4 + '@smithy/protocol-http': 3.2.1 + '@smithy/signature-v4': 2.1.3 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/util-config-provider': 2.2.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-signing@3.502.0: resolution: {integrity: sha512-4hF08vSzJ7L6sB+393gOFj3s2N6nLusYS0XrMW6wYNFU10IDdbf8Z3TZ7gysDJJHEGQPmTAesPEDBsasGWcMxg==} engines: {node: '>=14.0.0'} @@ -890,6 +1314,19 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-signing@3.523.0: + resolution: {integrity: sha512-pFXV4don6qcmew/OvEjLUr2foVjzoJ8o5k57Oz9yAHz8INx3RHK8MP/K4mVhHo6n0SquRcWrm4kY/Tw+89gkEA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.3 + '@smithy/protocol-http': 3.2.1 + '@smithy/signature-v4': 2.1.3 + '@smithy/types': 2.10.1 + '@smithy/util-middleware': 2.1.3 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-ssec@3.502.0: resolution: {integrity: sha512-1nidVTIba6/aVjjzD/WNqWdzSyTrXOHO3Ddz2MGD8S1yGSrYz4iYaq4Bm/uosfdr8B1L0Ws0pjdRXrNfzSw/DQ==} engines: {node: '>=14.0.0'} @@ -899,6 +1336,15 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-ssec@3.523.0: + resolution: {integrity: sha512-FaqAZQeF5cQzZLOIboIJRaWVOQ2F2pJZAXGF5D7nJsxYNFChotA0O0iWimBRxU35RNn7yirVxz35zQzs20ddIw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-user-agent@3.502.0: resolution: {integrity: sha512-TxbBZbRiXPH0AUxegqiNd9aM9zNSbfjtBs5MEfcBsweeT/B2O7K1EjP9+CkB8Xmk/5FLKhAKLr19b1TNoE27rw==} engines: {node: '>=14.0.0'} @@ -910,6 +1356,17 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/middleware-user-agent@3.525.0: + resolution: {integrity: sha512-4al/6uO+t/QIYXK2OgqzDKQzzLAYJza1vWFS+S0lJ3jLNGyLB5BMU5KqWjDzevYZ4eCnz2Nn7z0FveUTNz8YdQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@aws-sdk/util-endpoints': 3.525.0 + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/region-config-resolver@3.502.0: resolution: {integrity: sha512-mxmsX2AGgnSM+Sah7mcQCIneOsJQNiLX0COwEttuf8eO+6cLMAZvVudH3BnWTfea4/A9nuri9DLCqBvEmPrilg==} engines: {node: '>=14.0.0'} @@ -922,6 +1379,18 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/region-config-resolver@3.525.0: + resolution: {integrity: sha512-8kFqXk6UyKgTMi7N7QlhA6qM4pGPWbiUXqEY2RgUWngtxqNFGeM9JTexZeuavQI+qLLe09VPShPNX71fEDcM6w==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/node-config-provider': 2.2.4 + '@smithy/types': 2.10.1 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.3 + tslib: 2.6.2 + dev: false + /@aws-sdk/signature-v4-multi-region@3.502.0: resolution: {integrity: sha512-NpOXtUXH0ZAgnyI3Y3s2fPrgwbsWoNMwdoXdFZvH0eDzzX80tim7Yuy6dzVA5zrxSzOYs1xjcOhM+4CmM0QZiw==} engines: {node: '>=14.0.0'} @@ -934,6 +1403,18 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/signature-v4-multi-region@3.525.0: + resolution: {integrity: sha512-j8gkdfiokaherRgokfZBl2azYBMHlegT7pOnR/3Y79TSz6G+bJeIkuNk8aUbJArr6R8nvAM1j4dt1rBM+efolQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.525.0 + '@aws-sdk/types': 3.523.0 + '@smithy/protocol-http': 3.2.1 + '@smithy/signature-v4': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/token-providers@3.502.0(@aws-sdk/credential-provider-node@3.503.1): resolution: {integrity: sha512-RQgMgIXYlSf0xGl6EUeD+pqIPBlb7e29dbqHOBFc66hJVYUC2ULZX7Y+jLvcGIEaMiIaTPyvntZRFip+U+9hag==} engines: {node: '>=14.0.0'} @@ -949,20 +1430,40 @@ packages: - aws-crt dev: true + /@aws-sdk/token-providers@3.525.0(@aws-sdk/credential-provider-node@3.525.0): + resolution: {integrity: sha512-puVjbxuK0Dq7PTQ2HdddHy2eQjOH8GZbump74yWJa6JVpRW84LlOcNmP+79x4Kscvz2ldWB8XDFw/pcCiSDe5A==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso-oidc': 3.525.0(@aws-sdk/credential-provider-node@3.525.0) + '@aws-sdk/types': 3.523.0 + '@smithy/property-provider': 2.1.3 + '@smithy/shared-ini-file-loader': 2.3.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + /@aws-sdk/types@3.502.0: resolution: {integrity: sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==} engines: {node: '>=14.0.0'} dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 - dev: true + + /@aws-sdk/types@3.523.0: + resolution: {integrity: sha512-AqGIu4u+SxPiUuNBp2acCVcq80KDUFjxe6e3cMTvKWTzCbrVk1AXv0dAaJnCmdkWIha6zJDWxpIk/aL4EGhZ9A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 /@aws-sdk/util-arn-parser@3.495.0: resolution: {integrity: sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@aws-sdk/util-endpoints@3.502.0: resolution: {integrity: sha512-6LKFlJPp2J24r1Kpfoz5ESQn+1v5fEjDB3mtUKRdpwarhm3syu7HbKlHCF3KbcCOyahobvLvhoedT78rJFEeeg==} @@ -974,12 +1475,21 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/util-endpoints@3.525.0: + resolution: {integrity: sha512-DIW7WWU5tIGkeeKX6NJUyrEIdWMiqjLQG3XBzaUj+ufIENwNjdAHhlD8l2vX7Yr3JZRT6yN/84wBCj7Tw1xd1g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.10.1 + '@smithy/util-endpoints': 1.1.4 + tslib: 2.6.2 + dev: false + /@aws-sdk/util-locate-window@3.495.0: resolution: {integrity: sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@aws-sdk/util-user-agent-browser@3.502.0: resolution: {integrity: sha512-v8gKyCs2obXoIkLETAeEQ3AM+QmhHhst9xbM1cJtKUGsRlVIak/XyyD+kVE6kmMm1cjfudHpHKABWk9apQcIZQ==} @@ -990,6 +1500,15 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/util-user-agent-browser@3.523.0: + resolution: {integrity: sha512-6ZRNdGHX6+HQFqTbIA5+i8RWzxFyxsZv8D3soRfpdyWIKkzhSz8IyRKXRciwKBJDaC7OX2jzGE90wxRQft27nA==} + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/types': 2.10.1 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/util-user-agent-node@3.502.0: resolution: {integrity: sha512-9RjxpkGZKbTdl96tIJvAo+vZoz4P/cQh36SBUt9xfRfW0BtsaLyvSrvlR5wyUYhvRcC12Axqh/8JtnAPq//+Vw==} engines: {node: '>=14.0.0'} @@ -1005,11 +1524,25 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/util-user-agent-node@3.525.0: + resolution: {integrity: sha512-88Wjt4efyUSBGcyIuh1dvoMqY1k15jpJc5A/3yi67clBQEFsu9QCodQCQPqmRjV3VRcMtBOk+jeCTiUzTY5dRQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/types': 3.523.0 + '@smithy/node-config-provider': 2.2.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/util-utf8-browser@3.259.0: resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: tslib: 2.6.2 - dev: true /@aws-sdk/xml-builder@3.496.0: resolution: {integrity: sha512-GvEjh537IIeOw1ZkZuB37sV12u+ipS5Z1dwjEC/HAvhl5ac23ULtTr1/n+U1gLNN+BAKSWjKiQ2ksj8DiUzeyw==} @@ -1019,6 +1552,14 @@ packages: tslib: 2.6.2 dev: true + /@aws-sdk/xml-builder@3.523.0: + resolution: {integrity: sha512-wfvyVymj2TUw7SuDor9IuFcAzJZvWRBZotvY/wQJOlYa3UP3Oezzecy64N4FWfBJEsZdrTN+HOZFl+IzTWWnUA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} @@ -3120,13 +3661,6 @@ packages: engines: {node: '>=8'} dev: true - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.6.3 - dev: true - /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4702,18 +5236,24 @@ packages: tslib: 2.6.2 dev: true + /@smithy/abort-controller@2.1.3: + resolution: {integrity: sha512-c2aYH2Wu1RVE3rLlVgg2kQOBJGM0WbjReQi5DnPTm2Zb7F0gk7J2aeQeaX2u/lQZoHl6gv8Oac7mt9alU3+f4A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/chunked-blob-reader-native@2.1.1: resolution: {integrity: sha512-zNW+43dltfNMUrBEYLMWgI8lQr0uhtTcUyxkgC9EP4j17WREzgSFMPUFVrVV6Rc2+QtWERYjb4tzZnQGa7R9fQ==} dependencies: '@smithy/util-base64': 2.1.1 tslib: 2.6.2 - dev: true /@smithy/chunked-blob-reader@2.1.1: resolution: {integrity: sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ==} dependencies: tslib: 2.6.2 - dev: true /@smithy/config-resolver@2.1.1: resolution: {integrity: sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==} @@ -4726,6 +5266,17 @@ packages: tslib: 2.6.2 dev: true + /@smithy/config-resolver@2.1.4: + resolution: {integrity: sha512-AW2WUZmBAzgO3V3ovKtsUbI3aBNMeQKFDumoqkNxaVDWF/xfnxAWqBKDr/NuG7c06N2Rm4xeZLPiJH/d+na0HA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.4 + '@smithy/types': 2.10.1 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.3 + tslib: 2.6.2 + dev: false + /@smithy/core@1.3.1: resolution: {integrity: sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==} engines: {node: '>=14.0.0'} @@ -4740,6 +5291,20 @@ packages: tslib: 2.6.2 dev: true + /@smithy/core@1.3.5: + resolution: {integrity: sha512-Rrc+e2Jj6Gu7Xbn0jvrzZlSiP2CZocIOfZ9aNUA82+1sa6GBnxqL9+iZ9EKHeD9aqD1nU8EK4+oN2EiFpSv7Yw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-endpoint': 2.4.4 + '@smithy/middleware-retry': 2.1.4 + '@smithy/middleware-serde': 2.1.3 + '@smithy/protocol-http': 3.2.1 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/util-middleware': 2.1.3 + tslib: 2.6.2 + dev: false + /@smithy/credential-provider-imds@2.2.1: resolution: {integrity: sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==} engines: {node: '>=14.0.0'} @@ -4749,7 +5314,18 @@ packages: '@smithy/types': 2.9.1 '@smithy/url-parser': 2.1.1 tslib: 2.6.2 - dev: true + dev: true + + /@smithy/credential-provider-imds@2.2.4: + resolution: {integrity: sha512-DdatjmBZQnhGe1FhI8gO98f7NmvQFSDiZTwC3WMvLTCKQUY+Y1SVkhJqIuLu50Eb7pTheoXQmK+hKYUgpUWsNA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.4 + '@smithy/property-provider': 2.1.3 + '@smithy/types': 2.10.1 + '@smithy/url-parser': 2.1.3 + tslib: 2.6.2 + dev: false /@smithy/eventstream-codec@2.1.1: resolution: {integrity: sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==} @@ -4760,6 +5336,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/eventstream-codec@2.1.3: + resolution: {integrity: sha512-rGlCVuwSDv6qfKH4/lRxFjcZQnIE0LZ3D4lkMHg7ZSltK9rA74r0VuGSvWVQ4N/d70VZPaniFhp4Z14QYZsa+A==} + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.10.1 + '@smithy/util-hex-encoding': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/eventstream-serde-browser@2.1.1: resolution: {integrity: sha512-JvEdCmGlZUay5VtlT8/kdR6FlvqTDUiJecMjXsBb0+k1H/qc9ME5n2XKPo8q/MZwEIA1GmGgYMokKGjVvMiDow==} engines: {node: '>=14.0.0'} @@ -4769,6 +5354,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/eventstream-serde-browser@2.1.3: + resolution: {integrity: sha512-qAgKbZ9m2oBfSyJWWurX/MvQFRPrYypj79cDSleEgDwBoez6Tfd+FTpu2L/j3ZeC3mDlDHIKWksoeaXZpLLAHw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-serde-universal': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/eventstream-serde-config-resolver@2.1.1: resolution: {integrity: sha512-EqNqXYp3+dk//NmW3NAgQr9bEQ7fsu/CcxQmTiq07JlaIcne/CBWpMZETyXm9w5LXkhduBsdXdlMscfDUDn2fA==} engines: {node: '>=14.0.0'} @@ -4777,6 +5371,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/eventstream-serde-config-resolver@2.1.3: + resolution: {integrity: sha512-48rvsNv/MgAFCxOE0qwR7ZwKhaEdDoTxqH5HM+T6SDxICmPGb7gEuQzjTxQhcieCPgqyXeZFW8cU0QJxdowuIg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/eventstream-serde-node@2.1.1: resolution: {integrity: sha512-LF882q/aFidFNDX7uROAGxq3H0B7rjyPkV6QDn6/KDQ+CG7AFkRccjxRf1xqajq/Pe4bMGGr+VKAaoF6lELIQw==} engines: {node: '>=14.0.0'} @@ -4786,6 +5388,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/eventstream-serde-node@2.1.3: + resolution: {integrity: sha512-RPJWWDhj8isk3NtGfm3Xt1WdHyX9ZE42V+m1nLU1I0zZ1hEol/oawHsTnhva/VR5bn+bJ2zscx+BYr0cEPRtmg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-serde-universal': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/eventstream-serde-universal@2.1.1: resolution: {integrity: sha512-LR0mMT+XIYTxk4k2fIxEA1BPtW3685QlqufUEUAX1AJcfFfxNDKEvuCRZbO8ntJb10DrIFVJR9vb0MhDCi0sAQ==} engines: {node: '>=14.0.0'} @@ -4795,6 +5406,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/eventstream-serde-universal@2.1.3: + resolution: {integrity: sha512-ssvSMk1LX2jRhiOVgVLGfNJXdB8SvyjieKcJDHq698Gi3LOog6g/+l7ggrN+hZxyjUiDF4cUxgKaZTBUghzhLw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-codec': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/fetch-http-handler@2.4.1: resolution: {integrity: sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==} dependencies: @@ -4805,6 +5425,16 @@ packages: tslib: 2.6.2 dev: true + /@smithy/fetch-http-handler@2.4.3: + resolution: {integrity: sha512-Fn/KYJFo6L5I4YPG8WQb2hOmExgRmNpVH5IK2zU3JKrY5FKW7y9ar5e0BexiIC9DhSKqKX+HeWq/Y18fq7Dkpw==} + dependencies: + '@smithy/protocol-http': 3.2.1 + '@smithy/querystring-builder': 2.1.3 + '@smithy/types': 2.10.1 + '@smithy/util-base64': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/hash-blob-browser@2.1.1: resolution: {integrity: sha512-jizu1+2PAUjiGIfRtlPEU8Yo6zn+d78ti/ZHDesdf1SUn2BuZW433JlPoCOLH3dBoEEvTgLvQ8tUGSoTTALA+A==} dependencies: @@ -4814,6 +5444,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/hash-blob-browser@2.1.3: + resolution: {integrity: sha512-sHLTM5xQYw5Wxz07DFo+eh1PVC6P5+kazQRF1k5nsvOhZG5VnkIy4LZ7N0ZNWqJx16g9otGd5MvqUOpb3WWtgA==} + dependencies: + '@smithy/chunked-blob-reader': 2.1.1 + '@smithy/chunked-blob-reader-native': 2.1.1 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/hash-node@2.1.1: resolution: {integrity: sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==} engines: {node: '>=14.0.0'} @@ -4824,6 +5463,16 @@ packages: tslib: 2.6.2 dev: true + /@smithy/hash-node@2.1.3: + resolution: {integrity: sha512-FsAPCUj7VNJIdHbSxMd5uiZiF20G2zdSDgrgrDrHqIs/VMxK85Vqk5kMVNNDMCZmMezp6UKnac0B4nAyx7HJ9g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/hash-stream-node@2.1.1: resolution: {integrity: sha512-VgDaKcfCy0iHcmtAZgZ3Yw9g37Gkn2JsQiMtFQXUh8Wmo3GfNgDwLOtdhJ272pOT7DStzpe9cNr+eV5Au8KfQA==} engines: {node: '>=14.0.0'} @@ -4833,6 +5482,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/hash-stream-node@2.1.3: + resolution: {integrity: sha512-fWpUx2ca/u5lcD5RhNJogEG5FD7H0RDDpYmfQgxFqIUv3Ow7bZsapMukh8uzQPVO8R+NDAvSdxmgXoy4Hz8sFw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/invalid-dependency@2.1.1: resolution: {integrity: sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==} dependencies: @@ -4840,12 +5498,18 @@ packages: tslib: 2.6.2 dev: true + /@smithy/invalid-dependency@2.1.3: + resolution: {integrity: sha512-wkra7d/G4CbngV4xsjYyAYOvdAhahQje/WymuQdVEnXFExJopEu7fbL5AEAlBPgWHXwu94VnCSG00gVzRfExyg==} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/is-array-buffer@2.1.1: resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@smithy/md5-js@2.1.1: resolution: {integrity: sha512-L3MbIYBIdLlT+MWTYrdVSv/dow1+6iZ1Ad7xS0OHxTTs17d753ZcpOV4Ro7M7tRAVWML/sg2IAp/zzCb6aAttg==} @@ -4855,6 +5519,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/md5-js@2.1.3: + resolution: {integrity: sha512-zmn3M6+mP4IJlSmXBN9964AztgkIO8b5lRzAgdJn9AdCFwA6xLkcW2B6uEnpBjvotxtQMmXTUP19tIO7NmFPpw==} + dependencies: + '@smithy/types': 2.10.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/middleware-content-length@2.1.1: resolution: {integrity: sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==} engines: {node: '>=14.0.0'} @@ -4864,6 +5536,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/middleware-content-length@2.1.3: + resolution: {integrity: sha512-aJduhkC+dcXxdnv5ZpM3uMmtGmVFKx412R1gbeykS5HXDmRU6oSsyy2SoHENCkfOGKAQOjVE2WVqDJibC0d21g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/middleware-endpoint@2.4.1: resolution: {integrity: sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==} engines: {node: '>=14.0.0'} @@ -4877,6 +5558,19 @@ packages: tslib: 2.6.2 dev: true + /@smithy/middleware-endpoint@2.4.4: + resolution: {integrity: sha512-4yjHyHK2Jul4JUDBo2sTsWY9UshYUnXeb/TAK/MTaPEb8XQvDmpwSFnfIRDU45RY1a6iC9LCnmJNg/yHyfxqkw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-serde': 2.1.3 + '@smithy/node-config-provider': 2.2.4 + '@smithy/shared-ini-file-loader': 2.3.4 + '@smithy/types': 2.10.1 + '@smithy/url-parser': 2.1.3 + '@smithy/util-middleware': 2.1.3 + tslib: 2.6.2 + dev: false + /@smithy/middleware-retry@2.1.1: resolution: {integrity: sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==} engines: {node: '>=14.0.0'} @@ -4892,6 +5586,21 @@ packages: uuid: 8.3.2 dev: true + /@smithy/middleware-retry@2.1.4: + resolution: {integrity: sha512-Cyolv9YckZTPli1EkkaS39UklonxMd08VskiuMhURDjC0HHa/AD6aK/YoD21CHv9s0QLg0WMLvk9YeLTKkXaFQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.4 + '@smithy/protocol-http': 3.2.1 + '@smithy/service-error-classification': 2.1.3 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + '@smithy/util-middleware': 2.1.3 + '@smithy/util-retry': 2.1.3 + tslib: 2.6.2 + uuid: 8.3.2 + dev: false + /@smithy/middleware-serde@2.1.1: resolution: {integrity: sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==} engines: {node: '>=14.0.0'} @@ -4900,6 +5609,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/middleware-serde@2.1.3: + resolution: {integrity: sha512-s76LId+TwASrHhUa9QS4k/zeXDUAuNuddKklQzRgumbzge5BftVXHXIqL4wQxKGLocPwfgAOXWx+HdWhQk9hTg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/middleware-stack@2.1.1: resolution: {integrity: sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==} engines: {node: '>=14.0.0'} @@ -4908,6 +5625,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/middleware-stack@2.1.3: + resolution: {integrity: sha512-opMFufVQgvBSld/b7mD7OOEBxF6STyraVr1xel1j0abVILM8ALJvRoFbqSWHGmaDlRGIiV9Q5cGbWi0sdiEaLQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/node-config-provider@2.2.1: resolution: {integrity: sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==} engines: {node: '>=14.0.0'} @@ -4918,6 +5643,16 @@ packages: tslib: 2.6.2 dev: true + /@smithy/node-config-provider@2.2.4: + resolution: {integrity: sha512-nqazHCp8r4KHSFhRQ+T0VEkeqvA0U+RhehBSr1gunUuNW3X7j0uDrWBxB2gE9eutzy6kE3Y7L+Dov/UXT871vg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/property-provider': 2.1.3 + '@smithy/shared-ini-file-loader': 2.3.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/node-http-handler@2.3.1: resolution: {integrity: sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==} engines: {node: '>=14.0.0'} @@ -4929,6 +5664,17 @@ packages: tslib: 2.6.2 dev: true + /@smithy/node-http-handler@2.4.1: + resolution: {integrity: sha512-HCkb94soYhJMxPCa61wGKgmeKpJ3Gftx1XD6bcWEB2wMV1L9/SkQu/6/ysKBnbOzWRE01FGzwrTxucHypZ8rdg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.1.3 + '@smithy/protocol-http': 3.2.1 + '@smithy/querystring-builder': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/property-provider@2.1.1: resolution: {integrity: sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==} engines: {node: '>=14.0.0'} @@ -4937,6 +5683,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/property-provider@2.1.3: + resolution: {integrity: sha512-bMz3se+ySKWNrgm7eIiQMa2HO/0fl2D0HvLAdg9pTMcpgp4SqOAh6bz7Ik6y7uQqSrk4rLjIKgbQ6yzYgGehCQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/protocol-http@3.1.1: resolution: {integrity: sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==} engines: {node: '>=14.0.0'} @@ -4945,6 +5699,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/protocol-http@3.2.1: + resolution: {integrity: sha512-KLrQkEw4yJCeAmAH7hctE8g9KwA7+H2nSJwxgwIxchbp/L0B5exTdOQi9D5HinPLlothoervGmhpYKelZ6AxIA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/querystring-builder@2.1.1: resolution: {integrity: sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==} engines: {node: '>=14.0.0'} @@ -4954,6 +5716,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/querystring-builder@2.1.3: + resolution: {integrity: sha512-kFD3PnNqKELe6m9GRHQw/ftFFSZpnSeQD4qvgDB6BQN6hREHELSosVFUMPN4M3MDKN2jAwk35vXHLoDrNfKu0A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + '@smithy/util-uri-escape': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/querystring-parser@2.1.1: resolution: {integrity: sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==} engines: {node: '>=14.0.0'} @@ -4962,6 +5733,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/querystring-parser@2.1.3: + resolution: {integrity: sha512-3+CWJoAqcBMR+yvz6D+Fc5VdoGFtfenW6wqSWATWajrRMGVwJGPT3Vy2eb2bnMktJc4HU4bpjeovFa566P3knQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/service-error-classification@2.1.1: resolution: {integrity: sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==} engines: {node: '>=14.0.0'} @@ -4969,6 +5748,13 @@ packages: '@smithy/types': 2.9.1 dev: true + /@smithy/service-error-classification@2.1.3: + resolution: {integrity: sha512-iUrpSsem97bbXHHT/v3s7vaq8IIeMo6P6cXdeYHrx0wOJpMeBGQF7CB0mbJSiTm3//iq3L55JiEm8rA7CTVI8A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + dev: false + /@smithy/shared-ini-file-loader@2.3.1: resolution: {integrity: sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==} engines: {node: '>=14.0.0'} @@ -4977,6 +5763,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/shared-ini-file-loader@2.3.4: + resolution: {integrity: sha512-CiZmPg9GeDKbKmJGEFvJBsJcFnh0AQRzOtQAzj1XEa8N/0/uSN/v1LYzgO7ry8hhO8+9KB7+DhSW0weqBra4Aw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/signature-v4@2.1.1: resolution: {integrity: sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==} engines: {node: '>=14.0.0'} @@ -4991,6 +5785,20 @@ packages: tslib: 2.6.2 dev: true + /@smithy/signature-v4@2.1.3: + resolution: {integrity: sha512-Jq4iPPdCmJojZTsPePn4r1ULShh6ONkokLuxp1Lnk4Sq7r7rJp4HlA1LbPBq4bD64TIzQezIpr1X+eh5NYkNxw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-codec': 2.1.3 + '@smithy/is-array-buffer': 2.1.1 + '@smithy/types': 2.10.1 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-middleware': 2.1.3 + '@smithy/util-uri-escape': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/smithy-client@2.3.1: resolution: {integrity: sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==} engines: {node: '>=14.0.0'} @@ -5003,12 +5811,29 @@ packages: tslib: 2.6.2 dev: true + /@smithy/smithy-client@2.4.2: + resolution: {integrity: sha512-ntAFYN51zu3N3mCd95YFcFi/8rmvm//uX+HnK24CRbI6k5Rjackn0JhgKz5zOx/tbNvOpgQIwhSX+1EvEsBLbA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-endpoint': 2.4.4 + '@smithy/middleware-stack': 2.1.3 + '@smithy/protocol-http': 3.2.1 + '@smithy/types': 2.10.1 + '@smithy/util-stream': 2.1.3 + tslib: 2.6.2 + dev: false + + /@smithy/types@2.10.1: + resolution: {integrity: sha512-hjQO+4ru4cQ58FluQvKKiyMsFg0A6iRpGm2kqdH8fniyNd2WyanoOsYJfMX/IFLuLxEoW6gnRkNZy1y6fUUhtA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + /@smithy/types@2.9.1: resolution: {integrity: sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@smithy/url-parser@2.1.1: resolution: {integrity: sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==} @@ -5018,26 +5843,31 @@ packages: tslib: 2.6.2 dev: true + /@smithy/url-parser@2.1.3: + resolution: {integrity: sha512-X1NRA4WzK/ihgyzTpeGvI9Wn45y8HmqF4AZ/FazwAv8V203Ex+4lXqcYI70naX9ETqbqKVzFk88W6WJJzCggTQ==} + dependencies: + '@smithy/querystring-parser': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/util-base64@2.1.1: resolution: {integrity: sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==} engines: {node: '>=14.0.0'} dependencies: '@smithy/util-buffer-from': 2.1.1 tslib: 2.6.2 - dev: true /@smithy/util-body-length-browser@2.1.1: resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==} dependencies: tslib: 2.6.2 - dev: true /@smithy/util-body-length-node@2.2.1: resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@smithy/util-buffer-from@2.1.1: resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==} @@ -5045,14 +5875,12 @@ packages: dependencies: '@smithy/is-array-buffer': 2.1.1 tslib: 2.6.2 - dev: true /@smithy/util-config-provider@2.2.1: resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@smithy/util-defaults-mode-browser@2.1.1: resolution: {integrity: sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==} @@ -5065,6 +5893,17 @@ packages: tslib: 2.6.2 dev: true + /@smithy/util-defaults-mode-browser@2.1.4: + resolution: {integrity: sha512-J6XAVY+/g7jf03QMnvqPyU+8jqGrrtXoKWFVOS+n1sz0Lg8HjHJ1ANqaDN+KTTKZRZlvG8nU5ZrJOUL6VdwgcQ==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/property-provider': 2.1.3 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + /@smithy/util-defaults-mode-node@2.1.1: resolution: {integrity: sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==} engines: {node: '>= 10.0.0'} @@ -5078,6 +5917,19 @@ packages: tslib: 2.6.2 dev: true + /@smithy/util-defaults-mode-node@2.2.3: + resolution: {integrity: sha512-ttUISrv1uVOjTlDa3nznX33f0pthoUlP+4grhTvOzcLhzArx8qHB94/untGACOG3nlf8vU20nI2iWImfzoLkYA==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/config-resolver': 2.1.4 + '@smithy/credential-provider-imds': 2.2.4 + '@smithy/node-config-provider': 2.2.4 + '@smithy/property-provider': 2.1.3 + '@smithy/smithy-client': 2.4.2 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/util-endpoints@1.1.1: resolution: {integrity: sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==} engines: {node: '>= 14.0.0'} @@ -5087,12 +5939,20 @@ packages: tslib: 2.6.2 dev: true + /@smithy/util-endpoints@1.1.4: + resolution: {integrity: sha512-/qAeHmK5l4yQ4/bCIJ9p49wDe9rwWtOzhPHblu386fwPNT3pxmodgcs9jDCV52yK9b4rB8o9Sj31P/7Vzka1cg==} + engines: {node: '>= 14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.4 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/util-hex-encoding@2.1.1: resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@smithy/util-middleware@2.1.1: resolution: {integrity: sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==} @@ -5102,6 +5962,14 @@ packages: tslib: 2.6.2 dev: true + /@smithy/util-middleware@2.1.3: + resolution: {integrity: sha512-/+2fm7AZ2ozl5h8wM++ZP0ovE9/tiUUAHIbCfGfb3Zd3+Dyk17WODPKXBeJ/TnK5U+x743QmA0xHzlSm8I/qhw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/util-retry@2.1.1: resolution: {integrity: sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==} engines: {node: '>= 14.0.0'} @@ -5111,6 +5979,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/util-retry@2.1.3: + resolution: {integrity: sha512-Kbvd+GEMuozbNUU3B89mb99tbufwREcyx2BOX0X2+qHjq6Gvsah8xSDDgxISDwcOHoDqUWO425F0Uc/QIRhYkg==} + engines: {node: '>= 14.0.0'} + dependencies: + '@smithy/service-error-classification': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@smithy/util-stream@2.1.1: resolution: {integrity: sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==} engines: {node: '>=14.0.0'} @@ -5125,12 +6002,25 @@ packages: tslib: 2.6.2 dev: true + /@smithy/util-stream@2.1.3: + resolution: {integrity: sha512-HvpEQbP8raTy9n86ZfXiAkf3ezp1c3qeeO//zGqwZdrfaoOpGKQgF2Sv1IqZp7wjhna7pvczWaGUHjcOPuQwKw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/fetch-http-handler': 2.4.3 + '@smithy/node-http-handler': 2.4.1 + '@smithy/types': 2.10.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + /@smithy/util-uri-escape@2.1.1: resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 - dev: true /@smithy/util-utf8@2.1.1: resolution: {integrity: sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==} @@ -5138,7 +6028,6 @@ packages: dependencies: '@smithy/util-buffer-from': 2.1.1 tslib: 2.6.2 - dev: true /@smithy/util-waiter@2.1.1: resolution: {integrity: sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==} @@ -5149,6 +6038,15 @@ packages: tslib: 2.6.2 dev: true + /@smithy/util-waiter@2.1.3: + resolution: {integrity: sha512-3R0wNFAQQoH9e4m+bVLDYNOst2qNxtxFgq03WoNHWTBOqQT3jFnOBRj1W51Rf563xDA5kwqjziksxn6RKkHB+Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.1.3 + '@smithy/types': 2.10.1 + tslib: 2.6.2 + dev: false + /@storybook/addon-actions@7.6.13: resolution: {integrity: sha512-uxjBLzJNJfj8oS0orgLt7/Gs5tLoP2xhBESi5vjk+7BZjAgfoA6w5IwMwmh9sRB3+aUx3ks7fGjE/hRT/YcaxA==} dependencies: @@ -6497,13 +7395,6 @@ packages: '@types/istanbul-lib-report': 3.0.3 dev: true - /@types/jest@29.5.2: - resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - dev: true - /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true @@ -6549,6 +7440,12 @@ packages: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true + /@types/multer@1.4.11: + resolution: {integrity: sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==} + dependencies: + '@types/express': 4.17.17 + dev: true + /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: @@ -6652,10 +7549,6 @@ packages: '@types/mime': 3.0.4 '@types/node': 20.5.7 - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - dev: true - /@types/superagent@8.1.3: resolution: {integrity: sha512-R/CfN6w2XsixLb1Ii8INfn+BT9sGPvw74OavfkW4SwY+jeUcAwLZv2+bXLJkndnimxjEBm0RPHgcjW9pLCa8cw==} dependencies: @@ -7799,7 +8692,6 @@ packages: /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: true /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} @@ -9297,11 +10189,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -9750,17 +10637,6 @@ packages: engines: {node: '>=6'} dev: true - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - dev: true - /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -9881,7 +10757,6 @@ packages: hasBin: true dependencies: strnum: 1.0.5 - dev: true /fastq@1.17.0: resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} @@ -11206,21 +12081,6 @@ packages: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} dev: true - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true - - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /jest-haste-map@29.7.0: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11240,31 +12100,6 @@ packages: fsevents: 2.3.3 dev: true - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true - - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.23.5 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - /jest-mock@27.5.1: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -14325,13 +15160,6 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true @@ -14537,7 +15365,6 @@ packages: /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: true /strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} @@ -15138,7 +15965,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -15473,6 +16299,11 @@ packages: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}