From 93be8471879cd79bf7ddb00880c3b4eb146f9fbd Mon Sep 17 00:00:00 2001 From: Sebastian Jackel Date: Fri, 10 Mar 2023 09:55:00 +0100 Subject: [PATCH 1/2] chore(deps): Updated client libraries to AWS SDK v3 --- .projen/deps.json | 38 +- .projenrc.js | 11 +- package.json | 11 +- src/client/appsync.ts | 37 +- src/dynamodb/client.ts | 47 +- src/http/auth.ts | 3 +- test/dynamodb/client.test.ts | 131 ++++ test/setup.ts | 1 + yarn.lock | 1259 +++++++++++++++++++++++++++++++--- 9 files changed, 1402 insertions(+), 136 deletions(-) create mode 100644 test/dynamodb/client.test.ts create mode 100644 test/setup.ts diff --git a/.projen/deps.json b/.projen/deps.json index 99c4ee9..c7bc77b 100644 --- a/.projen/deps.json +++ b/.projen/deps.json @@ -47,6 +47,14 @@ "version": "^5", "type": "build" }, + { + "name": "aws-sdk-client-mock", + "type": "build" + }, + { + "name": "aws-sdk-client-mock-jest", + "type": "build" + }, { "name": "eslint-import-resolver-node", "type": "build" @@ -111,7 +119,35 @@ "type": "build" }, { - "name": "aws-sdk", + "name": "@aws-crypto/sha256-js", + "type": "runtime" + }, + { + "name": "@aws-sdk/client-appsync", + "type": "runtime" + }, + { + "name": "@aws-sdk/client-dynamodb", + "type": "runtime" + }, + { + "name": "@aws-sdk/credential-providers", + "type": "runtime" + }, + { + "name": "@aws-sdk/lib-dynamodb", + "type": "runtime" + }, + { + "name": "@aws-sdk/node-http-handler", + "type": "runtime" + }, + { + "name": "@aws-sdk/protocol-http", + "type": "runtime" + }, + { + "name": "@aws-sdk/signature-v4", "type": "runtime" }, { diff --git a/.projenrc.js b/.projenrc.js index 5113b4f..e733b5a 100644 --- a/.projenrc.js +++ b/.projenrc.js @@ -3,12 +3,19 @@ const { TaimosTypescriptLibrary } = require('@taimos/projen'); const project = new TaimosTypescriptLibrary({ name: '@taimos/lambda-toolbox', deps: [ - 'aws-sdk', 'jsonwebtoken', 'jwk-to-pem', 'axios', 'uuid', 'lambda-log', + '@aws-crypto/sha256-js', + '@aws-sdk/client-appsync', + '@aws-sdk/client-dynamodb', + '@aws-sdk/credential-providers', + '@aws-sdk/lib-dynamodb', + '@aws-sdk/node-http-handler', + '@aws-sdk/protocol-http', + '@aws-sdk/signature-v4', ], docgen: false, defaultReleaseBranch: 'main', @@ -21,6 +28,8 @@ const project = new TaimosTypescriptLibrary({ '@types/uuid', '@taimos/projen', '@hapi/boom', + 'aws-sdk-client-mock', + 'aws-sdk-client-mock-jest', ], keywords: [ 'aws', diff --git a/package.json b/package.json index 2deba9c..eada42d 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,8 @@ "@types/uuid": "^8.3.4", "@typescript-eslint/eslint-plugin": "^5", "@typescript-eslint/parser": "^5", + "aws-sdk-client-mock": "^2.1.0", + "aws-sdk-client-mock-jest": "^2.1.0", "eslint": "^8", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^2.7.1", @@ -59,7 +61,14 @@ "typescript": "^4.4.0" }, "dependencies": { - "aws-sdk": "^2.1146.0", + "@aws-crypto/sha256-js": "^4.0.0", + "@aws-sdk/client-appsync": "^3.288.0", + "@aws-sdk/client-dynamodb": "^3.288.0", + "@aws-sdk/credential-providers": "^3.288.0", + "@aws-sdk/lib-dynamodb": "^3.288.0", + "@aws-sdk/node-http-handler": "^3.282.0", + "@aws-sdk/protocol-http": "^3.282.0", + "@aws-sdk/signature-v4": "^3.282.0", "axios": "^0.27.2", "jsonwebtoken": "^8.5.1", "jwk-to-pem": "^2.0.5", diff --git a/src/client/appsync.ts b/src/client/appsync.ts index 6074710..4cd716d 100644 --- a/src/client/appsync.ts +++ b/src/client/appsync.ts @@ -1,13 +1,16 @@ -import { parse, UrlWithStringQuery } from 'url'; -import * as AWS from 'aws-sdk'; +import { URL } from 'url'; +import { Sha256 } from '@aws-crypto/sha256-js'; +import * as credentials from '@aws-sdk/credential-providers'; +import { HttpRequest } from '@aws-sdk/protocol-http'; +import { SignatureV4 } from '@aws-sdk/signature-v4'; import * as axios from 'axios'; export class AppSyncClient { - protected readonly graphQlServerUri: UrlWithStringQuery; + protected readonly graphQlServerUri: URL; constructor(protected readonly graphQlServerUrl: string, protected readonly awsRegion: string) { - this.graphQlServerUri = parse(this.graphQlServerUrl); + this.graphQlServerUri = new URL(this.graphQlServerUrl); if (!this.graphQlServerUri.href) { throw new Error('Invalid GraphQL server URL'); } @@ -20,22 +23,32 @@ export class AppSyncClient { variables, }; - const httpRequest = new AWS.HttpRequest(new AWS.Endpoint(this.graphQlServerUri.href!), this.awsRegion); + const httpRequest = new HttpRequest({ + headers: { + 'host': this.graphQlServerUri.host!, + 'Content-Type': 'application/json', + }, + method: 'POST', + body: JSON.stringify(post_body), + }); httpRequest.headers.host = this.graphQlServerUri.host!; httpRequest.headers['Content-Type'] = 'application/json'; httpRequest.method = 'POST'; httpRequest.body = JSON.stringify(post_body); - await ((AWS.config.credentials as AWS.Credentials)?.getPromise()); + // There's now an official signature library - yay! + const signer = new SignatureV4({ + credentials: credentials.fromEnv(), + service: 'appsync', + region: this.awsRegion, + sha256: Sha256, + }); - // Signers is an internal API - const signer = new (AWS as any).Signers.V4(httpRequest, 'appsync', true); - signer.addAuthorization(AWS.config.credentials, (AWS as any).util.date.getDate()); + const signedRequest = await signer.sign(httpRequest, { signingDate: new Date() }); - const res = await axios.default.post(this.graphQlServerUri.href!, httpRequest.body, { - headers: httpRequest.headers, + return axios.default.post(this.graphQlServerUri.href!, signedRequest.body, { + headers: signedRequest.headers, }); - return res; } } \ No newline at end of file diff --git a/src/dynamodb/client.ts b/src/dynamodb/client.ts index 1779a2a..8d6823a 100644 --- a/src/dynamodb/client.ts +++ b/src/dynamodb/client.ts @@ -1,36 +1,41 @@ import * as https from 'https'; import { env } from 'process'; -import { DynamoDB } from 'aws-sdk'; +import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; +import * as dynamodb from '@aws-sdk/lib-dynamodb'; +import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb'; +import { NodeHttpHandler } from '@aws-sdk/node-http-handler'; import { PrimaryEntity } from './model'; const agent = new https.Agent({ keepAlive: true, }); -export const dynamoClient: DynamoDB.DocumentClient = new DynamoDB.DocumentClient({ httpOptions: { agent } }); +export const dynamoClient: DynamoDBDocumentClient = DynamoDBDocumentClient.from(new DynamoDBClient({ + requestHandler: new NodeHttpHandler({ httpsAgent: agent }), +})); export const TABLE_NAME: string = env.TABLE!; -export async function getItem>(pk: E['PK'], sk: E['SK'], options?: Omit): Promise { - const res = await dynamoClient.get({ +export async function getItem>(pk: E['PK'], sk: E['SK'], options?: Omit): Promise { + const res = await dynamoClient.send(new dynamodb.GetCommand({ TableName: TABLE_NAME, Key: { PK: pk, SK: sk, }, ...options, - }).promise(); + })); return res.Item ? res.Item as E : undefined; } -export async function deleteItem>(pk: E['PK'], sk: E['SK'], options?: Omit): Promise { - await dynamoClient.delete({ +export async function deleteItem>(pk: E['PK'], sk: E['SK'], options?: Omit): Promise { + await dynamoClient.send(new dynamodb.DeleteCommand({ TableName: TABLE_NAME, Key: { PK: pk, SK: sk, }, ...options, - }).promise(); + })); } export async function putNewItem>(pk: E['PK'], sk: E['SK'], item: Omit): Promise { @@ -39,35 +44,35 @@ export async function putNewItem>(pk: E['PK'], SK: sk, ...item, }; - await dynamoClient.put({ + await dynamoClient.send(new dynamodb.PutCommand({ TableName: TABLE_NAME, Item, ConditionExpression: 'attribute_not_exists(PK) and attribute_not_exists(SK)', - }).promise(); + })); return Item as E; } export async function updateExistingItem>(pk: E['PK'], sk: E['SK'], item: Partial): Promise { - const res = await dynamoClient.update(createUpdate({ + const res = await dynamoClient.send(createUpdate({ Key: { PK: pk, SK: sk, }, ConditionExpression: 'attribute_exists(PK) and attribute_exists(SK)', ReturnValues: 'ALL_NEW', - }, item)).promise(); + }, item)); return res.Attributes ? res.Attributes as E : undefined; } -export async function pagedQuery(query: Omit): Promise { +export async function pagedQuery(query: Omit): Promise { let startKey; const result: T[] = []; do { - const res: DynamoDB.DocumentClient.QueryOutput = await dynamoClient.query({ + const res: dynamodb.QueryCommandOutput = await dynamoClient.send(new dynamodb.QueryCommand({ ...query, TableName: TABLE_NAME, ExclusiveStartKey: startKey, - }).promise(); + })); if (res.Items) { result.push(...res.Items as T[]); } @@ -76,15 +81,15 @@ export async function pagedQuery(query: Omit(query: Omit): Promise { +export async function pagedScan(query: Omit): Promise { let startKey; const result: T[] = []; do { - const res: DynamoDB.DocumentClient.ScanOutput = await dynamoClient.scan({ + const res: dynamodb.ScanCommandOutput = await dynamoClient.send(new dynamodb.ScanCommand({ ...query, TableName: TABLE_NAME, ExclusiveStartKey: startKey, - }).promise(); + })); if (res.Items) { result.push(...res.Items as T[]); } @@ -101,7 +106,7 @@ export function padLeftZeros(val: number | string | undefined) { return ('00' + val).slice(-2); } -export function createUpdate(request: Omit, data: Partial): DynamoDB.DocumentClient.UpdateItemInput { +export function createUpdate(request: Omit, data: Partial): dynamodb.UpdateCommand { const fieldsToSet = []; const fieldsToRemove = []; const expressionNames: any = {}; @@ -129,7 +134,7 @@ export function createUpdate(request: Omit(request: Omit { + content: string; +} +describe('A dynamodb client', () => { + const testTableName = process.env.TABLE; + + const client = mockClient(DynamoDBDocumentClient); + + describe('should create the correct requests for', () => { + + beforeEach(() => { + client.reset(); + }); + + test('PutItem', async () => { + client.on(commands.PutCommand).resolves({ + Attributes: { PK: 'Partition#foo', SK: 'Sort#bar', content: 'something' }, + }); + + await dynamo.putNewItem('Partition#foo', 'Sort#bar', { content: 'something' }); + + expect(client).toHaveReceivedCommandWith(commands.PutCommand, { + TableName: testTableName, + Item: { + PK: 'Partition#foo', + SK: 'Sort#bar', + content: 'something', + }, + ConditionExpression: 'attribute_not_exists(PK) and attribute_not_exists(SK)', + }); + }); + + test('GetItem', async () => { + client.on(commands.GetCommand).resolves({ Item: { PK: 'Partition#foo', SK: 'Sort#bar', content: 'something' } }); + + const result = await dynamo.getItem('Partition#foo', 'Sort#bar'); + + expect(result).toBeDefined(); + expect(result!.content).toEqual('something'); + + expect(client).toHaveReceivedCommandWith(commands.GetCommand, { + TableName: testTableName, + Key: { + PK: 'Partition#foo', + SK: 'Sort#bar', + }, + }); + }); + + test('DeleteItem', async () => { + client.on(commands.UpdateCommand).resolves({ Attributes: { content: 'oldthing' } }); + + await dynamo.deleteItem('Partition#foo', 'Sort#bar'); + + expect(client).toHaveReceivedCommandWith(commands.DeleteCommand, { + TableName: testTableName, + Key: { + PK: 'Partition#foo', + SK: 'Sort#bar', + }, + }); + }); + + //TODO Test Query Paging + test('Query', async () => { + client.on(commands.QueryCommand).resolves({ + Items: [ + { PK: 'Partition#foo', SK: 'Sort#first', content: 'firstthing' }, + { PK: 'Partition#foo', SK: 'Sort#second', content: 'secondthing' }, + ], + }); + + const result = await dynamo.pagedQuery({ + KeyConditionExpression: 'PK = :pk', + ExpressionAttributeValues: { + ':pk': 'Partition#foo', + }, + }); + + expect(result).toBeDefined(); + expect(result.length).toEqual(2); + + expect(client).toHaveReceivedCommandWith(commands.QueryCommand, { + TableName: testTableName, + KeyConditionExpression: 'PK = :pk', + ExclusiveStartKey: undefined, + ExpressionAttributeValues: { + ':pk': 'Partition#foo', + }, + }); + }); + + //TODO Test Scan Paging + test('Scan', async () => { + client.on(commands.ScanCommand).resolves({ + Items: [ + { PK: 'Partition#foo', SK: 'Sort#foo', content: 'something' }, + ], + }); + + const result = await dynamo.pagedScan({ + FilterExpression: 'PK = :pk', + ExpressionAttributeValues: { + ':pk': 'Partition#foo', + }, + }); + + expect(result).toBeDefined(); + expect(result.length).toEqual(1); + + expect(client).toHaveReceivedCommandWith(commands.ScanCommand, { + TableName: testTableName, + FilterExpression: 'PK = :pk', + ExclusiveStartKey: undefined, + ExpressionAttributeValues: { + ':pk': 'Partition#foo', + }, + }); + }); + + //TODO Test item updates + }); +}); \ No newline at end of file diff --git a/test/setup.ts b/test/setup.ts new file mode 100644 index 0000000..bbee4ad --- /dev/null +++ b/test/setup.ts @@ -0,0 +1 @@ +process.env.TABLE = 'test_table'; // Need to have this in the environment before the dynamo client is imported \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1242563..1630675 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,6 +10,887 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" + 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" + +"@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-4.0.0.tgz#7feaad4d62cfaf6636a108763d0df0b01574ef0e" + integrity sha512-MHGJyjE7TX9aaqXj7zk2ppnFUOhaDs5sP+HtNS0evOxn72c+5njUmyJmpGd7TfyoDznZlHMmdo/xGUdu2NIjNQ== + dependencies: + "@aws-crypto/util" "^4.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/util@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-4.0.0.tgz#958d244eea457af65755e242673872f9d04a7a6f" + integrity sha512-2EnmPy2gsFZ6m8bwUQN4jq+IyXV3quHAcwPOS6ZA3k+geujiqI8aRokO2kFJe+idJ/P3v4qWI186rVMo0+zLDQ== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/abort-controller@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.272.0.tgz#c2d244e9d422583a786dfb75485316cb1d4793ce" + integrity sha512-s2TV3phapcTwZNr4qLxbfuQuE9ZMP4RoJdkvRRCkKdm6jslsWLJf2Zlcxti/23hOlINUMYv2iXE2pftIgWGdpg== + dependencies: + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/client-appsync@^3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-appsync/-/client-appsync-3.288.0.tgz#fe0deedbf667fd4f6dd6a5b5379d0c973c8de820" + integrity sha512-1CYXJKiI45Y9J0UZISvhQaX+i18TnbrbcDHHaBjQjBrZsSlqa2ekFhQ+cihDYUyHJ92CNWhxu+ZghFHsmoOvqQ== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.288.0" + "@aws-sdk/config-resolver" "3.287.0" + "@aws-sdk/credential-provider-node" "3.288.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.288.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.287.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.287.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.287.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.287.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + +"@aws-sdk/client-cognito-identity@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.288.0.tgz#3aa20893ffbf8bfe5f1bb354bdcd92b265b3e1b5" + integrity sha512-8NMGCchQFbaw6HireAB/zIaPmY+PJBlDUffBx5jOOh8gMI0iTHxiiDccdDS+uN2ftAs+DCpiZJs7T4RhXnFDWg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.288.0" + "@aws-sdk/config-resolver" "3.287.0" + "@aws-sdk/credential-provider-node" "3.288.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.288.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.287.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.287.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.287.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.287.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + +"@aws-sdk/client-dynamodb@^3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.288.0.tgz#3fc173e89ca56bb0571a94483635199b6add0f9c" + integrity sha512-iup3rjnJtZ7Q2egx/5DMTD4gKL3D18l5o0hJFI7PH2KhQ+2FLftc7AmqSYTV4wddrSX9dV+qBzbL1donRPQ64g== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.288.0" + "@aws-sdk/config-resolver" "3.287.0" + "@aws-sdk/credential-provider-node" "3.288.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-endpoint-discovery" "3.287.0" + "@aws-sdk/middleware-host-header" "3.282.0" + "@aws-sdk/middleware-logger" "3.288.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.287.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.287.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.287.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.287.0" + "@aws-sdk/util-utf8" "3.254.0" + "@aws-sdk/util-waiter" "3.272.0" + tslib "^2.3.1" + uuid "^8.3.2" + +"@aws-sdk/client-sso-oidc@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.288.0.tgz#09cfbb9accea582a6c1744945cadb9fa83b49dbd" + integrity sha512-gJNuYF5P3YBUbwQWz8mLgV5E8XHbM2iHXb6mgtd9vnKmOZ64nDUlU6oMjlwgIjbE0x4pzn7QDlsCH7CGoCdS5Q== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.287.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.288.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.287.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.287.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.287.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.287.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + +"@aws-sdk/client-sso@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.288.0.tgz#790d528441cb4e5208742d793cd29b55cb62f5f5" + integrity sha512-RDQoPkxipP1FfyJvoqy1z4Uim7li7dP4k3Vhddn+yP76E8/kgfDMHxg7kwa4s729GmEEzmCQSM+fmORFQlquQA== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.287.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.288.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.287.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.287.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.287.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.287.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + +"@aws-sdk/client-sts@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.288.0.tgz#a1c64383d6cd94843f6b0608580fa2b8d6226394" + integrity sha512-mIS6DjNzwJPLtxhi8kYVTvBl0NmDsEFenXKIcqd5aMoLax16ULBr6JypSpSkvkobiqmjQkNIG3PdJBVgYgCt4w== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/config-resolver" "3.287.0" + "@aws-sdk/credential-provider-node" "3.288.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.288.0" + "@aws-sdk/middleware-recursion-detection" "3.282.0" + "@aws-sdk/middleware-retry" "3.287.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.287.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.287.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.287.0" + "@aws-sdk/util-utf8" "3.254.0" + fast-xml-parser "4.1.2" + tslib "^2.3.1" + +"@aws-sdk/config-resolver@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.287.0.tgz#1d23e65b338f7877be5f60b172257cb157aba2e0" + integrity sha512-YLJ9+ufcrj73DBmqgG50WMAVNHb8PdWL7hkp3gs00VOsXeEMGdQK92fVlx8Him8yPDikvLS2orrEVRcYxj5Uag== + 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/credential-provider-cognito-identity@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.288.0.tgz#40df7e79020ac4f97cd1a40f9ff005f4946b0b64" + integrity sha512-b530K94qnT9GjVmrQioUtre6SMlwieusMNxV+BzShQ1ZmaLkT11M5R3Cp2lYErlawJSkdH+3xvx+CzqMk3aH+Q== + dependencies: + "@aws-sdk/client-cognito-identity" "3.288.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-env@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.272.0.tgz#c647799806d2cf491b9b0d8d32682393caf74e20" + integrity sha512-QI65NbLnKLYHyTYhXaaUrq6eVsCCrMUb05WDA7+TJkWkjXesovpjc8vUKgFiLSxmgKmb2uOhHNcDyObKMrYQFw== + dependencies: + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-imds@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.287.0.tgz#3d4c9efea358a2e02de45599943a7e4ef2398513" + integrity sha512-awvsREwUgb9V5pbrP9DyNGh5iXBE8Pbb5EeMw8zJsX+cYuD95N0YncrU/7MAf0+ro851gBqjC3Dty8ujrAhkSg== + dependencies: + "@aws-sdk/node-config-provider" "3.287.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + "@aws-sdk/url-parser" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-ini@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.288.0.tgz#26efd3d158ee6fca1b20e123af48e9aed173c2d2" + integrity sha512-uK5x9Vpav7UZ62n+8wvgBsqbh4oxwwjSCpoXECUuS/7pktrEwrPUlozTFNAOtRb6AVN0HCIUXa3xFkw9Dsa04w== + dependencies: + "@aws-sdk/credential-provider-env" "3.272.0" + "@aws-sdk/credential-provider-imds" "3.287.0" + "@aws-sdk/credential-provider-process" "3.287.0" + "@aws-sdk/credential-provider-sso" "3.288.0" + "@aws-sdk/credential-provider-web-identity" "3.272.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.287.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-node@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.288.0.tgz#b6669f2b609761b7ff4d55bbb228f08dcbfb12f3" + integrity sha512-omGUvmWYWCc4Ujdzgto5tV4ppxlDEvD2tcxYTP7tPK6OMQR8img46SJSoL8oa6kwiK0MoI9c6Oy7cvpJMjUeuw== + dependencies: + "@aws-sdk/credential-provider-env" "3.272.0" + "@aws-sdk/credential-provider-imds" "3.287.0" + "@aws-sdk/credential-provider-ini" "3.288.0" + "@aws-sdk/credential-provider-process" "3.287.0" + "@aws-sdk/credential-provider-sso" "3.288.0" + "@aws-sdk/credential-provider-web-identity" "3.272.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.287.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-process@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.287.0.tgz#65579178f17c9384d8467bc9fb393bb5de1c0ede" + integrity sha512-3iWtit/4Iyv/JjL2L0cO7v94NvsISTH/ak0CXqAgb2LdCOz0JN3txgg+ciZzdVLUP8M7x/bm4HjMcUVaxS0HZw== + dependencies: + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.287.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-sso@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.288.0.tgz#b12c90c2a3c9afab4734207692e3497e89f55175" + integrity sha512-4WC+tnA94rrQ66ud0tUcxdpVqwM8z809bn2/aHKketi2/1li0NVK82lZ4+Vv40ELz6kL2hD3CuiNZm/NG6Mhbw== + dependencies: + "@aws-sdk/client-sso" "3.288.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.287.0" + "@aws-sdk/token-providers" "3.288.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-provider-web-identity@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.272.0.tgz#2a1d8f73654c2d50bf27c6355a550bc389d6057e" + integrity sha512-ImrHMkcgneGa/HadHAQXPwOrX26sAKuB8qlMxZF/ZCM2B55u8deY+ZVkVuraeKb7YsahMGehPFOfRAF6mvFI5Q== + dependencies: + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/credential-providers@^3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.288.0.tgz#765458d383b9001150624071d4de337b066aba0a" + integrity sha512-tB3pCK9TL5pAk71uTGi67ez51lM83sIGZEFjuvGU70rvEetyRnmEeSL8wXRW00XMB1Un3s4i0iBdAJwnNNPL/g== + dependencies: + "@aws-sdk/client-cognito-identity" "3.288.0" + "@aws-sdk/client-sso" "3.288.0" + "@aws-sdk/client-sts" "3.288.0" + "@aws-sdk/credential-provider-cognito-identity" "3.288.0" + "@aws-sdk/credential-provider-env" "3.272.0" + "@aws-sdk/credential-provider-imds" "3.287.0" + "@aws-sdk/credential-provider-ini" "3.288.0" + "@aws-sdk/credential-provider-node" "3.288.0" + "@aws-sdk/credential-provider-process" "3.287.0" + "@aws-sdk/credential-provider-sso" "3.288.0" + "@aws-sdk/credential-provider-web-identity" "3.272.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.287.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/endpoint-cache@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/endpoint-cache/-/endpoint-cache-3.208.0.tgz#bd3083c3b85985fb04ec0ab760afc7b4132318c3" + integrity sha512-MkrCvaZhTb1qZCjcDH73t5n43h0Kr0GS+30lpXZ9PAnHJZPqv+vhWFPK0ZsFe1XktbS0WOoDR4ED+lWm0Dw7Rg== + dependencies: + mnemonist "0.38.3" + 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/hash-node@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.272.0.tgz#a39d80fd118ad306f17191f0565ea4db88aa0563" + integrity sha512-40dwND+iAm3VtPHPZu7/+CIdVJFk2s0cWZt1lOiMPMSXycSYJ45wMk7Lly3uoqRx0uWfFK5iT2OCv+fJi5jTng== + dependencies: + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-buffer-from" "3.208.0" + "@aws-sdk/util-utf8" "3.254.0" + tslib "^2.3.1" + +"@aws-sdk/invalid-dependency@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.272.0.tgz#93b34dc0f78d0c44a4beae6dc75dde4801915f1c" + integrity sha512-ysW6wbjl1Y78txHUQ/Tldj2Rg1BI7rpMO9B9xAF6yAX3mQ7t6SUPQG/ewOGvH2208NBIl3qP5e/hDf0Q6r/1iw== + dependencies: + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/is-array-buffer@3.201.0": + version "3.201.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz#06e557adc284fac2f26071c2944ae01f61b95854" + integrity sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/lib-dynamodb@^3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.288.0.tgz#5df3d2b99dad5229bb4b3e800cab15d710dd258e" + integrity sha512-OWQnKzOgTyl+QmCmfKHMpgiIDYqZ+XkS1tCbZ+6v1+w+QEH24MpIBmPQIRAMxdipLJC7R1DJ2uAAOvrbTE6ljQ== + dependencies: + "@aws-sdk/util-dynamodb" "3.288.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-endpoint-discovery@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.287.0.tgz#ec27f38b4dd92f43f2dc603389e676daa515d937" + integrity sha512-EE1nQhsKQ55jdzEcz818g5gd4PdhbW99326YYZ3fb/7wmwNR0M8ebTPqxOg+XD+Re0lM3quhxr8dZ5ObhG3lqA== + dependencies: + "@aws-sdk/config-resolver" "3.287.0" + "@aws-sdk/endpoint-cache" "3.208.0" + "@aws-sdk/protocol-http" "3.282.0" + "@aws-sdk/types" "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-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-logger@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.288.0.tgz#757ee0974de4b738779bd0ed76c0ba43faaa4c1f" + integrity sha512-CoVgwOhopMeP7TqogRxfvqBfmNdG8zK57+f+n8mcfVQwpsCSkkzAi69Gk6u/eKCTbpGEcqEMwk+P45zLEpDaEQ== + dependencies: + "@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.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.287.0.tgz#62e2fa750be65a9bc00b544f3bc5564493af194d" + integrity sha512-pXIAWuwGpWRWjIIJwbkNQGbhOGoOYVaO5WZZ+65PgKkOVDLeCYU0O26PD5cHw2ksUye8dKGfIXHTbe4CmxDveA== + 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-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-serde@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.272.0.tgz#9cb23aaa93fbf404fdb8e01b514b36b2d6fb5bc8" + integrity sha512-kW1uOxgPSwtXPB5rm3QLdWomu42lkYpQL94tM1BjyFOWmBLO2lQhk5a7Dw6HkTozT9a+vxtscLChRa6KZe61Hw== + dependencies: + "@aws-sdk/types" "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-stack@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.272.0.tgz#e62048e47b8ce2ff71d6d32234b6c0be70b0b008" + integrity sha512-jhwhknnPBGhfXAGV5GXUWfEhDFoP/DN8MPCO2yC5OAxyp6oVJ8lTPLkZYMTW5VL0c0eG44dXpF4Ib01V+PlDrQ== + dependencies: + 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/node-config-provider@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.287.0.tgz#c706d285afa01f457cd6948e306849d674496fc1" + integrity sha512-+AO5dy6JEDvgtH9fcuCNnAQd6ilZjww8d/HNTCb5xOhiW1/pKSNMRhouGfn47uxq61WwDN/qUnv2nlVN83RB6w== + dependencies: + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.287.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/node-http-handler@3.282.0", "@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/property-provider@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.272.0.tgz#a626604303acfe83c1a1471f99872dee5641c1a4" + integrity sha512-V1pZTaH5eqpAt8O8CzbItHhOtzIfFuWymvwZFkAtwKuaHpnl7jjrTouV482zoq8AD/fF+VVSshwBKYA7bhidIw== + dependencies: + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/protocol-http@3.282.0", "@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/querystring-builder@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.272.0.tgz#788ca037e21942bb039c920c5dfa4d412b84ea27" + integrity sha512-ndo++7GkdCj5tBXE6rGcITpSpZS4PfyV38wntGYAlj9liL1omk3bLZRY6uzqqkJpVHqbg2fD7O2qHNItzZgqhw== + dependencies: + "@aws-sdk/types" "3.272.0" + "@aws-sdk/util-uri-escape" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/querystring-parser@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.272.0.tgz#68db5798d10a353c35f62bf34cfcebaa53580e51" + integrity sha512-5oS4/9n6N1LZW9tI3qq/0GnCuWoOXRgcHVB+AJLRBvDbEe+GI+C/xK1tKLsfpDNgsQJHc4IPQoIt4megyZ/1+A== + dependencies: + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/service-error-classification@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.272.0.tgz#cf19b82c2ab1e63bb03793c68e6a2b2e7cbd8382" + integrity sha512-REoltM1LK9byyIufLqx9znhSolPcHQgVHIA2S0zu5sdt5qER4OubkLAXuo4MBbisUTmh8VOOvIyUb5ijZCXq1w== + +"@aws-sdk/shared-ini-file-loader@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.287.0.tgz#9e02200eaf57aaef02d3c304f7818c38e2a21f1f" + integrity sha512-CxZp6R11uC12lNg+vKXc8bU7mqIrM43ZY2BbLRZ4tBlc7RLQpcJyccpEwEQAmJq0PA+rDUNod0gYnrM5DOUCLg== + dependencies: + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/signature-v4@3.282.0", "@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/smithy-client@3.279.0": + version "3.279.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.279.0.tgz#a3d90b7fb8e335cb8da46b70133c3db0d4ada8c5" + integrity sha512-ZcYWUQDGAYN6NXRpJuSn46PetrpPCA6TrDVwP9+3pERzTXZ66npXoG2XhHjNrOXy/Ted5A3OxKrM4/zLu9tK3A== + dependencies: + "@aws-sdk/middleware-stack" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/token-providers@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.288.0.tgz#1119034a90a8be6af68029f97265ca854743a214" + integrity sha512-Fa6TV8+M665F+cnXIwqqqgXveiFasfkEYB6/ANZaCjQiwhRtWPlHeCVdhqOHmljdiVTa4gICNmqQC/DzHB/jCA== + dependencies: + "@aws-sdk/client-sso-oidc" "3.288.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/shared-ini-file-loader" "3.287.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" + integrity sha512-MmmL6vxMGP5Bsi+4wRx4mxYlU/LX6M0noOXrDh/x5FfG7/4ZOar/nDxqDadhJtNM88cuWVHZWY59P54JzkGWmA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/url-parser@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.272.0.tgz#1a21abb8815ccc2c1344a3dfab0343f4e3eff4d3" + integrity sha512-vX/Tx02PlnQ/Kgtf5TnrNDHPNbY+amLZjW0Z1d9vzAvSZhQ4i9Y18yxoRDIaDTCNVRDjdhV8iuctW+05PB5JtQ== + dependencies: + "@aws-sdk/querystring-parser" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/util-base64@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz#36b430e5396251f761590f7c2f0c5c12193f353c" + integrity sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg== + dependencies: + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-body-length-browser@3.188.0": + version "3.188.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz#e1d949318c10a621b38575a9ef01e39f9857ddb0" + integrity sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-body-length-node@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz#baabd1fa1206ff2bd4ce3785122d86eb3258dd20" + integrity sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-buffer-from@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz#285e86f6dc9030148a4147d65239e75cb254a1b0" + integrity sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw== + dependencies: + "@aws-sdk/is-array-buffer" "3.201.0" + tslib "^2.3.1" + +"@aws-sdk/util-config-provider@3.208.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz#c485fd83fbac051337e5f6be60ea3f9fa61c0139" + integrity sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-browser@3.279.0": + version "3.279.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.279.0.tgz#8d16977f0162e272b2d77d67c4588a6374e8bd6e" + integrity sha512-RnchYRrpapTT5Hu23LOfk6e8RMVq0kUzho6xA6TJj1a4uGxkcRMvgzPipCq1P5uHu0mrkQBg9pGPEVNOUs38/Q== + dependencies: + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + bowser "^2.11.0" + tslib "^2.3.1" + +"@aws-sdk/util-defaults-mode-node@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.287.0.tgz#bc03551104f18202862660218780629a0157ed58" + integrity sha512-ZGpbPvUA+m+Lf01eTDHkXmulEPT4LphffEt6M9cHPMhwEZfzxhXLyNXyGRunraoBBzB62hKBbFM2atsoHpuIZA== + dependencies: + "@aws-sdk/config-resolver" "3.287.0" + "@aws-sdk/credential-provider-imds" "3.287.0" + "@aws-sdk/node-config-provider" "3.287.0" + "@aws-sdk/property-provider" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/util-dynamodb@3.288.0": + version "3.288.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.288.0.tgz#8b03bc1023bb7392896f4f6161c3e7001f39fce7" + integrity sha512-ZKk2gseo65TJ9wBCdqRjQHAQgUQhZXE6HL0pDX8WctPepWzFyg/eWLRJ7J+lHPNMBeAGl6QJNxe5k2kMUeoX+Q== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-endpoints@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.272.0.tgz#4e4c849708634c3dd840a11abaacb02c89db46d3" + integrity sha512-c4MPUaJt2G6gGpoiwIOqDfUa98c1J63RpYvf/spQEKOtC/tF5Gfqlxuq8FnAl5lHnrqj1B9ZXLLxFhHtDR0IiQ== + dependencies: + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/util-hex-encoding@3.201.0": + version "3.201.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz#21d7ec319240ee68c33d938e71cb79830bea315d" + integrity sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.208.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz#0f598fc238a1256e4bcb64d01459f03a922dd4c3" + integrity sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-middleware@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.272.0.tgz#ed7d732a34659b07f949e2de39cde66271a3c632" + integrity sha512-Abw8m30arbwxqmeMMha5J11ESpHUNmCeSqSzE8/C4B8jZQtHY4kq7f+upzcNIQ11lsd+uzBEzNG3+dDRi0XOJQ== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-retry@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.272.0.tgz#049f777d4a8f9fd7b7ed02e116d3a23ceb34f128" + integrity sha512-Ngha5414LR4gRHURVKC9ZYXsEJhMkm+SJ+44wlzOhavglfdcKKPUsibz5cKY1jpUV7oKECwaxHWpBB8r6h+hOg== + dependencies: + "@aws-sdk/service-error-classification" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/util-uri-escape@3.201.0": + version "3.201.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz#5e708d4cde001a4558ee616f889ceacfadd2ab03" + integrity sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA== + dependencies: + 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-node@3.287.0": + version "3.287.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.287.0.tgz#d5ce49b3282142e0bbc700c14350933cf3524d32" + integrity sha512-yXg0C3WyxyRkQstR4VCTgnEPQd/ViRz+9rEPkYNIWXPvp1l8hPygk5q9tmSD09Lg8wzm6jR6V0MSyJnbwdzq+g== + dependencies: + "@aws-sdk/node-config-provider" "3.287.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/util-utf8@3.254.0": + version "3.254.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz#909af9c6549833a9a9bf77004b7484bfc96b2c35" + integrity sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw== + dependencies: + "@aws-sdk/util-buffer-from" "3.208.0" + tslib "^2.3.1" + +"@aws-sdk/util-waiter@3.272.0": + version "3.272.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.272.0.tgz#958448b6522709d795327f658882ddf0277af273" + integrity sha512-N25/XsJ2wkPh1EgkFyb/GRgfHDityScfD49Hk1AwJWpfetzgkcEtWdeW4IuPymXlSKhrm5L+SBw49USxo9kBag== + dependencies: + "@aws-sdk/abort-controller" "3.272.0" + "@aws-sdk/types" "3.272.0" + tslib "^2.3.1" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" @@ -419,6 +1300,13 @@ "@types/node" "*" jest-mock "^27.5.1" +"@jest/expect-utils@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" + integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== + dependencies: + jest-get-type "^28.0.2" + "@jest/fake-timers@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" @@ -471,6 +1359,13 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + "@jest/source-map@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" @@ -532,6 +1427,18 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -707,6 +1614,11 @@ resolved "https://registry.yarnpkg.com/@oozcitak/util/-/util-8.3.8.tgz#10f65fe1891fd8cde4957360835e78fd1936bfdd" integrity sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ== +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -719,6 +1631,20 @@ dependencies: type-detect "4.0.8" +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" @@ -726,6 +1652,27 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@sinonjs/samsam@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-7.0.1.tgz#5b5fa31c554636f78308439d220986b9523fc51f" + integrity sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/text-encoding@^0.7.1": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" + integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== + "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -840,6 +1787,14 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/jest@^28.1.3": + version "28.1.8" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b" + integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw== + dependencies: + expect "^28.0.0" + pretty-format "^28.0.0" + "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -894,6 +1849,18 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== +"@types/sinon@^10.0.10": + version "10.0.13" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" + integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" + integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" @@ -916,6 +1883,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^17.0.8": + version "17.0.22" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" + integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== + dependencies: + "@types/yargs-parser" "*" + "@typescript-eslint/eslint-plugin@^5": version "5.27.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz#23d82a4f21aaafd8f69dbab7e716323bb6695cc8" @@ -1218,20 +2192,22 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -aws-sdk@^2.1146.0: - version "2.1146.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1146.0.tgz#1b1983447baddbe7105b2ca238a3039c82155bab" - integrity sha512-lg83hvrK2oiJVnklUVMXIJkeYX2nlqhvxIFlZ2wfoaJyvdGsEcOUdZ/EMDgiS0V2jwGS8CtTUypcW/t2S6gdcQ== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.16.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - uuid "8.0.0" - xml2js "0.4.19" +aws-sdk-client-mock-jest@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/aws-sdk-client-mock-jest/-/aws-sdk-client-mock-jest-2.1.0.tgz#93031b4f92d42edd79a063f7b02c4b240e7d779a" + integrity sha512-2HcKQA0kMKi0Lp2ynq/u3trEKDIreXU3wyY9xyeVcbEC5Q2Bw8oWX4ovIZgmvdJHif/IvM7ABcvp/mpBNfyTYQ== + dependencies: + "@types/jest" "^28.1.3" + tslib "^2.1.0" + +aws-sdk-client-mock@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/aws-sdk-client-mock/-/aws-sdk-client-mock-2.1.0.tgz#58247c0fb651cddedbd093c0c06d6bc0caf82e89" + integrity sha512-JkrPrcEvQ4JwylVdQ0njYQMFVwVaZzoVc557rsCorIMjEtmrFvlVYEfIKWoYw8psU4cLjOMyqpxg65NcAn9fvQ== + dependencies: + "@types/sinon" "^10.0.10" + sinon "^14.0.2" + tslib "^2.1.0" axios@^0.27.2: version "0.27.2" @@ -1307,16 +2283,16 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - bn.js@^4.0.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + boxen@^5.0.0: version "5.1.2" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" @@ -1398,15 +2374,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@4.9.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - builtins@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" @@ -2032,11 +2999,21 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2396,11 +3373,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -events@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -2431,6 +3403,17 @@ expect@^27.5.1: jest-matcher-utils "^27.5.1" jest-message-util "^27.5.1" +expect@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== + dependencies: + "@jest/expect-utils" "^28.1.3" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2467,6 +3450,13 @@ fast-safe-stringify@^2.1.1: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== +fast-xml-parser@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz#5a98c18238d28a57bbdfa9fe4cda01211fff8f4a" + integrity sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg== + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -3017,16 +4007,6 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ieee754@1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore-walk@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" @@ -3298,7 +4278,12 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== -isarray@^1.0.0, isarray@~1.0.0: +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== @@ -3442,6 +4427,16 @@ jest-diff@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" +jest-diff@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" + integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== + dependencies: + chalk "^4.0.0" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + jest-docblock@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" @@ -3490,6 +4485,11 @@ jest-get-type@^27.5.1: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== + jest-haste-map@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" @@ -3561,6 +4561,16 @@ jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" +jest-matcher-utils@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== + dependencies: + chalk "^4.0.0" + jest-diff "^28.1.3" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + jest-message-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" @@ -3576,6 +4586,21 @@ jest-message-util@^27.5.1: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" @@ -3722,6 +4747,18 @@ jest-util@^27.0.0, jest-util@^27.5.1: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" @@ -3770,11 +4807,6 @@ jju@^1.1.0: resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== -jmespath@0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" - integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -3930,6 +4962,11 @@ jsonwebtoken@^8.5.1: ms "^2.1.1" semver "^5.6.0" +just-extend@^4.0.2: + version "4.2.1" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" + integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== + jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -4062,6 +5099,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -4395,6 +5437,13 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mnemonist@0.38.3: + version "0.38.3" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" + integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== + dependencies: + obliterator "^1.6.1" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -4430,6 +5479,17 @@ neo-async@^2.6.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +nise@^5.1.2: + version "5.1.4" + resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" + integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers" "^10.0.2" + "@sinonjs/text-encoding" "^0.7.1" + just-extend "^4.0.2" + path-to-regexp "^1.7.0" + node-gyp@^8.4.1: version "8.4.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" @@ -4650,6 +5710,11 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +obliterator@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" + integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -4868,6 +5933,13 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -4941,6 +6013,16 @@ pretty-format@^27.0.0, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^28.0.0, pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + proc-log@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" @@ -5008,11 +6090,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -5030,11 +6107,6 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -5070,6 +6142,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + read-package-json-fast@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" @@ -5281,16 +6358,6 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - saxes@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -5375,6 +6442,18 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +sinon@^14.0.2: + version "14.0.2" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-14.0.2.tgz#585a81a3c7b22cf950762ac4e7c28eb8b151c46f" + integrity sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w== + dependencies: + "@sinonjs/commons" "^2.0.0" + "@sinonjs/fake-timers" "^9.1.2" + "@sinonjs/samsam" "^7.0.1" + diff "^5.0.0" + nise "^5.1.2" + supports-color "^7.2.0" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -5609,6 +6688,11 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -5616,7 +6700,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -5806,11 +6890,16 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.8.1: +tslib@^1.11.1, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.1.0, tslib@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -5832,7 +6921,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8: +type-detect@4.0.8, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -5964,24 +7053,11 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" - integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -6154,14 +7230,6 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xml2js@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - xml@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" @@ -6178,11 +7246,6 @@ xmlbuilder2@^2.4.1: "@types/node" "*" js-yaml "3.14.0" -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= - xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" From 3a66efae050e459bd0f52b4e6ac9b431cf0fa97e Mon Sep 17 00:00:00 2001 From: Sebastian Jackel Date: Sun, 12 Mar 2023 11:40:47 +0100 Subject: [PATCH 2/2] chore(tests): Add some tests for Dynamo updateItem command --- test/dynamodb/client.test.ts | 160 ++++++++++++++++++++++++++++++++++- 1 file changed, 158 insertions(+), 2 deletions(-) diff --git a/test/dynamodb/client.test.ts b/test/dynamodb/client.test.ts index 36e4598..ad9d272 100644 --- a/test/dynamodb/client.test.ts +++ b/test/dynamodb/client.test.ts @@ -9,6 +9,7 @@ import { PrimaryEntity } from '../../src/dynamodb'; interface TestEntry extends PrimaryEntity<`Partition#${string}`, `Sort#${string}`> { content: string; } + describe('A dynamodb client', () => { const testTableName = process.env.TABLE; @@ -126,6 +127,161 @@ describe('A dynamodb client', () => { }); }); - //TODO Test item updates + test('UpdateItem (existing)', async () => { + client.on(commands.UpdateCommand).resolves({ + Attributes: { content: 'updated' }, + }); + + const result = await dynamo.updateExistingItem('Partition#foo', 'Sort#bar', { + content: 'updated', + }); + + // Just making sure, we're actually returning what was passed from the dynamo client + expect(result).toBeDefined(); + expect(result!.content).toEqual('updated'); + + expect(client).toHaveReceivedCommandWith(commands.UpdateCommand, { + TableName: testTableName, + Key: { + PK: 'Partition#foo', + SK: 'Sort#bar', + }, + ConditionExpression: 'attribute_exists(PK) and attribute_exists(SK)', + ExpressionAttributeNames: { '#content': 'content' }, + ExpressionAttributeValues: { ':content': 'updated' }, + ReturnValues: 'ALL_NEW', + UpdateExpression: 'SET #content = :content ', + }); + }); + + type TestSetup = { + testName: string; + given: { + Key: { + PK: string; + SK: string; + }; + UpdateExpression?: string; + item: {[key: string]: any}; + }; + expected: commands.UpdateCommandInput; + } + + test.each([ + { + testName: 'simple update', + given: { + Key: { + PK: 'Partition#simple', + SK: 'Sort#update', + }, + item: { + content: 'updated', + }, + }, + expected: { + TableName: testTableName, + Key: { + PK: 'Partition#simple', + SK: 'Sort#update', + }, + ExpressionAttributeNames: { '#content': 'content' }, + ExpressionAttributeValues: { ':content': 'updated' }, + UpdateExpression: 'SET #content = :content ', + }, + }, + { + testName: 'multiple values/types', + given: { + Key: { + PK: 'Partition#multiple', + SK: 'Sort#fields', + }, + item: { + someValue: 'updated', + otherValue: 42, + }, + }, + expected: { + TableName: testTableName, + Key: { + PK: 'Partition#multiple', + SK: 'Sort#fields', + }, + ExpressionAttributeNames: { + '#otherValue': 'otherValue', + '#someValue': 'someValue', + }, + ExpressionAttributeValues: { + ':otherValue': 42, + ':someValue': 'updated', + }, + UpdateExpression: 'SET #someValue = :someValue, #otherValue = :otherValue ', + }, + }, + { + testName: 'remove field', + given: { + Key: { + PK: 'Partition#remove', + SK: 'Sort#field', + }, + item: { + content: 'stay', + removeMe: undefined, + }, + }, + expected: { + TableName: testTableName, + Key: { + PK: 'Partition#remove', + SK: 'Sort#field', + }, + ExpressionAttributeNames: { + '#content': 'content', + '#removeMe': 'removeMe', + }, + ExpressionAttributeValues: { + ':content': 'stay', + }, + UpdateExpression: 'SET #content = :content REMOVE #removeMe ', + }, + }, + { + testName: 'partial request', + given: { + Key: { + PK: 'Partition#partial', + SK: 'Sort#request', + }, + UpdateExpression: 'I AM THE UPDATE EXPRESSION', + item: { + content: 'someContent', + }, + }, + expected: { + TableName: testTableName, + Key: { + PK: 'Partition#partial', + SK: 'Sort#request', + }, + ExpressionAttributeNames: { + '#content': 'content', + }, + ExpressionAttributeValues: { + ':content': 'someContent', + }, + UpdateExpression: 'SET #content = :content I AM THE UPDATE EXPRESSION', + }, + }, + ])('createUpdate ($testName)', ({ given, expected }) => { + const result = dynamo.createUpdate({ + Key: given.Key, + UpdateExpression: given.UpdateExpression, + }, given.item); + + expect(result.input).toEqual(expected); + }); }); -}); \ No newline at end of file +}) +; \ No newline at end of file