aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2023-06-06 11:13:18 +0200
committerChocobozzz <me@florianbigard.com>2023-06-29 10:18:21 +0200
commit881958d17902b1efbb184400d7e5030cfc5b7224 (patch)
tree08fcab0784bb6edbbaa9a3191581dd4aa0ce64d2
parent1c9dc98c273075d92161c0572fea5c4103926467 (diff)
downloadPeerTube-881958d17902b1efbb184400d7e5030cfc5b7224.tar.gz
PeerTube-881958d17902b1efbb184400d7e5030cfc5b7224.tar.zst
PeerTube-881958d17902b1efbb184400d7e5030cfc5b7224.zip
Correctly download files from S3
Use pre signed URLs to inject content disposition header
-rw-r--r--package.json1
-rw-r--r--server/controllers/download.ts39
-rw-r--r--server/lib/object-storage/index.ts1
-rw-r--r--yarn.lock139
4 files changed, 162 insertions, 18 deletions
diff --git a/package.json b/package.json
index e2feea5a2..7573232a1 100644
--- a/package.json
+++ b/package.json
@@ -78,6 +78,7 @@
78 "@aws-sdk/client-s3": "^3.190.0", 78 "@aws-sdk/client-s3": "^3.190.0",
79 "@aws-sdk/lib-storage": "^3.190.0", 79 "@aws-sdk/lib-storage": "^3.190.0",
80 "@aws-sdk/node-http-handler": "^3.190.0", 80 "@aws-sdk/node-http-handler": "^3.190.0",
81 "@aws-sdk/s3-request-presigner": "^3.345.0",
81 "@babel/parser": "^7.17.8", 82 "@babel/parser": "^7.17.8",
82 "@node-oauth/oauth2-server": "^4.2.0", 83 "@node-oauth/oauth2-server": "^4.2.0",
83 "@opentelemetry/api": "^1.1.0", 84 "@opentelemetry/api": "^1.1.0",
diff --git a/server/controllers/download.ts b/server/controllers/download.ts
index d675a2d6c..4c3ab0163 100644
--- a/server/controllers/download.ts
+++ b/server/controllers/download.ts
@@ -2,10 +2,11 @@ import cors from 'cors'
2import express from 'express' 2import express from 'express'
3import { logger } from '@server/helpers/logger' 3import { logger } from '@server/helpers/logger'
4import { VideosTorrentCache } from '@server/lib/files-cache/videos-torrent-cache' 4import { VideosTorrentCache } from '@server/lib/files-cache/videos-torrent-cache'
5import { generateHLSFilePresignedUrl, generateWebVideoPresignedUrl } from '@server/lib/object-storage'
5import { Hooks } from '@server/lib/plugins/hooks' 6import { Hooks } from '@server/lib/plugins/hooks'
6import { VideoPathManager } from '@server/lib/video-path-manager' 7import { VideoPathManager } from '@server/lib/video-path-manager'
7import { MStreamingPlaylist, MVideo, MVideoFile, MVideoFullLight } from '@server/types/models' 8import { MStreamingPlaylist, MStreamingPlaylistVideo, MVideo, MVideoFile, MVideoFullLight } from '@server/types/models'
8import { addQueryParams, forceNumber } from '@shared/core-utils' 9import { forceNumber } from '@shared/core-utils'
9import { HttpStatusCode, VideoStorage, VideoStreamingPlaylistType } from '@shared/models' 10import { HttpStatusCode, VideoStorage, VideoStreamingPlaylistType } from '@shared/models'
10import { STATIC_DOWNLOAD_PATHS } from '../initializers/constants' 11import { STATIC_DOWNLOAD_PATHS } from '../initializers/constants'
11import { asyncMiddleware, optionalAuthenticate, videosDownloadValidator } from '../middlewares' 12import { asyncMiddleware, optionalAuthenticate, videosDownloadValidator } from '../middlewares'
@@ -94,16 +95,16 @@ async function downloadVideoFile (req: express.Request, res: express.Response) {
94 95
95 if (!checkAllowResult(res, allowParameters, allowedResult)) return 96 if (!checkAllowResult(res, allowParameters, allowedResult)) return
96 97
98 // Express uses basename on filename parameter
99 const videoName = video.name.replace(/[/\\]/g, '_')
100 const downloadFilename = `${videoName}-${videoFile.resolution}p${videoFile.extname}`
101
97 if (videoFile.storage === VideoStorage.OBJECT_STORAGE) { 102 if (videoFile.storage === VideoStorage.OBJECT_STORAGE) {
98 return redirectToObjectStorage({ req, res, video, file: videoFile }) 103 return redirectToObjectStorage({ req, res, video, file: videoFile, downloadFilename })
99 } 104 }
100 105
101 await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(video), path => { 106 await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(video), path => {
102 // Express uses basename on filename parameter 107 return res.download(path, downloadFilename)
103 const videoName = video.name.replace(/[/\\]/g, '_')
104 const filename = `${videoName}-${videoFile.resolution}p${videoFile.extname}`
105
106 return res.download(path, filename)
107 }) 108 })
108} 109}
109 110
@@ -136,14 +137,14 @@ async function downloadHLSVideoFile (req: express.Request, res: express.Response
136 137
137 if (!checkAllowResult(res, allowParameters, allowedResult)) return 138 if (!checkAllowResult(res, allowParameters, allowedResult)) return
138 139
140 const downloadFilename = `${video.name}-${videoFile.resolution}p-${streamingPlaylist.getStringType()}${videoFile.extname}`
141
139 if (videoFile.storage === VideoStorage.OBJECT_STORAGE) { 142 if (videoFile.storage === VideoStorage.OBJECT_STORAGE) {
140 return redirectToObjectStorage({ req, res, video, file: videoFile }) 143 return redirectToObjectStorage({ req, res, video, streamingPlaylist, file: videoFile, downloadFilename })
141 } 144 }
142 145
143 await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(streamingPlaylist), path => { 146 await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(streamingPlaylist), path => {
144 const filename = `${video.name}-${videoFile.resolution}p-${streamingPlaylist.getStringType()}${videoFile.extname}` 147 return res.download(path, downloadFilename)
145
146 return res.download(path, filename)
147 }) 148 })
148} 149}
149 150
@@ -192,19 +193,21 @@ function checkAllowResult (res: express.Response, allowParameters: any, result?:
192 return true 193 return true
193} 194}
194 195
195function redirectToObjectStorage (options: { 196async function redirectToObjectStorage (options: {
196 req: express.Request 197 req: express.Request
197 res: express.Response 198 res: express.Response
198 video: MVideo 199 video: MVideo
199 file: MVideoFile 200 file: MVideoFile
201 streamingPlaylist?: MStreamingPlaylistVideo
202 downloadFilename: string
200}) { 203}) {
201 const { req, res, video, file } = options 204 const { res, video, streamingPlaylist, file, downloadFilename } = options
202 205
203 const baseUrl = file.getObjectStorageUrl(video) 206 const url = streamingPlaylist
207 ? await generateHLSFilePresignedUrl({ streamingPlaylist, file, downloadFilename })
208 : await generateWebVideoPresignedUrl({ file, downloadFilename })
204 209
205 const url = video.hasPrivateStaticPath() && req.query.videoFileToken 210 logger.debug('Generating pre-signed URL %s for video %s', url, video.uuid)
206 ? addQueryParams(baseUrl, { videoFileToken: req.query.videoFileToken })
207 : baseUrl
208 211
209 return res.redirect(url) 212 return res.redirect(url)
210} 213}
diff --git a/server/lib/object-storage/index.ts b/server/lib/object-storage/index.ts
index 6525f8dfb..3ad6cab63 100644
--- a/server/lib/object-storage/index.ts
+++ b/server/lib/object-storage/index.ts
@@ -1,4 +1,5 @@
1export * from './keys' 1export * from './keys'
2export * from './proxy' 2export * from './proxy'
3export * from './pre-signed-urls'
3export * from './urls' 4export * from './urls'
4export * from './videos' 5export * from './videos'
diff --git a/yarn.lock b/yarn.lock
index 62cb00592..2686c4d4a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -430,6 +430,16 @@
430 "@aws-sdk/util-hex-encoding" "3.310.0" 430 "@aws-sdk/util-hex-encoding" "3.310.0"
431 tslib "^2.5.0" 431 tslib "^2.5.0"
432 432
433"@aws-sdk/eventstream-codec@3.342.0":
434 version "3.342.0"
435 resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.342.0.tgz#aef9ab3c5fdaa02c6da9836194eada9d35515fa1"
436 integrity sha512-IwtvSuplioMyiu/pQgpazKkGWDM5M5BOx85zmsB0uNxt6rmje8+WqPmGmuPdmJv4bLC5dJPLovcCp/fuH8XWhA==
437 dependencies:
438 "@aws-crypto/crc32" "3.0.0"
439 "@aws-sdk/types" "3.342.0"
440 "@aws-sdk/util-hex-encoding" "3.310.0"
441 tslib "^2.5.0"
442
433"@aws-sdk/eventstream-serde-browser@3.329.0": 443"@aws-sdk/eventstream-serde-browser@3.329.0":
434 version "3.329.0" 444 version "3.329.0"
435 resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.329.0.tgz#3ba7866a691905e2af8a89c1f562f91fb3779ef9" 445 resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.329.0.tgz#3ba7866a691905e2af8a89c1f562f91fb3779ef9"
@@ -571,6 +581,17 @@
571 "@aws-sdk/util-middleware" "3.329.0" 581 "@aws-sdk/util-middleware" "3.329.0"
572 tslib "^2.5.0" 582 tslib "^2.5.0"
573 583
584"@aws-sdk/middleware-endpoint@3.344.0":
585 version "3.344.0"
586 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.344.0.tgz#3acd2815fcbd07b005fb8ffea09a0a109b5acb93"
587 integrity sha512-rg4ysfusGw5tm8XTqNpdWo0wP0K79hZs3z1xkkskeSsMrbYiDn78Bkkt4s3JELUJY64VanQktPaKo08dNFYNZw==
588 dependencies:
589 "@aws-sdk/middleware-serde" "3.342.0"
590 "@aws-sdk/types" "3.342.0"
591 "@aws-sdk/url-parser" "3.342.0"
592 "@aws-sdk/util-middleware" "3.342.0"
593 tslib "^2.5.0"
594
574"@aws-sdk/middleware-expect-continue@3.329.0": 595"@aws-sdk/middleware-expect-continue@3.329.0":
575 version "3.329.0" 596 version "3.329.0"
576 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.329.0.tgz#2a69584020b9c93926b83735fbd9741de117a586" 597 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.329.0.tgz#2a69584020b9c93926b83735fbd9741de117a586"
@@ -667,6 +688,14 @@
667 "@aws-sdk/types" "3.329.0" 688 "@aws-sdk/types" "3.329.0"
668 tslib "^2.5.0" 689 tslib "^2.5.0"
669 690
691"@aws-sdk/middleware-serde@3.342.0":
692 version "3.342.0"
693 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.342.0.tgz#ed051e4e7dfc33e431aa27f260e065b9fbb5ee0f"
694 integrity sha512-WRD+Cyu6+h1ymfPnAw4fI2q3zXjihJ55HFe1uRF8VPN4uBbJNfN3IqL38y/SMEdZ0gH9zNlRNxZLhR0q6SNZEQ==
695 dependencies:
696 "@aws-sdk/types" "3.342.0"
697 tslib "^2.5.0"
698
670"@aws-sdk/middleware-signing@3.329.0": 699"@aws-sdk/middleware-signing@3.329.0":
671 version "3.329.0" 700 version "3.329.0"
672 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.329.0.tgz#25011abb0911c1a23840d8d228676758f5b55926" 701 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.329.0.tgz#25011abb0911c1a23840d8d228676758f5b55926"
@@ -694,6 +723,13 @@
694 dependencies: 723 dependencies:
695 tslib "^2.5.0" 724 tslib "^2.5.0"
696 725
726"@aws-sdk/middleware-stack@3.342.0":
727 version "3.342.0"
728 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.342.0.tgz#e755815cb22a66f15a964db12e998211f736eda0"
729 integrity sha512-nDYtLAv9IZq8YFxtbyAiK/U1mtvtJS0DG6HiIPT5jpHcRpuWRHQ170EAW51zYts+21Ffj1VA6ZPkbup83+T6/w==
730 dependencies:
731 tslib "^2.5.0"
732
697"@aws-sdk/middleware-user-agent@3.332.0": 733"@aws-sdk/middleware-user-agent@3.332.0":
698 version "3.332.0" 734 version "3.332.0"
699 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.332.0.tgz#6f2de9579b09dd7feeab27ef8a18c236694ad903" 735 resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.332.0.tgz#6f2de9579b09dd7feeab27ef8a18c236694ad903"
@@ -741,6 +777,14 @@
741 "@aws-sdk/types" "3.329.0" 777 "@aws-sdk/types" "3.329.0"
742 tslib "^2.5.0" 778 tslib "^2.5.0"
743 779
780"@aws-sdk/protocol-http@3.342.0":
781 version "3.342.0"
782 resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.342.0.tgz#2f4852a1ff14491f8785ca094684e7fcd80db4e5"
783 integrity sha512-zuF2urcTJBZ1tltPdTBQzRasuGB7+4Yfs9i5l0F7lE0luK5Azy6G+2r3WWENUNxFTYuP94GrrqaOhVyj8XXLPQ==
784 dependencies:
785 "@aws-sdk/types" "3.342.0"
786 tslib "^2.5.0"
787
744"@aws-sdk/querystring-builder@3.329.0": 788"@aws-sdk/querystring-builder@3.329.0":
745 version "3.329.0" 789 version "3.329.0"
746 resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.329.0.tgz#c6e6dd03dcd4378d1fbee576ce2a81dd94ac46a6" 790 resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.329.0.tgz#c6e6dd03dcd4378d1fbee576ce2a81dd94ac46a6"
@@ -750,6 +794,15 @@
750 "@aws-sdk/util-uri-escape" "3.310.0" 794 "@aws-sdk/util-uri-escape" "3.310.0"
751 tslib "^2.5.0" 795 tslib "^2.5.0"
752 796
797"@aws-sdk/querystring-builder@3.342.0":
798 version "3.342.0"
799 resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.342.0.tgz#1163c1b9ec901b1264911be504a42638113f1002"
800 integrity sha512-tb3FbtC36a7XBYeupdKm60LeM0etp73I6/7pDAkzAlw7zJdvY0aQIvj1c0U6nZlwZF8sSSxC7vlamR+wCspdMw==
801 dependencies:
802 "@aws-sdk/types" "3.342.0"
803 "@aws-sdk/util-uri-escape" "3.310.0"
804 tslib "^2.5.0"
805
753"@aws-sdk/querystring-parser@3.329.0": 806"@aws-sdk/querystring-parser@3.329.0":
754 version "3.329.0" 807 version "3.329.0"
755 resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.329.0.tgz#dbbf2fd23ff0dfa2e4663fa414de1d5e60814896" 808 resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.329.0.tgz#dbbf2fd23ff0dfa2e4663fa414de1d5e60814896"
@@ -758,6 +811,27 @@
758 "@aws-sdk/types" "3.329.0" 811 "@aws-sdk/types" "3.329.0"
759 tslib "^2.5.0" 812 tslib "^2.5.0"
760 813
814"@aws-sdk/querystring-parser@3.342.0":
815 version "3.342.0"
816 resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.342.0.tgz#20b3e13cb727171045625c1fbb87e351f300bb20"
817 integrity sha512-6svvr/LZW1EPJaARnOpjf92FIiK25wuO7fRq05gLTcTRAfUMDvub+oDg3Ro9EjJERumrYQrYCem5Qi4X9w8K2g==
818 dependencies:
819 "@aws-sdk/types" "3.342.0"
820 tslib "^2.5.0"
821
822"@aws-sdk/s3-request-presigner@^3.345.0":
823 version "3.345.0"
824 resolved "https://registry.yarnpkg.com/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.345.0.tgz#3e1e82123b57eae816bc3132c23244b4272d327d"
825 integrity sha512-xtmYp0d5OzYoiXo2Vw4JtIyW40OvFU68keC4p4Ik9ttQVVQIQ9kgphxBGAYezgcXNBbxeZ/VJUZuP7SkbVlyWA==
826 dependencies:
827 "@aws-sdk/middleware-endpoint" "3.344.0"
828 "@aws-sdk/protocol-http" "3.342.0"
829 "@aws-sdk/signature-v4-multi-region" "3.344.0"
830 "@aws-sdk/smithy-client" "3.342.0"
831 "@aws-sdk/types" "3.342.0"
832 "@aws-sdk/util-format-url" "3.342.0"
833 tslib "^2.5.0"
834
761"@aws-sdk/service-error-classification@3.329.0": 835"@aws-sdk/service-error-classification@3.329.0":
762 version "3.329.0" 836 version "3.329.0"
763 resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.329.0.tgz#32db59091ff28f14e526cee738bc14e32a6850f6" 837 resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.329.0.tgz#32db59091ff28f14e526cee738bc14e32a6850f6"
@@ -781,6 +855,16 @@
781 "@aws-sdk/types" "3.329.0" 855 "@aws-sdk/types" "3.329.0"
782 tslib "^2.5.0" 856 tslib "^2.5.0"
783 857
858"@aws-sdk/signature-v4-multi-region@3.344.0":
859 version "3.344.0"
860 resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.344.0.tgz#38c2da1c75c13d93964ac4a3682b427eeb75253a"
861 integrity sha512-B5hN9b0Qa3UvpzsLjGIeCZ9AXE1qpwSXNXEeGcAdUIyf6lG3l+JMREKr+ZVaqAwAcZCOWmUyuuHIhkiK5YzClg==
862 dependencies:
863 "@aws-sdk/protocol-http" "3.342.0"
864 "@aws-sdk/signature-v4" "3.342.0"
865 "@aws-sdk/types" "3.342.0"
866 tslib "^2.5.0"
867
784"@aws-sdk/signature-v4@3.329.0": 868"@aws-sdk/signature-v4@3.329.0":
785 version "3.329.0" 869 version "3.329.0"
786 resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.329.0.tgz#8d40683189678f49504169c923e8342247b1da70" 870 resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.329.0.tgz#8d40683189678f49504169c923e8342247b1da70"
@@ -794,6 +878,20 @@
794 "@aws-sdk/util-utf8" "3.310.0" 878 "@aws-sdk/util-utf8" "3.310.0"
795 tslib "^2.5.0" 879 tslib "^2.5.0"
796 880
881"@aws-sdk/signature-v4@3.342.0":
882 version "3.342.0"
883 resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.342.0.tgz#c2249594c53c76891986e3a54a077062a0b55b63"
884 integrity sha512-OWrGO2UOa1ENpy0kYd2shK4sklQygWUqvWLx9FotDbjIeUIEfAnqoPq/QqcXVrNyT/UvPi4iIrjHJEO8JCNRmA==
885 dependencies:
886 "@aws-sdk/eventstream-codec" "3.342.0"
887 "@aws-sdk/is-array-buffer" "3.310.0"
888 "@aws-sdk/types" "3.342.0"
889 "@aws-sdk/util-hex-encoding" "3.310.0"
890 "@aws-sdk/util-middleware" "3.342.0"
891 "@aws-sdk/util-uri-escape" "3.310.0"
892 "@aws-sdk/util-utf8" "3.310.0"
893 tslib "^2.5.0"
894
797"@aws-sdk/smithy-client@3.329.0": 895"@aws-sdk/smithy-client@3.329.0":
798 version "3.329.0" 896 version "3.329.0"
799 resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.329.0.tgz#54705963939855c87ae6e6c88196d23e819d728e" 897 resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.329.0.tgz#54705963939855c87ae6e6c88196d23e819d728e"
@@ -803,6 +901,15 @@
803 "@aws-sdk/types" "3.329.0" 901 "@aws-sdk/types" "3.329.0"
804 tslib "^2.5.0" 902 tslib "^2.5.0"
805 903
904"@aws-sdk/smithy-client@3.342.0":
905 version "3.342.0"
906 resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.342.0.tgz#976ec7ca4e029145707c33d6300d60efcee53214"
907 integrity sha512-HQ4JejjHU2X7OAZPwixFG+EyPSjmoZqll7EvWjPSKyclWrM320haWWz1trVzjG/AgPfeDLfRkH/JoMr13lECew==
908 dependencies:
909 "@aws-sdk/middleware-stack" "3.342.0"
910 "@aws-sdk/types" "3.342.0"
911 tslib "^2.5.0"
912
806"@aws-sdk/token-providers@3.335.0": 913"@aws-sdk/token-providers@3.335.0":
807 version "3.335.0" 914 version "3.335.0"
808 resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.335.0.tgz#fcd7bdf62a17343c3bd6f57f58511e6eda7b81f9" 915 resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.335.0.tgz#fcd7bdf62a17343c3bd6f57f58511e6eda7b81f9"
@@ -821,6 +928,13 @@
821 dependencies: 928 dependencies:
822 tslib "^2.5.0" 929 tslib "^2.5.0"
823 930
931"@aws-sdk/types@3.342.0":
932 version "3.342.0"
933 resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.342.0.tgz#0bcba3b5966f28e0725122697a19ece8647afbec"
934 integrity sha512-5uyXVda/AgUpdZNJ9JPHxwyxr08miPiZ/CKSMcRdQVjcNnrdzY9m/iM9LvnQT44sQO+IEEkF2IoZIWvZcq199A==
935 dependencies:
936 tslib "^2.5.0"
937
824"@aws-sdk/url-parser@3.329.0": 938"@aws-sdk/url-parser@3.329.0":
825 version "3.329.0" 939 version "3.329.0"
826 resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.329.0.tgz#a2862834a832ec1d379791f5233e378b75fc63ad" 940 resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.329.0.tgz#a2862834a832ec1d379791f5233e378b75fc63ad"
@@ -830,6 +944,15 @@
830 "@aws-sdk/types" "3.329.0" 944 "@aws-sdk/types" "3.329.0"
831 tslib "^2.5.0" 945 tslib "^2.5.0"
832 946
947"@aws-sdk/url-parser@3.342.0":
948 version "3.342.0"
949 resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.342.0.tgz#c0be80c1d88b0ff8a8224de0ff7de64ccd5ef186"
950 integrity sha512-r4s/FDK6iywl8l4TqEwIwtNvxWO0kZes03c/yCiRYqxlkjVmbXEOodn5IAAweAeS9yqC3sl/wKbsaoBiGFn45g==
951 dependencies:
952 "@aws-sdk/querystring-parser" "3.342.0"
953 "@aws-sdk/types" "3.342.0"
954 tslib "^2.5.0"
955
833"@aws-sdk/util-arn-parser@3.310.0": 956"@aws-sdk/util-arn-parser@3.310.0":
834 version "3.310.0" 957 version "3.310.0"
835 resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba" 958 resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba"
@@ -904,6 +1027,15 @@
904 "@aws-sdk/types" "3.329.0" 1027 "@aws-sdk/types" "3.329.0"
905 tslib "^2.5.0" 1028 tslib "^2.5.0"
906 1029
1030"@aws-sdk/util-format-url@3.342.0":
1031 version "3.342.0"
1032 resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.342.0.tgz#c2f0e0fd831b2fadb1341bce7fdaad3da3e61cf4"
1033 integrity sha512-GXFxd7unAT3FkJmfTLABcbzDLMiLAtaWYcUlfV/6oHGxc+Pgv/IRq+0kWeBOlivqwRKxr8rAaCS0U8NcnSASDA==
1034 dependencies:
1035 "@aws-sdk/querystring-builder" "3.342.0"
1036 "@aws-sdk/types" "3.342.0"
1037 tslib "^2.5.0"
1038
907"@aws-sdk/util-hex-encoding@3.310.0": 1039"@aws-sdk/util-hex-encoding@3.310.0":
908 version "3.310.0" 1040 version "3.310.0"
909 resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz#19294c78986c90ae33f04491487863dc1d33bd87" 1041 resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz#19294c78986c90ae33f04491487863dc1d33bd87"
@@ -925,6 +1057,13 @@
925 dependencies: 1057 dependencies:
926 tslib "^2.5.0" 1058 tslib "^2.5.0"
927 1059
1060"@aws-sdk/util-middleware@3.342.0":
1061 version "3.342.0"
1062 resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.342.0.tgz#db8f50136bcba3d480d5c8e5340aecaa1e1c3a6c"
1063 integrity sha512-P2LYyMP4JUFZBy9DcMvCDxWU34mlShCyrqBZ1ouuGW7UMgRb1PTEvpLAVndIWn9H+1KGDFjMqOWp1FZHr4YZOA==
1064 dependencies:
1065 tslib "^2.5.0"
1066
928"@aws-sdk/util-retry@3.329.0": 1067"@aws-sdk/util-retry@3.329.0":
929 version "3.329.0" 1068 version "3.329.0"
930 resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.329.0.tgz#20b71504dd907e70a457cd56dcd131d08d6de39c" 1069 resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.329.0.tgz#20b71504dd907e70a457cd56dcd131d08d6de39c"