From 5becd6ad003b75004eab06e2b6bdd1ba267819ce Mon Sep 17 00:00:00 2001 From: Gilles Piou Date: Sun, 23 Jan 2022 03:31:51 +0800 Subject: [PATCH] Migrate to @aws-sdk/client-s3 --- README.md | 6 +- lib/index.js | 95 ++-- lib/s3-paging-stream.js | 42 -- package-lock.json | 1058 +++++++++++++++++++++++++++++++++++---- package.json | 2 +- test/index.js | 68 ++- 6 files changed, 1066 insertions(+), 205 deletions(-) delete mode 100644 lib/s3-paging-stream.js diff --git a/README.md b/README.md index 2822e65..90a73a9 100644 --- a/README.md +++ b/README.md @@ -173,8 +173,10 @@ var publisher = awspublish.create({ params: { Bucket: "..." }, - accessKeyId: "akid", - secretAccessKey: "secret" + credentials: { + accessKeyId: "akid", + secretAccessKey: "secret" + } }); ``` diff --git a/lib/index.js b/lib/index.js index dd6970d..4573bac 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,4 @@ -var AWS = require('aws-sdk'), - s3pagingStream = require('./s3-paging-stream'), +var { S3 } = require('@aws-sdk/client-s3'), Stream = require('stream'), fs = require('fs'), through = require('through2'), @@ -45,7 +44,7 @@ function getContentType(file) { * Turn the HTTP style headers into AWS Object params */ -function toAwsParams(file) { +function toAwsParams(bucket, file) { var params = {}; var headers = file.s3.headers || {}; @@ -60,6 +59,7 @@ function toAwsParams(file) { } } + params.Bucket = bucket; params.Key = file.s3.path; params.Body = file.contents; @@ -114,7 +114,7 @@ function fileShouldBeDeleted(key, whitelist) { return true; } -function buildDeleteMultiple(keys) { +function buildDeleteMultiple(Bucket, keys) { if (!keys || !keys.length) return; var deleteObjects = keys.map(function (k) { @@ -123,6 +123,7 @@ function buildDeleteMultiple(keys) { var chunks = chunk(deleteObjects, 1000); return chunks.map(function (each) { return { + Bucket, Delete: { Objects: each, }, @@ -202,8 +203,12 @@ module.exports.reporter = function (param) { */ function Publisher(AWSConfig, cacheOptions) { + if (!AWSConfig.region) { + AWSConfig.region = 'aws-global'; + } + this.config = AWSConfig; - this.client = new AWS.S3(AWSConfig); + this.client = new S3(AWSConfig); var bucket = this.config.params.Bucket; if (!bucket) { @@ -348,9 +353,14 @@ Publisher.prototype.publish = function (headers, options) { if (options.simulate) return cb(null, file); // get s3 headers - _this.client.headObject({ Key: file.s3.path }, function (err, res) { + const params = { + Bucket: _this.client.config.params.Bucket, + Key: file.s3.path, + }; + _this.client.headObject(params, function (err, res) { //ignore 403 and 404 errors since we're checking if a file exists on s3 - if (err && [403, 404].indexOf(err.statusCode) < 0) return cb(err); + if (err && [403, 404].indexOf(err.$response.statusCode) < 0) + return cb(err); res = res || {}; @@ -370,7 +380,8 @@ Publisher.prototype.publish = function (headers, options) { } else { file.s3.state = res.ETag ? 'update' : 'create'; - _this.client.putObject(toAwsParams(file), function (err) { + const params = toAwsParams(_this.client.config.params.Bucket, file); + _this.client.putObject(params, function (err) { if (err) return cb(err); file.s3.date = new Date(); @@ -405,46 +416,48 @@ Publisher.prototype.sync = function (prefix, whitelistedFiles) { cb(); }; - stream._flush = function (cb) { - var toDelete = [], - lister; - - lister = s3pagingStream( - client.listObjectsV2({ Prefix: prefix }), - function (_in) { - return _in.Key; - } - ); + stream._flush = async function (cb) { + const toDelete = []; + let objects = []; + let token = void 0; - lister.on('data', function (key) { - var deleteFile; - if (newFiles[key]) return; - if (!fileShouldBeDeleted(key, whitelistedFiles)) return; - deleteFile = new Vinyl({}); + do { + const { Contents, NextContinuationToken } = await client.listObjectsV2({ + Bucket: client.config.params.Bucket, + Prefix: prefix, + ContinuationToken: token, + }); + objects = objects.concat(Contents); + token = NextContinuationToken; + } while (token); + + for (const { Key } of objects) { + if (newFiles[Key]) continue; + if (!fileShouldBeDeleted(Key, whitelistedFiles)) continue; + const deleteFile = new Vinyl({}); deleteFile.s3 = { - path: key, + path: Key, state: 'delete', headers: {}, }; stream.push(deleteFile); - toDelete.push(key); - }); - - lister.on('end', function () { - if (!toDelete.length) return cb(); - Promise.all( - buildDeleteMultiple(toDelete).map(function (each) { - return client.deleteObjects(each).promise(); - }) - ) - .then(function () { - cb(); - }) - .catch(function (e) { - cb(e); - }); - }); + toDelete.push(Key); + } + + Promise.all( + buildDeleteMultiple(client.config.params.Bucket, toDelete).map(function ( + each + ) { + return client.deleteObjects(each); + }) + ) + .then(function () { + cb(); + }) + .catch(function (e) { + cb(e); + }); }; return stream; diff --git a/lib/s3-paging-stream.js b/lib/s3-paging-stream.js deleted file mode 100644 index 72beee8..0000000 --- a/lib/s3-paging-stream.js +++ /dev/null @@ -1,42 +0,0 @@ -var Readable = require('readable-stream').Readable; - -function identity(_in) { - return _in; -} - -/** - * Returns a stream for any paged AWS function - * you can optionally provide a mapping function - * like S3::listObjectsV2() - * - * @param {function} req - a non executed AWS function - * @param {function} fn - a function that selects/maps the results - * @param {object} opts - stream options - */ -module.exports = function (req, fn, opts) { - opts = Object.assign({}, opts, { read: read, objectMode: true }); - if (!fn) fn = identity; - - var stream = new Readable(opts); - - return stream; - - function read() { - if (!req) return; - - var _req = req; - req = null; //poor man's once! - _req.send(page_handler); - } - - function page_handler(e, data) { - if (e) return stream.destroy(e); - data.Contents.forEach(function (obj) { - stream.push(fn(obj)); - }); - - var nextPage = this.hasNextPage() ? this.nextPage() : null; - if (nextPage) nextPage.send(page_handler); - else stream.push(null); - } -}; diff --git a/package-lock.json b/package-lock.json index ab3270c..023de14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,941 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@aws-crypto/crc32": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz", + "integrity": "sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA==", + "requires": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/ie11-detection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.0.tgz", + "integrity": "sha512-pkVXf/dq6PITJ0jzYZ69VhL8VFOFoPZLZqtU/12SGnzYuJOOGNfF41q9GxdI1yqC8R13Rq3jOLKDFpUJFT5eTA==", + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "requires": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", + "requires": { + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/supports-web-crypto": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.0.tgz", + "integrity": "sha512-Ge7WQ3E0OC7FHYprsZV3h0QIcpdyJLvIeg+uTuHqRYm8D6qCFJoiC+edSzSyFiHtZf+NOQDJ1q46qxjtzIY2nA==", + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-crypto/util": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.1.tgz", + "integrity": "sha512-JJmFFwvbm08lULw4Nm5QOLg8+lAQeC8aCXK5xrtxntYzYXCGfHwUJ4Is3770Q7HmICsXthGQ+ZsDL7C2uH3yBQ==", + "requires": { + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@aws-sdk/abort-controller": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.47.2.tgz", + "integrity": "sha512-OpxsJ3b2KlpqTQKq6Py6JtLhA7KaAtHthH1JLLWStaFhU5/Js8nFnfPWdJIDRLpuAGyeRTbkjOEUsOkWAI5dAw==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/chunked-blob-reader": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.47.1.tgz", + "integrity": "sha512-D8wcAumX+q/VlX6lbYHWJqsaDBvj1BHVjJlBwLPrUBcsk0bRaJhhbhesej6DkhRX2pFhwXlHgc7CAgYhJCtc/w==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/chunked-blob-reader-native": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.47.2.tgz", + "integrity": "sha512-29+ZWESaFDQ9QXo7RGcUMuP89GTKo8bKlYplzNsO/B1uG17LgTgVHBapU3UBlF/EkOh1rzN5tEW+XwwstHvlXg==", + "requires": { + "@aws-sdk/util-base64-browser": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/client-s3": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.48.0.tgz", + "integrity": "sha512-zOr7WWr9b5V3nTQnMTz+kjDpLJceI5Vmx3+mwi5a3vFDwJBvMJK0C25A9koDXtrjn8/hszAePh6+rC0oW8QJsQ==", + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.48.0", + "@aws-sdk/config-resolver": "3.47.2", + "@aws-sdk/credential-provider-node": "3.48.0", + "@aws-sdk/eventstream-serde-browser": "3.47.2", + "@aws-sdk/eventstream-serde-config-resolver": "3.47.2", + "@aws-sdk/eventstream-serde-node": "3.47.2", + "@aws-sdk/fetch-http-handler": "3.47.2", + "@aws-sdk/hash-blob-browser": "3.47.2", + "@aws-sdk/hash-node": "3.47.2", + "@aws-sdk/hash-stream-node": "3.47.2", + "@aws-sdk/invalid-dependency": "3.47.2", + "@aws-sdk/md5-js": "3.47.2", + "@aws-sdk/middleware-apply-body-checksum": "3.47.2", + "@aws-sdk/middleware-bucket-endpoint": "3.47.2", + "@aws-sdk/middleware-content-length": "3.47.2", + "@aws-sdk/middleware-expect-continue": "3.47.2", + "@aws-sdk/middleware-host-header": "3.47.2", + "@aws-sdk/middleware-location-constraint": "3.47.2", + "@aws-sdk/middleware-logger": "3.47.2", + "@aws-sdk/middleware-retry": "3.47.2", + "@aws-sdk/middleware-sdk-s3": "3.47.2", + "@aws-sdk/middleware-serde": "3.47.2", + "@aws-sdk/middleware-signing": "3.47.2", + "@aws-sdk/middleware-ssec": "3.47.2", + "@aws-sdk/middleware-stack": "3.47.2", + "@aws-sdk/middleware-user-agent": "3.47.2", + "@aws-sdk/node-config-provider": "3.47.2", + "@aws-sdk/node-http-handler": "3.47.2", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/smithy-client": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/url-parser": "3.47.2", + "@aws-sdk/util-base64-browser": "3.47.1", + "@aws-sdk/util-base64-node": "3.47.2", + "@aws-sdk/util-body-length-browser": "3.47.1", + "@aws-sdk/util-body-length-node": "3.47.1", + "@aws-sdk/util-defaults-mode-browser": "3.47.2", + "@aws-sdk/util-defaults-mode-node": "3.47.2", + "@aws-sdk/util-user-agent-browser": "3.47.2", + "@aws-sdk/util-user-agent-node": "3.47.2", + "@aws-sdk/util-utf8-browser": "3.47.1", + "@aws-sdk/util-utf8-node": "3.47.2", + "@aws-sdk/util-waiter": "3.47.2", + "@aws-sdk/xml-builder": "3.47.1", + "entities": "2.2.0", + "fast-xml-parser": "3.19.0", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/client-sso": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.48.0.tgz", + "integrity": "sha512-A9f7B5k+X7bx062OQEcLHIMMIq0H1GlUqdw9xReCLd6W6vcRthbeSK5xbkM7TzHeKHE2/9qQYAy0lyKkxFE6bQ==", + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.47.2", + "@aws-sdk/fetch-http-handler": "3.47.2", + "@aws-sdk/hash-node": "3.47.2", + "@aws-sdk/invalid-dependency": "3.47.2", + "@aws-sdk/middleware-content-length": "3.47.2", + "@aws-sdk/middleware-host-header": "3.47.2", + "@aws-sdk/middleware-logger": "3.47.2", + "@aws-sdk/middleware-retry": "3.47.2", + "@aws-sdk/middleware-serde": "3.47.2", + "@aws-sdk/middleware-stack": "3.47.2", + "@aws-sdk/middleware-user-agent": "3.47.2", + "@aws-sdk/node-config-provider": "3.47.2", + "@aws-sdk/node-http-handler": "3.47.2", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/smithy-client": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/url-parser": "3.47.2", + "@aws-sdk/util-base64-browser": "3.47.1", + "@aws-sdk/util-base64-node": "3.47.2", + "@aws-sdk/util-body-length-browser": "3.47.1", + "@aws-sdk/util-body-length-node": "3.47.1", + "@aws-sdk/util-defaults-mode-browser": "3.47.2", + "@aws-sdk/util-defaults-mode-node": "3.47.2", + "@aws-sdk/util-user-agent-browser": "3.47.2", + "@aws-sdk/util-user-agent-node": "3.47.2", + "@aws-sdk/util-utf8-browser": "3.47.1", + "@aws-sdk/util-utf8-node": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/client-sts": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.48.0.tgz", + "integrity": "sha512-vOSIYCHjXB9nztZqwjIjV/jRZCfgej1YHpgqeNlfL8hPNhcrHemaoJaKHRPnhljIuHi+H5yQW7Pm4qJUFtGwKA==", + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.47.2", + "@aws-sdk/credential-provider-node": "3.48.0", + "@aws-sdk/fetch-http-handler": "3.47.2", + "@aws-sdk/hash-node": "3.47.2", + "@aws-sdk/invalid-dependency": "3.47.2", + "@aws-sdk/middleware-content-length": "3.47.2", + "@aws-sdk/middleware-host-header": "3.47.2", + "@aws-sdk/middleware-logger": "3.47.2", + "@aws-sdk/middleware-retry": "3.47.2", + "@aws-sdk/middleware-sdk-sts": "3.47.2", + "@aws-sdk/middleware-serde": "3.47.2", + "@aws-sdk/middleware-signing": "3.47.2", + "@aws-sdk/middleware-stack": "3.47.2", + "@aws-sdk/middleware-user-agent": "3.47.2", + "@aws-sdk/node-config-provider": "3.47.2", + "@aws-sdk/node-http-handler": "3.47.2", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/smithy-client": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/url-parser": "3.47.2", + "@aws-sdk/util-base64-browser": "3.47.1", + "@aws-sdk/util-base64-node": "3.47.2", + "@aws-sdk/util-body-length-browser": "3.47.1", + "@aws-sdk/util-body-length-node": "3.47.1", + "@aws-sdk/util-defaults-mode-browser": "3.47.2", + "@aws-sdk/util-defaults-mode-node": "3.47.2", + "@aws-sdk/util-user-agent-browser": "3.47.2", + "@aws-sdk/util-user-agent-node": "3.47.2", + "@aws-sdk/util-utf8-browser": "3.47.1", + "@aws-sdk/util-utf8-node": "3.47.2", + "entities": "2.2.0", + "fast-xml-parser": "3.19.0", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/config-resolver": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.47.2.tgz", + "integrity": "sha512-uv9U/qDOSqyCPQ71qiwMslqRMxYyt0y0h6X0aQ67GCPq4rbbU/dn8PqnYT0VfX/9Ss+DcbTm7vOTxVKv+8XADA==", + "requires": { + "@aws-sdk/signature-v4": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-config-provider": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.47.2.tgz", + "integrity": "sha512-HQKXY8y51kpTrD7P8fZJNf4MdCdu0+NcdOc+HScrQ21oZJv3BXUwXxKiOWY95Z3jYqyFwSKs1/FFuQ1mV0wjPg==", + "requires": { + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/credential-provider-imds": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.47.2.tgz", + "integrity": "sha512-7fCIofgU5pdKGgbCAYQ8H7sIFluN3oebFyFy7C4eXJyNy/8QKjFHEW3NkNCh0Bkd5sLOqkwYU3nyRx0CbNkEoQ==", + "requires": { + "@aws-sdk/node-config-provider": "3.47.2", + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/url-parser": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.48.0.tgz", + "integrity": "sha512-PSTfzK8V+3WVJOv+wlS4y09KYZx3iYj4Ad8LMGmGE4aqew8eRf6u2WuTmqrWwuOTxDra9PJ1ObcM5vBc+nZcYA==", + "requires": { + "@aws-sdk/credential-provider-env": "3.47.2", + "@aws-sdk/credential-provider-imds": "3.47.2", + "@aws-sdk/credential-provider-sso": "3.48.0", + "@aws-sdk/credential-provider-web-identity": "3.47.2", + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/shared-ini-file-loader": "3.47.1", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-credentials": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.48.0.tgz", + "integrity": "sha512-7CrbUT7yEZvYSQNXxZWN5KUx355wD+xrYIafoEST28T7nwcIiu7l2zpBY3JPhPIPNXqryVKfNQJvKV1dP3wF4g==", + "requires": { + "@aws-sdk/credential-provider-env": "3.47.2", + "@aws-sdk/credential-provider-imds": "3.47.2", + "@aws-sdk/credential-provider-ini": "3.48.0", + "@aws-sdk/credential-provider-process": "3.47.2", + "@aws-sdk/credential-provider-sso": "3.48.0", + "@aws-sdk/credential-provider-web-identity": "3.47.2", + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/shared-ini-file-loader": "3.47.1", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-credentials": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.47.2.tgz", + "integrity": "sha512-LBuABkVt/tdSoHy8hdGVnInZx5QADhK90dEHc41+HTTP3bCSNsSBIErkZnmhAD/3AGz7m/4qkPmhJOqzFisY/g==", + "requires": { + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/shared-ini-file-loader": "3.47.1", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-credentials": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.48.0.tgz", + "integrity": "sha512-31Ill3ZW35dueXb09PpOJ4C8oKdRGypbnycAgLYvvqYlO4LOs9FyQAsw+t2+ExvE6DznM0vkeWTQI3y7HUVYCA==", + "requires": { + "@aws-sdk/client-sso": "3.48.0", + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/shared-ini-file-loader": "3.47.1", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-credentials": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.47.2.tgz", + "integrity": "sha512-biJo8zJwNk8Dwrd/mkTcu8iLuOlGbsG2Uahta4StkOUhZ733xewOZ4WISLXVLocb/PXLM1lZQgkobwugpFOQRA==", + "requires": { + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/eventstream-marshaller": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.47.2.tgz", + "integrity": "sha512-KRWpWBuICxIJOp5vPe2NzT387uW8Q5IpyMNf8SNmFe9a9yTrg2oIRKkbEHHRNyCRnjbDmpU3Td58V9bpmaBXGw==", + "requires": { + "@aws-crypto/crc32": "2.0.0", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-hex-encoding": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/eventstream-serde-browser": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.47.2.tgz", + "integrity": "sha512-dXjJ0eoNCu9P6uOzNcIL0OoXhVbdR/LPTRJCIR7NcfGCmJ4ZXeYwgYcHFTosrT/+SXAFGgsoU23dqA63TFWlMQ==", + "requires": { + "@aws-sdk/eventstream-marshaller": "3.47.2", + "@aws-sdk/eventstream-serde-universal": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/eventstream-serde-config-resolver": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.47.2.tgz", + "integrity": "sha512-LE481skmmWqoPhGyhFWqf/0eEtAFKSJqyzPZEer6yFUpejaijek4Heo6B+Y3cyDGoASuqY4Wum+9q1Z1xPn2BQ==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/eventstream-serde-node": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.47.2.tgz", + "integrity": "sha512-hrEsbDFaRr7rNJw+qgua+YhkMgSkgR/YhBe+rdI20maaJARIjLo4C8eRqAqrmlE4i2+PU4CvM/fVdL9M3HQXfQ==", + "requires": { + "@aws-sdk/eventstream-marshaller": "3.47.2", + "@aws-sdk/eventstream-serde-universal": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/eventstream-serde-universal": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.47.2.tgz", + "integrity": "sha512-Zkfa2kHKNsWSAdO4atr9+JPEtcZzWuJqZHMr8MO5aXAMnKd5BA9XvzyGyhrfpr9HmnoqcbXrcx8iqDxcFEIp5g==", + "requires": { + "@aws-sdk/eventstream-marshaller": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/fetch-http-handler": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.47.2.tgz", + "integrity": "sha512-MZwwKtJwkWPm3Tzh+F3gcts13v1OuZih0slOO4GJpMxq46+lcW4DoW04lNHULJsyduXs4CziH8g65DDh0Yhq6w==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/querystring-builder": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-base64-browser": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/hash-blob-browser": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.47.2.tgz", + "integrity": "sha512-DG8kGFUqXH+eQLLQtzTuBxBEuLHJ03w3X2Geq7aNvfwh06OOJW3FYz+FTLH2f2HxqlKOQtf3MsqpH074zKC5/A==", + "requires": { + "@aws-sdk/chunked-blob-reader": "3.47.1", + "@aws-sdk/chunked-blob-reader-native": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/hash-node": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.47.2.tgz", + "integrity": "sha512-OpUCNGvchKI1WoOCtCm36gQtECMz2P5mJoXxAHNZQ5qQ69A5Vk/DZs1V24N94M7tl1u7ZpbLsJbWFdu+P4B27g==", + "requires": { + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-buffer-from": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/hash-stream-node": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.47.2.tgz", + "integrity": "sha512-ModP4kZkkj4j1djuANwETAwYL1uTcXBHVcVLvy/wVDVLIcEW1TgGBgkY0rSGFE4RWDESTjhLCBKNDgvpxReSLQ==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/invalid-dependency": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.47.2.tgz", + "integrity": "sha512-QLIp0Gv9IbSVXru1kS92M4kF9ZgHmVP7Us8dWSu5UC7LJt6Uxhxjb+e+F0h9qY1Z3Prior12I4r5COgVO3dWxA==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/is-array-buffer": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.47.1.tgz", + "integrity": "sha512-HQMvT3dP6DCjmn87WkzYxUF9RqkvuXgKfddLEKj/tg/OgDQJv9xIPjEEry8Fd36ncbBqaBmC/z2ETZhpzHQvXA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/md5-js": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.47.2.tgz", + "integrity": "sha512-APIz8mCPscYG6gCxvC2dbrBfpM3jHwAh+VqTmGHHxxO1AAP3y5ohtdl/2MsKtEPKuyT1IX2/YoUwcOyJj65xmw==", + "requires": { + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-utf8-browser": "3.47.1", + "@aws-sdk/util-utf8-node": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-apply-body-checksum": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-apply-body-checksum/-/middleware-apply-body-checksum-3.47.2.tgz", + "integrity": "sha512-sjZZZ7hOR9retsblYOs4cgsVg7r1Sfuvr/aIx16XXv3TeAk7fz8JTRf5STxMM6YkGIVMbvBOHpMNvcGGgJQhZQ==", + "requires": { + "@aws-sdk/is-array-buffer": "3.47.1", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-bucket-endpoint": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.47.2.tgz", + "integrity": "sha512-VrUrkAUS3CqI7tK3r0c0oT+1SE1L+euyq6j6Jt3XOjRMUXCkArecVkr3jEprbpVDiAkaTXEJE77iL1+98twiYA==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-arn-parser": "3.47.1", + "@aws-sdk/util-config-provider": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-content-length": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.47.2.tgz", + "integrity": "sha512-rpLtN6BczAfJnH1fpXyUOMdDFN3xrky3QZ4SULVgTLXNMOvN5zDJnjwUh/QNgEaEQhxd6lroVJSgosG3357kWg==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-expect-continue": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.47.2.tgz", + "integrity": "sha512-sLv5q8+POzpMvp9dx/OInFr6VWJreHOGFoauYN1n7a+8dmhr9tycBLq/j+eBXI2FWwC3dXCBdrC9qs4ieSRe0Q==", + "requires": { + "@aws-sdk/middleware-header-default": "3.47.2", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-header-default": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-header-default/-/middleware-header-default-3.47.2.tgz", + "integrity": "sha512-fCcQaQ/ac+h8nS8d8nSrvP/scNTCdkHQ8PpNXo7nSz4a67xbxxln61T4iHOin8z0m62NlFrhtMdlQTtDqDEZVg==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.47.2.tgz", + "integrity": "sha512-sDIGydvdO1LC7VQntTDMK+YYLRVCJAhrsCT8SxyAX0Jhu7Ek1BfRZzSZDwapL+idbMyyKsB80NpNoTWuKRrrew==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-location-constraint": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.47.2.tgz", + "integrity": "sha512-b6ozPYnInQB1Iv+UjLyhunTCUcw54AKtUO7Mj2QLT2GqCPDPry7ZmAC9Qtfv4Itv7HyM4VfR1roAGKZwT4zxQw==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.47.2.tgz", + "integrity": "sha512-Oz14cAaYmtzMYw0/ehlVLvMF4gqQS0qaYWGyyR4a3nONiwEDzxNMEQiEg7i8VgsP4usK7lfYZLXgwSmqo7uCzg==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-retry": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.47.2.tgz", + "integrity": "sha512-qgAE/+hVGXQDkqbVo+uFeb+N7mr7kBi0Oc1Fm490fm3uLQnXuyu3suIix//wxNejoLwIgKQGSLrQNgnXtuvhxw==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/service-error-classification": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0", + "uuid": "^8.3.2" + } + }, + "@aws-sdk/middleware-sdk-s3": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.47.2.tgz", + "integrity": "sha512-KjcrHHDIn4QCh8pTRVT2u8uOnpdPYVB2p+xblwyRvJt2VLhgJbgNpRy8pOwNo2lyfbOKrmWeBk4x0NduiXle8g==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/signature-v4": "3.47.2", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-arn-parser": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-sdk-sts": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.47.2.tgz", + "integrity": "sha512-KlO4cYb4Bxf/Jg/uxlxRrFvxUR/DmjMIS+JRZNGqK4XyYA+apYZkfM0XUtMiKc491n/euluf9A0AyTxpMgixxg==", + "requires": { + "@aws-sdk/middleware-signing": "3.47.2", + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/signature-v4": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-serde": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.47.2.tgz", + "integrity": "sha512-Gjw+fkG4UvvbP5LrGW1FzUq0IJB6QIBFxStE0gbyjkKNYtcb9c0R3dIwH5CSECtelDZScytwmBKaVe8NGi6wJA==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-signing": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.47.2.tgz", + "integrity": "sha512-r6/2gf5gwkVdI7EOa1TdYdfzOdCF3jkhjLi98c3nAxZNxZFGwoycIy7Bd6sCfOdcmk8NyVmR0APpsgD9q+a3nw==", + "requires": { + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/signature-v4": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-ssec": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.47.2.tgz", + "integrity": "sha512-dRNQJjvlg4omfhAfSYtZva4OpS/58aLO7y8l2o5sQHGPwob5OYO5zfPioi4h68UZw1fagG962hUywOkVJDJAuw==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-stack": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.47.2.tgz", + "integrity": "sha512-9wedI1L92stvg5fs6Y3CbUXYLZIYdI3Mrdqex+ulNRuepgZNORsk+dnb8rTkf9cO3nuWRrnfKBLc/uiTcA1dww==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.47.2.tgz", + "integrity": "sha512-LF5gOi37lJ3tkuDSqZVKHmqYY8oTIUTEdmPVUbBQtPKsx9xfCNbMNVAP+C+7bnbt6StZIZsvtu0M144yNFXPGQ==", + "requires": { + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/node-config-provider": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.47.2.tgz", + "integrity": "sha512-POdigo6ZXLRVWhmjE21Y1Q1ziPnM/c3rH0wHgzAtdx0Mfn6/9jS77QHMkZzC8MJ7lzgXVFDWM25evVZqdYrh+g==", + "requires": { + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/shared-ini-file-loader": "3.47.1", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/node-http-handler": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.47.2.tgz", + "integrity": "sha512-X2Y+H2DBoeDnrSe5rsVc63uhext230AuG/+hIFHK2/HkyG9DiiHKNCNj2w8N4FLWEX3l8KDif3C7BqYxj9ZkDg==", + "requires": { + "@aws-sdk/abort-controller": "3.47.2", + "@aws-sdk/protocol-http": "3.47.2", + "@aws-sdk/querystring-builder": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/property-provider": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.47.2.tgz", + "integrity": "sha512-0NiVJ6+JtRC8XOvNb1ofHtsjINrinC1/fDKvl/bDtJDhehC5EcIeiDQmHFUhGsgTyD+VpmuHj7E4AlV6BchNPQ==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/protocol-http": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.47.2.tgz", + "integrity": "sha512-XAQFbSigJD0fk61nSR6y6TMv3+o1IjymltWuDmGEtoI25pisC2M3A+3/xO9YHag/41CSgt9nQ+lh1iC4UlKKJw==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/querystring-builder": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.47.2.tgz", + "integrity": "sha512-rsckQ262jFSDVES6rOuTnSDM9XEbM57zxeBj5BtD6eCnyUD0G4FZa1xZRum4khoxfff6/eJ+i2uncKrEk1v+EQ==", + "requires": { + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-uri-escape": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/querystring-parser": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.47.2.tgz", + "integrity": "sha512-28BirdFhZ+Y2pUMuI9r1ATgcQyt4q3cSqqpLSy7ADGb7xHde6oA/ZfRdX/s7OVIHoAfhrjAeI+TbYjwso9F/HA==", + "requires": { + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/service-error-classification": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.47.2.tgz", + "integrity": "sha512-oJCJbAPYhTNguJUhD8hlD7ibWIDpkvGrhkcq89gxBcXHPl/2/kjsii0gr302IH452IJlumpVe5wOXoZeqZYjaw==" + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.47.1.tgz", + "integrity": "sha512-f0eVOMYkT4H0gOf1B9lw65/xeTa7rT9hocVB7DbjWk8Ifv46Uvlb4ZyYOLZIBDQyFNFrD/HHvja3BkzfV0MEOA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/signature-v4": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.47.2.tgz", + "integrity": "sha512-zJIhUY8LLiQldfM9wpgVw525dHbILJovyZm3xmm6Tq/t258cawNaeOvOp9w0I3ycA3gs+nKgMXdeMjLH8QLbWg==", + "requires": { + "@aws-sdk/is-array-buffer": "3.47.1", + "@aws-sdk/types": "3.47.1", + "@aws-sdk/util-hex-encoding": "3.47.1", + "@aws-sdk/util-uri-escape": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/smithy-client": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.47.2.tgz", + "integrity": "sha512-vCzZodWyKmLzC+N/B1GzDjKD8I5b/ILTwPHaaH7yJdncISq/3jyTMJVW7mZHbDX61a18rL/bADnIxEd524Y2hQ==", + "requires": { + "@aws-sdk/middleware-stack": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/types": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.47.1.tgz", + "integrity": "sha512-c+lxJJLD5Bq8HkrgaIWQfK8oGH53CYpRRJizyQ5qfRo9aXp/qshUnIVcgnA8t0k7jfzcIfa0Q7jSSBw3EerEbg==" + }, + "@aws-sdk/url-parser": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.47.2.tgz", + "integrity": "sha512-xapm+8toLY1FJmdGWl/YWCGSbbzPitiKmcg9+NP1DIyZyHjzeG5vBZ2SYejYtGOf+Qn1VKyNN2+Qs049FOsh6w==", + "requires": { + "@aws-sdk/querystring-parser": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-arn-parser": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.47.1.tgz", + "integrity": "sha512-Q+tZjYyBeWMyPJ6+l42JXS7gt5crXywJbLDGjoLoS+Ba0JDB5zp8IMRLzGzQpTO+VnbL4ZyEEUVEihyqFbB0iw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-base64-browser": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.47.1.tgz", + "integrity": "sha512-asStae2d1xvgs3czWvvVb4JWHfY2iV8yximL4MwF+Lb8XG/b8LH3tG1E5axAFVMBcljdvRB941N7w3rug7V9ig==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-base64-node": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.47.2.tgz", + "integrity": "sha512-0Oml66+9/uERV1dosecA/1tEd0zdiwI3kEobCF5w2f4gJDzUdaEoztcRwtbLcFv6yVT7XoW4evMQbtlcruypcQ==", + "requires": { + "@aws-sdk/util-buffer-from": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-body-length-browser": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.47.1.tgz", + "integrity": "sha512-qR307MATPC+4JtN7W9sSkchfdB3O4mulLKRpk7rF6Ns6vVwhaPfJstSGe9Qa68zYZXubF9h5WnoWuJz4N0Vqdw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-body-length-node": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.47.1.tgz", + "integrity": "sha512-U2K7+gi3bAQBb3WB1/trvA+4rPC2SKH9w/sRtqBwtxHNOjXjiCiF3oEYnbir7cdSfhzMH4HBYKbfkHZwTAHMfw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-buffer-from": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.47.2.tgz", + "integrity": "sha512-oLytLGiIeJEk7FcT7bdeQNv7+vvVVPuL5hyXlCjHZwoWuDxepjoDhTaIC9Isq1UyPKfSZaVpk/1nqREe4aYDHw==", + "requires": { + "@aws-sdk/is-array-buffer": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-config-provider": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.47.1.tgz", + "integrity": "sha512-kBs+YghZaOqChxLZDTR8dw5RQxJ/qF064EjRpC+TdCegLCO2UtZ97RXBvc5mdt94OxXGjGUjDiD/eAlpjjFNXw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-credentials": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-credentials/-/util-credentials-3.47.2.tgz", + "integrity": "sha512-C0L8pfZkJyWfuvLVRcM2Ff11t2mkM4lzjNBnQKdL80wuASZWCnAi50oUKBgwbHZdOsRKGV7C4zqAuTLTRaFpCQ==", + "requires": { + "@aws-sdk/shared-ini-file-loader": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-defaults-mode-browser": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.47.2.tgz", + "integrity": "sha512-ojAF5k/VFbPvJoj6/G6ekVQhbFvabUBvRhRaoQjkmj8LVEahtzcNcOxhu3FmH17mXR2oxWsGwvq6VAw6V3jLBg==", + "requires": { + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/types": "3.47.1", + "bowser": "^2.11.0", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-defaults-mode-node": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.47.2.tgz", + "integrity": "sha512-O35bXeahlepgPxg72XDN+5cXlbs+jZec5AH+7YYI+ldEVu6WxF0MxeQtMG4Fqpb19bpPIPz0SodHM1D1I53S5w==", + "requires": { + "@aws-sdk/config-resolver": "3.47.2", + "@aws-sdk/credential-provider-imds": "3.47.2", + "@aws-sdk/node-config-provider": "3.47.2", + "@aws-sdk/property-provider": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-hex-encoding": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.47.1.tgz", + "integrity": "sha512-9vBhp1E74s6nImK5xk7BkopQ10w6Vk8UrIinu71U7V/0PdjCEb4Jmnn++MLyim2jTT0QEGmJ6v0VjPZi9ETWaA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-locate-window": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.47.1.tgz", + "integrity": "sha512-dMcBhtyJ7ZMNS8RS4UOVbkiR0gGrBWv+p1s9NLfMNXod9zaTAlMIKl9de8Xdshguvc8//J7heQV/7+HMvFEq2g==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-uri-escape": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.47.1.tgz", + "integrity": "sha512-CGqm+bT07OCJSgDo48/4Fegh9tNPR3kcOMfNWZ/J6lrt+nfAnOdXx5zZB63PjKCt5zJ7LM0thOQgAeOf2WdJzQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.47.2.tgz", + "integrity": "sha512-dstakqLW8hXRMzR/s3uLpfYbMs/qDowG/Fp123cAuln4rUODG29VNFLkMAYRnG6RQ9hf2OtXsCfFGNSm+bnJMg==", + "requires": { + "@aws-sdk/types": "3.47.1", + "bowser": "^2.11.0", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.47.2.tgz", + "integrity": "sha512-9wYkGvTrOFWb+9QjziQma+l9M0u1tmHiIdL9r4Btsc9WVMsy1Y9HUUeXacM3dLLIzCpQ5dDbjIlAZWA8Rm3ZOQ==", + "requires": { + "@aws-sdk/node-config-provider": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.47.1.tgz", + "integrity": "sha512-PzHEdiBhfnZbHvZ+dIlIPodDbpgrpKDYslHe9A+tH8ZfuAxxmZEqnukp7QEkFr6mBcmq3H2thcPdNT45/5pA7Q==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-utf8-node": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.47.2.tgz", + "integrity": "sha512-itgWlytqhbD/pRiGxX7XY7RF8k15ScV816FUlZtOKeRpAphliFT07TGWKmiZcFxEbHpi9r8A5H1FOoPmyU635Q==", + "requires": { + "@aws-sdk/util-buffer-from": "3.47.2", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/util-waiter": { + "version": "3.47.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.47.2.tgz", + "integrity": "sha512-3zzOEDPRgHJ3o17Ri0vVmCKvqh9tA2lP9WbpXTjOgEAfdI/hsP2XhqJWVrlyN+wQ6FwPbuX3Jsb7lsp1OZP2bg==", + "requires": { + "@aws-sdk/abort-controller": "3.47.2", + "@aws-sdk/types": "3.47.1", + "tslib": "^2.3.0" + } + }, + "@aws-sdk/xml-builder": { + "version": "3.47.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.47.1.tgz", + "integrity": "sha512-SPDSKG7zw7MnGFVl3uIVNBBZo4WyNg8Wu82COfD8XaH+E/XiYiHjjoPq8eIscrQb799TXudHxy5h/C7dFACMxA==", + "requires": { + "tslib": "^2.3.0" + } + }, "@eslint/eslintrc": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", @@ -302,22 +1237,6 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "aws-sdk": { - "version": "2.1062.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1062.0.tgz", - "integrity": "sha512-QIU8jwi7Uqyvw2HjsXXXUZv3V/6TinUzLewrdl2EdvonqZCXhwMgnZx2F9I2x62IKH1RqnINwFWdoK+OTgcAjA==", - "requires": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.3.2", - "xml2js": "0.4.19" - } - }, "bach": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", @@ -396,11 +1315,6 @@ } } }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, "binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", @@ -417,6 +1331,11 @@ "file-uri-to-path": "1.0.0" } }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -468,16 +1387,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, "buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", @@ -1088,6 +1997,11 @@ "once": "^1.4.0" } }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -1285,11 +2199,6 @@ "through": "^2.3.8" } }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -1484,6 +2393,11 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-xml-parser": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", + "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==" + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2096,11 +3010,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -2385,11 +3294,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==" - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3471,14 +4375,10 @@ } }, "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "randombytes": { "version": "2.1.0", @@ -3707,12 +4607,12 @@ "dev": true }, "resolve": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.1.tgz", - "integrity": "sha512-lfEImVbnolPuaSZuLQ52cAxPBHeI77sPwCOWRdy12UG/CNa8an7oBHH1R+Fp1/mUqSJi4c8TIP6FOIPSZAUrEQ==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.8.0", + "is-core-module": "^2.8.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -3777,11 +4677,6 @@ "ret": "~0.1.10" } }, - "sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -4539,14 +5434,6 @@ "dev": true, "requires": { "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } } }, "urix": { @@ -4555,15 +5442,6 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -4576,9 +5454,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { "version": "2.3.0", @@ -4777,20 +5655,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 04b8dd2..f2959a8 100644 --- a/package.json +++ b/package.json @@ -26,8 +26,8 @@ "test": "mocha" }, "dependencies": { + "@aws-sdk/client-s3": "^3.48.0", "ansi-colors": "^4.1.1", - "aws-sdk": "^2.389.0", "clone": "^2.1.2", "fancy-log": "^2.0.0", "lodash.chunk": "^4.2.0", diff --git a/test/index.js b/test/index.js index a691209..93e72aa 100644 --- a/test/index.js +++ b/test/index.js @@ -38,12 +38,15 @@ describe('gulp-awspublish', function () { } catch (err) {} publisher._cache = {}; - var deleteParams = awspublish._buildDeleteMultiple([ - 'test/hello.txt', - 'test/hello2.txt', - 'test/hello3.txt', - 'test/hello.txtgz', - ]); + var deleteParams = awspublish._buildDeleteMultiple( + publisher.client.config.params.Bucket, + [ + 'test/hello.txt', + 'test/hello2.txt', + 'test/hello3.txt', + 'test/hello.txtgz', + ] + ); publisher.client.deleteObjects(deleteParams[0], done); }); @@ -68,7 +71,7 @@ describe('gulp-awspublish', function () { stream.on('error', function (err) { expect(err).to.be.ok; - expect(err.statusCode).to.eq(403); + expect(err.$response.statusCode).to.eq(403); done(); }); @@ -135,7 +138,10 @@ describe('gulp-awspublish', function () { 'text/plain; charset=utf-8' ); publisher.client.headObject( - { Key: 'test/hello.txt.gz' }, + { + Bucket: publisher.client.config.params.Bucket, + Key: 'test/hello.txt.gz', + }, function (err, res) { expect(res.ETag).to.exist; done(err); @@ -228,7 +234,10 @@ describe('gulp-awspublish', function () { files[0].contents.length ); publisher.client.headObject( - { Key: 'test/hello.txt' }, + { + Bucket: publisher.client.config.params.Bucket, + Key: 'test/hello.txt', + }, function (err, res) { expect(res.ETag).to.exist; done(err); @@ -264,7 +273,10 @@ describe('gulp-awspublish', function () { files[0].contents.length ); publisher.client.headObject( - { Key: 'test/hello.txt' }, + { + Bucket: publisher.client.config.params.Bucket, + Key: 'test/hello.txt', + }, function (err, res) { expect(res.ETag).to.exist; done(err); @@ -470,9 +482,12 @@ describe('gulp-awspublish', function () { expect(files).to.have.length(1); expect(files[0].s3.path).to.eq('test/simulate.txt'); publisher.client.headObject( - { Key: '/test/simulate.txt' }, + { + Bucket: publisher.client.config.params.Bucket, + Key: '/test/simulate.txt', + }, function (err) { - expect(err.statusCode).to.eq(404); + expect(err.$response.statusCode).to.eq(404); done(); } ); @@ -514,14 +529,17 @@ describe('gulp-awspublish', function () { describe('Sync', function () { // remove files before(function (done) { - var deleteParams = awspublish._buildDeleteMultiple([ - 'test/hello.txt', - 'test/hello2.txt', - 'test/hello3.txt', - 'test/hello.txtgz', - 'test/hello.txt.gz', - 'test/hello.unknown', - ]); + var deleteParams = awspublish._buildDeleteMultiple( + publisher.client.config.params.Bucket, + [ + 'test/hello.txt', + 'test/hello2.txt', + 'test/hello3.txt', + 'test/hello.txtgz', + 'test/hello.txt.gz', + 'test/hello.unknown', + ] + ); publisher.client.deleteObjects(deleteParams[0], done); }); @@ -536,7 +554,10 @@ describe('gulp-awspublish', function () { }; beforeEach(function (done) { - var params = awspublish._toAwsParams(file); + var params = awspublish._toAwsParams( + publisher.client.config.params.Bucket, + file + ); publisher.client.putObject(params, done); }); }); @@ -612,7 +633,10 @@ describe('gulp-awspublish', function () { stream.end(); }); it('chunks file deletion requests into 1K chunks', function () { - var res = awspublish._buildDeleteMultiple(new Array(1001).fill('test')); + var res = awspublish._buildDeleteMultiple( + publisher.client.config.params.Bucket, + new Array(1001).fill('test') + ); expect(res.length).to.eq(2); expect(res[1].Delete.Objects.length).to.eq(1); });