From ef9eb0a89a88a2f0897a72c0f6b3e157e713a49c Mon Sep 17 00:00:00 2001 From: Luke Berndt Date: Sun, 9 Apr 2023 13:31:13 -0400 Subject: [PATCH] it is working with the new AWS S3 SDK --- backend/controllers/uploads.js | 19 +- backend/package-lock.json | 1411 ++++++++++++++++++++++++++++++++ backend/package.json | 3 + backend/sys_stats.js | 35 +- test.env.example | 1 + 5 files changed, 1435 insertions(+), 34 deletions(-) diff --git a/backend/controllers/uploads.js b/backend/controllers/uploads.js index 29b2c85..537c7a7 100644 --- a/backend/controllers/uploads.js +++ b/backend/controllers/uploads.js @@ -8,17 +8,18 @@ var Talkgroup = require("../models/talkgroup"); var { callModel: Call } = require("../models/call"); var secrets = require("../config/secrets"); var util = require("util") - +const { PutObjectCommand, S3Client } = require("@aws-sdk/client-s3"); +const {fromIni} = require("@aws-sdk/credential-providers"); var s3_endpoint = process.env['S3_ENDPOINT'] != null ? process.env['S3_ENDPOINT'] : 'https://s3.us-west-1.wasabisys.com'; var s3_region = process.env['S3_REGION'] != null ? process.env['S3_REGION'] : 'us-west-1'; var s3_bucket = process.env['S3_BUCKET'] != null ? process.env['S3_BUCKET'] : 'openmhz-west'; var s3_profile = process.env['S3_PROFILE'] != null ? process.env['S3_PROFILE'] : 'wasabi-account'; -import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; + const client = new S3Client({ credentials: fromIni({ profile: s3_profile }), - bucketEndpoint: s3_endpoint, + endpoint: s3_endpoint, region: s3_region, maxAttempts: 1 }); @@ -33,10 +34,10 @@ exports.upload = async function (req, res, next) { } var shortName = req.params.shortName.toLowerCase(); var apiKey = req.body.api_key; - + let item = null; try { - const item = System.findOne({ 'shortName': shortName }, ["key", "ignoreUnknownTalkgroup"]); + item = await System.findOne({ 'shortName': shortName }, ["key", "ignoreUnknownTalkgroup"]); } catch (err) { console.warn("[" + req.params.shortName + "] Error /:shortName/upload - Error: " + err); res.status(500); @@ -157,8 +158,7 @@ exports.upload = async function (req, res, next) { }); try { - const response = await client.send(command); - console.log(response); + await client.send(command); wasabiSrc.destroy(); fs.unlink(req.file.path, async (err) => { @@ -174,11 +174,8 @@ exports.upload = async function (req, res, next) { next(); } }); - if (err) { - console.error("[" + call.shortName + "] " + call.name + " - content-length: " + req.headers['content-length'] + " Wasabi Error", err); - } } catch (err) { - console.warn("[" + call.shortName + "] Upload Error: " + err + " Filename: " + call.name + " content-length: " + req.headers['content-length']); + console.warn("[" + call.shortName + "] Upload Error: " + err + " Filename: " + call.name + " content-length: " + req.headers['content-length'] + " Key: " + object_key + " Bucket: " + s3_bucket); res.status(500); sysStats.addError(call.toObject()); res.contentType('json'); diff --git a/backend/package-lock.json b/backend/package-lock.json index 3ec676f..55d6150 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -9,6 +9,9 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@aws-sdk/client-s3": "^3.309.0", + "@aws-sdk/credential-provider-process": "^3.306.0", + "@aws-sdk/credential-providers": "^3.309.0", "adm-zip": "^0.5.10", "aws-sdk": "^2.1353", "axios": "1.3.5", @@ -39,6 +42,1384 @@ "ws": "^8.13.0" } }, + "node_modules/@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/crc32c": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz", + "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32c/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz", + "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==", + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/abort-controller": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.306.0.tgz", + "integrity": "sha512-ewCvdUrMJMlnkNaqXdG7L2H6O7CDI036y6lkTU8gQqa2lCzZvqBkzz6R5NbWqb8TJPi69Z7lXEITgk2b0+pl6w==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/chunked-blob-reader": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.303.0.tgz", + "integrity": "sha512-Cofcujz08TTKA7CtsIcWyFTyfe84KBa72kTjsXA9GQgn0cuUHZgGoFpBzoyDT8Ff3TPMKmAGDXmllRGFZw4mQw==", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.309.0.tgz", + "integrity": "sha512-6UMOK77QndamzxOC3x02fPNNpTSgwbNBPnjru4yX0vyF3XRLHyUsMnDzm/PVZs1JFlQUtaeBEqOruY8yuHAwGg==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.309.0", + "@aws-sdk/config-resolver": "3.306.0", + "@aws-sdk/credential-provider-node": "3.309.0", + "@aws-sdk/fetch-http-handler": "3.306.0", + "@aws-sdk/hash-node": "3.306.0", + "@aws-sdk/invalid-dependency": "3.306.0", + "@aws-sdk/middleware-content-length": "3.306.0", + "@aws-sdk/middleware-endpoint": "3.306.0", + "@aws-sdk/middleware-host-header": "3.306.0", + "@aws-sdk/middleware-logger": "3.306.0", + "@aws-sdk/middleware-recursion-detection": "3.306.0", + "@aws-sdk/middleware-retry": "3.306.0", + "@aws-sdk/middleware-serde": "3.306.0", + "@aws-sdk/middleware-signing": "3.306.0", + "@aws-sdk/middleware-stack": "3.306.0", + "@aws-sdk/middleware-user-agent": "3.306.0", + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/node-http-handler": "3.306.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/smithy-client": "3.309.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/url-parser": "3.306.0", + "@aws-sdk/util-base64": "3.303.0", + "@aws-sdk/util-body-length-browser": "3.303.0", + "@aws-sdk/util-body-length-node": "3.303.0", + "@aws-sdk/util-defaults-mode-browser": "3.309.0", + "@aws-sdk/util-defaults-mode-node": "3.309.0", + "@aws-sdk/util-endpoints": "3.306.0", + "@aws-sdk/util-retry": "3.306.0", + "@aws-sdk/util-user-agent-browser": "3.306.0", + "@aws-sdk/util-user-agent-node": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.309.0.tgz", + "integrity": "sha512-StSSRX4PSIaZRNOSkpuEamQLjbDyjHm4p4OqXWTBZYzkiiCntyxCkettYPwkZum2K35uFgfoRda4zmtfnW+kCw==", + "dependencies": { + "@aws-crypto/sha1-browser": "3.0.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.309.0", + "@aws-sdk/config-resolver": "3.306.0", + "@aws-sdk/credential-provider-node": "3.309.0", + "@aws-sdk/eventstream-serde-browser": "3.306.0", + "@aws-sdk/eventstream-serde-config-resolver": "3.306.0", + "@aws-sdk/eventstream-serde-node": "3.306.0", + "@aws-sdk/fetch-http-handler": "3.306.0", + "@aws-sdk/hash-blob-browser": "3.306.0", + "@aws-sdk/hash-node": "3.306.0", + "@aws-sdk/hash-stream-node": "3.306.0", + "@aws-sdk/invalid-dependency": "3.306.0", + "@aws-sdk/md5-js": "3.306.0", + "@aws-sdk/middleware-bucket-endpoint": "3.306.0", + "@aws-sdk/middleware-content-length": "3.306.0", + "@aws-sdk/middleware-endpoint": "3.306.0", + "@aws-sdk/middleware-expect-continue": "3.306.0", + "@aws-sdk/middleware-flexible-checksums": "3.306.0", + "@aws-sdk/middleware-host-header": "3.306.0", + "@aws-sdk/middleware-location-constraint": "3.306.0", + "@aws-sdk/middleware-logger": "3.306.0", + "@aws-sdk/middleware-recursion-detection": "3.306.0", + "@aws-sdk/middleware-retry": "3.306.0", + "@aws-sdk/middleware-sdk-s3": "3.306.0", + "@aws-sdk/middleware-serde": "3.306.0", + "@aws-sdk/middleware-signing": "3.306.0", + "@aws-sdk/middleware-ssec": "3.306.0", + "@aws-sdk/middleware-stack": "3.306.0", + "@aws-sdk/middleware-user-agent": "3.306.0", + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/node-http-handler": "3.306.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/signature-v4-multi-region": "3.306.0", + "@aws-sdk/smithy-client": "3.309.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/url-parser": "3.306.0", + "@aws-sdk/util-base64": "3.303.0", + "@aws-sdk/util-body-length-browser": "3.303.0", + "@aws-sdk/util-body-length-node": "3.303.0", + "@aws-sdk/util-defaults-mode-browser": "3.309.0", + "@aws-sdk/util-defaults-mode-node": "3.309.0", + "@aws-sdk/util-endpoints": "3.306.0", + "@aws-sdk/util-retry": "3.306.0", + "@aws-sdk/util-stream-browser": "3.306.0", + "@aws-sdk/util-stream-node": "3.306.0", + "@aws-sdk/util-user-agent-browser": "3.306.0", + "@aws-sdk/util-user-agent-node": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "@aws-sdk/util-waiter": "3.306.0", + "@aws-sdk/xml-builder": "3.303.0", + "fast-xml-parser": "4.1.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.309.0.tgz", + "integrity": "sha512-2Tr3AROBzZOy+BuANlmDrwgyX+Q2kb6SIlANg6b9mrIzlflC48hRH0ngEe4C5RT6RruKIP+6R0al6vAq8lCk6A==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.306.0", + "@aws-sdk/fetch-http-handler": "3.306.0", + "@aws-sdk/hash-node": "3.306.0", + "@aws-sdk/invalid-dependency": "3.306.0", + "@aws-sdk/middleware-content-length": "3.306.0", + "@aws-sdk/middleware-endpoint": "3.306.0", + "@aws-sdk/middleware-host-header": "3.306.0", + "@aws-sdk/middleware-logger": "3.306.0", + "@aws-sdk/middleware-recursion-detection": "3.306.0", + "@aws-sdk/middleware-retry": "3.306.0", + "@aws-sdk/middleware-serde": "3.306.0", + "@aws-sdk/middleware-stack": "3.306.0", + "@aws-sdk/middleware-user-agent": "3.306.0", + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/node-http-handler": "3.306.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/smithy-client": "3.309.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/url-parser": "3.306.0", + "@aws-sdk/util-base64": "3.303.0", + "@aws-sdk/util-body-length-browser": "3.303.0", + "@aws-sdk/util-body-length-node": "3.303.0", + "@aws-sdk/util-defaults-mode-browser": "3.309.0", + "@aws-sdk/util-defaults-mode-node": "3.309.0", + "@aws-sdk/util-endpoints": "3.306.0", + "@aws-sdk/util-retry": "3.306.0", + "@aws-sdk/util-user-agent-browser": "3.306.0", + "@aws-sdk/util-user-agent-node": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.309.0.tgz", + "integrity": "sha512-5hQMibuKWxDJo6IN+4ah0gskjJa16R41PqkeAOwExthTTyNzgoVyP9wyhnETyntYlHIBrHEmHTwdG06YiAxm4A==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.306.0", + "@aws-sdk/fetch-http-handler": "3.306.0", + "@aws-sdk/hash-node": "3.306.0", + "@aws-sdk/invalid-dependency": "3.306.0", + "@aws-sdk/middleware-content-length": "3.306.0", + "@aws-sdk/middleware-endpoint": "3.306.0", + "@aws-sdk/middleware-host-header": "3.306.0", + "@aws-sdk/middleware-logger": "3.306.0", + "@aws-sdk/middleware-recursion-detection": "3.306.0", + "@aws-sdk/middleware-retry": "3.306.0", + "@aws-sdk/middleware-serde": "3.306.0", + "@aws-sdk/middleware-stack": "3.306.0", + "@aws-sdk/middleware-user-agent": "3.306.0", + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/node-http-handler": "3.306.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/smithy-client": "3.309.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/url-parser": "3.306.0", + "@aws-sdk/util-base64": "3.303.0", + "@aws-sdk/util-body-length-browser": "3.303.0", + "@aws-sdk/util-body-length-node": "3.303.0", + "@aws-sdk/util-defaults-mode-browser": "3.309.0", + "@aws-sdk/util-defaults-mode-node": "3.309.0", + "@aws-sdk/util-endpoints": "3.306.0", + "@aws-sdk/util-retry": "3.306.0", + "@aws-sdk/util-user-agent-browser": "3.306.0", + "@aws-sdk/util-user-agent-node": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.309.0.tgz", + "integrity": "sha512-rBVm50ft5o1FLaCNjSFY4c/lI7qPG5MMhOr4sdvEUaU1Mkniyd6M+3Pch9S3a5NtF0Kfzw9dWQpjAL+nqJaITQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/config-resolver": "3.306.0", + "@aws-sdk/credential-provider-node": "3.309.0", + "@aws-sdk/fetch-http-handler": "3.306.0", + "@aws-sdk/hash-node": "3.306.0", + "@aws-sdk/invalid-dependency": "3.306.0", + "@aws-sdk/middleware-content-length": "3.306.0", + "@aws-sdk/middleware-endpoint": "3.306.0", + "@aws-sdk/middleware-host-header": "3.306.0", + "@aws-sdk/middleware-logger": "3.306.0", + "@aws-sdk/middleware-recursion-detection": "3.306.0", + "@aws-sdk/middleware-retry": "3.306.0", + "@aws-sdk/middleware-sdk-sts": "3.306.0", + "@aws-sdk/middleware-serde": "3.306.0", + "@aws-sdk/middleware-signing": "3.306.0", + "@aws-sdk/middleware-stack": "3.306.0", + "@aws-sdk/middleware-user-agent": "3.306.0", + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/node-http-handler": "3.306.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/smithy-client": "3.309.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/url-parser": "3.306.0", + "@aws-sdk/util-base64": "3.303.0", + "@aws-sdk/util-body-length-browser": "3.303.0", + "@aws-sdk/util-body-length-node": "3.303.0", + "@aws-sdk/util-defaults-mode-browser": "3.309.0", + "@aws-sdk/util-defaults-mode-node": "3.309.0", + "@aws-sdk/util-endpoints": "3.306.0", + "@aws-sdk/util-retry": "3.306.0", + "@aws-sdk/util-user-agent-browser": "3.306.0", + "@aws-sdk/util-user-agent-node": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "fast-xml-parser": "4.1.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/config-resolver": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.306.0.tgz", + "integrity": "sha512-kpqHu6LvNMYxullm+tLCsY6KQ2mZUxZTdyWJKTYLZCTxj4HcGJxf4Jxj9dwFAZVl/clcVPGWcHJaQJjyjwzBzw==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-config-provider": "3.295.0", + "@aws-sdk/util-middleware": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.309.0.tgz", + "integrity": "sha512-alpBaKa3sTb1bYQGqnLAqZVbFh5JldwQg+pIuXPt8CKwtpP00heeDPQ60e+9VYk5vKPoNYIbiDy7WmgOkLFMeg==", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.309.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.306.0.tgz", + "integrity": "sha512-DTH+aMvMu+LAoWW+yfPkWzFXt/CPNFQ7+/4xiMnc7FWf+tjt+HZIrPECAV2rBVppNCkh7PC+xDSN61PFvBYOsw==", + "dependencies": { + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-imds": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.306.0.tgz", + "integrity": "sha512-WdrNhq2MwvjZk2I8Of+bZ/qWHG2hREQpwlBiG3tMeEkuywx7M1x3Rt0eHgiR1sTcm05kxNn0rB4OeWOeek37cA==", + "dependencies": { + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/url-parser": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.309.0.tgz", + "integrity": "sha512-7xAqfbuvEdQdz2YcS5OPWH6uv09pMEW6lvmEwM8tf3gn/c3mxFm0/geFeO3+hnkIjByPM02PW7qQJXmPu1l7AA==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.306.0", + "@aws-sdk/credential-provider-imds": "3.306.0", + "@aws-sdk/credential-provider-process": "3.306.0", + "@aws-sdk/credential-provider-sso": "3.309.0", + "@aws-sdk/credential-provider-web-identity": "3.306.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/shared-ini-file-loader": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.309.0.tgz", + "integrity": "sha512-rgf53RH9mcATr+5rRGGqRmoOEceX+XSbQvGM1QRHxROJJiYsZWdBQu9w+UuKcQF03qLMfi4G+6iNHect5TVs2Q==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.306.0", + "@aws-sdk/credential-provider-imds": "3.306.0", + "@aws-sdk/credential-provider-ini": "3.309.0", + "@aws-sdk/credential-provider-process": "3.306.0", + "@aws-sdk/credential-provider-sso": "3.309.0", + "@aws-sdk/credential-provider-web-identity": "3.306.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/shared-ini-file-loader": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.306.0.tgz", + "integrity": "sha512-2RezGskHqJeHtGbK7CqhGNAoqXgQJb7FfPFqwUQ9oVDZS8f145jVwajjHcc7Qn3IwGoqylMF3uXIljUv89uDzA==", + "dependencies": { + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/shared-ini-file-loader": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.309.0.tgz", + "integrity": "sha512-uMphs47O2S9NK7I5CsDttp88X7b/JktGOrW8RTLRw1QURQ8v0uP+MLHFogRtWi4E7+zo86Equ0njlpYlFvrpSA==", + "dependencies": { + "@aws-sdk/client-sso": "3.309.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/shared-ini-file-loader": "3.306.0", + "@aws-sdk/token-providers": "3.309.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.306.0.tgz", + "integrity": "sha512-MOQGQaOtdo4zLQZ1bRjD2n1PUzfNty+sKe+1wlm5bIqTN93UX3S8f0QznucZr7uJxI4Z14ZLwuYeAUV4Tgchlw==", + "dependencies": { + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.309.0.tgz", + "integrity": "sha512-hNb1Qh494JAKk0WPkdd09RoXllwnOctTFfBNHZPeG1zS/hrEiKO5M/EiHstA1DolI3GQTwnxqRs29L1nMbFLWQ==", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.309.0", + "@aws-sdk/client-sso": "3.309.0", + "@aws-sdk/client-sts": "3.309.0", + "@aws-sdk/credential-provider-cognito-identity": "3.309.0", + "@aws-sdk/credential-provider-env": "3.306.0", + "@aws-sdk/credential-provider-imds": "3.306.0", + "@aws-sdk/credential-provider-ini": "3.309.0", + "@aws-sdk/credential-provider-node": "3.309.0", + "@aws-sdk/credential-provider-process": "3.306.0", + "@aws-sdk/credential-provider-sso": "3.309.0", + "@aws-sdk/credential-provider-web-identity": "3.306.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-codec": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-codec/-/eventstream-codec-3.306.0.tgz", + "integrity": "sha512-tQCo0tl/NdD3rVt9hDkGO3SLPXdohlRx6j9IMor5HpM7tCFcB4WNpDHPHyClxRoprLT04BZksJZcbVUybAeTcA==", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-hex-encoding": "3.295.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/eventstream-serde-browser": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.306.0.tgz", + "integrity": "sha512-Vbx0KQzZ5YAeYwC3tbCGsJZ2nSqKQlQFbuwhXe/Btz/dh1HaJPMxoIC8Dr0b6Z7S8l2Pq4ucqdNaUzLeJJbezw==", + "dependencies": { + "@aws-sdk/eventstream-serde-universal": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-serde-config-resolver": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.306.0.tgz", + "integrity": "sha512-MBNJspHTbP3+bZeDgfH+FcAxBodKH3NnXmSCyUosMJMaNQ8JtqsaW+y6FfvC6aVht3FyC6qKWBjuKfEeG2jLCA==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-serde-node": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.306.0.tgz", + "integrity": "sha512-Fq6n8vUMxMSqWFD2xSjh/X7Wyr+CggGHjsVgIFfXIXEK14iTOnOK7/yS86mDR6GBRupIfrw/Q+Jf0A7b8o2Wlg==", + "dependencies": { + "@aws-sdk/eventstream-serde-universal": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-serde-universal": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.306.0.tgz", + "integrity": "sha512-Xp2JCRkZm3dyVv2O/EJnOP1vwUwEmXXminbX1MgnuVIMifSbbjeo6lGqCsjrIkXyymkx4TvrmPmSWlwzPCnyVw==", + "dependencies": { + "@aws-sdk/eventstream-codec": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/fetch-http-handler": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.306.0.tgz", + "integrity": "sha512-T8OODOnPpDqkXS+XSMIkd6hf90h833JLN93wq3ibbyD/WvGveufFFHsbsNyccE9+CSv/BjEuN5QbHqTKTp3BlA==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/querystring-builder": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-base64": "3.303.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/hash-blob-browser": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.306.0.tgz", + "integrity": "sha512-OK3xQ60Vz1VTDgMGk8PjFESQlDjXCLR/q1xc9ODyXBO2/A+ntUxMBcGfu7KYjtGI69g91H/BGhPAy+W5Gg+rmw==", + "dependencies": { + "@aws-sdk/chunked-blob-reader": "3.303.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/hash-node": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.306.0.tgz", + "integrity": "sha512-EcSLd6gKoDEEBPZqEv+Ky9gIyefwyyrAJGILGKoYBmcOIY7Y0xKId0hxCa9/1xvWTaVC1u+rA06DGgksZOa78w==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-buffer-from": "3.303.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/hash-stream-node": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.306.0.tgz", + "integrity": "sha512-9owhr/kmCRwRZWAeGnf3k+L5tD/DcLAEMfbIuH8uolEigI+YGRMXnJB0PpyzIyd1N8TM/bm6WW3uvQiFHy7Hxw==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/invalid-dependency": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.306.0.tgz", + "integrity": "sha512-9Mkcr+qG7QR4R5bJcA8bBNd8E2x6WaZStsQ3QeFbdQr3V3Tunvra/KlCFsEL55GgU8BZt5isOaHqq7uxs5ILtQ==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/is-array-buffer": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.303.0.tgz", + "integrity": "sha512-IitBTr+pou7v5BrYLFH/SbIf3g1LIgMhcI3bDXBq2FjzmDftj4bW8BOmg05b9YKf2TrrggvJ4yk/jH+yYFXoJQ==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/md5-js": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.306.0.tgz", + "integrity": "sha512-QCv5hfFL3AsSQPZvO8YOaBoNlRu6+B2lVSVZHLaWrortlaRGQi5+fYgYPhpTho/2cw0qeogB4pQIho3UgCAmfg==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.306.0.tgz", + "integrity": "sha512-DL8Q146s0nJ7MSHxt8sr6MDR4tIh+q7z9Yki7o1soCMNGTaYCUC20nSffs7IhQAUo1/q3pRh8LoJNtIpa7Q3pA==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-arn-parser": "3.295.0", + "@aws-sdk/util-config-provider": "3.295.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-content-length": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.306.0.tgz", + "integrity": "sha512-JbONf2Ms+/DVRcpFNsKGdOQU94Js56KV+AhlPJmCwLxfyWvQjTt0KxFC1Dd+cjeNEXUduvBarrehgsqFlWnoHQ==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-endpoint": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.306.0.tgz", + "integrity": "sha512-i3QRiwgkcsuVN55O7l8I/QGwCypGRZXdYkPjU56LI2w2oiZ82f/nVMNXVc+ZFm2YH7WbCE+5jguw2J7HXdOlyQ==", + "dependencies": { + "@aws-sdk/middleware-serde": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/url-parser": "3.306.0", + "@aws-sdk/util-middleware": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.306.0.tgz", + "integrity": "sha512-k+UgyQpTqFaizClQRdVTpcGJduRXKS0GCDDV/pdz1NVx09YHCIxVpkpdkYj+2T1Ufp3bK7ju2FLaXJwoO6/r+Q==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.306.0.tgz", + "integrity": "sha512-0Z3eKIVdP9son45Id18pDWwfcqoYTzDsSfePMD//HByBQQusL8pS1D1mlWqVpnV++ZfNmPcnph+v6cIfHYVM4Q==", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@aws-crypto/crc32c": "3.0.0", + "@aws-sdk/is-array-buffer": "3.303.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.306.0.tgz", + "integrity": "sha512-mHDHK9E+c7HwMlrCJ+VFSB6tkq8oJVkYEHCvPkdrnzN/g9P/d/UhPIeGapZXMbAIZEaLpEGqs536mYzeRKZG8A==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.306.0.tgz", + "integrity": "sha512-TfSPLDcl/QTs2OHplJhbJMzdWe3/du5wrNn0LECligzX4f7Ygn2zV/UtqHet36tv206ssDm6b9g8KvRvG3FT2g==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.306.0.tgz", + "integrity": "sha512-1FRHp/QB0Lb+CgP+c9CYW6BZh+q+5pnuOKo/Rd6hjYiM+kT1G/cWdXnMJQBR4rbTCTixbqCnObNJ1EyP/ofQhQ==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.306.0.tgz", + "integrity": "sha512-Hpj42ZLmwCy/CtVxi57NTeOEPoUJlivF3VIgowZ9JhaF61cakVKyrJ+f3jwXciDUtuYrdKm5Wf6prW6apWo0YA==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.306.0.tgz", + "integrity": "sha512-eMyfr/aeurXXDz4x+WVrvLI8fVDP6klJOjziBEWZ/MUNP/hTFhkiQsMVbvT6O4Pspp7+FgCSdcUPG6Os2gK+CQ==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/service-error-classification": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-middleware": "3.306.0", + "@aws-sdk/util-retry": "3.306.0", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.306.0.tgz", + "integrity": "sha512-x1V4NKpY8waDBTUjg2TLcqLZjD6OoED0NMFvKPxul/l2rzInvcNK6L2ifxxhYb7YG9N4MtLnCvAUqEW5h3eLYw==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-arn-parser": "3.295.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.306.0.tgz", + "integrity": "sha512-2rSAR3nc5faYuEnh1KxQMCMCkEkJyaDfA3zwWLqZ+/TBCH0PlPkBv+Z9yXmteEki0vI5Hr+e+atTutJZoyG13g==", + "dependencies": { + "@aws-sdk/middleware-signing": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-serde": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.306.0.tgz", + "integrity": "sha512-M3gyPLPduZXMvdgt4XEpVO+3t0ZVPdgeQQwG6JnXv0dgyUizshYs4lrVOAb1KwF6StsmkrAgSN+I273elLiKjA==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.306.0.tgz", + "integrity": "sha512-JhpSriN4xa4a/p5gAPL0OWFKJF4eWYU3K+LLlXBNGMbxg/qNL4skgT4dMFe3ii9EW8kI+r6tpvSgC+lP7/Tyng==", + "dependencies": { + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/signature-v4": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-middleware": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.306.0.tgz", + "integrity": "sha512-4oXDBsQSPWxyr5K9OjQA1Y+WChGYLD85mvcycd3WqKn9BKsQ9F4enE3XHmRg0qlgXV9CJ/fG1axLC3R9Aa6u/g==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-stack": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.306.0.tgz", + "integrity": "sha512-G//a6MVSxyFVpOMZ+dzT3+w7XblOd2tRJ5g+/okjn3pNBLbo5o9Hu33K/bz0SQjT/m5mU2F9m0wcdCPYbRPysg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.306.0.tgz", + "integrity": "sha512-tP6I+Lbs68muPfdMA6Rfc+8fYo49nEn9A3RMiOU2COClWsmiZatpbK9UYlqIOxeGB/s2jI7hXmQq6tT2LStLSg==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-endpoints": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-config-provider": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.306.0.tgz", + "integrity": "sha512-+m+ALxNx5E1zLPPijO1pAbT5tnofLzZFWlnSYBEiOIwzaRU44rLYDqAhgXJkMMbOECkffDrv6ym0oWJIwJI+DA==", + "dependencies": { + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/shared-ini-file-loader": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.306.0.tgz", + "integrity": "sha512-qvNSIVdGf0pnWEXsAulIqXk7LML25Zc1yxbujxoAj8oX5y+mDhzQdHKrMgc0FuI4RKoEd9px4DYoUbmTWrrxwA==", + "dependencies": { + "@aws-sdk/abort-controller": "3.306.0", + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/querystring-builder": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/property-provider": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.306.0.tgz", + "integrity": "sha512-37PnbjpANjHys0Y+DVmKUz1JbSGZ/mAndZeplTUsFDUtbNwJRw/fDyWUvGC82JWB4gNSP5muWscFvetZnK2l8A==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.306.0.tgz", + "integrity": "sha512-6Z8bqB8Ydz/qG7+lJzjwsjIca2w2zp4nZ2HjxMoUm0NBbVXGDx7H9qy9eOUqEiCbdXbsfK2BmVQreLhFLt056Q==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/querystring-builder": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.306.0.tgz", + "integrity": "sha512-kvz6fLwE4KojTxbphuo9JPwKKuhau2mmSurnqhtf77t9+0cOh2uzyYhIUtOFewpLj+qGoh4b2EODlJqczc7IKg==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-uri-escape": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/querystring-parser": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.306.0.tgz", + "integrity": "sha512-YjOdLcyS/8sNkFPgnxyUx+cM/P2XFGCA2WjQ0e9AXX8xFFkmnY6U5w2EknQ5zyvKy+R/KAV0KAMJBUB+ofjg0A==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/service-error-classification": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.306.0.tgz", + "integrity": "sha512-lmXIVHWU5J60GmmTgyj79kupWYg5ntyNrUPt1P9FYTsXz+tdk4YYH7/2IxZ1XjBr4jEsN56gfSI0cfT07ztQJA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.306.0.tgz", + "integrity": "sha512-mDmBRN+Y0+EBD5megId97UIJGV/rmRsAds22qy0mmVdD3X7qlxn974btXVgfZyda6qw/pX6hgi8X99Qj6Wjb0w==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.306.0.tgz", + "integrity": "sha512-yoQTo6wLirKHg34Zhm8tKmfEaK8fOn+psVdMtRs2vGq3uzKLb+YW5zywnujoVwBvygQTWxiDMwRxDduWAisccA==", + "dependencies": { + "@aws-sdk/is-array-buffer": "3.303.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-hex-encoding": "3.295.0", + "@aws-sdk/util-middleware": "3.306.0", + "@aws-sdk/util-uri-escape": "3.303.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.306.0.tgz", + "integrity": "sha512-c+J/7oYZf1MWgEqHyzW6EM25FZfqHer+pMWwyaDCEQFsAuuNeqbvr5MWFrjYpSeF8MpfVbFsEfho5XmjHMq6jw==", + "dependencies": { + "@aws-sdk/protocol-http": "3.306.0", + "@aws-sdk/signature-v4": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/signature-v4-crt": "^3.118.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/signature-v4-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/smithy-client": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.309.0.tgz", + "integrity": "sha512-2+LJD8/J9yoYmfjLZuMTI/IF8qFMMclWdDJaalj4Rzzd7qBWDS3Q23UxpZi9VR155nqpgr/R+TFZMgze1EhRHg==", + "dependencies": { + "@aws-sdk/middleware-stack": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.309.0.tgz", + "integrity": "sha512-rB79nQArhVT3l8UglZyinZVm13hFRF4xqzrmSLNknxdlMLamrON/94H7S6lFLywdTags2SUdAxQ/LlStlFf78A==", + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.309.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/shared-ini-file-loader": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.306.0.tgz", + "integrity": "sha512-RnyknWWpQcRmNH7AsNr89sdhOoltCU/4YEwBMw34Eh+/36l7HfA5PdEKbsOkO7MO4+2g5qmmm/AHcnHRvymApg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/url-parser": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.306.0.tgz", + "integrity": "sha512-mhyOjtycZgxKYo2CoDhDQONuRd5TLfEwmyGWVgFrfubF0LejQ3rkBRLC5zT9TBZ8RJHNlqU2oGdsZCy3JV6Rlw==", + "dependencies": { + "@aws-sdk/querystring-parser": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.295.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.295.0.tgz", + "integrity": "sha512-kSSVymcbjyQQHvCZaTt1teKKW4MSSMPRdPNxSNO1aLsVwxrWdnAggDrpHwFjvPCRUcKtpThepATOz75PfUm9Bg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-base64": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.303.0.tgz", + "integrity": "sha512-oj+p/GHHPcZEKjiiOHU/CyNQeh8i+8dfMMzU+VGdoK5jHaVG8h2b+V7GPf7I4wDkG2ySCK5b5Jw5NUHwdTJ13Q==", + "dependencies": { + "@aws-sdk/util-buffer-from": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-body-length-browser": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.303.0.tgz", + "integrity": "sha512-T643m0pKzgjAvPFy4W8zL+aszG3T22U8hb6stlMvT0z++Smv8QfIvkIkXjWyH2KlOt5GKliHwdOv8SAi0FSMJQ==", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-body-length-node": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.303.0.tgz", + "integrity": "sha512-/hS8z6e18Le60hJr2TUIFoUjUiAsnQsuDn6DxX74GXhMOHeSwZDJ9jHF39quYkNMmAE37GrVH4MI9vE0pN27qw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-buffer-from": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.303.0.tgz", + "integrity": "sha512-hUU+NW+SW6RNojtAKnnmz+tDShVKlEx2YsS4a5fSfrKRUes+zWz10cxVX0RQfysd3R6tdSHhbjsSj8eCIybheg==", + "dependencies": { + "@aws-sdk/is-array-buffer": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-config-provider": { + "version": "3.295.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.295.0.tgz", + "integrity": "sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.309.0.tgz", + "integrity": "sha512-KTmoR24PhUCT9A8/f5rb7MQvzXqGJY7/VnYxNaQ6AzJZfZ3y3UYfvuJR9LRjWn+zQDy1lnTyjSh5eokf2VBOoQ==", + "dependencies": { + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.309.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.309.0.tgz", + "integrity": "sha512-3YIEWY6O5kyW6dbV+1jWdlsqjEN76sxY62841v5A9Vr/MGLowhm6YYW8MYWPye9RABl9osTs0NCeL2p6Re+IPw==", + "dependencies": { + "@aws-sdk/config-resolver": "3.306.0", + "@aws-sdk/credential-provider-imds": "3.306.0", + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/property-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.306.0.tgz", + "integrity": "sha512-aPTqU4VGhec8LDhKZrfA3/sBHTYRa0favKEo8aEa/vIZJTNBAFlUhvr5z7peAr8gBOtZZcElzX8PiK3jjn3ILw==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-hex-encoding": { + "version": "3.295.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.295.0.tgz", + "integrity": "sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.295.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.295.0.tgz", + "integrity": "sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-middleware": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.306.0.tgz", + "integrity": "sha512-14CSm1mTrfSNBGbkZu8vSjXYg7DUMfZc74IinOajcFtTswa/6SyiyhU9DK0a837qqwxSfFGpnE2thVeJIF/7FA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-retry": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.306.0.tgz", + "integrity": "sha512-zcgTEIehQAIAm4vBNWfXZpDNbIrDM095vZmpbozQwK/pfDqMGvq7j3r9atKuEGTtoomoGoYwj3x/KEhO6JXJLg==", + "dependencies": { + "@aws-sdk/service-error-classification": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@aws-sdk/util-stream-browser": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.306.0.tgz", + "integrity": "sha512-g/UdUlVtMrdctzu8Yk6UKIlN9OtqGyTDC3bCzzr6dNmfdRMuilL5LZCAgusEEzH2MZGTNtw5BbYZBN//UNhxwQ==", + "dependencies": { + "@aws-sdk/fetch-http-handler": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-base64": "3.303.0", + "@aws-sdk/util-hex-encoding": "3.295.0", + "@aws-sdk/util-utf8": "3.303.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-stream-node": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.306.0.tgz", + "integrity": "sha512-hF8P52E3borUp6Z4K8cQOGm+bJgkbkE/VSl0EiO29E563ZiPnT/VBYVICX7MIDNPgHKDN5n/OSVfe1egjhOigQ==", + "dependencies": { + "@aws-sdk/node-http-handler": "3.306.0", + "@aws-sdk/types": "3.306.0", + "@aws-sdk/util-buffer-from": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-uri-escape": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.303.0.tgz", + "integrity": "sha512-N3ULNuHCL3QzAlCTY+XRRkRQTYCTU8RRuzFCJX0pDpz9t2K+tLT7DbxqupWGNFGl5Xlulf1Is14J3BP/Dx91rA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.306.0.tgz", + "integrity": "sha512-uZAtpvCasUdWRlB/nEjN0gf6G7810hT50VyWjpd6mQW78myV8M5fu/R03UFAZ+D8fhqqIdzR/IXDY1QUGp8bCA==", + "dependencies": { + "@aws-sdk/types": "3.306.0", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.306.0.tgz", + "integrity": "sha512-zLp9wIx7FZ0qFLimYW3lJ1uJM5gqxmmcQjNimUaUq/4a1caDkaiF/QeyyMFva+wIjyHRv22P5abUBjIEZrs5WA==", + "dependencies": { + "@aws-sdk/node-config-provider": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.303.0.tgz", + "integrity": "sha512-tZXVuMOIONPOuOGBs/XRdzxv6jUvTM620dRFFIHZwlGiW8bo0x0LlonrzDAJZA4e9ZwmxJIj8Ji13WVRBGvZWg==", + "dependencies": { + "@aws-sdk/util-buffer-from": "3.303.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-waiter": { + "version": "3.306.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.306.0.tgz", + "integrity": "sha512-/cCmEaxGJOVKHuuzm4zM3aY2Un7pJGyewcd9WWvLjZIoF9jCCqyjmsxM+OXdCjs7NOdo41cValYhILYI+nD8Tg==", + "dependencies": { + "@aws-sdk/abort-controller": "3.306.0", + "@aws-sdk/types": "3.306.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.303.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.303.0.tgz", + "integrity": "sha512-Oht8XdmCkLhwZx2WTjOOLN8rt9000zJS4Hehv9NG7+kKfaA6sKFGIculmumaS+h8hAwWFndtgpOTlKC95zHSWQ==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -270,6 +1651,11 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -935,6 +2321,21 @@ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" }, + "node_modules/fast-xml-parser": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", + "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + }, "node_modules/ffprobe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ffprobe/-/ffprobe-1.1.2.tgz", @@ -2228,6 +3629,11 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -2296,6 +3702,11 @@ "node": ">=6" } }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, "node_modules/twitter-lite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/twitter-lite/-/twitter-lite-1.1.0.tgz", diff --git a/backend/package.json b/backend/package.json index 244f0b9..cb0ed81 100644 --- a/backend/package.json +++ b/backend/package.json @@ -3,6 +3,9 @@ "version": "1.0.0", "main": "index.js", "dependencies": { + "@aws-sdk/client-s3": "^3.309.0", + "@aws-sdk/credential-provider-process": "^3.306.0", + "@aws-sdk/credential-providers": "^3.309.0", "adm-zip": "^0.5.10", "aws-sdk": "^2.1353", "axios": "1.3.5", diff --git a/backend/sys_stats.js b/backend/sys_stats.js index b398d94..8064ceb 100644 --- a/backend/sys_stats.js +++ b/backend/sys_stats.js @@ -73,15 +73,15 @@ exports.initStats = async function() { exports.addError = function(call) { // if there is no Array associated with the system. - if (errorTotals[call.shortName] == undefined) { - errorTotals[call.shortName] = new Array(); + if (uploadErrors[call.shortName] == undefined) { + uploadErrors[call.shortName] = new Array(); for (var j = 0; j < spots; j++) { - errorTotals[call.shortName][j] = 0; + uploadErrors[call.shortName][j] = 0; } } // Add an error to the count for the current period. - errorTotals[call.shortName][0]++; + uploadErrors[call.shortName][0]++; } // Keeps track of the number of calls for each talkgroup for a system @@ -144,25 +144,14 @@ exports.shiftStats = async function() { // for all the systems in Error Stats for (var shortName in uploadErrors) { - if (upload.hasOwnProperty(shortName)) { + if (uploadErrors.hasOwnProperty(shortName)) { // Update the DB with Error Stats and Error Totals - statsCollection.update({ - shortName: shortName - }, { - $set: { - "uploadErrors": uploadErrors[shortName] - } - }, { - upsert: true - }, function(err, objects) { - if (err) { - console.log("Shortname: " + shortName); - console.log("uploadErrors: " + util.inspect(uploadErrors[shortName])); - console.warn(err.message); - } - }); + const query = { shortName: shortName}; + const update = { $set: { "uploadErrors": uploadErrors[shortName]}}; + const options = {upsert: true}; + statsCollection.updateOne(query, update, options); // move everything back one after updating for (var j = spots - 1; j > 0; j--) { uploadErrors[shortName][j] = uploadErrors[shortName][j - 1]; @@ -205,11 +194,11 @@ exports.shiftStats = async function() { } } - const query = { shortName: item.shortName}; + const query = { shortName: shortName}; const update = { $set: { "decodeErrorsFreq": decodeErrorsFreq[shortName]}}; const options = {upsert: true}; - sysCollection.updateOne(query, update, options); + statsCollection.updateOne(query, update, options); } } @@ -277,7 +266,7 @@ exports.shiftStats = async function() { const update = { $set: { "talkgroupStats": talkgroupStats[shortName], "callTotals": callTotals[shortName] }}; const options = {upsert: true}; - sysCollection.updateOne(query, update, options); + statsCollection.updateOne(query, update, options); } } updateActiveSystems(); diff --git a/test.env.example b/test.env.example index ed76089..c6548be 100644 --- a/test.env.example +++ b/test.env.example @@ -5,6 +5,7 @@ export REACT_APP_ADMIN_EMAIL="admin@email.com" export DOMAIN_NAME="openmhz.test" export S3_PROFILE='default' +export S3_REGION='us-west-001' export S3_ENDPOINT='https://s3.us-west-1.wasabisys.com' export S3_BUCKET='openmhz-test'