diff --git a/.env.example b/.env.example index 7d9062a48..687118814 100644 --- a/.env.example +++ b/.env.example @@ -95,6 +95,10 @@ EXPRESS_PORT=8081 ############################### # Uncomment next line if you want to enable statement handling priority #ENABLE_QUEUE_PRIORITY=true +# Event provider(redis|sqs). Redis by default +#EVENTS_REPO=redis +# Queue namespace +#QUEUE_NAMESPACE=DEV ########## # Misc # diff --git a/package.json b/package.json index 3a7e4e7e2..8e3dfd34c 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.100.0", + "@aws-sdk/client-sqs": "^3.282.0", "@aws-sdk/lib-storage": "^3.100.0", "@azure/storage-blob": "^10.3.0", "@google-cloud/storage": "^5.8.1", @@ -208,6 +209,8 @@ "functional/prefer-type-literal": "off", "functional/no-throw-statement": "off", "functional/no-try-statement": "off", + "functional/no-let": "off", + "functional/no-loop-statement": "off", "functional/prefer-readonly-type": [ "error", { diff --git a/src/apps/AppConfig.ts b/src/apps/AppConfig.ts index 396d05c96..3c183a703 100644 --- a/src/apps/AppConfig.ts +++ b/src/apps/AppConfig.ts @@ -3,6 +3,7 @@ import { Redis } from 'ioredis'; import Tracker from 'jscommons/dist/tracker/Tracker'; import { Db } from 'mongodb'; import { LoggerInstance } from 'winston'; +import { SQSClient } from '@aws-sdk/client-sqs'; export default interface AppConfig { readonly repo: { @@ -46,6 +47,11 @@ export default interface AppConfig { readonly client: () => Promise; readonly isQueuePriorityEnabled: boolean; }; + readonly sqs: { + readonly prefix: string; + readonly client: () => Promise; + readonly isQueuePriorityEnabled: boolean; + }; }; readonly service: { readonly statements: { diff --git a/src/apps/app.ts b/src/apps/app.ts index 824940a65..ad86b58dd 100644 --- a/src/apps/app.ts +++ b/src/apps/app.ts @@ -81,6 +81,7 @@ export default (appConfig: AppConfig): Router => { local: appConfig.repo.local, mongo: appConfig.repo.mongo, redis: appConfig.repo.redis, + sqs: appConfig.repo.sqs, s3: appConfig.repo.s3, storageSubFolder: appConfig.repo.storageSubFolders.statements, }, diff --git a/src/apps/statements/AppConfig.ts b/src/apps/statements/AppConfig.ts index 1442cf857..0242fe261 100644 --- a/src/apps/statements/AppConfig.ts +++ b/src/apps/statements/AppConfig.ts @@ -3,6 +3,7 @@ import { Redis } from 'ioredis'; import Tracker from 'jscommons/dist/tracker/Tracker'; import { Db } from 'mongodb'; import { LoggerInstance } from 'winston'; +import { SQSClient } from '@aws-sdk/client-sqs'; export default interface AppConfig { readonly logger: LoggerInstance; @@ -62,5 +63,10 @@ export default interface AppConfig { readonly client: () => Promise; readonly isQueuePriorityEnabled: boolean; }; + readonly sqs: { + readonly prefix: string; + readonly client: () => Promise; + readonly isQueuePriorityEnabled: boolean; + }; }; } diff --git a/src/apps/statements/app.ts b/src/apps/statements/app.ts index f4ad7abab..30ae94119 100644 --- a/src/apps/statements/app.ts +++ b/src/apps/statements/app.ts @@ -21,6 +21,11 @@ export default (appConfig: AppConfig): Result => { prefix: appConfig.repo.redis.prefix, isQueuePriorityEnabled: appConfig.repo.redis.isQueuePriorityEnabled, }, + sqs: { + client: appConfig.repo.sqs.client, + prefix: appConfig.repo.sqs.prefix, + isQueuePriorityEnabled: appConfig.repo.sqs.isQueuePriorityEnabled, + }, }, models: { facade: appConfig.repo.factory.modelsRepoName, diff --git a/src/apps/statements/repo/eventsRepo/FactoryConfig.ts b/src/apps/statements/repo/eventsRepo/FactoryConfig.ts index 621aead0b..3dfc47b02 100644 --- a/src/apps/statements/repo/eventsRepo/FactoryConfig.ts +++ b/src/apps/statements/repo/eventsRepo/FactoryConfig.ts @@ -1,6 +1,8 @@ import RedisFactoryConfig from './utils/redisEvents/FactoryConfig'; +import SQSFactoryConfig from './utils/sqsEvents/FactoryConfig'; export default interface FactoryConfig { readonly facade?: string; readonly redis?: RedisFactoryConfig; + readonly sqs?: SQSFactoryConfig; } diff --git a/src/apps/statements/repo/eventsRepo/emitNewStatements/sqs.ts b/src/apps/statements/repo/eventsRepo/emitNewStatements/sqs.ts new file mode 100644 index 000000000..8bc4cd6ac --- /dev/null +++ b/src/apps/statements/repo/eventsRepo/emitNewStatements/sqs.ts @@ -0,0 +1,70 @@ +import { + GetQueueUrlCommand, + SQSClient, + SendMessageBatchCommand, + SendMessageBatchRequestEntry, +} from '@aws-sdk/client-sqs'; +import { v4 } from 'uuid'; +import { getPrefixWithProcessingPriority } from '../utils/getPrefixWithProcessingPriority'; +import { StatementProcessingPriority } from '../../../enums/statementProcessingPriority.enum'; +import FacadeConfig from '../utils/sqsEvents/FacadeConfig'; +import { STATEMENT_QUEUE } from '../utils/constants'; +import Signature from './Signature'; + +const MAX_BATCH_SIZE = 10; + +let queueUrl: string | undefined; + +const publishMessages = async (sqsClient: SQSClient, statementProperties: string[]) => { + const statementPropertiesBatchRequest = statementProperties.map( + (statementProperty): SendMessageBatchRequestEntry => ({ + Id: v4(), + MessageBody: statementProperty, + }), + ); + + for (let index = 0; index < statementPropertiesBatchRequest.length; index += MAX_BATCH_SIZE) { + await sqsClient.send( + new SendMessageBatchCommand({ + QueueUrl: queueUrl, + Entries: statementPropertiesBatchRequest.slice(index, index + MAX_BATCH_SIZE), + }), + ); + } +}; + +const getQueueUrl = async ( + sqsClient: SQSClient, + prefix: string, + priority: StatementProcessingPriority, + isQueuePriorityEnabled: boolean, +) => { + if (queueUrl) { + return queueUrl; + } + + const prefixWithPriority = getPrefixWithProcessingPriority( + prefix, + priority, + isQueuePriorityEnabled, + ); + + const getQueueUrlCommand = new GetQueueUrlCommand({ + QueueName: `${prefixWithPriority}_${STATEMENT_QUEUE}`, + }); + + const commandResult = await sqsClient.send(getQueueUrlCommand); + + queueUrl = commandResult.QueueUrl; + + return queueUrl; +}; + +export default (config: FacadeConfig): Signature => { + return async ({ statementProperties, priority }) => { + const sqsClient = await config.client(); + + await getQueueUrl(sqsClient, config.prefix, priority, config.isQueuePriorityEnabled); + await publishMessages(sqsClient, statementProperties); + }; +}; diff --git a/src/apps/statements/repo/eventsRepo/factory.ts b/src/apps/statements/repo/eventsRepo/factory.ts index e72fb34c9..b6355719c 100644 --- a/src/apps/statements/repo/eventsRepo/factory.ts +++ b/src/apps/statements/repo/eventsRepo/factory.ts @@ -1,11 +1,14 @@ import Facade from './Facade'; import FactoryConfig from './FactoryConfig'; import redisFactory from './utils/redisEvents/factory'; +import sqsFactory from './utils/sqsEvents/factory'; export default (config: FactoryConfig): Facade => { switch (config.facade) { default: case 'redis': return redisFactory(config.redis); + case 'sqs': + return sqsFactory(config.sqs); } }; diff --git a/src/apps/statements/repo/eventsRepo/utils/constants.ts b/src/apps/statements/repo/eventsRepo/utils/constants.ts index de7955c76..bfc7bcb11 100644 --- a/src/apps/statements/repo/eventsRepo/utils/constants.ts +++ b/src/apps/statements/repo/eventsRepo/utils/constants.ts @@ -1,2 +1,3 @@ export const EVENT_NAME = 'statement.new'; export const CHANNEL_NAME = 'statement.notify'; +export const STATEMENT_QUEUE = 'STATEMENT_QUEUE'; diff --git a/src/apps/statements/repo/eventsRepo/utils/sqsEvents/FacadeConfig.ts b/src/apps/statements/repo/eventsRepo/utils/sqsEvents/FacadeConfig.ts new file mode 100644 index 000000000..34c1ef29d --- /dev/null +++ b/src/apps/statements/repo/eventsRepo/utils/sqsEvents/FacadeConfig.ts @@ -0,0 +1,7 @@ +import { SQSClient } from '@aws-sdk/client-sqs'; + +export default interface FacadeConfig { + readonly client: () => Promise; + readonly prefix: string; + readonly isQueuePriorityEnabled: boolean; +} diff --git a/src/apps/statements/repo/eventsRepo/utils/sqsEvents/FactoryConfig.ts b/src/apps/statements/repo/eventsRepo/utils/sqsEvents/FactoryConfig.ts new file mode 100644 index 000000000..253b78eb7 --- /dev/null +++ b/src/apps/statements/repo/eventsRepo/utils/sqsEvents/FactoryConfig.ts @@ -0,0 +1,7 @@ +import { SQSClient } from '@aws-sdk/client-sqs'; + +export default interface FactoryConfig { + readonly client?: () => Promise; + readonly prefix?: string; + readonly isQueuePriorityEnabled?: boolean; +} diff --git a/src/apps/statements/repo/eventsRepo/utils/sqsEvents/factory.ts b/src/apps/statements/repo/eventsRepo/utils/sqsEvents/factory.ts new file mode 100644 index 000000000..865efb3fa --- /dev/null +++ b/src/apps/statements/repo/eventsRepo/utils/sqsEvents/factory.ts @@ -0,0 +1,26 @@ +import { defaultTo } from 'lodash'; +import emitNewStatements from '../../emitNewStatements/sqs'; +import Facade from '../../Facade'; +import connectToSQS from "../../../../../../utils/connectToSQS"; +import FacadeConfig from './FacadeConfig'; +import FactoryConfig from './FactoryConfig'; + +export default (factoryConfig: FactoryConfig = {}): Facade => { + const facadeConfig: FacadeConfig = { + client: defaultTo(factoryConfig.client, connectToSQS()), + prefix: defaultTo(factoryConfig.prefix, 'xapistatements'), + isQueuePriorityEnabled: defaultTo(factoryConfig.isQueuePriorityEnabled, false), + }; + return { + emitNewStatements: emitNewStatements(facadeConfig), + clearRepo: async () => { + // Do nothing. + }, + migrate: async () => { + // Do nothing. + }, + rollback: async () => { + // Do nothing. + }, + }; +}; diff --git a/src/config.ts b/src/config.ts index b8bddbf85..d05df57dd 100644 --- a/src/config.ts +++ b/src/config.ts @@ -64,6 +64,14 @@ export default { prefix: getStringOption(process.env.REDIS_PREFIX, 'LEARNINGLOCKER'), url: getStringOption(process.env.REDIS_URL, 'redis://127.0.0.1:6379/0'), }, + aws: { + region: globalAwsRegion, + accessKeyId: globalAwsIamAccessKeyId, + secretAccessKey: globalAwsIamAccessKeySecret, + }, + sqs: { + prefix: getStringOption(process.env.QUEUE_NAMESPACE, 'DEV'), + }, repoFactory: { authRepoName: getStringOption(process.env.AUTH_REPO, 'mongo'), eventsRepoName: getStringOption(process.env.EVENTS_REPO, 'redis'), diff --git a/src/server.ts b/src/server.ts index 2cb9b0516..e14922866 100644 --- a/src/server.ts +++ b/src/server.ts @@ -9,6 +9,7 @@ import config from './config'; import logger from './logger'; import connectToMongoDb from './utils/connectToMongoDb'; import connectToRedis from './utils/connectToRedis'; +import connectToSQS from './utils/connectToSQS'; const expressApp = express(); @@ -31,6 +32,11 @@ expressApp.use( prefix: config.redis.prefix, isQueuePriorityEnabled: config.isQueuePriorityEnabled, }, + sqs: { + client: connectToSQS(), + prefix: config.sqs.prefix, + isQueuePriorityEnabled: config.isQueuePriorityEnabled, + }, repoFactory: config.repoFactory, s3: config.s3StorageRepo, storageSubFolders: config.storageSubFolders, diff --git a/src/utils/connectToSQS.ts b/src/utils/connectToSQS.ts new file mode 100644 index 000000000..8d5e9980d --- /dev/null +++ b/src/utils/connectToSQS.ts @@ -0,0 +1,22 @@ +import { SQSClient } from '@aws-sdk/client-sqs'; +import { once } from 'lodash'; +import config from '../config'; +import logger from '../logger'; + +export default once((): (() => Promise) => { + return once(async () => { + logger.info('Creating SQS connection'); + + return new SQSClient({ + ...(config.aws.region ? { region: config.aws.region } : null), + ...(config.aws.accessKeyId && config.aws.secretAccessKey + ? { + credentials: { + accessKeyId: config.aws.accessKeyId as string, + secretAccessKey: config.aws.secretAccessKey as string, + }, + } + : null), + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index b05ad198d..b7e87282e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -323,6 +323,50 @@ fast-xml-parser "3.19.0" tslib "^2.3.1" +"@aws-sdk/client-sqs@^3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sqs/-/client-sqs-3.282.0.tgz#97b90d7764cd41744b970fba9c2d9e5ea60327fe" + integrity sha512-OXGA0GIn8U00qBvBZZT8BkG8iaXG4wPE9PfD+jxTydMJX9qW7uelwAAmJ92o1cAmqKBzFcrS7hkGyucK0orwZg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.282.0" + "@aws-sdk/config-resolver" "3.282.0" + "@aws-sdk/credential-provider-node" "3.282.0" + "@aws-sdk/fetch-http-handler" "3.282.0" + "@aws-sdk/hash-node" "3.272.0" + "@aws-sdk/invalid-dependency" "3.272.0" + "@aws-sdk/md5-js" "3.272.0" + "@aws-sdk/middleware-content-length" "3.282.0" + "@aws-sdk/middleware-endpoint" "3.282.0" + "@aws-sdk/middleware-host-header" "3.282.0" + "@aws-sdk/middleware-logger" "3.272.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.282.0" + "@aws-sdk/middleware-sdk-sqs" "3.272.0" + "@aws-sdk/middleware-serde" "3.272.0" + "@aws-sdk/middleware-signing" "3.282.0" + "@aws-sdk/middleware-stack" "3.272.0" + "@aws-sdk/middleware-user-agent" "3.282.0" + "@aws-sdk/node-config-provider" "3.272.0" + "@aws-sdk/node-http-handler" "3.282.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/smithy-client" "3.279.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/url-parser" "3.272.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.279.0" + "@aws-sdk/util-defaults-mode-node" "3.282.0" + "@aws-sdk/util-endpoints" "3.272.0" + "@aws-sdk/util-retry" "3.272.0" + "@aws-sdk/util-user-agent-browser" "3.282.0" + "@aws-sdk/util-user-agent-node" "3.282.0" + "@aws-sdk/util-utf8" "3.254.0" + fast-xml-parser "4.1.2" + tslib "^2.3.1" + "@aws-sdk/client-sso-oidc@3.279.0": version "3.279.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.279.0.tgz#358c67172d066968f4439884cdf40299b6822c4e" @@ -361,6 +405,44 @@ "@aws-sdk/util-utf8" "3.254.0" tslib "^2.3.1" +"@aws-sdk/client-sso-oidc@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.282.0.tgz#538259969e472e4497f01c8b6fe6fafd59db4147" + integrity sha512-upC4yBZllAXg5OVIuS8Lu9MI1aqfAObl2BBixj9fIYbDanQ02s0b1IwfZqlOqNNkGzMko1AWyiOSyOdVgyJ+xg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.282.0" + "@aws-sdk/fetch-http-handler" "3.282.0" + "@aws-sdk/hash-node" "3.272.0" + "@aws-sdk/invalid-dependency" "3.272.0" + "@aws-sdk/middleware-content-length" "3.282.0" + "@aws-sdk/middleware-endpoint" "3.282.0" + "@aws-sdk/middleware-host-header" "3.282.0" + "@aws-sdk/middleware-logger" "3.272.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.282.0" + "@aws-sdk/middleware-serde" "3.272.0" + "@aws-sdk/middleware-stack" "3.272.0" + "@aws-sdk/middleware-user-agent" "3.282.0" + "@aws-sdk/node-config-provider" "3.272.0" + "@aws-sdk/node-http-handler" "3.282.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/smithy-client" "3.279.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/url-parser" "3.272.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.279.0" + "@aws-sdk/util-defaults-mode-node" "3.282.0" + "@aws-sdk/util-endpoints" "3.272.0" + "@aws-sdk/util-retry" "3.272.0" + "@aws-sdk/util-user-agent-browser" "3.282.0" + "@aws-sdk/util-user-agent-node" "3.282.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + "@aws-sdk/client-sso@3.100.0": version "3.100.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.100.0.tgz#50fd953ff77f5f9cc1b67f2b6144016ef7e74112" @@ -435,6 +517,44 @@ "@aws-sdk/util-utf8" "3.254.0" tslib "^2.3.1" +"@aws-sdk/client-sso@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.282.0.tgz#9d31cf2eacd6d022213d40ad976ae3a00f99838f" + integrity sha512-VzdCCaxlDyU+7wvLDWh+uACQ6RPfaKLQ3yJ2UY0B0SkH4R0E4GLDJ2OJzqS5eyyOsnq1rxfY75S4WYzj8E2cvg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.282.0" + "@aws-sdk/fetch-http-handler" "3.282.0" + "@aws-sdk/hash-node" "3.272.0" + "@aws-sdk/invalid-dependency" "3.272.0" + "@aws-sdk/middleware-content-length" "3.282.0" + "@aws-sdk/middleware-endpoint" "3.282.0" + "@aws-sdk/middleware-host-header" "3.282.0" + "@aws-sdk/middleware-logger" "3.272.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.282.0" + "@aws-sdk/middleware-serde" "3.272.0" + "@aws-sdk/middleware-stack" "3.272.0" + "@aws-sdk/middleware-user-agent" "3.282.0" + "@aws-sdk/node-config-provider" "3.272.0" + "@aws-sdk/node-http-handler" "3.282.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/smithy-client" "3.279.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/url-parser" "3.272.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.279.0" + "@aws-sdk/util-defaults-mode-node" "3.282.0" + "@aws-sdk/util-endpoints" "3.272.0" + "@aws-sdk/util-retry" "3.272.0" + "@aws-sdk/util-user-agent-browser" "3.282.0" + "@aws-sdk/util-user-agent-node" "3.282.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + "@aws-sdk/client-sso@3.95.0": version "3.95.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.95.0.tgz#0226f9feb8896a90d4ee1627a5ddbd7a3adab163" @@ -554,6 +674,48 @@ fast-xml-parser "4.1.2" tslib "^2.3.1" +"@aws-sdk/client-sts@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.282.0.tgz#1c4355a5d6a8e6af03e752c3273a59c57aaf1715" + integrity sha512-JZybEaST0rloS9drlX/0yJAnKHuV7DlS1n1WZxgaM2DY704ydlGiviiPQvC/q/dItsX4017gscC0blGJcUjK1g== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.282.0" + "@aws-sdk/credential-provider-node" "3.282.0" + "@aws-sdk/fetch-http-handler" "3.282.0" + "@aws-sdk/hash-node" "3.272.0" + "@aws-sdk/invalid-dependency" "3.272.0" + "@aws-sdk/middleware-content-length" "3.282.0" + "@aws-sdk/middleware-endpoint" "3.282.0" + "@aws-sdk/middleware-host-header" "3.282.0" + "@aws-sdk/middleware-logger" "3.272.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.282.0" + "@aws-sdk/middleware-sdk-sts" "3.282.0" + "@aws-sdk/middleware-serde" "3.272.0" + "@aws-sdk/middleware-signing" "3.282.0" + "@aws-sdk/middleware-stack" "3.272.0" + "@aws-sdk/middleware-user-agent" "3.282.0" + "@aws-sdk/node-config-provider" "3.272.0" + "@aws-sdk/node-http-handler" "3.282.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/smithy-client" "3.279.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/url-parser" "3.272.0" + "@aws-sdk/util-base64" "3.208.0" + "@aws-sdk/util-body-length-browser" "3.188.0" + "@aws-sdk/util-body-length-node" "3.208.0" + "@aws-sdk/util-defaults-mode-browser" "3.279.0" + "@aws-sdk/util-defaults-mode-node" "3.282.0" + "@aws-sdk/util-endpoints" "3.272.0" + "@aws-sdk/util-retry" "3.272.0" + "@aws-sdk/util-user-agent-browser" "3.282.0" + "@aws-sdk/util-user-agent-node" "3.282.0" + "@aws-sdk/util-utf8" "3.254.0" + fast-xml-parser "4.1.2" + tslib "^2.3.1" + "@aws-sdk/client-sts@3.95.0": version "3.95.0" resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.95.0.tgz#a5168f72de0d2125a01ca84d067e2a0502977fc2" @@ -606,6 +768,17 @@ "@aws-sdk/util-middleware" "3.272.0" tslib "^2.3.1" +"@aws-sdk/config-resolver@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.282.0.tgz#b76f3b7daedc2dfca261445f0d222b3d15d693e5" + integrity sha512-30qFLh2N4NXQ2EAook7NIFeu1K/nlrRLrdVb2BtGFi/F3cZnz+sy9o0XmL6x+sO9TznWjdNxD1RKQdqoAwGnCQ== + dependencies: + "@aws-sdk/signature-v4" "3.282.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-config-provider" "3.208.0" + "@aws-sdk/util-middleware" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/config-resolver@3.80.0": version "3.80.0" resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.80.0.tgz#a804aba4d4767402ab15640757c8c8bb2254eec1" @@ -696,6 +869,21 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/credential-provider-ini@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.282.0.tgz#60bc1d0fb3cf7053335f42f95f01601f5fdcf4bc" + integrity sha512-2GKduXORcUgOigF1jZF7A1Wh4W/aJt3ynh7xb1vfx020nHx6YDljrEGpzgH6pOVzl7ZhgthpojicCuy2UumkMA== + dependencies: + "@aws-sdk/credential-provider-env" "3.272.0" + "@aws-sdk/credential-provider-imds" "3.272.0" + "@aws-sdk/credential-provider-process" "3.272.0" + "@aws-sdk/credential-provider-sso" "3.282.0" + "@aws-sdk/credential-provider-web-identity" "3.272.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/credential-provider-ini@3.95.0": version "3.95.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.95.0.tgz#c4d1d64b8ad5e89d450966b254bd796bd320a2d1" @@ -742,6 +930,22 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/credential-provider-node@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.282.0.tgz#90b71f75ae25b8e654b15271b14b0af736a2b2b3" + integrity sha512-qyHipZW0ep8STY+SO+Me8ObQ1Ee/aaZTmAK0Os/gB+EsiZhIE+mi6zRcScwdnpgJPLRYMEe4p/Cr6DOrA0G0GQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.272.0" + "@aws-sdk/credential-provider-imds" "3.272.0" + "@aws-sdk/credential-provider-ini" "3.282.0" + "@aws-sdk/credential-provider-process" "3.272.0" + "@aws-sdk/credential-provider-sso" "3.282.0" + "@aws-sdk/credential-provider-web-identity" "3.272.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/credential-provider-node@3.95.0": version "3.95.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.95.0.tgz#5ec6bf233b22689bf873f7039fae5cee33991e14" @@ -801,6 +1005,18 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/credential-provider-sso@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.282.0.tgz#a922821d9e0fa892af131c3774f1ecbd62545cd2" + integrity sha512-c4nibry7u0hkYRMi7+cWzdwYXfDDG+j3VYFxk2oOvU1VIJRyE6oeJqVaz3jgYLX9brHyrLJjuFCIJCUV/WXgIA== + dependencies: + "@aws-sdk/client-sso" "3.282.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.272.0" + "@aws-sdk/token-providers" "3.282.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/credential-provider-sso@3.95.0": version "3.95.0" resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.95.0.tgz#326f7788fabb6814bd67a3b357eb9492c9e46acf" @@ -909,6 +1125,17 @@ "@aws-sdk/util-base64" "3.208.0" tslib "^2.3.1" +"@aws-sdk/fetch-http-handler@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.282.0.tgz#aee6e441013880553b15db7ce66cbebba2e26f6b" + integrity sha512-RTd53UzKtUucIEdVLGGgtlbVwp0QkOt3ZfHuA/A1lOH7meChSh1kz7B5z3p4HQDpXO+MQ1Y6Ble9Vg2fh1zwJQ== + dependencies: + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/querystring-builder" "3.272.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-base64" "3.208.0" + tslib "^2.3.1" + "@aws-sdk/fetch-http-handler@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.78.0.tgz#9cd4a02eaf015b4a5a18552e8c9e8fbfce7219a3" @@ -997,6 +1224,15 @@ stream-browserify "3.0.0" tslib "^2.3.1" +"@aws-sdk/md5-js@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.272.0.tgz#2f4dc06541a60979bb807c8adc438f13fc3ad958" + integrity sha512-/GK32mgAarhn/F0xCeBKbYfLRof3tOCNrg8mAGNz9Di8E1/qMOnX/OXUGag0lsvNZ6DTjdjln29t4e8iKmOVqA== + dependencies: + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + "@aws-sdk/md5-js@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.78.0.tgz#a79357e6518778057b7bcbbd45dcb352be5f8e15" @@ -1027,6 +1263,15 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/middleware-content-length@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.282.0.tgz#aa05051b33e94b0db46ede2e9839b601503e081a" + integrity sha512-SDgMLRRTMr9LlHSNk4bXUXynYnkT4oNMqE+FxhjsdbT8hK36eS4AadM58R7nPwgjR3EuWRW4ZRRawLWatpWspA== + dependencies: + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/middleware-content-length@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.78.0.tgz#57d46be61d1176d4c5fce7ba4b0682798c170208" @@ -1050,6 +1295,20 @@ "@aws-sdk/util-middleware" "3.272.0" tslib "^2.3.1" +"@aws-sdk/middleware-endpoint@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.282.0.tgz#c69615330932db1292206926752cac84428fde47" + integrity sha512-8U9Mv/Sbdo1KI6/ip7IIUdBl5pgmalFbfkYAyO+AtmkEvawI9ipdWFs5HB0Dwd1BGVup5choY72Ik/7sCAAFTQ== + dependencies: + "@aws-sdk/middleware-serde" "3.272.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/signature-v4" "3.282.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/url-parser" "3.272.0" + "@aws-sdk/util-config-provider" "3.208.0" + "@aws-sdk/util-middleware" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/middleware-expect-continue@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.78.0.tgz#35df662ecf31a1c8540781154f514615f3ca2c97" @@ -1090,6 +1349,15 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/middleware-host-header@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.282.0.tgz#3df90724f9a97b1bf8151faf7534ac7f7fa2c5e9" + integrity sha512-90dfYow4zh4tCatTOnqB3nE/dIAucQLZnMqwN/WBPu0fUqjymzpsNkPchqWBPnSWdNE8w3PiKMqqD9rjYwqw4Q== + dependencies: + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/middleware-host-header@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.78.0.tgz#9130d176c2839bc658aff01bf2a36fee705f0e86" @@ -1132,6 +1400,15 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/middleware-recursion-detection@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.282.0.tgz#7766d7dc95fa59e8fdfe2dc8cc5af647063eaa0f" + integrity sha512-cSLq/daEaTEucbP/TgAXIOcpwLu7Bfw3VGzH1U56ngDjI4KWvUheF16JiB6OqKQXduPBPsdZ9dVmkDVKddmCRw== + dependencies: + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/middleware-retry@3.272.0": version "3.272.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.272.0.tgz#a38adcb9eb478246de3f3398bb8fd0a7682462eb" @@ -1145,6 +1422,19 @@ tslib "^2.3.1" uuid "^8.3.2" +"@aws-sdk/middleware-retry@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.282.0.tgz#0ddc73f9a41d7990bac2b8221452beb244cf88c5" + integrity sha512-3+0M1GP9o480IdqHVZbkhTgge63uKhDFlS6cQznpNGj0eIuQPhXRnlEz2/rma0INUqFm6+7qJ5yzHR4WQbfHpw== + dependencies: + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/service-error-classification" "3.272.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-middleware" "3.272.0" + "@aws-sdk/util-retry" "3.272.0" + tslib "^2.3.1" + uuid "^8.3.2" + "@aws-sdk/middleware-retry@3.80.0": version "3.80.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.80.0.tgz#d62ebd68ded78bdaf0a8b07bb4cc1c394c99cc8f" @@ -1167,6 +1457,16 @@ "@aws-sdk/util-arn-parser" "3.55.0" tslib "^2.3.1" +"@aws-sdk/middleware-sdk-sqs@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.272.0.tgz#efbdedf326c455d9df4fc6d2d7f2fe3ab06110a0" + integrity sha512-b4op+CVMTWUMI7HKAqAciwFIDnU3I6JEM6q8EO2D6OadD9ow2sZoJp25pP+nCst9hW2cMSjmlvrpimR+KnISQw== + dependencies: + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-hex-encoding" "3.201.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + "@aws-sdk/middleware-sdk-sts@3.272.0": version "3.272.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.272.0.tgz#aa437331f958e3af3b4bec7951256d0f34a8d431" @@ -1179,6 +1479,18 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/middleware-sdk-sts@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.282.0.tgz#f8a52a0ef2b5e0bc7c3df697d0f24f85ea4f12c9" + integrity sha512-Qe20mtJcF6lxt7280FhTFD2IpBDn39MEXmbm/zIkXR2/cAmvji8YhcxhNrq1l7XiuMM6SokBDC/f3dlF1oOC6g== + dependencies: + "@aws-sdk/middleware-signing" "3.282.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/signature-v4" "3.282.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/middleware-sdk-sts@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.78.0.tgz#15d91c421380f748b58bb006e1c398cfdf59b290" @@ -1219,6 +1531,18 @@ "@aws-sdk/util-middleware" "3.272.0" tslib "^2.3.1" +"@aws-sdk/middleware-signing@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.282.0.tgz#10551814e112300bfae906e00f9045ddad9fa05f" + integrity sha512-eE5qMDcqqxZPdSwybUEph/knrA2j2cHjW+B2ddROw3Ojg0XLjep5hOhithAudgBREQhYF9pdsBr6mUMynUIrKw== + dependencies: + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/signature-v4" "3.282.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-middleware" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/middleware-signing@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.78.0.tgz#2fb41819a9ae0953cf8f428851a57696442469ca" @@ -1261,6 +1585,15 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/middleware-user-agent@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.282.0.tgz#6f6f3ed06bbf90c871516e1cdbce4cb98b90da2e" + integrity sha512-P1ealsSrUALo0w0Qu5nBKsNQwsmqIfsoNtFWpaznjIcXE5rRMlZL69zb0KnGbQCBfEXsgaMOWjeGT8I3/XbOHQ== + dependencies: + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/middleware-user-agent@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.78.0.tgz#e4c7345d26d718de0e84b60ba02b2b08b566fa15" @@ -1301,6 +1634,17 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/node-http-handler@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.282.0.tgz#dde64a0977d98dc862770fc99b5127ff48726a9e" + integrity sha512-LIA4lsSKA/l1kTR5ERkJG2gARveB7Y40MR6yDwtIuhXeVu7Xo9m4BJFanCYIbyc093W0T53x438bwoBR+R+/fw== + dependencies: + "@aws-sdk/abort-controller" "3.272.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/querystring-builder" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/node-http-handler@3.94.0": version "3.94.0" resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.94.0.tgz#0bfbfec24f9465afddb876c50fd09ce00dfa4226" @@ -1336,6 +1680,14 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/protocol-http@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.282.0.tgz#ed6b345fad824bea27bd78dcc3f6b54c55118d70" + integrity sha512-aOPv5DhsbG06WKfeh2g0H8RGnaeI8pLhaA+Mq1BvzXcghhlDu+FM9K/GjC/f1lWk1UNryfevOR7SdQm95ciHQg== + dependencies: + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/protocol-http@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.78.0.tgz#8a30db90e3373fe94e2b0007c3cba47b5c9e08bd" @@ -1427,6 +1779,19 @@ "@aws-sdk/util-utf8" "3.254.0" tslib "^2.3.1" +"@aws-sdk/signature-v4@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.282.0.tgz#5ce58267b8225fadbf5134e616e02fae567cfc0a" + integrity sha512-rnSL3UyF/No7+O2EMtN1sTCiqL1a+odbfnfo3wCSl8DH5PEYINt2kZgVEvT1Fgaffk1pUggBBOZoR+arPIIDJA== + dependencies: + "@aws-sdk/is-array-buffer" "3.201.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-hex-encoding" "3.201.0" + "@aws-sdk/util-middleware" "3.272.0" + "@aws-sdk/util-uri-escape" "3.201.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + "@aws-sdk/signature-v4@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.78.0.tgz#adb735b9604d4bb8e44d16f1baa87618d576013b" @@ -1477,6 +1842,17 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/token-providers@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.282.0.tgz#a3983a121e430f1dce043aeb3251dc6a0887e009" + integrity sha512-Qk/D6i+Hpc0fp/2SRHbfJeKPgUIugzsmye3NL0OV1bqd1Y40dW5LT4u67VcZHwqxzYDKe6Eo+7NHJu7qfvwhog== + dependencies: + "@aws-sdk/client-sso-oidc" "3.282.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/types@3.272.0", "@aws-sdk/types@^3.222.0": version "3.272.0" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.272.0.tgz#83670e4009c2e72f1fdf55816c55c9f8b5935e0a" @@ -1637,6 +2013,18 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/util-defaults-mode-node@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.282.0.tgz#827c6d7c7b6de1493873a789be4d4916ae3163b2" + integrity sha512-D1BlFoA7ZMeK2diDUWFx1xBFrSaJuBZMRBuWbnbT9AnRYNCsASZ8DRU1KkZ8LuFQIwmZz94P9q683emYnZBhiw== + dependencies: + "@aws-sdk/config-resolver" "3.282.0" + "@aws-sdk/credential-provider-imds" "3.272.0" + "@aws-sdk/node-config-provider" "3.272.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/util-defaults-mode-node@3.85.0": version "3.85.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.85.0.tgz#8cd27ea50ddce298ec586d36eb6379ba14d7bfaf" @@ -1751,6 +2139,15 @@ bowser "^2.11.0" tslib "^2.3.1" +"@aws-sdk/util-user-agent-browser@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.282.0.tgz#00998e8bbab30baa45c38701907b80338abe55cc" + integrity sha512-Z639oyTa5fZfyi4Xr64+eiAwBCxfpe9Op4Vhnr1z/RwonQM/qywydv6Ttpeq1q5uQ0nG4wTkOMpfh39g+VqIgw== + dependencies: + "@aws-sdk/types" "3.272.0" + bowser "^2.11.0" + tslib "^2.3.1" + "@aws-sdk/util-user-agent-browser@3.78.0": version "3.78.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.78.0.tgz#12509ed9cc77624da0e0c017099565e37a5038d0" @@ -1769,6 +2166,15 @@ "@aws-sdk/types" "3.272.0" tslib "^2.3.1" +"@aws-sdk/util-user-agent-node@3.282.0": + version "3.282.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.282.0.tgz#1e8c59b32f7567a07e222ecebb4bcf91398b01f2" + integrity sha512-GSOdWNmzEd554wR9HBrgeYptKBOybveVwUkd6ws+YTdCOz4xD5Gga+I5JomKkcMEUVdBrJnYVUtq7ZsJy2f11w== + dependencies: + "@aws-sdk/node-config-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@aws-sdk/util-user-agent-node@3.80.0": version "3.80.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.80.0.tgz#269ea0f9bfab4f378af759afa9137936081f010a"