diff options
author | Chocobozzz <me@florianbigard.com> | 2023-06-06 11:13:18 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2023-06-29 10:18:21 +0200 |
commit | 881958d17902b1efbb184400d7e5030cfc5b7224 (patch) | |
tree | 08fcab0784bb6edbbaa9a3191581dd4aa0ce64d2 | |
parent | 1c9dc98c273075d92161c0572fea5c4103926467 (diff) | |
download | PeerTube-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.json | 1 | ||||
-rw-r--r-- | server/controllers/download.ts | 39 | ||||
-rw-r--r-- | server/lib/object-storage/index.ts | 1 | ||||
-rw-r--r-- | yarn.lock | 139 |
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' | |||
2 | import express from 'express' | 2 | import express from 'express' |
3 | import { logger } from '@server/helpers/logger' | 3 | import { logger } from '@server/helpers/logger' |
4 | import { VideosTorrentCache } from '@server/lib/files-cache/videos-torrent-cache' | 4 | import { VideosTorrentCache } from '@server/lib/files-cache/videos-torrent-cache' |
5 | import { generateHLSFilePresignedUrl, generateWebVideoPresignedUrl } from '@server/lib/object-storage' | ||
5 | import { Hooks } from '@server/lib/plugins/hooks' | 6 | import { Hooks } from '@server/lib/plugins/hooks' |
6 | import { VideoPathManager } from '@server/lib/video-path-manager' | 7 | import { VideoPathManager } from '@server/lib/video-path-manager' |
7 | import { MStreamingPlaylist, MVideo, MVideoFile, MVideoFullLight } from '@server/types/models' | 8 | import { MStreamingPlaylist, MStreamingPlaylistVideo, MVideo, MVideoFile, MVideoFullLight } from '@server/types/models' |
8 | import { addQueryParams, forceNumber } from '@shared/core-utils' | 9 | import { forceNumber } from '@shared/core-utils' |
9 | import { HttpStatusCode, VideoStorage, VideoStreamingPlaylistType } from '@shared/models' | 10 | import { HttpStatusCode, VideoStorage, VideoStreamingPlaylistType } from '@shared/models' |
10 | import { STATIC_DOWNLOAD_PATHS } from '../initializers/constants' | 11 | import { STATIC_DOWNLOAD_PATHS } from '../initializers/constants' |
11 | import { asyncMiddleware, optionalAuthenticate, videosDownloadValidator } from '../middlewares' | 12 | import { 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 | ||
195 | function redirectToObjectStorage (options: { | 196 | async 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 @@ | |||
1 | export * from './keys' | 1 | export * from './keys' |
2 | export * from './proxy' | 2 | export * from './proxy' |
3 | export * from './pre-signed-urls' | ||
3 | export * from './urls' | 4 | export * from './urls' |
4 | export * from './videos' | 5 | export * from './videos' |
@@ -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" |