From c80cda5d9d396d06c4e7be567ca3e7800ceda69a Mon Sep 17 00:00:00 2001 From: andrewpatto Date: Tue, 28 Nov 2023 18:04:30 +1100 Subject: [PATCH] Added a Go application to wrap the rclone process --- README.md | 40 + dev/package.json | 13 +- dev/test.ts | 148 +- .../can-write-lambda-step-construct.ts | 38 +- .../can-write-lambda/can-write-lambda.ts | 26 +- .../construct/can-write-lambda/errors.ts | 15 + .../can-write-lambda/package-lock.json | 1438 +++++++++++ .../construct/can-write-lambda/package.json | 5 +- .../copy-out-state-machine-construct.ts | 58 +- .../distributed-map-step-construct.ts | 17 +- .../construct/fargate-run-task-construct.ts | 39 +- .../rclone-batch-copy-docker-image/Dockerfile | 6 +- .../rclone-batch-copy.sh | 9 + .../.dockerignore | 3 + .../.gitignore | 3 + .../Dockerfile | 28 +- .../rclone-go-batch-copy-docker-image/go.mod | 21 + .../rclone-go-batch-copy-docker-image/go.sum | 30 + .../rclone-go-batch-copy-docker-image/main.go | 157 ++ .../test-assert.sh | 186 ++ .../test-docker-direct.sh | 8 + .../test-go-direct.sh | 86 + .../testfile2.txt | 1 + .../thaw-objects-lambda-step-construct.ts | 6 +- .../thaw-objects-lambda/package.json | 2 +- .../aws-copy-out-sharer/copy-out-stack.ts | 12 +- packages/aws-copy-out-sharer/package.json | 17 +- pnpm-lock.yaml | 2113 ++++++++++++----- 28 files changed, 3802 insertions(+), 723 deletions(-) create mode 100644 packages/aws-copy-out-sharer/construct/can-write-lambda/package-lock.json create mode 100644 packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.sum create mode 100755 packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-assert.sh mode change 100644 => 100755 packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-docker-direct.sh mode change 100644 => 100755 packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-go-direct.sh create mode 100644 packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/testfile2.txt diff --git a/README.md b/README.md index ead4b6f..98cbc98 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,46 @@ A service that can be installed into an Elsa Data environment and which enables parallel file copying out into a destination bucket in the same region. +NOTE: this is a general purpose "S3 file copy" tool - so might +be useful outside of Elsa Data. It can certainly be invoked +directly as a Steps function independent of Elsa Data (all +the Elsa Data does is sets up the input CSVs and then invokes +the Steps function itself). + +## Development + +On check-out (once only) (note that `pre-commit` is presumed installed externally) + +```shell +pre-commit install +``` + +For package installation (note that `pnpm` is presumed installed externally) + +```shell +pnpm install +``` + +Edit the packages and deploy to dev + +```shell +(in the dev folder) +pnpm run deploy +``` + +## Testing + +Because this service is very dependent on the behaviour of AWS Steps +(using distributed maps) - it was too complex to set up a "local" test +that would actually test much of the pieces likely to fail. + +Instead, development is done and the CDK project is deployed to a "dev" account (noting +that this sets the minimum dev cadence for trying changes +to minutes rather than seconds). + +There is then a test script - that creates samples objects - and launches +test invocations. + ## Input ```json diff --git a/dev/package.json b/dev/package.json index fb8a0c7..db2c929 100644 --- a/dev/package.json +++ b/dev/package.json @@ -3,9 +3,18 @@ "private": true, "version": "0.0.0", "description": "Manual CDK deployment for development", + "scripts": { + "deploy": "pnpm -w run build && cdk deploy", + "destroy": "pnpm -w run build && cdk destroy", + "test": "ts-node --prefer-ts-exts test.ts", + "test-quick": "ts-node --prefer-ts-exts test.ts" + }, "dependencies": { - "aws-cdk": "2.93.0", - "aws-cdk-lib": "2.93.0", + "@aws-sdk/client-s3": "3.450.0", + "@aws-sdk/client-servicediscovery": "3.450.0", + "@aws-sdk/client-sfn": "3.450.0", + "aws-cdk": "2.108.1", + "aws-cdk-lib": "2.108.1", "aws-copy-out-sharer": "link:../packages/aws-copy-out-sharer" }, "devDependencies": {} diff --git a/dev/test.ts b/dev/test.ts index 97fe028..02bce22 100644 --- a/dev/test.ts +++ b/dev/test.ts @@ -1,26 +1,122 @@ -import { CopyOutStack } from "aws-copy-out-sharer"; -import { SubnetType } from "aws-cdk-lib/aws-ec2"; -import { App } from "aws-cdk-lib"; - -const app = new App(); - -const description = - "Bulk copy-out service for Elsa Data - an application for controlled genomic data sharing"; - -const devId = "ElsaDataDevCopyOutStack"; - -new CopyOutStack(app, devId, { - // the stack can only be deployed to 'dev' - env: { - account: "843407916570", - region: "ap-southeast-2", - }, - tags: { - "umccr-org:Product": "ElsaData", - "umccr-org:Stack": devId, - }, - description: description, - isDevelopment: true, - infrastructureStackName: "ElsaDataDevInfrastructureStack", - infrastructureSubnetSelection: SubnetType.PRIVATE_WITH_EGRESS, -}); +import { randomBytes } from "crypto"; +import { S3Client, PutObjectCommand, StorageClass } from "@aws-sdk/client-s3"; +import { SFNClient, StartExecutionCommand } from "@aws-sdk/client-sfn"; +import { + DiscoverInstancesCommand, + ServiceDiscoveryClient, +} from "@aws-sdk/client-servicediscovery"; + +/** + * The only configurable item needed for the test cases - set this to a bucket you have + * full access to. Ideally the bucket should have a lifecycle that auto expires objects after 1 day. + */ +const TEST_BUCKET = "elsa-data-tmp"; + +const discoveryClient = new ServiceDiscoveryClient({}); +const s3Client = new S3Client({}); +const sfnClient = new SFNClient({}); + +const testFolder = randomBytes(16).toString("hex"); +const testFolderSrc = testFolder + "-src"; +const testFolderDest = testFolder + "-dest"; + +async function makeObjectListCsv(key: string, keys: string[]) { + let content = ""; + for (const k of keys) { + content += `${TEST_BUCKET},"${k}"\n`; + } + const response = await s3Client.send( + new PutObjectCommand({ + Bucket: TEST_BUCKET, + Key: key, + Body: content, + }), + ); +} + +async function makeTestObject( + key: string, + sizeInBytes: number, + storageClass: StorageClass = "STANDARD", +) { + const response = await s3Client.send( + new PutObjectCommand({ + Bucket: TEST_BUCKET, + Key: key, + Body: "Hello S3!", + StorageClass: storageClass, + }), + ); +} + +async function createTestData() { + const sourceObjects = { + [`${testFolderSrc}/1.bin`]: StorageClass.STANDARD, + [`${testFolderSrc}/2.bin`]: StorageClass.STANDARD, + [`${testFolderSrc}/3.bin`]: StorageClass.GLACIER, + }; + + for (const [n, stor] of Object.entries(sourceObjects)) { + await makeTestObject(n, 1000, stor); + } + + await makeObjectListCsv( + `${testFolderSrc}/objects-to-copy.tsv`, + Object.keys(sourceObjects), + ); +} + +(async () => { + console.log(`Src objects = ${TEST_BUCKET}:${testFolderSrc}`); + console.log(`Dest objects = ${TEST_BUCKET}:${testFolderDest}`); + + const stepsDiscover = await discoveryClient.send( + new DiscoverInstancesCommand({ + NamespaceName: "elsa-data", + ServiceName: "CopyOut", + }), + ); + + if ( + !stepsDiscover || + !stepsDiscover.Instances || + stepsDiscover.Instances.length != 1 + ) + throw new Error( + "Did not discover the expected number of CopyOut instances in the Elsa Data CloudMap", + ); + + const stateMachineDiscovered = stepsDiscover?.Instances[0]; + + if (!stateMachineDiscovered.Attributes) + throw new Error( + "Did not discover state machine settings in CopyOut CloudMap", + ); + + const stateMachineArn = stateMachineDiscovered.Attributes["stateMachineArn"]; + + await createTestData(); + + /*await sfnClient.send(new StartExecutionCommand({ + stateMachineArn: stateMachineArn, + input: JSON.stringify({ + sourceFilesCsvBucket: TEST_BUCKET, + sourceFilesCsvKey: `${testFolderSrc}/objects-to-copy.tsv`, + destinationBucket: TEST_BUCKET, + maxItemsPerBatch: 1 + }) + }));*/ + + await sfnClient.send( + new StartExecutionCommand({ + stateMachineArn: stateMachineArn, + input: JSON.stringify({ + sourceFilesCsvBucket: TEST_BUCKET, + sourceFilesCsvKey: `${testFolderSrc}/objects-to-copy.tsv`, + destinationBucket: TEST_BUCKET, + destinationKey: testFolderDest, + maxItemsPerBatch: 1, + }), + }), + ); +})(); diff --git a/packages/aws-copy-out-sharer/construct/can-write-lambda-step-construct.ts b/packages/aws-copy-out-sharer/construct/can-write-lambda-step-construct.ts index a8fd2be..da2b011 100644 --- a/packages/aws-copy-out-sharer/construct/can-write-lambda-step-construct.ts +++ b/packages/aws-copy-out-sharer/construct/can-write-lambda-step-construct.ts @@ -13,6 +13,16 @@ type CanWriteLambdaStepProps = { vpcSubnetSelection: SubnetType; requiredRegion: string; + + /** + * If true, will allow this CanWrite lambda to test a bucket that is + * in the same account. Otherwise, and by default, the CanWrite lambda + * is set up to not be able to test a bucket in the same account as it + * is installed. This is a security mechanism as writes to buckets in the + * same account is allowed implicitly but is dangerous. This should only + * be set to true for development/testing. + */ + allowWriteToThisAccount?: boolean; }; /** @@ -28,12 +38,16 @@ export class CanWriteLambdaStepConstruct extends Construct { const canWriteLambda = new NodejsFunction(this, "CanWriteFunction", { vpc: props.vpc, - entry: join(__dirname, "can-write-lambda", "can-write-lambda.js"), + entry: join(__dirname, "can-write-lambda", "can-write-lambda.ts"), // by specifying the precise runtime - the bundler knows exactly what packages are already in // the base image - and for us can skip bundling @aws-sdk - // if we need to move this forward to node 18+ - then we may need to revisit this + // if we need to move this forward beyond node 18 - then we may need to revisit this runtime: Runtime.NODEJS_18_X, handler: "handler", + bundling: { + externalModules: ["aws-sdk"], + minify: false, + }, vpcSubnets: { subnetType: props.vpcSubnetSelection, }, @@ -46,15 +60,17 @@ export class CanWriteLambdaStepConstruct extends Construct { effect: Effect.ALLOW, actions: ["s3:PutObject"], resources: ["*"], - conditions: { - // yes - that's right - we want to give this lambda the ability to attempt the writes anywhere - // EXCEPT where we are deployed - // (under the assumption that buckets outside our account must be giving us explicit write permission, - // whilst within our account we get implicit access - in this case we don't want that ability) - StringNotEquals: { - "s3:ResourceAccount": [Stack.of(this).account], - }, - }, + // yes - that's right - we want to give this lambda the ability to attempt the writes anywhere + // EXCEPT where we are deployed + // (under the assumption that buckets outside our account must be giving us explicit write permission, + // whilst within our account we get implicit access - in this case we don't want that ability) + conditions: props.allowWriteToThisAccount + ? undefined + : { + StringNotEquals: { + "s3:ResourceAccount": [Stack.of(this).account], + }, + }, }), ); diff --git a/packages/aws-copy-out-sharer/construct/can-write-lambda/can-write-lambda.ts b/packages/aws-copy-out-sharer/construct/can-write-lambda/can-write-lambda.ts index e4646e6..c3e3836 100644 --- a/packages/aws-copy-out-sharer/construct/can-write-lambda/can-write-lambda.ts +++ b/packages/aws-copy-out-sharer/construct/can-write-lambda/can-write-lambda.ts @@ -1,18 +1,12 @@ -const { PutObjectCommand, S3Client } = require("@aws-sdk/client-s3"); +import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import { AccessDeniedError, WrongRegionError } from "./errors"; -export const handler = async (event) => { - function WrongRegionError(message) { - this.name = "WrongRegionError"; - this.message = message; - } - WrongRegionError.prototype = new Error(); - - function AccessDeniedError(message) { - this.name = "AccessDeniedError"; - this.message = message; - } - AccessDeniedError.prototype = new Error(); +interface InvokeEvent { + requiredRegion: string; + destinationBucket: string; +} +export async function handler(event: InvokeEvent) { console.log(event.requiredRegion); console.log(event.destinationBucket); @@ -27,8 +21,8 @@ export const handler = async (event) => { Body: "A file created by Elsa Data copy out to ensure correct permissions", }); - const response = await client.send(putCommand); - } catch (e) { + await client.send(putCommand); + } catch (e: any) { if (e.Code === "PermanentRedirect") throw new WrongRegionError( "S3 Put failed because bucket was in the wrong region", @@ -39,7 +33,7 @@ export const handler = async (event) => { throw e; } -}; +} /*handler({ requiredRegion: "ap-southeast-2", diff --git a/packages/aws-copy-out-sharer/construct/can-write-lambda/errors.ts b/packages/aws-copy-out-sharer/construct/can-write-lambda/errors.ts index e69de29..d693553 100644 --- a/packages/aws-copy-out-sharer/construct/can-write-lambda/errors.ts +++ b/packages/aws-copy-out-sharer/construct/can-write-lambda/errors.ts @@ -0,0 +1,15 @@ +export class WrongRegionError extends Error { + constructor(message: string) { + super(); + this.name = "WrongRegionError"; + this.message = message; + } +} + +export class AccessDeniedError extends Error { + constructor(message: string) { + super(); + this.name = "AccessDeniedError"; + this.message = message; + } +} diff --git a/packages/aws-copy-out-sharer/construct/can-write-lambda/package-lock.json b/packages/aws-copy-out-sharer/construct/can-write-lambda/package-lock.json new file mode 100644 index 0000000..e84c5e8 --- /dev/null +++ b/packages/aws-copy-out-sharer/construct/can-write-lambda/package-lock.json @@ -0,0 +1,1438 @@ +{ + "name": "can-write-lambda", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "can-write-lambda", + "version": "1.0.0", + "dependencies": { + "@aws-sdk/client-s3": "3.405.0", + "@types/aws-lambda": "8.10.93" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/crc32c": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz", + "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/crc32c/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz", + "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==", + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "dependencies": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.405.0.tgz", + "integrity": "sha512-+LK6OCbKplR51zBZAtK/+RxaPsXcEklsA1+mmUA3M1h4KHl6GMiK5r/D9dlKht5DRntmmjCn3SI99QbfckqKXg==", + "dependencies": { + "@aws-crypto/sha1-browser": "3.0.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.405.0", + "@aws-sdk/credential-provider-node": "3.405.0", + "@aws-sdk/middleware-bucket-endpoint": "3.405.0", + "@aws-sdk/middleware-expect-continue": "3.398.0", + "@aws-sdk/middleware-flexible-checksums": "3.400.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-location-constraint": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-sdk-s3": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-ssec": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/signature-v4-multi-region": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.405.0", + "@aws-sdk/xml-builder": "3.310.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/eventstream-serde-browser": "^2.0.5", + "@smithy/eventstream-serde-config-resolver": "^2.0.5", + "@smithy/eventstream-serde-node": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-blob-browser": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/hash-stream-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/md5-js": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.6", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.6", + "@smithy/util-defaults-mode-node": "^2.0.6", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-stream": "^2.0.5", + "@smithy/util-utf8": "^2.0.0", + "@smithy/util-waiter": "^2.0.5", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.405.0.tgz", + "integrity": "sha512-z1ssydU07bDhe0tNXQwVO+rWh/iSfK48JI8s8vgpBNwH+NejMzIJ9r3AkjCiJ+LSAwlBZItUsNWwR0veIfgBiw==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.405.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.6", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.6", + "@smithy/util-defaults-mode-node": "^2.0.6", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.405.0.tgz", + "integrity": "sha512-asVEpda3zu5QUO5ZNNjbLBS0718IhxxyUDVrNmVTKZoOhK1pMNouGZf+l49v0Lb5cOPbUds8cxsNaInj2MvIKw==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/credential-provider-node": "3.405.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-sdk-sts": "3.398.0", + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.405.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.6", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/protocol-http": "^2.0.5", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.6", + "@smithy/util-defaults-mode-node": "^2.0.6", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.398.0.tgz", + "integrity": "sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.405.0.tgz", + "integrity": "sha512-b4TqVsM4WQM96GDVs+TYOhU2/0SnUWzz6NH55qY1y2xyF8/pZEhc0XXdpvZtQQBLGdROhXCbxhBVye8GmTpgcg==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.398.0", + "@aws-sdk/credential-provider-process": "3.405.0", + "@aws-sdk/credential-provider-sso": "3.405.0", + "@aws-sdk/credential-provider-web-identity": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.405.0.tgz", + "integrity": "sha512-AMmRP09nwYsft0MXDlHIxMQe7IloWW8As0lbZmPrG7Y7mK5RDmCIwD2yMDz77Zqlv09FsYt+9+cOK2fTNhim+Q==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.398.0", + "@aws-sdk/credential-provider-ini": "3.405.0", + "@aws-sdk/credential-provider-process": "3.405.0", + "@aws-sdk/credential-provider-sso": "3.405.0", + "@aws-sdk/credential-provider-web-identity": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.405.0.tgz", + "integrity": "sha512-EqAMcUVeZAICYHHL8x5Fi5CYPgCo9UCE7ScWmU5Sa2wAFY4XLyQ1mMxX3lKGYx9lBxWk3dqnhmvlcqdzN7AjyQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.405.0.tgz", + "integrity": "sha512-fXqSgQHz7qcmIWMVguwSMSjqFkVfN2+XiNgiskcmeYiCS7mIGAgUnKABZc9Ds2+YW9ATYiY0BOD5aWxc8TX5fA==", + "dependencies": { + "@aws-sdk/client-sso": "3.405.0", + "@aws-sdk/token-providers": "3.405.0", + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.398.0.tgz", + "integrity": "sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.405.0.tgz", + "integrity": "sha512-wKmHZi44NkbaGXXbMwassUm06/wDtSYucPbM4paU2cMbBUOnwFpndHWlrRYCNmj5Ty5A2HjdkGlhgla8nifHzQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-arn-parser": "3.310.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/util-config-provider": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.398.0.tgz", + "integrity": "sha512-d6he+Qqwh1yqml9duXSv5iKJ2lS0PVrF2UEsVew2GFxfUif0E/davTZJjvWtnelbuIGcTP+wDKVVjLwBN2sN/g==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.400.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.400.0.tgz", + "integrity": "sha512-lpsumd5/G+eAMTr61h/cJQZ8+i+xzC6OG3bvUcbRHqcjN49XgeNLcPfYcr6Rzf0QHxmuCN4te/4XGU3Fif2YVA==", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@aws-crypto/crc32c": "3.0.0", + "@aws-sdk/types": "3.398.0", + "@smithy/is-array-buffer": "^2.0.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.398.0.tgz", + "integrity": "sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.398.0.tgz", + "integrity": "sha512-it+olJf1Lf2bmH8OL/N1jMOFB0zEVYs4rIzgFrluTRCuPatRuDi4LsXS8zqYxkBa05JE8JmqwW5gCzAmWyLLqw==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.398.0.tgz", + "integrity": "sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.398.0.tgz", + "integrity": "sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.398.0.tgz", + "integrity": "sha512-yweSMc/TyiFtqc52hFMKQJvTm3i1KCoW5mB3o/Sla6zsHBh+nS6TTaBmo+2kcDIR7AKODwW+FLCTHWiazb7J3Q==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-arn-parser": "3.310.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.398.0.tgz", + "integrity": "sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==", + "dependencies": { + "@aws-sdk/middleware-signing": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.398.0.tgz", + "integrity": "sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/signature-v4": "^2.0.0", + "@smithy/types": "^2.2.2", + "@smithy/util-middleware": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.398.0.tgz", + "integrity": "sha512-QtKr/hPcRugKSIZAH4+7hbUfdW7Lg+OQvD25nJn7ic1JHRZ+eDctEFxdsmnt68lE6aZxOcHCWHAW6/umcA93Dw==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.398.0.tgz", + "integrity": "sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.398.0.tgz", + "integrity": "sha512-8fTqTxRDWE03T7ClaWlCfbwuSae//01XMNVy2a9g5QgaelQh7ZZyU3ZIJiV8gIj8v6ZM0NGn9Bz1liI/vmNmcw==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/signature-v4": "^2.0.0", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/signature-v4-crt": "^3.118.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/signature-v4-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.405.0.tgz", + "integrity": "sha512-rVzC7ptf7TlV84M9w+Ds9isio1EY7bs1MRFv/6lmYstsyTri+DaZG10TwXSGfzIMwB0yVh11niCxO9wSjQ36zg==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/middleware-host-header": "3.398.0", + "@aws-sdk/middleware-logger": "3.398.0", + "@aws-sdk/middleware-recursion-detection": "3.398.0", + "@aws-sdk/middleware-user-agent": "3.398.0", + "@aws-sdk/types": "3.398.0", + "@aws-sdk/util-endpoints": "3.398.0", + "@aws-sdk/util-user-agent-browser": "3.398.0", + "@aws-sdk/util-user-agent-node": "3.405.0", + "@smithy/config-resolver": "^2.0.5", + "@smithy/fetch-http-handler": "^2.0.5", + "@smithy/hash-node": "^2.0.5", + "@smithy/invalid-dependency": "^2.0.5", + "@smithy/middleware-content-length": "^2.0.5", + "@smithy/middleware-endpoint": "^2.0.5", + "@smithy/middleware-retry": "^2.0.5", + "@smithy/middleware-serde": "^2.0.5", + "@smithy/middleware-stack": "^2.0.0", + "@smithy/node-config-provider": "^2.0.6", + "@smithy/node-http-handler": "^2.0.5", + "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^2.0.5", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/smithy-client": "^2.0.5", + "@smithy/types": "^2.2.2", + "@smithy/url-parser": "^2.0.5", + "@smithy/util-base64": "^2.0.0", + "@smithy/util-body-length-browser": "^2.0.0", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.6", + "@smithy/util-defaults-mode-node": "^2.0.6", + "@smithy/util-retry": "^2.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.398.0.tgz", + "integrity": "sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz", + "integrity": "sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.398.0.tgz", + "integrity": "sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", + "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.398.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.398.0.tgz", + "integrity": "sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/types": "^2.2.2", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.405.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.405.0.tgz", + "integrity": "sha512-6Ssld7aalKCnW6lSGfiiWpqwo2L+AmYq2oV3P9yYAo9ZL+Q78dXquabwj3uq3plJ4l2xE4Gfcf2FJ/1PZpqDvQ==", + "dependencies": { + "@aws-sdk/types": "3.398.0", + "@smithy/node-config-provider": "^2.0.6", + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.310.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz", + "integrity": "sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.0.13.tgz", + "integrity": "sha512-eeOPD+GF9BzF/Mjy3PICLePx4l0f3rG/nQegQHRLTloN5p1lSJJNZsyn+FzDnW8P2AduragZqJdtKNCxXozB1Q==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.0.0.tgz", + "integrity": "sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.0.1.tgz", + "integrity": "sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==", + "dependencies": { + "@smithy/util-base64": "^2.0.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.0.18.tgz", + "integrity": "sha512-761sJSgNbvsqcsKW6/WZbrZr4H+0Vp/QKKqwyrxCPwD8BsiPEXNHyYnqNgaeK9xRWYswjon0Uxbpe3DWQo0j/g==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.5", + "@smithy/types": "^2.5.0", + "@smithy/util-config-provider": "^2.0.0", + "@smithy/util-middleware": "^2.0.6", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.1.1.tgz", + "integrity": "sha512-gw5G3FjWC6sNz8zpOJgPpH5HGKrpoVFQpToNAwLwJVyI/LJ2jDJRjSKEsM6XI25aRpYjMSE/Qptxx305gN1vHw==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.5", + "@smithy/property-provider": "^2.0.14", + "@smithy/types": "^2.5.0", + "@smithy/url-parser": "^2.0.13", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.0.13.tgz", + "integrity": "sha512-CExbelIYp+DxAHG8RIs0l9QL7ElqhG4ym9BNoSpkPa4ptBQfzJdep3LbOSVJIE2VUdBAeObdeL6EDB3Jo85n3g==", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.5.0", + "@smithy/util-hex-encoding": "^2.0.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.0.13.tgz", + "integrity": "sha512-OJ/2g/VxkzA+mYZxV102oX3CsiE+igTSmqq/ir3oEVG2kSIdRC00ryttj/lmL14W06ExNi0ysmfLxQkL8XrAZQ==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^2.0.13", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.0.13.tgz", + "integrity": "sha512-2BI1CbnYuEvAYoWSeWJtPNygbIKiWeSLxCmDLnyM6wQV32Of7VptiQlaFXPxXp4zqn/rs3ocZ/T29rxE4s4Gsg==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.0.13.tgz", + "integrity": "sha512-7NbFwPafb924elFxCBDvm48jy/DeSrpFbFQN0uN2ThuY5HrEeubikS0t7WMva4Z4EnRoivpbuT0scb9vUIJKoA==", + "dependencies": { + "@smithy/eventstream-serde-universal": "^2.0.13", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.0.13.tgz", + "integrity": "sha512-j0yFd5UfftM+ia9dxLRbheJDCkCZBHpcEzCsPO8BxVOTbdcX/auVJCv6ov/yvpCKsf4Hv3mOqi0Is1YogM2g3Q==", + "dependencies": { + "@smithy/eventstream-codec": "^2.0.13", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.2.6.tgz", + "integrity": "sha512-PStY3XO1Ksjwn3wMKye5U6m6zxXpXrXZYqLy/IeCbh3nM9QB3Jgw/B0PUSLUWKdXg4U8qgEu300e3ZoBvZLsDg==", + "dependencies": { + "@smithy/protocol-http": "^3.0.9", + "@smithy/querystring-builder": "^2.0.13", + "@smithy/types": "^2.5.0", + "@smithy/util-base64": "^2.0.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/protocol-http": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz", + "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.0.14.tgz", + "integrity": "sha512-yWdghyPJIEqLYsaE7YVgd3YhM7jN4Pv6eJQvTomnMsz5K2qRBlpjUx3T9fKlElp1qdeQ7DNc3sAat4i9CUBO7Q==", + "dependencies": { + "@smithy/chunked-blob-reader": "^2.0.0", + "@smithy/chunked-blob-reader-native": "^2.0.1", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.0.15.tgz", + "integrity": "sha512-t/qjEJZu/G46A22PAk1k/IiJZT4ncRkG5GOCNWN9HPPy5rCcSZUbh7gwp7CGKgJJ7ATMMg+0Td7i9o1lQTwOfQ==", + "dependencies": { + "@smithy/types": "^2.5.0", + "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.0.15.tgz", + "integrity": "sha512-ZZ6kC/pHt5Dc2goXIIyC8uA7A4GUMSzdCynAabnZ3CSSaV6ctP8mlvVkqjPph0O3XzHlx/80gdLrNqi1GDPUsA==", + "dependencies": { + "@smithy/types": "^2.5.0", + "@smithy/util-utf8": "^2.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.0.13.tgz", + "integrity": "sha512-XsGYhVhvEikX1Yz0kyIoLssJf2Rs6E0U2w2YuKdT4jSra5A/g8V2oLROC1s56NldbgnpesTYB2z55KCHHbKyjw==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.0.0.tgz", + "integrity": "sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.0.15.tgz", + "integrity": "sha512-pAZaokib56XvhU0t/R9vAcr3L3bMhIakhF25X7EMSQ7LAURiLfce/tgON8I3x/dIbnZUyeRi8f2cx2azu6ATew==", + "dependencies": { + "@smithy/types": "^2.5.0", + "@smithy/util-utf8": "^2.0.2", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.0.15.tgz", + "integrity": "sha512-xH4kRBw01gJgWiU+/mNTrnyFXeozpZHw39gLb3JKGsFDVmSrJZ8/tRqu27tU/ki1gKkxr2wApu+dEYjI3QwV1Q==", + "dependencies": { + "@smithy/protocol-http": "^3.0.9", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-content-length/node_modules/@smithy/protocol-http": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz", + "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.2.0.tgz", + "integrity": "sha512-tddRmaig5URk2106PVMiNX6mc5BnKIKajHHDxb7K0J5MLdcuQluHMGnjkv18iY9s9O0tF+gAcPd/pDXA5L9DZw==", + "dependencies": { + "@smithy/middleware-serde": "^2.0.13", + "@smithy/node-config-provider": "^2.1.5", + "@smithy/shared-ini-file-loader": "^2.2.4", + "@smithy/types": "^2.5.0", + "@smithy/url-parser": "^2.0.13", + "@smithy/util-middleware": "^2.0.6", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.0.20.tgz", + "integrity": "sha512-X2yrF/SHDk2WDd8LflRNS955rlzQ9daz9UWSp15wW8KtzoTXg3bhHM78HbK1cjr48/FWERSJKh9AvRUUGlIawg==", + "dependencies": { + "@smithy/node-config-provider": "^2.1.5", + "@smithy/protocol-http": "^3.0.9", + "@smithy/service-error-classification": "^2.0.6", + "@smithy/types": "^2.5.0", + "@smithy/util-middleware": "^2.0.6", + "@smithy/util-retry": "^2.0.6", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz", + "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.0.13.tgz", + "integrity": "sha512-tBGbeXw+XsE6pPr4UaXOh+UIcXARZeiA8bKJWxk2IjJcD1icVLhBSUQH9myCIZLNNzJIH36SDjUX8Wqk4xJCJg==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.0.7.tgz", + "integrity": "sha512-L1KLAAWkXbGx1t2jjCI/mDJ2dDNq+rp4/ifr/HcC6FHngxho5O7A5bQLpKHGlkfATH6fUnOEx0VICEVFA4sUzw==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.1.5.tgz", + "integrity": "sha512-3Omb5/h4tOCuKRx4p4pkYTvEYRCYoKk52bOYbKUyz/G/8gERbagsN8jFm4FjQubkrcIqQEghTpQaUw6uk+0edw==", + "dependencies": { + "@smithy/property-provider": "^2.0.14", + "@smithy/shared-ini-file-loader": "^2.2.4", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.1.9.tgz", + "integrity": "sha512-+K0q3SlNcocmo9OZj+fz67gY4lwhOCvIJxVbo/xH+hfWObvaxrMTx7JEzzXcluK0thnnLz++K3Qe7Z/8MDUreA==", + "dependencies": { + "@smithy/abort-controller": "^2.0.13", + "@smithy/protocol-http": "^3.0.9", + "@smithy/querystring-builder": "^2.0.13", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.0.9.tgz", + "integrity": "sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.0.14.tgz", + "integrity": "sha512-k3D2qp9o6imTrLaXRj6GdLYEJr1sXqS99nLhzq8fYmJjSVOeMg/G+1KVAAc7Oxpu71rlZ2f8SSZxcSxkevuR0A==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-2.0.5.tgz", + "integrity": "sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==", + "dependencies": { + "@smithy/types": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.0.13.tgz", + "integrity": "sha512-JhXKwp3JtsFUe96XLHy/nUPEbaXqn6r7xE4sNaH8bxEyytE5q1fwt0ew/Ke6+vIC7gP87HCHgQpJHg1X1jN2Fw==", + "dependencies": { + "@smithy/types": "^2.5.0", + "@smithy/util-uri-escape": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.0.13.tgz", + "integrity": "sha512-TEiT6o8CPZVxJ44Rly/rrsATTQsE+b/nyBVzsYn2sa75xAaZcurNxsFd8z1haoUysONiyex24JMHoJY6iCfLdA==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.0.6.tgz", + "integrity": "sha512-fCQ36frtYra2fqY2/DV8+3/z2d0VB/1D1hXbjRcM5wkxTToxq6xHbIY/NGGY6v4carskMyG8FHACxgxturJ9Pg==", + "dependencies": { + "@smithy/types": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.2.4.tgz", + "integrity": "sha512-9dRknGgvYlRIsoTcmMJXuoR/3ekhGwhRq4un3ns2/byre4Ql5hyUN4iS0x8eITohjU90YOnUCsbRwZRvCkbRfw==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.0.15.tgz", + "integrity": "sha512-SRTEJSEhQYVlBKIIdZ9SZpqW+KFqxqcNnEcBX+8xkDdWx+DItme9VcCDkdN32yTIrICC+irUufnUdV7mmHPjoA==", + "dependencies": { + "@smithy/eventstream-codec": "^2.0.13", + "@smithy/is-array-buffer": "^2.0.0", + "@smithy/types": "^2.5.0", + "@smithy/util-hex-encoding": "^2.0.0", + "@smithy/util-middleware": "^2.0.6", + "@smithy/util-uri-escape": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.1.15.tgz", + "integrity": "sha512-rngZcQu7Jvs9UbHihK1EI67RMPuzkc3CJmu4MBgB7D7yBnMGuFR86tq5rqHfL2gAkNnMelBN/8kzQVvZjNKefQ==", + "dependencies": { + "@smithy/middleware-stack": "^2.0.7", + "@smithy/types": "^2.5.0", + "@smithy/util-stream": "^2.0.20", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.5.0.tgz", + "integrity": "sha512-/a31lYofrMBkJb3BuPlYJTMKDj0hUmKUP6JFZQu6YVuQVoAjubiY0A52U9S0Uysd33n/djexCUSNJ+G9bf3/aA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.0.13.tgz", + "integrity": "sha512-okWx2P/d9jcTsZWTVNnRMpFOE7fMkzloSFyM53fA7nLKJQObxM2T4JlZ5KitKKuXq7pxon9J6SF2kCwtdflIrA==", + "dependencies": { + "@smithy/querystring-parser": "^2.0.13", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.0.1.tgz", + "integrity": "sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==", + "dependencies": { + "@smithy/util-buffer-from": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.0.0.tgz", + "integrity": "sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.1.0.tgz", + "integrity": "sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.0.0.tgz", + "integrity": "sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==", + "dependencies": { + "@smithy/is-array-buffer": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.0.0.tgz", + "integrity": "sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.0.19.tgz", + "integrity": "sha512-VHP8xdFR7/orpiABJwgoTB0t8Zhhwpf93gXhNfUBiwAE9O0rvsv7LwpQYjgvbOUDDO8JfIYQB2GYJNkqqGWsXw==", + "dependencies": { + "@smithy/property-provider": "^2.0.14", + "@smithy/smithy-client": "^2.1.15", + "@smithy/types": "^2.5.0", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.0.25", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.0.25.tgz", + "integrity": "sha512-jkmep6/JyWmn2ADw9VULDeGbugR4N/FJCKOt+gYyVswmN1BJOfzF2umaYxQ1HhQDvna3kzm1Dbo1qIfBW4iuHA==", + "dependencies": { + "@smithy/config-resolver": "^2.0.18", + "@smithy/credential-provider-imds": "^2.1.1", + "@smithy/node-config-provider": "^2.1.5", + "@smithy/property-provider": "^2.0.14", + "@smithy/smithy-client": "^2.1.15", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz", + "integrity": "sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.0.6.tgz", + "integrity": "sha512-7W4uuwBvSLgKoLC1x4LfeArCVcbuHdtVaC4g30kKsD1erfICyQ45+tFhhs/dZNeQg+w392fhunCm/+oCcb6BSA==", + "dependencies": { + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.0.6.tgz", + "integrity": "sha512-PSO41FofOBmyhPQJwBQJ6mVlaD7Sp9Uff9aBbnfBJ9eqXOE/obrqQjn0PNdkfdvViiPXl49BINfnGcFtSP4kYw==", + "dependencies": { + "@smithy/service-error-classification": "^2.0.6", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.0.20.tgz", + "integrity": "sha512-tT8VASuD8jJu0yjHEMTCPt1o5E3FVzgdsxK6FQLAjXKqVv5V8InCnc0EOsYrijgspbfDqdAJg7r0o2sySfcHVg==", + "dependencies": { + "@smithy/fetch-http-handler": "^2.2.6", + "@smithy/node-http-handler": "^2.1.9", + "@smithy/types": "^2.5.0", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-buffer-from": "^2.0.0", + "@smithy/util-hex-encoding": "^2.0.0", + "@smithy/util-utf8": "^2.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.0.0.tgz", + "integrity": "sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.0.2.tgz", + "integrity": "sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==", + "dependencies": { + "@smithy/util-buffer-from": "^2.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.0.13.tgz", + "integrity": "sha512-YovIQatiuM7giEsRFotqJa2i3EbU2EE3PgtpXgtLgpx5rXiZMAwPxXYDFVFhuO0lbqvc/Zx4n+ZIisXOHPSqyg==", + "dependencies": { + "@smithy/abort-controller": "^2.0.13", + "@smithy/types": "^2.5.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.93", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.93.tgz", + "integrity": "sha512-Vsyi9ogDAY3REZDjYnXMRJJa62SDvxHXxJI5nGDQdZW058dDE+av/anynN2rLKbCKXDRNw3D/sQmqxVflZFi4A==" + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, + "node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + } + } +} diff --git a/packages/aws-copy-out-sharer/construct/can-write-lambda/package.json b/packages/aws-copy-out-sharer/construct/can-write-lambda/package.json index 6c62bf2..c52f4b9 100644 --- a/packages/aws-copy-out-sharer/construct/can-write-lambda/package.json +++ b/packages/aws-copy-out-sharer/construct/can-write-lambda/package.json @@ -1,8 +1,9 @@ { "name": "can-write-lambda", "version": "1.0.0", - "main": "can-write-lambda.js", + "main": "can-write-lambda.ts", "dependencies": { - "@aws-sdk/client-s3": "^3.405.0" + "@aws-sdk/client-s3": "3.405.0", + "@types/aws-lambda": "8.10.93" } } diff --git a/packages/aws-copy-out-sharer/construct/copy-out-state-machine-construct.ts b/packages/aws-copy-out-sharer/construct/copy-out-state-machine-construct.ts index e66ae22..ba23e97 100644 --- a/packages/aws-copy-out-sharer/construct/copy-out-state-machine-construct.ts +++ b/packages/aws-copy-out-sharer/construct/copy-out-state-machine-construct.ts @@ -11,7 +11,6 @@ import { } from "aws-cdk-lib/aws-stepfunctions"; import { Arn, ArnFormat, Duration, Stack } from "aws-cdk-lib"; import { ICluster } from "aws-cdk-lib/aws-ecs"; -import { Service } from "aws-cdk-lib/aws-servicediscovery"; import { CanWriteLambdaStepConstruct } from "./can-write-lambda-step-construct"; import { IVpc, SubnetType } from "aws-cdk-lib/aws-ec2"; import { DistributedMapStepConstruct } from "./distributed-map-step-construct"; @@ -24,18 +23,22 @@ export type CopyOutStateMachineProps = { fargateCluster: ICluster; - namespaceService: Service; - /** * Whether the stack should use duration/timeouts that are more suited * to demonstration/development. i.e. minutes rather than hours for wait times, - * hours rather than days for copy time outs. + * hours rather than days for copy time-outs. */ aggressiveTimes?: boolean; + + allowWriteToThisAccount?: boolean; + + // WIP workingBucket workingPrefix + // should make it that if specified this is a bucket that exclusively + // holds the source CSVs and result CSVs (so we can lock down the S3 perms) }; export class CopyOutStateMachineConstruct extends Construct { - private readonly stateMachine: StateMachine; + private readonly _stateMachine: StateMachine; constructor(scope: Construct, id: string, props: CopyOutStateMachineProps) { super(scope, id); @@ -46,6 +49,7 @@ export class CopyOutStateMachineConstruct extends Construct { vpc: props.vpc, vpcSubnetSelection: props.vpcSubnetSelection, requiredRegion: Stack.of(this).region, + allowWriteToThisAccount: props.allowWriteToThisAccount, }, ); @@ -84,6 +88,8 @@ export class CopyOutStateMachineConstruct extends Construct { const defineDefaults = new Pass(this, "Define Defaults", { parameters: { maxItemsPerBatch: 1, + requiredRegion: Stack.of(this).region, + destinationKey: "", }, resultPath: "$.inputDefaults", }); @@ -118,7 +124,7 @@ export class CopyOutStateMachineConstruct extends Construct { // NOTE: we use a technique here to allow optional input parameters to the state machine // by defining defaults and then JsonMerging them with the actual input params - this.stateMachine = new StateMachine(this, "StateMachine", { + this._stateMachine = new StateMachine(this, "StateMachine", { // we give people a window of time in which to create the destination bucket - so this // could run a long time timeout: props.aggressiveTimes ? Duration.hours(24) : Duration.days(30), @@ -126,7 +132,7 @@ export class CopyOutStateMachineConstruct extends Construct { }); // this is needed to support distributed map - once there is a native CDK for this I presume this goes - this.stateMachine.addToRolePolicy( + this._stateMachine.addToRolePolicy( new PolicyStatement({ effect: Effect.ALLOW, actions: ["states:StartExecution"], @@ -145,7 +151,7 @@ export class CopyOutStateMachineConstruct extends Construct { ); // this is needed to support distributed map - once there is a native CDK for this I presume this goes - this.stateMachine.addToRolePolicy( + this._stateMachine.addToRolePolicy( new PolicyStatement({ effect: Effect.ALLOW, actions: ["states:DescribeExecution", "states:StopExecution"], @@ -165,7 +171,7 @@ export class CopyOutStateMachineConstruct extends Construct { // this is too broad - but once the CFN native Distributed Map is created - it will handle this for us // (I think it isn't doing it because of our DummyMap) - this.stateMachine.addToRolePolicy( + this._stateMachine.addToRolePolicy( new PolicyStatement({ effect: Effect.ALLOW, actions: ["lambda:InvokeFunction"], @@ -173,7 +179,7 @@ export class CopyOutStateMachineConstruct extends Construct { }), ); - this.stateMachine.addToRolePolicy( + this._stateMachine.addToRolePolicy( new PolicyStatement({ effect: Effect.ALLOW, actions: ["ecs:*", "iam:PassRole"], @@ -182,18 +188,36 @@ export class CopyOutStateMachineConstruct extends Construct { ); // TODO tighten this - this.stateMachine.role.addManagedPolicy( + this._stateMachine.role.addManagedPolicy( ManagedPolicy.fromAwsManagedPolicyName("AmazonS3FullAccess"), ); - this.stateMachine.role.addManagedPolicy( + // i.e perms needed for result writing from distributed map (from AWS docs) + // https://docs.aws.amazon.com/step-functions/latest/dg/input-output-resultwriter.html#resultwriter-iam-policies + // { + // "Version": "2012-10-17", + // "Statement": [ + // { + // "Effect": "Allow", + // "Action": [ + // "s3:PutObject", + // "s3:GetObject", + // "s3:ListMultipartUploadParts", + // "s3:AbortMultipartUpload" + // ], + // "Resource": [ + // "arn:aws:s3:::resultBucket/csvJobs/*" + // ] + // } + // ] + // } + + this._stateMachine.role.addManagedPolicy( ManagedPolicy.fromAwsManagedPolicyName("CloudWatchEventsFullAccess"), ); + } - props.namespaceService.registerNonIpInstance("StateMachine", { - customAttributes: { - stateMachineArn: this.stateMachine.stateMachineArn, - }, - }); + public get stateMachine() { + return this._stateMachine; } } diff --git a/packages/aws-copy-out-sharer/construct/distributed-map-step-construct.ts b/packages/aws-copy-out-sharer/construct/distributed-map-step-construct.ts index 0e6e2d0..0cb473b 100644 --- a/packages/aws-copy-out-sharer/construct/distributed-map-step-construct.ts +++ b/packages/aws-copy-out-sharer/construct/distributed-map-step-construct.ts @@ -55,7 +55,7 @@ export class DistributedMapStepConstruct extends Construct { ItemReader: { ReaderConfig: { InputType: "CSV", - // note we are providing the nominal column names.. there is no header row in the CSV + // note we are providing the nominal column names... there is no header row in the CSV CSVHeaderLocation: "GIVEN", CSVHeaders: [bucketColumnName, keyColumnName], }, @@ -68,9 +68,10 @@ export class DistributedMapStepConstruct extends Construct { ItemBatcher: { MaxItemsPerBatchPath: JsonPath.stringAt("$.maxItemsPerBatch"), BatchInput: { - "destinationBucketForRclone.$": JsonPath.format( - "s3:{}", + "destinationForRclone.$": JsonPath.format( + "s3:{}/{}", JsonPath.stringAt("$.destinationBucket"), + JsonPath.stringAt("$.destinationKey"), ), }, }, @@ -89,6 +90,16 @@ export class DistributedMapStepConstruct extends Construct { JsonPath.stringAt(`$$.Map.Item.Value.${keyColumnName}`), ), }, + ResultWriter: { + Resource: "arn:aws:states:::s3:putObject", + Parameters: { + "Bucket.$": "$.sourceFilesCsvBucket", + "Prefix.$": JsonPath.format( + "{}-results", + JsonPath.stringAt("$.sourceFilesCsvKey"), + ), + }, + }, }, }); } diff --git a/packages/aws-copy-out-sharer/construct/fargate-run-task-construct.ts b/packages/aws-copy-out-sharer/construct/fargate-run-task-construct.ts index 98628b7..808aac4 100644 --- a/packages/aws-copy-out-sharer/construct/fargate-run-task-construct.ts +++ b/packages/aws-copy-out-sharer/construct/fargate-run-task-construct.ts @@ -1,5 +1,5 @@ import { Construct } from "constructs"; -import { ManagedPolicy } from "aws-cdk-lib/aws-iam"; +import { ManagedPolicy, PolicyStatement } from "aws-cdk-lib/aws-iam"; import { IntegrationPattern, JsonPath } from "aws-cdk-lib/aws-stepfunctions"; import { Duration, Stack, Tags } from "aws-cdk-lib"; import { @@ -25,6 +25,16 @@ import { SubnetType } from "aws-cdk-lib/aws-ec2"; type Props = { fargateCluster: ICluster; vpcSubnetSelection: SubnetType; + + /** + * If true, will allow the run task to copy to a bucket that is + * in the same account. Otherwise, and by default, the copy task + * is set up to not be able to copy to a bucket in the same account as it + * is installed. This is a security mechanism as writes to buckets in the + * same account is allowed implicitly but is dangerous. This should only + * be set to true for development/testing. + */ + //allowWriteToThisAccount?: boolean; WIP NEED TO IMPLEMENT }; export class FargateRunTaskConstruct extends Construct { @@ -40,7 +50,7 @@ export class FargateRunTaskConstruct extends Construct { }, cpu: 256, // there is a warning in the rclone documentation about problems with mem < 1GB - but I think that - // is mainly for large syncs.. we do individual file copies so 512 should be fine + // is mainly for large syncs... we do individual/small file copies so 512 should be fine memoryLimitMiB: 512, }); @@ -52,6 +62,17 @@ export class FargateRunTaskConstruct extends Construct { ManagedPolicy.fromAwsManagedPolicyName("AmazonS3FullAccess"), ); + taskDefinition.taskRole.addToPrincipalPolicy( + new PolicyStatement({ + resources: ["*"], + actions: [ + "states:SendTaskSuccess", + "states:SendTaskFailure", + "states:SendTaskHeartbeat", + ], + }), + ); + const containerDefinition = taskDefinition.addContainer("RcloneContainer", { // set the stop timeout to the maximum allowed under Fargate - as potentially this will let us finish // our rclone operation @@ -78,7 +99,8 @@ export class FargateRunTaskConstruct extends Construct { // https://github.com/aws/aws-cdk/issues/20013 this.ecsRunTask = new EcsRunTask(this, "Copy File with Rclone", { - integrationPattern: IntegrationPattern.RUN_JOB, + integrationPattern: IntegrationPattern.WAIT_FOR_TASK_TOKEN, + // .RUN_JOB, cluster: props.fargateCluster, taskDefinition: taskDefinition, launchTarget: new EcsFargateSpotOnlyLaunchTarget({ @@ -102,9 +124,14 @@ export class FargateRunTaskConstruct extends Construct { environment: [ { name: "destination", - value: JsonPath.stringAt( - "$.BatchInput.destinationBucketForRclone", - ), + // note this might be just a bucket name, or a bucket name with path + // (that decision is made higher in the stack) + // as far as rclone binary itself is concerned, it does not matter + value: JsonPath.stringAt("$.BatchInput.destinationForRclone"), + }, + { + name: "tasktoken", + value: JsonPath.stringAt("$$.Task.Token"), }, ], }, diff --git a/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/Dockerfile b/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/Dockerfile index b36abe0..8b29bee 100644 --- a/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/Dockerfile +++ b/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/Dockerfile @@ -1,6 +1,8 @@ -FROM rclone/rclone:1.63.1 +FROM rclone/rclone:1.64.2 + +RUN apk add --no-cache aws-cli tini # a shell script that allows us to take more batch like input to rclone COPY rclone-batch-copy.sh /app/ -ENTRYPOINT ["/bin/sh", "/app/rclone-batch-copy.sh"] +ENTRYPOINT ["/sbin/tini", "--", "/bin/sh", "/app/rclone-batch-copy.sh"] diff --git a/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/rclone-batch-copy.sh b/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/rclone-batch-copy.sh index a299157..f499461 100644 --- a/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/rclone-batch-copy.sh +++ b/packages/aws-copy-out-sharer/construct/rclone-batch-copy-docker-image/rclone-batch-copy.sh @@ -1,6 +1,15 @@ + +# If you are familiar with rsync, rclone always works +# as if you had written a trailing / - meaning "copy the +# contents of this directory". This applies to all commands +# and whether you are talking about the source or destination. + echo "Destination = $destination" +echo "Task token = $tasktoken" for src in "$@"; do echo "Source arg = $src" /usr/local/bin/rclone copy --stats-log-level NOTICE --checksum "$src" "$destination" done + +aws stepfunctions send-task-success --task-token "$tasktoken" --task-output '{ "0": "OK", "1": "OK" }' diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.dockerignore b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.dockerignore index e69de29..adab58a 100644 --- a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.dockerignore +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.dockerignore @@ -0,0 +1,3 @@ +test/* +test-*.sh +rclone-batch diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.gitignore b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.gitignore index e69de29..f0382e3 100644 --- a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.gitignore +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/.gitignore @@ -0,0 +1,3 @@ + +# ignore the binary we build in testing +rclone-batch diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/Dockerfile b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/Dockerfile index 8b29bee..9121c34 100644 --- a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/Dockerfile +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/Dockerfile @@ -1,8 +1,28 @@ +FROM golang:1.21-alpine as builder + +RUN apk add --no-cache git + +WORKDIR /build + +RUN go env -w GOPROXY=direct + +ADD go.mod go.sum ./ + +RUN go mod download + +ADD main.go ./ + +RUN env GOOS=linux CGO_ENABLED=0 GOARCH=amd64 go build + + FROM rclone/rclone:1.64.2 -RUN apk add --no-cache aws-cli tini +# if we want signals to propogate through to the app we need a lightweight initd +RUN apk add --no-cache tini + +# this is where rclone binary ends up by default so we will do our work there +WORKDIR /data -# a shell script that allows us to take more batch like input to rclone -COPY rclone-batch-copy.sh /app/ +COPY --from=builder /build/rclone-batch ./ -ENTRYPOINT ["/sbin/tini", "--", "/bin/sh", "/app/rclone-batch-copy.sh"] +ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/rclone-batch"] diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.mod b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.mod index e69de29..3b87e27 100644 --- a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.mod +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.mod @@ -0,0 +1,21 @@ +module rclone-batch + +go 1.21.2 + +require ( + github.com/aws/aws-sdk-go-v2 v1.23.0 // indirect + github.com/aws/aws-sdk-go-v2/config v1.25.1 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.16.1 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3 // indirect + github.com/aws/aws-sdk-go-v2/service/sfn v1.22.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.17.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.25.2 // indirect + github.com/aws/smithy-go v1.17.0 // indirect + gonum.org/v1/gonum v0.14.0 // indirect +) diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.sum b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.sum new file mode 100644 index 0000000..8d6e9db --- /dev/null +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/go.sum @@ -0,0 +1,30 @@ +github.com/aws/aws-sdk-go-v2 v1.23.0 h1:PiHAzmiQQr6JULBUdvR8fKlA+UPKLT/8KbiqpFBWiAo= +github.com/aws/aws-sdk-go-v2 v1.23.0/go.mod h1:i1XDttT4rnf6vxc9AuskLc6s7XBee8rlLilKlc03uAA= +github.com/aws/aws-sdk-go-v2/config v1.25.1 h1:YsjngBOl2mx4l3egkVWndr6/6TqtkdsWJFZIsQ924Ek= +github.com/aws/aws-sdk-go-v2/config v1.25.1/go.mod h1:yV6h7TRVzhdIFmUk9WWDRpWwYGg1woEzKr0k1IYz2Tk= +github.com/aws/aws-sdk-go-v2/credentials v1.16.1 h1:WessyrdgyFN5TB+eLQdrFSlN/3oMnqukIFhDxK6z8h0= +github.com/aws/aws-sdk-go-v2/credentials v1.16.1/go.mod h1:RQJyPxKcr+m4ArlIG1LUhMOrjposVfzbX6H8oR6oCgE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4 h1:9wKDWEjwSnXZre0/O3+ZwbBl1SmlgWYBbrTV10X/H1s= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.4/go.mod h1:t4i+yGHMCcUNIX1x7YVYa6bH/Do7civ5I6cG/6PMfyA= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3 h1:DUwbD79T8gyQ23qVXFUthjzVMTviSHi3y4z58KvghhM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.3/go.mod h1:7sGSz1JCKHWWBHq98m6sMtWQikmYPpxjqOydDemiVoM= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3 h1:AplLJCtIaUZDCbr6+gLYdsYNxne4iuaboJhVt9d+WXI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.3/go.mod h1:ify42Rb7nKeDDPkFjKn7q1bPscVPu/+gmHH8d2c+anU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0 h1:usgqiJtamuGIBj+OvYmMq89+Z1hIKkMJToz1WpoeNUY= +github.com/aws/aws-sdk-go-v2/internal/ini v1.7.0/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1 h1:rpkF4n0CyFcrJUG/rNNohoTmhtWlFTRI4BsZOh9PvLs= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.1/go.mod h1:l9ymW25HOqymeU2m1gbUQ3rUIsTwKs8gYHXkqDQUhiI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3 h1:kJOolE8xBAD13xTCgOakByZkyP4D/owNmvEiioeUNAg= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.3/go.mod h1:Owv1I59vaghv1Ax8zz8ELY8DN7/Y0rGS+WWAmjgi950= +github.com/aws/aws-sdk-go-v2/service/sfn v1.22.1 h1:kT2DEMbibZlhGbGiM3p34tNOI8bh82x9Fe7HLCrnjho= +github.com/aws/aws-sdk-go-v2/service/sfn v1.22.1/go.mod h1:AM0scrWjoTK5MJ4++nLnqkdJfwAy9b0jV7EcANYn59M= +github.com/aws/aws-sdk-go-v2/service/sso v1.17.2 h1:V47N5eKgVZoRSvx2+RQ0EpAEit/pqOhqeSQFiS4OFEQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.17.2/go.mod h1:/pE21vno3q1h4bbhUOEi+6Zu/aT26UK2WKkDXd+TssQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2 h1:sMAcO7VHVw28HTAdZpTULDzFirHOsVm/x25CxhUH0jA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.19.2/go.mod h1:dWqm5G767qwKPuayKfzm4rjzFmVjiBFbOJrpSPnAMDs= +github.com/aws/aws-sdk-go-v2/service/sts v1.25.2 h1:vwyiRTnXLqsak/6WAQ+uTRhVqKI6vxUQ0HJXjKij0zM= +github.com/aws/aws-sdk-go-v2/service/sts v1.25.2/go.mod h1:4EqRHDCKP78hq3zOnmFXu5k0j4bXbRFfCh/zQ6KnEfQ= +github.com/aws/smithy-go v1.17.0 h1:wWJD7LX6PBV6etBUwO0zElG0nWN9rUhp0WdYeHSHAaI= +github.com/aws/smithy-go v1.17.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= +gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= +gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/main.go b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/main.go index e69de29..d41fc16 100644 --- a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/main.go +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/main.go @@ -0,0 +1,157 @@ +package main + +import ( + "context" + "encoding/json" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/sfn" + "log" + "os" + "os/exec" + "os/signal" + "strings" + "syscall" +) + +// retryError:false serverSideCopies:0 serverSideCopyBytes:0 serverSideMoveBytes:0 serverSideMoves:0 speed:0 totalChecks:0 totalTransfers:1 transferTime:0.000586292 transfers:1 +type RcloneStats struct { + Bytes int `json:"bytes"` + Checks int `json:"checks"` + ElapsedTime float64 `json:"elapsedTime"` + Errors int `json:"errors"` + LastError string `json:"lastError"` + FatalError bool `json:"fatalError"` + TotalBytes int `json:"totalBytes"` +} + +func If[T any](cond bool, vtrue, vfalse T) T { + if cond { + return vtrue + } + return vfalse +} + +func main() { + cfg, err := config.LoadDefaultConfig(context.TODO()) + + if err != nil { + log.Fatalf("unable to load AWS config, %v", err) + } + + // NOTE: if this was a traditional command line tool we would take these in as command + // line parameters. However, we are invoking this as an ECS Task and it turns out easier + // to pass these down via environment variables - saving the command line *only* for the list + // of files we want to copy + destination, destinationOk := os.LookupEnv("DESTINATION") + + if !destinationOk { + log.Fatalf("No environment variable DESTINATION telling us where to copy the objects", err) + } + + taskToken, taskTokenOk := os.LookupEnv("TASK_TOKEN") + + // special environment variables that we can use for some debug/testing + debugBandwidth, debugBandwidthOk := os.LookupEnv("DEBUG_BANDWIDTH") + + results := make(map[int]any) + + signalChannel := make(chan os.Signal) + + // set as soon as we receive a SIGTERM - so that we will then just quickly skip the rest of the files + interrupted := false + + for i := 2; i < len(os.Args); i++ { + if !interrupted { + // setup an rclone copy with capture stats (noting that stats are sent to stderr) + cmd := exec.Command(os.Args[1], + "--use-json-log", + "--stats-log-level", "NOTICE", + "--stats-one-line", + // only display stats at the end (after 10000 hours) + "--stats", "10000h", + // normally no bandwidth limiting ("0") - but can institute bandwidth limit if asked + "--bwlimit", If(debugBandwidthOk, debugBandwidth, "0"), + "copy", os.Args[i], destination) + + // we are only interested in stderr + stderrStringBuilder := new(strings.Builder) + cmd.Stderr = stderrStringBuilder + + // we need to be able handling getting a SIGTERM when AWS wants to reclaim our SPOT instance + signal.Notify(signalChannel, os.Interrupt, syscall.SIGTERM) + go func() { + sig := <-signalChannel + switch sig { + case syscall.SIGTERM: + // terminate the currently running rclone + cmd.Process.Signal(syscall.SIGTERM) + // indicate we don't want future rclones to run + interrupted = true + } + }() + + err := cmd.Run() + + if err != nil { + results[i-2] = map[string]any{"lastError": "Interrupted by SIGTERM", "systemError": err} + } + + // each line of stderr output is stats in JSON format or possibly other random messages + stderrStringLines := strings.Split(strings.TrimSuffix(stderrStringBuilder.String(), "\n"), "\n") + + // attempt to process each line of log output to stderr as JSON (if not then ignore) + for _, line := range stderrStringLines { + var logLineJson map[string]any + + logLineJsonErr := json.Unmarshal([]byte(line), &logLineJson) + + if logLineJsonErr == nil { + + statsValue, statsOk := logLineJson["stats"].(map[string]any) + + if statsOk { + results[i-2] = statsValue + } + } + } + } else { + results[i-2] = map[string]any{"lastError": "Skipped due to SIGTERM received"} + } + + // if asked we sleep for delay after seconds (this gives the outer environment + // time to send us a SIGINT etc) + /*if debugDelayAfterOk { + debugDelayAfterFloat, err := strconv.ParseFloat(debugDelayAfter, 64) + if err == nil { + time.Sleep(time.Duration(debugDelayAfterFloat) * time.Second) + } + } */ + + } + + resultsJson, err := json.MarshalIndent(results, "", " ") + + if err != nil { + log.Fatalf("Could not marshall the rclone outputs to JSON", err) + } + + resultsString := string(resultsJson) + + // the normal mechanism by which we will send back results to our caller is + // Steps SendTask - which sends back JSON + if taskTokenOk { + sfnSvc := sfn.NewFromConfig(cfg) + + sfnSvc.SendTaskSuccess(context.TODO(), &sfn.SendTaskSuccessInput{ + Output: aws.String(resultsString), + TaskToken: aws.String(taskToken), + }) + + fmt.Println(taskToken) + } else { + // if no task token was given then we just print the results + fmt.Println(resultsString) + } +} diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-assert.sh b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-assert.sh new file mode 100755 index 0000000..a0c8723 --- /dev/null +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-assert.sh @@ -0,0 +1,186 @@ +#!/bin/bash +# assert.sh 1.1 - bash unit testing framework +# Copyright (C) 2009-2015 Robert Lehmann +# +# http://github.com/lehmannro/assert.sh +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see . + +export DISCOVERONLY=${DISCOVERONLY:-} +export DEBUG=${DEBUG:-} +export STOP=${STOP:-} +export INVARIANT=${INVARIANT:-} +export CONTINUE=${CONTINUE:-} + +args="$(getopt -n "$0" -l \ + verbose,help,stop,discover,invariant,continue vhxdic $*)" \ +|| exit -1 +for arg in $args; do + case "$arg" in + -h) + echo "$0 [-vxidc]" \ + "[--verbose] [--stop] [--invariant] [--discover] [--continue]" + echo "`sed 's/./ /g' <<< "$0"` [-h] [--help]" + exit 0;; + --help) + cat < [stdin] + (( tests_ran++ )) || : + [[ -z "$DISCOVERONLY" ]] || return + expected=$(echo -ne "${2:-}") + result="$(eval 2>/dev/null $1 <<< ${3:-})" || true + if [[ "$result" == "$expected" ]]; then + [[ -z "$DEBUG" ]] || echo -n . + return + fi + result="$(sed -e :a -e '$!N;s/\n/\\n/;ta' <<< "$result")" + [[ -z "$result" ]] && result="nothing" || result="\"$result\"" + [[ -z "$2" ]] && expected="nothing" || expected="\"$2\"" + _assert_fail "expected $expected${_indent}got $result" "$1" "$3" +} + +assert_raises() { + # assert_raises [stdin] + (( tests_ran++ )) || : + [[ -z "$DISCOVERONLY" ]] || return + status=0 + (eval $1 <<< ${3:-}) > /dev/null 2>&1 || status=$? + expected=${2:-0} + if [[ "$status" -eq "$expected" ]]; then + [[ -z "$DEBUG" ]] || echo -n . + return + fi + _assert_fail "program terminated with code $status instead of $expected" "$1" "$3" +} + +_assert_fail() { + # _assert_fail + [[ -n "$DEBUG" ]] && echo -n X + report="test #$tests_ran \"$2${3:+ <<< $3}\" failed:${_indent}$1" + if [[ -n "$STOP" ]]; then + [[ -n "$DEBUG" ]] && echo + echo "$report" + exit 1 + fi + tests_errors[$tests_failed]="$report" + (( tests_failed++ )) || : +} + +skip_if() { + # skip_if + (eval $@) > /dev/null 2>&1 && status=0 || status=$? + [[ "$status" -eq 0 ]] || return + skip +} + +skip() { + # skip (no arguments) + shopt -q extdebug && tests_extdebug=0 || tests_extdebug=1 + shopt -q -o errexit && tests_errexit=0 || tests_errexit=1 + # enable extdebug so returning 1 in a DEBUG trap handler skips next command + shopt -s extdebug + # disable errexit (set -e) so we can safely return 1 without causing exit + set +o errexit + tests_trapped=0 + trap _skip DEBUG +} +_skip() { + if [[ $tests_trapped -eq 0 ]]; then + # DEBUG trap for command we want to skip. Do not remove the handler + # yet because *after* the command we need to reset extdebug/errexit (in + # another DEBUG trap.) + tests_trapped=1 + [[ -z "$DEBUG" ]] || echo -n s + return 1 + else + trap - DEBUG + [[ $tests_extdebug -eq 0 ]] || shopt -u extdebug + [[ $tests_errexit -eq 1 ]] || set -o errexit + return 0 + fi +} + + +_assert_reset +: ${tests_suite_status:=0} # remember if any of the tests failed so far +_assert_cleanup() { + local status=$? + # modify exit code if it's not already non-zero + [[ $status -eq 0 && -z $CONTINUE ]] && exit $tests_suite_status +} +trap _assert_cleanup EXIT diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-docker-direct.sh b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-docker-direct.sh old mode 100644 new mode 100755 index e69de29..25b51f2 --- a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-docker-direct.sh +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-docker-direct.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# we want to exit immediately on error (especially for Go/Docker build errors) +set -e + +docker build . -t rclone-batch + +docker run rclone-batch -e DESTINATION=/tmp diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-go-direct.sh b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-go-direct.sh old mode 100644 new mode 100755 index e69de29..8c0ede4 --- a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-go-direct.sh +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/test-go-direct.sh @@ -0,0 +1,86 @@ +#!/bin/bash + +# this is a setting which is system dependent - feel free to change to the location of your +# dev system rclone binary (this one is brew installed on a Mac M1) +RCLONE_BINARY=$(which rclone) + +# we want to exit immediately on error (especially for Go compile errors) +set -e + +# bring in some helpful bash assertions +. test-assert.sh + +# build our rclone batch executable +go build + +# make a temporary directory for the copy destination +TEMPD=$(mktemp -d) +if [ ! -e "$TEMPD" ]; then + >&2 echo "Failed to create temp directory" + exit 1 +fi + +trap 'rm -rf "$TEMPD"' EXIT + +# +# test 1 (main case of just copying files) +# + +DESTINATION="$TEMPD/test1" ./rclone-batch $RCLONE_BINARY ./testfile1.txt ./testfile2.txt > "$TEMPD/result.json" + +# Uncomment to debug invalid result +# cat "$TEMPD/result.json" + +assert " find $TEMPD/test1 -type f | awk 'END{print NR}' " "2" +assert " cat $TEMPD/result.json | jq -r '.\"0\" | .bytes' " "20" +assert " cat $TEMPD/result.json | jq -r '.\"1\" | .bytes' " "21" + +rm "$TEMPD/result.json" + +# +# test 2 (error cases with one file to fail) +# + +DESTINATION="$TEMPD/test2" ./rclone-batch $RCLONE_BINARY ./afilethatdoesnotexist.txt ./testfile2.txt > "$TEMPD/result.json" + +# Uncomment to debug invalid result +# cat "$TEMPD/result.json" + +assert "find $TEMPD/test2 -type f | awk 'END{print NR}'" "1" +assert " cat $TEMPD/result.json | jq -r '.\"0\" | .lastError' " "directory not found" +assert " cat $TEMPD/result.json | jq -r '.\"0\" | .bytes' " "0" +assert " cat $TEMPD/result.json | jq -r '.\"1\" | .lastError' " "null" +assert " cat $TEMPD/result.json | jq -r '.\"1\" | .bytes' " "21" + +rm "$TEMPD/result.json" + +# +# test 3 (signal intercept) +# +# this is a test that app will intercept a SIGTERM, pass it to any running rclone process, +# and return sensible results +# + +# we set the bandwidth to 1B so that it is slow enough that our TERM signal will come mid-process +# we start this execution in the background +DESTINATION="$TEMPD/test3" DEBUG_BANDWIDTH="1B" ./rclone-batch $RCLONE_BINARY ./testfile1.txt ./testfile2.txt > "$TEMPD/result.json" & + +# wait a small amount +sleep 1 + +# now send a SIGTERM to the launched job +kill %1 + +# Uncomment to debug invalid result +# cat "$TEMPD/result.json" + +assert " cat $TEMPD/result.json | jq -r '.\"0\" | .lastError' " "Interrupted by SIGTERM" +assert " cat $TEMPD/result.json | jq -r '.\"1\" | .lastError' " "Skipped due to SIGTERM received" + +rm "$TEMPD/result.json" + +# +# end overall testing and set return code +# + +assert_end examples diff --git a/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/testfile2.txt b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/testfile2.txt new file mode 100644 index 0000000..79dfee6 --- /dev/null +++ b/packages/aws-copy-out-sharer/construct/rclone-go-batch-copy-docker-image/testfile2.txt @@ -0,0 +1 @@ +This is test file 2 diff --git a/packages/aws-copy-out-sharer/construct/thaw-objects-lambda-step-construct.ts b/packages/aws-copy-out-sharer/construct/thaw-objects-lambda-step-construct.ts index 6430ad5..15add7c 100644 --- a/packages/aws-copy-out-sharer/construct/thaw-objects-lambda-step-construct.ts +++ b/packages/aws-copy-out-sharer/construct/thaw-objects-lambda-step-construct.ts @@ -8,7 +8,7 @@ import { JsonPath } from "aws-cdk-lib/aws-stepfunctions"; import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs"; import { join } from "path"; -type CanWriteLambdaStepProps = { +type ThawObjectsLambdaStepProps = { vpc: IVpc; vpcSubnetSelection: SubnetType; @@ -30,10 +30,10 @@ type CanWriteLambdaStepProps = { * bucket exists, is in the correct region, and is writeable * by us. Throws an exception if any of these conditions is not met. */ -export class CanWriteLambdaStepConstruct extends Construct { +export class ThawObjectsLambdaStepConstruct extends Construct { public readonly invocableLambda; - constructor(scope: Construct, id: string, props: CanWriteLambdaStepProps) { + constructor(scope: Construct, id: string, props: ThawObjectsLambdaStepProps) { super(scope, id); const canWriteLambda = new NodejsFunction(this, "CanWriteFunction", { diff --git a/packages/aws-copy-out-sharer/construct/thaw-objects-lambda/package.json b/packages/aws-copy-out-sharer/construct/thaw-objects-lambda/package.json index 6c62bf2..c97b73b 100644 --- a/packages/aws-copy-out-sharer/construct/thaw-objects-lambda/package.json +++ b/packages/aws-copy-out-sharer/construct/thaw-objects-lambda/package.json @@ -1,7 +1,7 @@ { "name": "can-write-lambda", "version": "1.0.0", - "main": "can-write-lambda.js", + "main": "thaw-objects-lambda.js", "dependencies": { "@aws-sdk/client-s3": "^3.405.0" } diff --git a/packages/aws-copy-out-sharer/copy-out-stack.ts b/packages/aws-copy-out-sharer/copy-out-stack.ts index 18767da..aecc5f5 100644 --- a/packages/aws-copy-out-sharer/copy-out-stack.ts +++ b/packages/aws-copy-out-sharer/copy-out-stack.ts @@ -4,7 +4,7 @@ import { CopyOutStackProps } from "./copy-out-stack-props"; import { Cluster } from "aws-cdk-lib/aws-ecs"; import { CopyOutStateMachineConstruct } from "./construct/copy-out-state-machine-construct"; import { Service } from "aws-cdk-lib/aws-servicediscovery"; -import { InfrastructureClient } from "@elsa-data/aws-infrastructure-client"; +import { InfrastructureClient } from "@elsa-data/aws-infrastructure"; export { CopyOutStackProps, SubnetType } from "./copy-out-stack-props"; @@ -31,12 +31,18 @@ export class CopyOutStack extends Stack { description: "Parallel file copying service", }); - new CopyOutStateMachineConstruct(this, "CopyOut", { + const copyOut = new CopyOutStateMachineConstruct(this, "CopyOut", { vpc: vpc, vpcSubnetSelection: props.infrastructureSubnetSelection, fargateCluster: cluster, - namespaceService: service, aggressiveTimes: props.isDevelopment, + allowWriteToThisAccount: props.isDevelopment, + }); + + service.registerNonIpInstance("StateMachine", { + customAttributes: { + stateMachineArn: copyOut.stateMachine.stateMachineArn, + }, }); } } diff --git a/packages/aws-copy-out-sharer/package.json b/packages/aws-copy-out-sharer/package.json index ae2cb29..8a2c7ed 100644 --- a/packages/aws-copy-out-sharer/package.json +++ b/packages/aws-copy-out-sharer/package.json @@ -28,18 +28,17 @@ "targets": {} }, "dependencies": { - "@elsa-data/aws-infrastructure-client": "1.3.4" + "@elsa-data/aws-infrastructure": "^1.5.1" }, "peerDependencies": { - "aws-cdk-lib": "^2.93.0", - "constructs": "^10.2.70", - "@elsa-data/aws-infrastructure-client": "^1.3.4" + "aws-cdk-lib": "^2.108.1", + "constructs": "^10.3.0" }, "devDependencies": { - "aws-cdk-lib": "2.93.0", - "constructs": "10.2.70", - "jsii": "5.2.2", - "jsii-pacmak": "1.88.0", - "publib": "0.2.737" + "aws-cdk-lib": "2.108.1", + "constructs": "10.3.0", + "jsii": "5.2.29", + "jsii-pacmak": "1.91.0", + "publib": "0.2.745" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14a5e34..41908af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,43 +28,52 @@ importers: dev: dependencies: + "@aws-sdk/client-s3": + specifier: 3.450.0 + version: 3.450.0 + "@aws-sdk/client-servicediscovery": + specifier: 3.450.0 + version: 3.450.0 + "@aws-sdk/client-sfn": + specifier: 3.450.0 + version: 3.450.0 aws-cdk: - specifier: 2.93.0 - version: 2.93.0 + specifier: 2.108.1 + version: 2.108.1 aws-cdk-lib: - specifier: 2.93.0 - version: 2.93.0(constructs@10.2.70) + specifier: 2.108.1 + version: 2.108.1(constructs@10.3.0) aws-copy-out-sharer: specifier: link:../packages/aws-copy-out-sharer version: link:../packages/aws-copy-out-sharer packages/aws-copy-out-sharer: dependencies: - "@elsa-data/aws-infrastructure-client": - specifier: 1.3.4 - version: 1.3.4(aws-cdk-lib@2.93.0)(constructs@10.2.70) + "@elsa-data/aws-infrastructure": + specifier: ^1.5.1 + version: 1.5.1(aws-cdk-lib@2.108.1)(constructs@10.3.0) devDependencies: aws-cdk-lib: - specifier: 2.93.0 - version: 2.93.0(constructs@10.2.70) + specifier: 2.108.1 + version: 2.108.1(constructs@10.3.0) constructs: - specifier: 10.2.70 - version: 10.2.70 + specifier: 10.3.0 + version: 10.3.0 jsii: - specifier: 5.2.2 - version: 5.2.2 + specifier: 5.2.29 + version: 5.2.29 jsii-pacmak: - specifier: 1.88.0 - version: 1.88.0 + specifier: 1.91.0 + version: 1.91.0 publib: - specifier: 0.2.737 - version: 0.2.737 + specifier: 0.2.745 + version: 0.2.745 packages: - /@aws-cdk/asset-awscli-v1@2.2.200: + /@aws-cdk/asset-awscli-v1@2.2.201: resolution: { - integrity: sha512-Kf5J8DfJK4wZFWT2Myca0lhwke7LwHcHBo+4TvWOGJrFVVKVuuiLCkzPPRBQQVDj0Vtn2NBokZAz8pfMpAqAKg==, + integrity: sha512-INZqcwDinNaIdb5CtW3ez5s943nX5stGBQS6VOP2JDlOFP81hM3fds/9NDknipqfUkZM43dx+HgVvkXYXXARCQ==, } /@aws-cdk/asset-kubectl-v20@2.1.2: @@ -88,7 +97,17 @@ packages: "@aws-crypto/util": 3.0.0 "@aws-sdk/types": 3.398.0 tslib: 1.14.1 - dev: true + + /@aws-crypto/crc32c@3.0.0: + resolution: + { + integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==, + } + dependencies: + "@aws-crypto/util": 3.0.0 + "@aws-sdk/types": 3.449.0 + tslib: 1.14.1 + dev: false /@aws-crypto/ie11-detection@3.0.0: resolution: @@ -97,7 +116,21 @@ packages: } dependencies: tslib: 1.14.1 - dev: true + + /@aws-crypto/sha1-browser@3.0.0: + resolution: + { + integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==, + } + dependencies: + "@aws-crypto/ie11-detection": 3.0.0 + "@aws-crypto/supports-web-crypto": 3.0.0 + "@aws-crypto/util": 3.0.0 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-locate-window": 3.310.0 + "@aws-sdk/util-utf8-browser": 3.259.0 + tslib: 1.14.1 + dev: false /@aws-crypto/sha256-browser@3.0.0: resolution: @@ -109,11 +142,10 @@ packages: "@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.398.0 + "@aws-sdk/types": 3.451.0 "@aws-sdk/util-locate-window": 3.310.0 "@aws-sdk/util-utf8-browser": 3.259.0 tslib: 1.14.1 - dev: true /@aws-crypto/sha256-js@3.0.0: resolution: @@ -122,9 +154,8 @@ packages: } dependencies: "@aws-crypto/util": 3.0.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/types": 3.451.0 tslib: 1.14.1 - dev: true /@aws-crypto/supports-web-crypto@3.0.0: resolution: @@ -133,7 +164,6 @@ packages: } dependencies: tslib: 1.14.1 - dev: true /@aws-crypto/util@3.0.0: resolution: @@ -144,460 +174,1138 @@ packages: "@aws-sdk/types": 3.398.0 "@aws-sdk/util-utf8-browser": 3.259.0 tslib: 1.14.1 - dev: true - /@aws-sdk/client-codeartifact@3.405.0: + /@aws-sdk/client-codeartifact@3.451.0: resolution: { - integrity: sha512-eucE3/7+L11MrBNmp5kDz9YcwIwYA0aoDQlmE0Nte1QuEW0nOykfyA/UnWnoCHjScZfMXpY1mgH7MbqYvQ0o6A==, + integrity: sha512-uM9/zPdP3xAi2sXFNa2/uzMVak0/pk7zcybFxUKuzG3mzUS05lbnbm5rz4l3ePoBidEE1Zqy070S6Uhl4SMl2g==, } engines: { node: ">=14.0.0" } dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": 2.0.5 - "@smithy/fetch-http-handler": 2.0.5 - "@smithy/hash-node": 2.0.5 - "@smithy/invalid-dependency": 2.0.5 - "@smithy/middleware-content-length": 2.0.5 - "@smithy/middleware-endpoint": 2.0.5 - "@smithy/middleware-retry": 2.0.5 - "@smithy/middleware-serde": 2.0.5 - "@smithy/middleware-stack": 2.0.0 - "@smithy/node-config-provider": 2.0.7 - "@smithy/node-http-handler": 2.0.5 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/url-parser": 2.0.5 - "@smithy/util-base64": 2.0.0 + "@aws-sdk/client-sts": 3.451.0 + "@aws-sdk/core": 3.451.0 + "@aws-sdk/credential-provider-node": 3.451.0 + "@aws-sdk/middleware-host-header": 3.451.0 + "@aws-sdk/middleware-logger": 3.451.0 + "@aws-sdk/middleware-recursion-detection": 3.451.0 + "@aws-sdk/middleware-signing": 3.451.0 + "@aws-sdk/middleware-user-agent": 3.451.0 + "@aws-sdk/region-config-resolver": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@aws-sdk/util-endpoints": 3.451.0 + "@aws-sdk/util-user-agent-browser": 3.451.0 + "@aws-sdk/util-user-agent-node": 3.451.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 "@smithy/util-body-length-browser": 2.0.0 "@smithy/util-body-length-node": 2.1.0 - "@smithy/util-defaults-mode-browser": 2.0.6 - "@smithy/util-defaults-mode-node": 2.0.7 - "@smithy/util-retry": 2.0.0 - "@smithy/util-stream": 2.0.5 - "@smithy/util-utf8": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-stream": 2.0.20 + "@smithy/util-utf8": 2.0.2 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/client-cognito-identity@3.405.0: + /@aws-sdk/client-cognito-identity@3.451.0: resolution: { - integrity: sha512-kvmNAREFQbhaZoEMQzBOYTaN7cFIOLgk2DZYYlHh2ErUYXSbvbVOBUriMRW9hRDtKLooe3ZFBLO3sWKvQE/AfA==, + integrity: sha512-xoImUiGoaXJZpOCgbWcdrU4vHJ8HG5KluaCkc32kuFobM277sjQimaUIHOGHL24M5vyo4QxcJD9CT/IhX63Vlg==, } engines: { node: ">=14.0.0" } dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": 2.0.5 - "@smithy/fetch-http-handler": 2.0.5 - "@smithy/hash-node": 2.0.5 - "@smithy/invalid-dependency": 2.0.5 - "@smithy/middleware-content-length": 2.0.5 - "@smithy/middleware-endpoint": 2.0.5 - "@smithy/middleware-retry": 2.0.5 - "@smithy/middleware-serde": 2.0.5 - "@smithy/middleware-stack": 2.0.0 - "@smithy/node-config-provider": 2.0.7 - "@smithy/node-http-handler": 2.0.5 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/url-parser": 2.0.5 - "@smithy/util-base64": 2.0.0 + "@aws-sdk/client-sts": 3.451.0 + "@aws-sdk/core": 3.451.0 + "@aws-sdk/credential-provider-node": 3.451.0 + "@aws-sdk/middleware-host-header": 3.451.0 + "@aws-sdk/middleware-logger": 3.451.0 + "@aws-sdk/middleware-recursion-detection": 3.451.0 + "@aws-sdk/middleware-signing": 3.451.0 + "@aws-sdk/middleware-user-agent": 3.451.0 + "@aws-sdk/region-config-resolver": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@aws-sdk/util-endpoints": 3.451.0 + "@aws-sdk/util-user-agent-browser": 3.451.0 + "@aws-sdk/util-user-agent-node": 3.451.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 "@smithy/util-body-length-browser": 2.0.0 "@smithy/util-body-length-node": 2.1.0 - "@smithy/util-defaults-mode-browser": 2.0.6 - "@smithy/util-defaults-mode-node": 2.0.7 - "@smithy/util-retry": 2.0.0 - "@smithy/util-utf8": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/client-sso@3.405.0: + /@aws-sdk/client-s3@3.450.0: resolution: { - integrity: sha512-z1ssydU07bDhe0tNXQwVO+rWh/iSfK48JI8s8vgpBNwH+NejMzIJ9r3AkjCiJ+LSAwlBZItUsNWwR0veIfgBiw==, + integrity: sha512-mw+zNVOXqsNjGrKjykcqxsiTMHTomcFEYODa5CEE6CeJQ2COwjNN9urzFO/uocA9z/2K3t1dG/q+2mvP0EcC2A==, } engines: { node: ">=14.0.0" } dependencies: + "@aws-crypto/sha1-browser": 3.0.0 "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": 2.0.5 - "@smithy/fetch-http-handler": 2.0.5 - "@smithy/hash-node": 2.0.5 - "@smithy/invalid-dependency": 2.0.5 - "@smithy/middleware-content-length": 2.0.5 - "@smithy/middleware-endpoint": 2.0.5 - "@smithy/middleware-retry": 2.0.5 - "@smithy/middleware-serde": 2.0.5 - "@smithy/middleware-stack": 2.0.0 - "@smithy/node-config-provider": 2.0.7 - "@smithy/node-http-handler": 2.0.5 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/url-parser": 2.0.5 + "@aws-sdk/client-sts": 3.450.0 + "@aws-sdk/core": 3.445.0 + "@aws-sdk/credential-provider-node": 3.450.0 + "@aws-sdk/middleware-bucket-endpoint": 3.449.0 + "@aws-sdk/middleware-expect-continue": 3.449.0 + "@aws-sdk/middleware-flexible-checksums": 3.449.0 + "@aws-sdk/middleware-host-header": 3.449.0 + "@aws-sdk/middleware-location-constraint": 3.449.0 + "@aws-sdk/middleware-logger": 3.449.0 + "@aws-sdk/middleware-recursion-detection": 3.449.0 + "@aws-sdk/middleware-sdk-s3": 3.449.0 + "@aws-sdk/middleware-signing": 3.449.0 + "@aws-sdk/middleware-ssec": 3.449.0 + "@aws-sdk/middleware-user-agent": 3.449.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/signature-v4-multi-region": 3.449.0 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-endpoints": 3.449.0 + "@aws-sdk/util-user-agent-browser": 3.449.0 + "@aws-sdk/util-user-agent-node": 3.449.0 + "@aws-sdk/xml-builder": 3.310.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/eventstream-serde-browser": 2.0.13 + "@smithy/eventstream-serde-config-resolver": 2.0.13 + "@smithy/eventstream-serde-node": 2.0.13 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-blob-browser": 2.0.14 + "@smithy/hash-node": 2.0.15 + "@smithy/hash-stream-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/md5-js": 2.0.15 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 "@smithy/util-base64": 2.0.0 "@smithy/util-body-length-browser": 2.0.0 "@smithy/util-body-length-node": 2.1.0 - "@smithy/util-defaults-mode-browser": 2.0.6 - "@smithy/util-defaults-mode-node": 2.0.7 - "@smithy/util-retry": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-stream": 2.0.20 "@smithy/util-utf8": 2.0.0 + "@smithy/util-waiter": 2.0.13 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-servicediscovery@3.450.0: + resolution: + { + integrity: sha512-TM4KvHrw+Fq9yPQhzRINQ79jP24lS8JfiGb7mEKPZbRIMu0bW+26zgELD9BftfPa/vtubFwBA0qcwpk/g3J5SA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/client-sts": 3.450.0 + "@aws-sdk/core": 3.445.0 + "@aws-sdk/credential-provider-node": 3.450.0 + "@aws-sdk/middleware-host-header": 3.449.0 + "@aws-sdk/middleware-logger": 3.449.0 + "@aws-sdk/middleware-recursion-detection": 3.449.0 + "@aws-sdk/middleware-signing": 3.449.0 + "@aws-sdk/middleware-user-agent": 3.449.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-endpoints": 3.449.0 + "@aws-sdk/util-user-agent-browser": 3.449.0 + "@aws-sdk/util-user-agent-node": 3.449.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.1.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 + tslib: 2.6.2 + uuid: 8.3.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sfn@3.450.0: + resolution: + { + integrity: sha512-z0SyE6fUpJ3IEbaHruw4oCqszxAt97507/KZBv89DLFz2WBuZCmq4hr0rp4/rQuMzi6X9Tvd6MZP4GeuNWDm8g==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/client-sts": 3.450.0 + "@aws-sdk/core": 3.445.0 + "@aws-sdk/credential-provider-node": 3.450.0 + "@aws-sdk/middleware-host-header": 3.449.0 + "@aws-sdk/middleware-logger": 3.449.0 + "@aws-sdk/middleware-recursion-detection": 3.449.0 + "@aws-sdk/middleware-signing": 3.449.0 + "@aws-sdk/middleware-user-agent": 3.449.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-endpoints": 3.449.0 + "@aws-sdk/util-user-agent-browser": 3.449.0 + "@aws-sdk/util-user-agent-node": 3.449.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.1.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso@3.450.0: + resolution: + { + integrity: sha512-xutima6DhrTLMyBc1nmLhWXarvrqbH1zizrQpG7cLdwfqHEOi3thR3SWu+pUC4XN9kiXQUb2HUMcv/vdqmknkQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/core": 3.445.0 + "@aws-sdk/middleware-host-header": 3.449.0 + "@aws-sdk/middleware-logger": 3.449.0 + "@aws-sdk/middleware-recursion-detection": 3.449.0 + "@aws-sdk/middleware-user-agent": 3.449.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-endpoints": 3.449.0 + "@aws-sdk/util-user-agent-browser": 3.449.0 + "@aws-sdk/util-user-agent-node": 3.449.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.1.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso@3.451.0: + resolution: + { + integrity: sha512-KkYSke3Pdv3MfVH/5fT528+MKjMyPKlcLcd4zQb0x6/7Bl7EHrPh1JZYjzPLHelb+UY5X0qN8+cb8iSu1eiwIQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/core": 3.451.0 + "@aws-sdk/middleware-host-header": 3.451.0 + "@aws-sdk/middleware-logger": 3.451.0 + "@aws-sdk/middleware-recursion-detection": 3.451.0 + "@aws-sdk/middleware-user-agent": 3.451.0 + "@aws-sdk/region-config-resolver": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@aws-sdk/util-endpoints": 3.451.0 + "@aws-sdk/util-user-agent-browser": 3.451.0 + "@aws-sdk/util-user-agent-node": 3.451.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.1.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/client-sts@3.405.0: + /@aws-sdk/client-sts@3.450.0: resolution: { - integrity: sha512-asVEpda3zu5QUO5ZNNjbLBS0718IhxxyUDVrNmVTKZoOhK1pMNouGZf+l49v0Lb5cOPbUds8cxsNaInj2MvIKw==, + integrity: sha512-pHZ/3NHHtK5YbjYrh2jT8eePSYSunyvcIhdASMqYVg3Enw/BxA0IKL8bZ/slolhqR1sAQx4sKRAO7dZK418Q6w==, } engines: { node: ">=14.0.0" } dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-sdk-sts": 3.398.0 - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": 2.0.5 - "@smithy/fetch-http-handler": 2.0.5 - "@smithy/hash-node": 2.0.5 - "@smithy/invalid-dependency": 2.0.5 - "@smithy/middleware-content-length": 2.0.5 - "@smithy/middleware-endpoint": 2.0.5 - "@smithy/middleware-retry": 2.0.5 - "@smithy/middleware-serde": 2.0.5 - "@smithy/middleware-stack": 2.0.0 - "@smithy/node-config-provider": 2.0.7 - "@smithy/node-http-handler": 2.0.5 - "@smithy/protocol-http": 2.0.5 - "@smithy/smithy-client": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/url-parser": 2.0.5 - "@smithy/util-base64": 2.0.0 + "@aws-sdk/core": 3.445.0 + "@aws-sdk/credential-provider-node": 3.450.0 + "@aws-sdk/middleware-host-header": 3.449.0 + "@aws-sdk/middleware-logger": 3.449.0 + "@aws-sdk/middleware-recursion-detection": 3.449.0 + "@aws-sdk/middleware-sdk-sts": 3.449.0 + "@aws-sdk/middleware-signing": 3.449.0 + "@aws-sdk/middleware-user-agent": 3.449.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-endpoints": 3.449.0 + "@aws-sdk/util-user-agent-browser": 3.449.0 + "@aws-sdk/util-user-agent-node": 3.449.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 "@smithy/util-body-length-browser": 2.0.0 "@smithy/util-body-length-node": 2.1.0 - "@smithy/util-defaults-mode-browser": 2.0.6 - "@smithy/util-defaults-mode-node": 2.0.7 - "@smithy/util-retry": 2.0.0 - "@smithy/util-utf8": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sts@3.451.0: + resolution: + { + integrity: sha512-48NcIRxWBdP1fom6RSjwn2R2u7SE7eeV3p+c4s7ukEOfrHhBxJfn3EpqBVQMGzdiU55qFImy+Fe81iA2lXq3Jw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/core": 3.451.0 + "@aws-sdk/credential-provider-node": 3.451.0 + "@aws-sdk/middleware-host-header": 3.451.0 + "@aws-sdk/middleware-logger": 3.451.0 + "@aws-sdk/middleware-recursion-detection": 3.451.0 + "@aws-sdk/middleware-sdk-sts": 3.451.0 + "@aws-sdk/middleware-signing": 3.451.0 + "@aws-sdk/middleware-user-agent": 3.451.0 + "@aws-sdk/region-config-resolver": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@aws-sdk/util-endpoints": 3.451.0 + "@aws-sdk/util-user-agent-browser": 3.451.0 + "@aws-sdk/util-user-agent-node": 3.451.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.1.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 fast-xml-parser: 4.2.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-cognito-identity@3.405.0: + /@aws-sdk/core@3.445.0: resolution: { - integrity: sha512-tmu8r0kB3qHHIitQAwiziWzxoaGCv/vCh00EcabuW3x3UsKQUF71ZLuNcMOv5wqTsQw0Fmv3dKy2tzVmRm3Z5g==, + integrity: sha512-6GYLElUG1QTOdmXG8zXa+Ull9IUeSeItKDYHKzHYfIkbsagMfYlf7wm9XIYlatjtgodNfZ3gPHAJfRyPmwKrsg==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/client-cognito-identity": 3.405.0 - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.0.6 - "@smithy/types": 2.2.2 + "@smithy/smithy-client": 2.1.15 + tslib: 2.6.2 + dev: false + + /@aws-sdk/core@3.451.0: + resolution: + { + integrity: sha512-SamWW2zHEf1ZKe3j1w0Piauryl8BQIlej0TBS18A4ACzhjhWXhCs13bO1S88LvPR5mBFXok3XOT6zPOnKDFktw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/smithy-client": 2.1.15 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-cognito-identity@3.451.0: + resolution: + { + integrity: sha512-g1ZT46NuYfou00d94rJZ59N4TLI1T+v46lbHTtF9jwohiUsi7/vHkPIOdrgtrThGzGUVl01w62N0a2mpMydaBA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/client-cognito-identity": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@smithy/property-provider": 2.0.14 + "@smithy/types": 2.5.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-env@3.398.0: + /@aws-sdk/credential-provider-env@3.449.0: resolution: { - integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==, + integrity: sha512-SwO9XQcBoyA0XrsSmgnMqCnR99wIyp+BjGhvzDU+Wetib7QPt++E2slJkLM/iCNc6YiqiHZtHsvXapSV7RzBJw==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.0.6 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/property-provider": 2.0.14 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/credential-provider-env@3.451.0: + resolution: + { + integrity: sha512-9dAav7DcRgaF7xCJEQR5ER9ErXxnu/tdnVJ+UPmb1NPeIZdESv1A3lxFDEq1Fs8c4/lzAj9BpshGyJVIZwZDKg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/property-provider": 2.0.14 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true - /@aws-sdk/credential-provider-ini@3.405.0: + /@aws-sdk/credential-provider-http@3.451.0: resolution: { - integrity: sha512-b4TqVsM4WQM96GDVs+TYOhU2/0SnUWzz6NH55qY1y2xyF8/pZEhc0XXdpvZtQQBLGdROhXCbxhBVye8GmTpgcg==, + integrity: sha512-q82kEzymqimkJ2dHmuN2RGpi9HTFSxwwoXALnzPRaRcvR/v+YY8FMgSTfwXzPkHUDf/q8J+aDz6lPcYlnsP3sQ==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-process": 3.405.0 - "@aws-sdk/credential-provider-sso": 3.405.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/credential-provider-imds": 2.0.7 - "@smithy/property-provider": 2.0.6 - "@smithy/shared-ini-file-loader": 2.0.6 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.451.0 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/node-http-handler": 2.1.9 + "@smithy/property-provider": 2.0.14 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/util-stream": 2.0.20 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-ini@3.450.0: + resolution: + { + integrity: sha512-quil0bUH43irhEtHBBpnleVQd1ZBX9kDVf8HziK/LIhujTmHDAoDODnjhUczdJU6srMJgAJi1oVTaVek5emh9Q==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/credential-provider-env": 3.449.0 + "@aws-sdk/credential-provider-process": 3.449.0 + "@aws-sdk/credential-provider-sso": 3.450.0 + "@aws-sdk/credential-provider-web-identity": 3.449.0 + "@aws-sdk/types": 3.449.0 + "@smithy/credential-provider-imds": 2.1.1 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/credential-provider-ini@3.451.0: + resolution: + { + integrity: sha512-TySt64Ci5/ZbqFw1F9Z0FIGvYx5JSC9e6gqDnizIYd8eMnn8wFRUscRrD7pIHKfrhvVKN5h0GdYovmMO/FMCBw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/credential-provider-env": 3.451.0 + "@aws-sdk/credential-provider-process": 3.451.0 + "@aws-sdk/credential-provider-sso": 3.451.0 + "@aws-sdk/credential-provider-web-identity": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@smithy/credential-provider-imds": 2.1.1 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-node@3.405.0: + /@aws-sdk/credential-provider-node@3.450.0: resolution: { - integrity: sha512-AMmRP09nwYsft0MXDlHIxMQe7IloWW8As0lbZmPrG7Y7mK5RDmCIwD2yMDz77Zqlv09FsYt+9+cOK2fTNhim+Q==, + integrity: sha512-d4tQklhvsydNCer5Axd2sNptqqdalE78esDk0zA/cYaj56GniKqk3HLJLgb/wdv2/Ho6/4DhWeM5W4LaJNRivA==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-ini": 3.405.0 - "@aws-sdk/credential-provider-process": 3.405.0 - "@aws-sdk/credential-provider-sso": 3.405.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/credential-provider-imds": 2.0.7 - "@smithy/property-provider": 2.0.6 - "@smithy/shared-ini-file-loader": 2.0.6 - "@smithy/types": 2.2.2 + "@aws-sdk/credential-provider-env": 3.449.0 + "@aws-sdk/credential-provider-ini": 3.450.0 + "@aws-sdk/credential-provider-process": 3.449.0 + "@aws-sdk/credential-provider-sso": 3.450.0 + "@aws-sdk/credential-provider-web-identity": 3.449.0 + "@aws-sdk/types": 3.449.0 + "@smithy/credential-provider-imds": 2.1.1 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/credential-provider-node@3.451.0: + resolution: + { + integrity: sha512-AEwM1WPyxUdKrKyUsKyFqqRFGU70e4qlDyrtBxJnSU9NRLZI8tfEZ67bN7fHSxBUBODgDXpMSlSvJiBLh5/3pw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/credential-provider-env": 3.451.0 + "@aws-sdk/credential-provider-ini": 3.451.0 + "@aws-sdk/credential-provider-process": 3.451.0 + "@aws-sdk/credential-provider-sso": 3.451.0 + "@aws-sdk/credential-provider-web-identity": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@smithy/credential-provider-imds": 2.1.1 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-process@3.405.0: + /@aws-sdk/credential-provider-process@3.449.0: resolution: { - integrity: sha512-EqAMcUVeZAICYHHL8x5Fi5CYPgCo9UCE7ScWmU5Sa2wAFY4XLyQ1mMxX3lKGYx9lBxWk3dqnhmvlcqdzN7AjyQ==, + integrity: sha512-IofhAgpwdSnaEg9H0dhydac07GCQ55Mc5oRzdzp/tm0Rl0MqnGdIvN8wYsxAeVhEi9pBSNla4eRiTu3LY6Z5+A==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.0.6 - "@smithy/shared-ini-file-loader": 2.0.6 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/credential-provider-process@3.451.0: + resolution: + { + integrity: sha512-HQywSdKeD5PErcLLnZfSyCJO+6T+ZyzF+Lm/QgscSC+CbSUSIPi//s15qhBRVely/3KBV6AywxwNH+5eYgt4lQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true - /@aws-sdk/credential-provider-sso@3.405.0: + /@aws-sdk/credential-provider-sso@3.450.0: resolution: { - integrity: sha512-fXqSgQHz7qcmIWMVguwSMSjqFkVfN2+XiNgiskcmeYiCS7mIGAgUnKABZc9Ds2+YW9ATYiY0BOD5aWxc8TX5fA==, + integrity: sha512-zzr9s5bG38TRn82eJXzG1/AglDihrcINn9TBfwOL8OBl0J6MF7EPAS92VpOuYs09H70MOWSZkmzEftq1urwC0g==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/client-sso": 3.405.0 - "@aws-sdk/token-providers": 3.405.0 - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.0.6 - "@smithy/shared-ini-file-loader": 2.0.6 - "@smithy/types": 2.2.2 + "@aws-sdk/client-sso": 3.450.0 + "@aws-sdk/token-providers": 3.449.0 + "@aws-sdk/types": 3.449.0 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/credential-provider-sso@3.451.0: + resolution: + { + integrity: sha512-Usm/N51+unOt8ID4HnQzxIjUJDrkAQ1vyTOC0gSEEJ7h64NSSPGD5yhN7il5WcErtRd3EEtT1a8/GTC5TdBctg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/client-sso": 3.451.0 + "@aws-sdk/token-providers": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/credential-provider-web-identity@3.398.0: + /@aws-sdk/credential-provider-web-identity@3.449.0: resolution: { - integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==, + integrity: sha512-BdqATzdqg39z2VXnEH7I6dzuX/Di6F/4C8FyiiJYx2+VciYdqt6GPprlpGdpngtWct/f8pA/LxQysNBVuwU/RA==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.0.6 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/property-provider": 2.0.14 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/credential-provider-web-identity@3.451.0: + resolution: + { + integrity: sha512-Xtg3Qw65EfDjWNG7o2xD6sEmumPfsy3WDGjk2phEzVg8s7hcZGxf5wYwe6UY7RJvlEKrU0rFA+AMn6Hfj5oOzg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/property-provider": 2.0.14 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true - /@aws-sdk/credential-providers@3.405.0: + /@aws-sdk/credential-providers@3.451.0: resolution: { - integrity: sha512-332QZ2Wrr5gfFUGPLwITcjhxnBD4y94fxKg7qerSBq7fjjIkl/OjnchZf5ReePrjpglxs6hgLdGrPYIYPC4Hhw==, + integrity: sha512-ihbYZrI/tSVsZFDGLfJoCx3sg1s9EQqWA+xbLoquK+RjMqTnaeshYntFJmQA5yqCIbcAkyw63OwOIBRrVb7tMA==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/client-cognito-identity": 3.405.0 - "@aws-sdk/client-sso": 3.405.0 - "@aws-sdk/client-sts": 3.405.0 - "@aws-sdk/credential-provider-cognito-identity": 3.405.0 - "@aws-sdk/credential-provider-env": 3.398.0 - "@aws-sdk/credential-provider-ini": 3.405.0 - "@aws-sdk/credential-provider-node": 3.405.0 - "@aws-sdk/credential-provider-process": 3.405.0 - "@aws-sdk/credential-provider-sso": 3.405.0 - "@aws-sdk/credential-provider-web-identity": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/credential-provider-imds": 2.0.7 - "@smithy/property-provider": 2.0.6 - "@smithy/types": 2.2.2 + "@aws-sdk/client-cognito-identity": 3.451.0 + "@aws-sdk/client-sso": 3.451.0 + "@aws-sdk/client-sts": 3.451.0 + "@aws-sdk/credential-provider-cognito-identity": 3.451.0 + "@aws-sdk/credential-provider-env": 3.451.0 + "@aws-sdk/credential-provider-http": 3.451.0 + "@aws-sdk/credential-provider-ini": 3.451.0 + "@aws-sdk/credential-provider-node": 3.451.0 + "@aws-sdk/credential-provider-process": 3.451.0 + "@aws-sdk/credential-provider-sso": 3.451.0 + "@aws-sdk/credential-provider-web-identity": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@smithy/credential-provider-imds": 2.1.1 + "@smithy/property-provider": 2.0.14 + "@smithy/types": 2.5.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: true - /@aws-sdk/middleware-host-header@3.398.0: + /@aws-sdk/middleware-bucket-endpoint@3.449.0: resolution: { - integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==, + integrity: sha512-gH+IEdDfhzTmQLdWwfc23A40EhvvAhk8taXUu3DX/lXl+2lBqd4qCoGk8vfUtwh9y1kbRDnhLq04XM2DPvvj2w==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-arn-parser": 3.310.0 + "@smithy/node-config-provider": 2.1.5 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 + "@smithy/util-config-provider": 2.0.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-expect-continue@3.449.0: + resolution: + { + integrity: sha512-OOR78JoTbCo/42HViuA+F2Uy/cNWo31mN0YZJRbnY5oAMgLRrY7d2+NlJpvHlS4XPdUZ6UHeUecJ9BAWuVuWAQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.449.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-flexible-checksums@3.449.0: + resolution: + { + integrity: sha512-pKBgmwqA6jdiWZrYX0uaPOGdRldRiG2ArA7ufS5B7iz9X1JJP8ESZcO2wD+AbrLBtkZtVG31974qpqfNU6n4dQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/crc32": 3.0.0 + "@aws-crypto/crc32c": 3.0.0 + "@aws-sdk/types": 3.449.0 + "@smithy/is-array-buffer": 2.0.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-host-header@3.449.0: + resolution: + { + integrity: sha512-uO7ao5eFhqEEPk8uqkhNhYqqJPPv/+i2aLchvSYrviDcmcbz9HURc8j+Q9WkmIj3jf0hjAJ9UVMQggBUfoLEgg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.449.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-host-header@3.451.0: + resolution: + { + integrity: sha512-j8a5jAfhWmsK99i2k8oR8zzQgXrsJtgrLxc3js6U+525mcZytoiDndkWTmD5fjJ1byU1U2E5TaPq+QJeDip05Q==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true - /@aws-sdk/middleware-logger@3.398.0: + /@aws-sdk/middleware-location-constraint@3.449.0: resolution: { - integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==, + integrity: sha512-MPCFKOpgke/ZV6WSxZZ/y9X4mn0ywLC2HVcaPJvDSKA0gsRtJLEQjWs2+I2QYTzEM0iwgoW9UOSgbFZYXF0Pow==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-logger@3.449.0: + resolution: + { + integrity: sha512-YwmPLuSx5Zjdnloxr7bArT2KgF+VvlSe5+p5T/woZWEQgINRaCLdvDB37p7x/LlHrxxZRmk20MaFwSKlJU85qQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.449.0 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-logger@3.451.0: + resolution: + { + integrity: sha512-0kHrYEyVeB2QBfP6TfbI240aRtatLZtcErJbhpiNUb+CQPgEL3crIjgVE8yYiJumZ7f0jyjo8HLPkwD1/2APaw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true - /@aws-sdk/middleware-recursion-detection@3.398.0: + /@aws-sdk/middleware-recursion-detection@3.449.0: resolution: { - integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==, + integrity: sha512-8kWxxpPBHwFUADf8JaZsUbJ+FtS3K9MGQpMx0AZhh3P9xLaoh602CL0y0+UEEdb2uh6FJJjQiIk4eQXEolhG6Q==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-recursion-detection@3.451.0: + resolution: + { + integrity: sha512-J6jL6gJ7orjHGM70KDRcCP7so/J2SnkN4vZ9YRLTeeZY6zvBuHDjX8GCIgSqPn/nXFXckZO8XSnA7u6+3TAT0w==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true - /@aws-sdk/middleware-sdk-sts@3.398.0: + /@aws-sdk/middleware-sdk-s3@3.449.0: resolution: { - integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==, + integrity: sha512-HbgWdv0txBdV9+9aJSGtGWXnQlVvpIXS6gqmJ5ESHKwZMiRHXswwptccZkvSrLjCQr5uuN37yIz3219MRrvrmw==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/middleware-signing": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-arn-parser": 3.310.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-sdk-sts@3.449.0: + resolution: + { + integrity: sha512-a+mknJkS9jDiDoHg2sFW24B0f6MgT2zs/oF6zMFvVmImvUHjbhSgBzYStE+Phl/uM1zwp1lJfbuO+I+5tVwZEw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/middleware-signing": 3.449.0 + "@aws-sdk/types": 3.449.0 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-sdk-sts@3.451.0: + resolution: + { + integrity: sha512-UJ6UfVUEgp0KIztxpAeelPXI5MLj9wUtUCqYeIMP7C1ZhoEMNm3G39VLkGN43dNhBf1LqjsV9jkKMZbVfYXuwg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/middleware-signing": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true - /@aws-sdk/middleware-signing@3.398.0: + /@aws-sdk/middleware-signing@3.449.0: resolution: { - integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==, + integrity: sha512-L33efrgdDDY3myjLwraeS2tzUlebaZL6WS7ooACsOwkB9mRs6UQRpSpT90HbcSAjwLaa+xGqaxTA0biAuRjT5A==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/property-provider": 2.0.6 - "@smithy/protocol-http": 2.0.5 + "@aws-sdk/types": 3.449.0 + "@smithy/property-provider": 2.0.14 + "@smithy/protocol-http": 3.0.9 "@smithy/signature-v4": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/util-middleware": 2.0.0 + "@smithy/types": 2.5.0 + "@smithy/util-middleware": 2.0.6 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-signing@3.451.0: + resolution: + { + integrity: sha512-s5ZlcIoLNg1Huj4Qp06iKniE8nJt/Pj1B/fjhWc6cCPCM7XJYUCejCnRh6C5ZJoBEYodjuwZBejPc1Wh3j+znA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/property-provider": 2.0.14 + "@smithy/protocol-http": 3.0.9 + "@smithy/signature-v4": 2.0.5 + "@smithy/types": 2.5.0 + "@smithy/util-middleware": 2.0.6 tslib: 2.6.2 dev: true - /@aws-sdk/middleware-user-agent@3.398.0: + /@aws-sdk/middleware-ssec@3.449.0: resolution: { - integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==, + integrity: sha512-NY7jt1/ukqXCUqnaK2rlm5yGFyj9sOJBqK6X8Gpu5qQaYAvIP892U1UMj6VTPC7yBLPYhW2/YCfDvxOClbqKEg==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-user-agent@3.449.0: + resolution: + { + integrity: sha512-0cRptIhIthxUYadrgb5FmcTgGhPIeXnFATBILaa2gA/ivfVY/CiqMAvOvLHxtBAYNK8/VXM9DFL5TfOt8mF2UQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-endpoints": 3.449.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-user-agent@3.451.0: + resolution: + { + integrity: sha512-8NM/0JiKLNvT9wtAQVl1DFW0cEO7OvZyLSUBLNLTHqyvOZxKaZ8YFk7d8PL6l76LeUKRxq4NMxfZQlUIRe0eSA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@aws-sdk/util-endpoints": 3.451.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/region-config-resolver@3.433.0: + resolution: + { + integrity: sha512-xpjRjCZW+CDFdcMmmhIYg81ST5UAnJh61IHziQEk0FXONrg4kjyYPZAOjEdzXQ+HxJQuGQLKPhRdzxmQnbX7pg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/node-config-provider": 2.1.5 + "@smithy/types": 2.5.0 + "@smithy/util-config-provider": 2.0.0 + "@smithy/util-middleware": 2.0.6 + tslib: 2.6.2 + dev: false + + /@aws-sdk/region-config-resolver@3.451.0: + resolution: + { + integrity: sha512-3iMf4OwzrFb4tAAmoROXaiORUk2FvSejnHIw/XHvf/jjR4EqGGF95NZP/n/MeFZMizJWVssrwS412GmoEyoqhg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/node-config-provider": 2.1.5 + "@smithy/types": 2.5.0 + "@smithy/util-config-provider": 2.0.0 + "@smithy/util-middleware": 2.0.6 tslib: 2.6.2 dev: true - /@aws-sdk/token-providers@3.405.0: + /@aws-sdk/signature-v4-multi-region@3.449.0: resolution: { - integrity: sha512-rVzC7ptf7TlV84M9w+Ds9isio1EY7bs1MRFv/6lmYstsyTri+DaZG10TwXSGfzIMwB0yVh11niCxO9wSjQ36zg==, + integrity: sha512-Ne8dF3R2Cj6JJBw0Utm7INtoJ2PdqGNgDpeTOFTnFGSGWnsumACbcVp4ikcZzgABTCQgKx88wPdXUHUZtaBqcg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.449.0 + "@smithy/protocol-http": 3.0.9 + "@smithy/signature-v4": 2.0.5 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/token-providers@3.449.0: + resolution: + { + integrity: sha512-Tgu6Z/l75uFuNQpKIidbn1gc5bI7OKmGdH5+E/ZAc58XYvxYs9N77HjhrhAGvYQEnXY6gRm26/WSeHAAh5wlgQ==, } engines: { node: ">=14.0.0" } dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/middleware-host-header": 3.398.0 - "@aws-sdk/middleware-logger": 3.398.0 - "@aws-sdk/middleware-recursion-detection": 3.398.0 - "@aws-sdk/middleware-user-agent": 3.398.0 - "@aws-sdk/types": 3.398.0 - "@aws-sdk/util-endpoints": 3.398.0 - "@aws-sdk/util-user-agent-browser": 3.398.0 - "@aws-sdk/util-user-agent-node": 3.405.0 - "@smithy/config-resolver": 2.0.5 - "@smithy/fetch-http-handler": 2.0.5 - "@smithy/hash-node": 2.0.5 - "@smithy/invalid-dependency": 2.0.5 - "@smithy/middleware-content-length": 2.0.5 - "@smithy/middleware-endpoint": 2.0.5 - "@smithy/middleware-retry": 2.0.5 - "@smithy/middleware-serde": 2.0.5 - "@smithy/middleware-stack": 2.0.0 - "@smithy/node-config-provider": 2.0.7 - "@smithy/node-http-handler": 2.0.5 - "@smithy/property-provider": 2.0.6 - "@smithy/protocol-http": 2.0.5 - "@smithy/shared-ini-file-loader": 2.0.6 - "@smithy/smithy-client": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/url-parser": 2.0.5 - "@smithy/util-base64": 2.0.0 + "@aws-sdk/middleware-host-header": 3.449.0 + "@aws-sdk/middleware-logger": 3.449.0 + "@aws-sdk/middleware-recursion-detection": 3.449.0 + "@aws-sdk/middleware-user-agent": 3.449.0 + "@aws-sdk/region-config-resolver": 3.433.0 + "@aws-sdk/types": 3.449.0 + "@aws-sdk/util-endpoints": 3.449.0 + "@aws-sdk/util-user-agent-browser": 3.449.0 + "@aws-sdk/util-user-agent-node": 3.449.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/property-provider": 2.0.14 + "@smithy/protocol-http": 3.0.9 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 "@smithy/util-body-length-browser": 2.0.0 "@smithy/util-body-length-node": 2.1.0 - "@smithy/util-defaults-mode-browser": 2.0.6 - "@smithy/util-defaults-mode-node": 2.0.7 - "@smithy/util-retry": 2.0.0 - "@smithy/util-utf8": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/token-providers@3.451.0: + resolution: + { + integrity: sha512-ij1L5iUbn6CwxVOT1PG4NFjsrsKN9c4N1YEM0lkl6DwmaNOscjLKGSNyj9M118vSWsOs1ZDbTwtj++h0O/BWrQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/middleware-host-header": 3.451.0 + "@aws-sdk/middleware-logger": 3.451.0 + "@aws-sdk/middleware-recursion-detection": 3.451.0 + "@aws-sdk/middleware-user-agent": 3.451.0 + "@aws-sdk/region-config-resolver": 3.451.0 + "@aws-sdk/types": 3.451.0 + "@aws-sdk/util-endpoints": 3.451.0 + "@aws-sdk/util-user-agent-browser": 3.451.0 + "@aws-sdk/util-user-agent-node": 3.451.0 + "@smithy/config-resolver": 2.0.18 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/hash-node": 2.0.15 + "@smithy/invalid-dependency": 2.0.13 + "@smithy/middleware-content-length": 2.0.15 + "@smithy/middleware-endpoint": 2.2.0 + "@smithy/middleware-retry": 2.0.20 + "@smithy/middleware-serde": 2.0.13 + "@smithy/middleware-stack": 2.0.7 + "@smithy/node-config-provider": 2.1.5 + "@smithy/node-http-handler": 2.1.9 + "@smithy/property-provider": 2.0.14 + "@smithy/protocol-http": 3.0.9 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-base64": 2.0.1 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.1.0 + "@smithy/util-defaults-mode-browser": 2.0.19 + "@smithy/util-defaults-mode-node": 2.0.25 + "@smithy/util-endpoints": 1.0.4 + "@smithy/util-retry": 2.0.6 + "@smithy/util-utf8": 2.0.2 tslib: 2.6.2 transitivePeerDependencies: - aws-crt @@ -612,16 +1320,58 @@ packages: dependencies: "@smithy/types": 2.2.2 tslib: 2.6.2 - dev: true - /@aws-sdk/util-endpoints@3.398.0: + /@aws-sdk/types@3.449.0: resolution: { - integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==, + integrity: sha512-tSQPAvknheB6XnRoc+AuEgdzn2KhY447hddeVW0Mbg8Yl9es4u4TKVINloKDEyUrCKhB/1f93Hb5uJkPe/e/Ww==, } engines: { node: ">=14.0.0" } dependencies: - "@aws-sdk/types": 3.398.0 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + + /@aws-sdk/types@3.451.0: + resolution: + { + integrity: sha512-rhK+qeYwCIs+laJfWCcrYEjay2FR/9VABZJ2NRM89jV/fKqGVQR52E5DQqrI+oEIL5JHMhhnr4N4fyECMS35lw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.5.0 + tslib: 2.6.2 + + /@aws-sdk/util-arn-parser@3.310.0: + resolution: + { + integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==, + } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-endpoints@3.449.0: + resolution: + { + integrity: sha512-hWGM/e+BnbCExXLaIEa6gRb0JW3+XGfcHgRqWkAxsKCaxQuXVIPUA3HyifimxTZDKmTbGZcyWfxCnKGS7I19rw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.449.0 + "@smithy/util-endpoints": 1.0.4 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-endpoints@3.451.0: + resolution: + { + integrity: sha512-giqLGBTnRIcKkDqwU7+GQhKbtJ5Ku35cjGQIfMyOga6pwTBUbaK0xW1Sdd8sBQ1GhApscnChzI9o/R9x0368vw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/util-endpoints": 1.0.4 tslib: 2.6.2 dev: true @@ -633,24 +1383,35 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true - /@aws-sdk/util-user-agent-browser@3.398.0: + /@aws-sdk/util-user-agent-browser@3.449.0: resolution: { - integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==, + integrity: sha512-MUQ8YIVZNZZso5w1qlatHu9c1JKYvdjlAugzKhj7npgV4U8D9RBOJUd2Ct8meXPaH4DTfW1qohPlZu/fWWqNVQ==, } dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/types": 2.5.0 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-user-agent-browser@3.451.0: + resolution: + { + integrity: sha512-Ws5mG3J0TQifH7OTcMrCTexo7HeSAc3cBgjfhS/ofzPUzVCtsyg0G7I6T7wl7vJJETix2Kst2cpOsxygPgPD9w==, + } + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/types": 2.5.0 bowser: 2.11.0 tslib: 2.6.2 dev: true - /@aws-sdk/util-user-agent-node@3.405.0: + /@aws-sdk/util-user-agent-node@3.449.0: resolution: { - integrity: sha512-6Ssld7aalKCnW6lSGfiiWpqwo2L+AmYq2oV3P9yYAo9ZL+Q78dXquabwj3uq3plJ4l2xE4Gfcf2FJ/1PZpqDvQ==, + integrity: sha512-PFMnFMSQTdhMAS63anMFFkzz56kWKcjGscgl0bBheEaxo8zgfLf1AAdFuBM+Ob2KYXeMezUbxYu9zOC/0S2hvw==, } engines: { node: ">=14.0.0" } peerDependencies: @@ -659,9 +1420,27 @@ packages: aws-crt: optional: true dependencies: - "@aws-sdk/types": 3.398.0 - "@smithy/node-config-provider": 2.0.7 - "@smithy/types": 2.2.2 + "@aws-sdk/types": 3.449.0 + "@smithy/node-config-provider": 2.1.5 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-user-agent-node@3.451.0: + resolution: + { + integrity: sha512-TBzm6P+ql4mkGFAjPlO1CI+w3yUT+NulaiALjl/jNX/nnUp6HsJsVxJf4nVFQTG5KRV0iqMypcs7I3KIhH+LmA==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + "@aws-sdk/types": 3.451.0 + "@smithy/node-config-provider": 2.1.5 + "@smithy/types": 2.5.0 tslib: 2.6.2 dev: true @@ -672,13 +1451,16 @@ packages: } dependencies: tslib: 2.6.2 - dev: true - /@balena/dockerignore@1.0.2: + /@aws-sdk/xml-builder@3.310.0: resolution: { - integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==, + integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==, } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.2 + dev: false /@cspotcode/source-map-support@0.8.1: resolution: @@ -690,20 +1472,18 @@ packages: "@jridgewell/trace-mapping": 0.3.9 dev: true - /@elsa-data/aws-infrastructure-client@1.3.4(aws-cdk-lib@2.93.0)(constructs@10.2.70): + /@elsa-data/aws-infrastructure@1.5.1(aws-cdk-lib@2.108.1)(constructs@10.3.0): resolution: { - integrity: sha512-qgqBiwdLd4MFb4yLjBpIv2TbIKXlRsYeECohDARXX06LOLgEEP2OuqAXofGkCANZ5HD2gC0LQh9cu7o3OaffDw==, + integrity: sha512-foP1LgYFWP2sR9R4FrpQyE/I+Vwh4NCMIt/8MwliNMwtAYYzCSHZduwyo9EekcHvCotfSC/hYexTL8uer+P37g==, } peerDependencies: - aws-cdk-lib: ^2.93.0 - constructs: ^10.2.70 + aws-cdk-lib: ^2.108.1 + constructs: ^10.3.0 dependencies: - aws-cdk-lib: 2.93.0(constructs@10.2.70) - constructs: 10.2.70 + aws-cdk-lib: 2.108.1(constructs@10.3.0) + constructs: 10.3.0 dev: false - bundledDependencies: - - shared /@esbuild/android-arm64@0.19.2: resolution: @@ -994,10 +1774,10 @@ packages: "@jridgewell/sourcemap-codec": 1.4.15 dev: true - /@jsii/check-node@1.88.0: + /@jsii/check-node@1.91.0: resolution: { - integrity: sha512-AveFyqkJIb8qZvGk5nZal/8mEJB6lWhwqvAQLodHmqE3WzpmZD5+h+aspBVt0El5cEFRJ1k1mrQqhAnJCVpvxg==, + integrity: sha512-K9UFkRe4uJNVp1O2o4OBM/3usba6Vw3XF1Mq3TVBAYl1EzpAiA62DojGp30+3zwFlb1lkavVj1hKlCrIWIuJhw==, } engines: { node: ">= 14.17.0" } dependencies: @@ -1005,131 +1785,227 @@ packages: semver: 7.5.4 dev: true - /@jsii/spec@1.88.0: + /@jsii/spec@1.91.0: resolution: { - integrity: sha512-Q6xirxPM06TRW0GcsHa+tzPZLwe9I+mFYx5BaNMimcv21u6bQnxfynZMgNhHqvLYCmP37HWg0SboUYTa5JROzw==, + integrity: sha512-Ir01bk5CwIFAApRJjRC+JG/f9db5dACEYFSxsHyvXRMu+J/LIANdwD4OPSelWrhbRiQdY6U16BKsRO63uaNRqg==, } engines: { node: ">= 14.17.0" } dependencies: ajv: 8.12.0 dev: true - /@nodelib/fs.scandir@2.1.5: + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + dev: true + + /@smithy/abort-controller@2.0.13: + resolution: + { + integrity: sha512-eeOPD+GF9BzF/Mjy3PICLePx4l0f3rG/nQegQHRLTloN5p1lSJJNZsyn+FzDnW8P2AduragZqJdtKNCxXozB1Q==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.5.0 + tslib: 2.6.2 + + /@smithy/chunked-blob-reader-native@2.0.1: + resolution: + { + integrity: sha512-N2oCZRglhWKm7iMBu7S6wDzXirjAofi7tAd26cxmgibRYOBS4D3hGfmkwCpHdASZzwZDD8rluh0Rcqw1JeZDRw==, + } + dependencies: + "@smithy/util-base64": 2.0.1 + tslib: 2.6.2 + dev: false + + /@smithy/chunked-blob-reader@2.0.0: + resolution: + { + integrity: sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==, + } + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/config-resolver@2.0.18: + resolution: + { + integrity: sha512-761sJSgNbvsqcsKW6/WZbrZr4H+0Vp/QKKqwyrxCPwD8BsiPEXNHyYnqNgaeK9xRWYswjon0Uxbpe3DWQo0j/g==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/node-config-provider": 2.1.5 + "@smithy/types": 2.5.0 + "@smithy/util-config-provider": 2.0.0 + "@smithy/util-middleware": 2.0.6 + tslib: 2.6.2 + + /@smithy/credential-provider-imds@2.1.1: + resolution: + { + integrity: sha512-gw5G3FjWC6sNz8zpOJgPpH5HGKrpoVFQpToNAwLwJVyI/LJ2jDJRjSKEsM6XI25aRpYjMSE/Qptxx305gN1vHw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/node-config-provider": 2.1.5 + "@smithy/property-provider": 2.0.14 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + tslib: 2.6.2 + + /@smithy/eventstream-codec@2.0.13: + resolution: + { + integrity: sha512-CExbelIYp+DxAHG8RIs0l9QL7ElqhG4ym9BNoSpkPa4ptBQfzJdep3LbOSVJIE2VUdBAeObdeL6EDB3Jo85n3g==, + } + dependencies: + "@aws-crypto/crc32": 3.0.0 + "@smithy/types": 2.5.0 + "@smithy/util-hex-encoding": 2.0.0 + tslib: 2.6.2 + dev: false + + /@smithy/eventstream-codec@2.0.5: resolution: { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + integrity: sha512-iqR6OuOV3zbQK8uVs9o+9AxhVk8kW9NAxA71nugwUB+kTY9C35pUd0A5/m4PRT0Y0oIW7W4kgnSR3fdYXQjECw==, } - engines: { node: ">= 8" } dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: 1.2.0 - dev: true + "@aws-crypto/crc32": 3.0.0 + "@smithy/types": 2.2.2 + "@smithy/util-hex-encoding": 2.0.0 + tslib: 2.6.2 - /@nodelib/fs.stat@2.0.5: + /@smithy/eventstream-serde-browser@2.0.13: resolution: { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + integrity: sha512-OJ/2g/VxkzA+mYZxV102oX3CsiE+igTSmqq/ir3oEVG2kSIdRC00ryttj/lmL14W06ExNi0ysmfLxQkL8XrAZQ==, } - engines: { node: ">= 8" } - dev: true + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/eventstream-serde-universal": 2.0.13 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false - /@nodelib/fs.walk@1.2.8: + /@smithy/eventstream-serde-config-resolver@2.0.13: resolution: { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + integrity: sha512-2BI1CbnYuEvAYoWSeWJtPNygbIKiWeSLxCmDLnyM6wQV32Of7VptiQlaFXPxXp4zqn/rs3ocZ/T29rxE4s4Gsg==, } - engines: { node: ">= 8" } + engines: { node: ">=14.0.0" } dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: 1.15.0 - dev: true + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false - /@smithy/abort-controller@2.0.5: + /@smithy/eventstream-serde-node@2.0.13: resolution: { - integrity: sha512-byVZ2KWLMPYAZGKjRpniAzLcygJO4ruClZKdJTuB0eCB76ONFTdptBHlviHpAZXknRz7skYWPfcgO9v30A1SyA==, + integrity: sha512-7NbFwPafb924elFxCBDvm48jy/DeSrpFbFQN0uN2ThuY5HrEeubikS0t7WMva4Z4EnRoivpbuT0scb9vUIJKoA==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 + "@smithy/eventstream-serde-universal": 2.0.13 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true + dev: false - /@smithy/config-resolver@2.0.5: + /@smithy/eventstream-serde-universal@2.0.13: resolution: { - integrity: sha512-n0c2AXz+kjALY2FQr7Zy9zhYigXzboIh1AuUUVCqFBKFtdEvTwnwPXrTDoEehLiRTUHNL+4yzZ3s+D0kKYSLSg==, + integrity: sha512-j0yFd5UfftM+ia9dxLRbheJDCkCZBHpcEzCsPO8BxVOTbdcX/auVJCv6ov/yvpCKsf4Hv3mOqi0Is1YogM2g3Q==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 - "@smithy/util-config-provider": 2.0.0 - "@smithy/util-middleware": 2.0.0 + "@smithy/eventstream-codec": 2.0.13 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true + dev: false - /@smithy/credential-provider-imds@2.0.7: + /@smithy/fetch-http-handler@2.2.6: resolution: { - integrity: sha512-XivkZj/pipzpQPxgleE1odwJQ6oDsVViB4VUO/HRDI4EdEfZjud44USupOUOa/xOjS39/75DYB4zgTbyV+totw==, + integrity: sha512-PStY3XO1Ksjwn3wMKye5U6m6zxXpXrXZYqLy/IeCbh3nM9QB3Jgw/B0PUSLUWKdXg4U8qgEu300e3ZoBvZLsDg==, } - engines: { node: ">=14.0.0" } dependencies: - "@smithy/node-config-provider": 2.0.7 - "@smithy/property-provider": 2.0.6 - "@smithy/types": 2.2.2 - "@smithy/url-parser": 2.0.5 + "@smithy/protocol-http": 3.0.9 + "@smithy/querystring-builder": 2.0.13 + "@smithy/types": 2.5.0 + "@smithy/util-base64": 2.0.1 tslib: 2.6.2 - dev: true - /@smithy/eventstream-codec@2.0.5: + /@smithy/hash-blob-browser@2.0.14: resolution: { - integrity: sha512-iqR6OuOV3zbQK8uVs9o+9AxhVk8kW9NAxA71nugwUB+kTY9C35pUd0A5/m4PRT0Y0oIW7W4kgnSR3fdYXQjECw==, + integrity: sha512-yWdghyPJIEqLYsaE7YVgd3YhM7jN4Pv6eJQvTomnMsz5K2qRBlpjUx3T9fKlElp1qdeQ7DNc3sAat4i9CUBO7Q==, } dependencies: - "@aws-crypto/crc32": 3.0.0 - "@smithy/types": 2.2.2 - "@smithy/util-hex-encoding": 2.0.0 + "@smithy/chunked-blob-reader": 2.0.0 + "@smithy/chunked-blob-reader-native": 2.0.1 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true + dev: false - /@smithy/fetch-http-handler@2.0.5: + /@smithy/hash-node@2.0.15: resolution: { - integrity: sha512-EzFoMowdBNy1VqtvkiXgPFEdosIAt4/4bgZ8uiDiUyfhmNXq/3bV+CagPFFBsgFOR/X2XK4zFZHRsoa7PNHVVg==, + integrity: sha512-t/qjEJZu/G46A22PAk1k/IiJZT4ncRkG5GOCNWN9HPPy5rCcSZUbh7gwp7CGKgJJ7ATMMg+0Td7i9o1lQTwOfQ==, } + engines: { node: ">=14.0.0" } dependencies: - "@smithy/protocol-http": 2.0.5 - "@smithy/querystring-builder": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/util-base64": 2.0.0 + "@smithy/types": 2.5.0 + "@smithy/util-buffer-from": 2.0.0 + "@smithy/util-utf8": 2.0.2 tslib: 2.6.2 - dev: true - /@smithy/hash-node@2.0.5: + /@smithy/hash-stream-node@2.0.15: resolution: { - integrity: sha512-mk551hIywBITT+kXruRNXk7f8Fy7DTzBjZJSr/V6nolYKmUHIG3w5QU6nO9qPYEQGKc/yEPtkpdS28ndeG93lA==, + integrity: sha512-ZZ6kC/pHt5Dc2goXIIyC8uA7A4GUMSzdCynAabnZ3CSSaV6ctP8mlvVkqjPph0O3XzHlx/80gdLrNqi1GDPUsA==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 - "@smithy/util-buffer-from": 2.0.0 - "@smithy/util-utf8": 2.0.0 + "@smithy/types": 2.5.0 + "@smithy/util-utf8": 2.0.2 tslib: 2.6.2 - dev: true + dev: false - /@smithy/invalid-dependency@2.0.5: + /@smithy/invalid-dependency@2.0.13: resolution: { - integrity: sha512-0wEi+JT0hM+UUwrJVYbqjuGFhy5agY/zXyiN7BNAJ1XoCDjU5uaNSj8ekPWsXd/d4yM6NSe8UbPd8cOc1+3oBQ==, + integrity: sha512-XsGYhVhvEikX1Yz0kyIoLssJf2Rs6E0U2w2YuKdT4jSra5A/g8V2oLROC1s56NldbgnpesTYB2z55KCHHbKyjw==, } dependencies: - "@smithy/types": 2.2.2 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true /@smithy/is-array-buffer@2.0.0: resolution: @@ -1139,161 +2015,164 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true - /@smithy/middleware-content-length@2.0.5: + /@smithy/md5-js@2.0.15: + resolution: + { + integrity: sha512-pAZaokib56XvhU0t/R9vAcr3L3bMhIakhF25X7EMSQ7LAURiLfce/tgON8I3x/dIbnZUyeRi8f2cx2azu6ATew==, + } + dependencies: + "@smithy/types": 2.5.0 + "@smithy/util-utf8": 2.0.2 + tslib: 2.6.2 + dev: false + + /@smithy/middleware-content-length@2.0.15: resolution: { - integrity: sha512-E7VwV5H02fgZIUGRli4GevBCAPvkyEI/fgl9SU47nPPi3DAAX3nEtUb8xfGbXjOcJ5BdSUoWWZn42tEd/blOqA==, + integrity: sha512-xH4kRBw01gJgWiU+/mNTrnyFXeozpZHw39gLb3JKGsFDVmSrJZ8/tRqu27tU/ki1gKkxr2wApu+dEYjI3QwV1Q==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/protocol-http": 2.0.5 - "@smithy/types": 2.2.2 + "@smithy/protocol-http": 3.0.9 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/middleware-endpoint@2.0.5: + /@smithy/middleware-endpoint@2.2.0: resolution: { - integrity: sha512-tyzDuoNTbsMQCq5Xkc4QOt6e2GACUllQIV8SQ5fc59FtOIV9/vbf58/GxVjZm2o8+MMbdDBANjTDZe/ijZKfyA==, + integrity: sha512-tddRmaig5URk2106PVMiNX6mc5BnKIKajHHDxb7K0J5MLdcuQluHMGnjkv18iY9s9O0tF+gAcPd/pDXA5L9DZw==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/middleware-serde": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/url-parser": 2.0.5 - "@smithy/util-middleware": 2.0.0 + "@smithy/middleware-serde": 2.0.13 + "@smithy/node-config-provider": 2.1.5 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 + "@smithy/url-parser": 2.0.13 + "@smithy/util-middleware": 2.0.6 tslib: 2.6.2 - dev: true - /@smithy/middleware-retry@2.0.5: + /@smithy/middleware-retry@2.0.20: resolution: { - integrity: sha512-ulIfbFyzQTVnJbLjUl1CTSi0etg6tej/ekwaLp0Gn8ybUkDkKYa+uB6CF/m2J5B6meRwyJlsryR+DjaOVyiicg==, + integrity: sha512-X2yrF/SHDk2WDd8LflRNS955rlzQ9daz9UWSp15wW8KtzoTXg3bhHM78HbK1cjr48/FWERSJKh9AvRUUGlIawg==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/protocol-http": 2.0.5 - "@smithy/service-error-classification": 2.0.0 - "@smithy/types": 2.2.2 - "@smithy/util-middleware": 2.0.0 - "@smithy/util-retry": 2.0.0 + "@smithy/node-config-provider": 2.1.5 + "@smithy/protocol-http": 3.0.9 + "@smithy/service-error-classification": 2.0.6 + "@smithy/types": 2.5.0 + "@smithy/util-middleware": 2.0.6 + "@smithy/util-retry": 2.0.6 tslib: 2.6.2 uuid: 8.3.2 - dev: true - /@smithy/middleware-serde@2.0.5: + /@smithy/middleware-serde@2.0.13: resolution: { - integrity: sha512-in0AA5sous74dOfTGU9rMJBXJ0bDVNxwdXtEt5lh3FVd2sEyjhI+rqpLLRF1E4ixbw3RSEf80hfRpcPdjg4vvQ==, + integrity: sha512-tBGbeXw+XsE6pPr4UaXOh+UIcXARZeiA8bKJWxk2IjJcD1icVLhBSUQH9myCIZLNNzJIH36SDjUX8Wqk4xJCJg==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/middleware-stack@2.0.0: + /@smithy/middleware-stack@2.0.7: resolution: { - integrity: sha512-31XC1xNF65nlbc16yuh3wwTudmqs6qy4EseQUGF8A/p2m/5wdd/cnXJqpniy/XvXVwkHPz/GwV36HqzHtIKATQ==, + integrity: sha512-L1KLAAWkXbGx1t2jjCI/mDJ2dDNq+rp4/ifr/HcC6FHngxho5O7A5bQLpKHGlkfATH6fUnOEx0VICEVFA4sUzw==, } engines: { node: ">=14.0.0" } dependencies: + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/node-config-provider@2.0.7: + /@smithy/node-config-provider@2.1.5: resolution: { - integrity: sha512-GuLxhnf0aVQsfQp4ZWaM1TRCIndpQjAswyFcmDFRNf4yFqpxpLPDeV540+O0Z21Hmu3deoQm/dCPXbVn90PYzg==, + integrity: sha512-3Omb5/h4tOCuKRx4p4pkYTvEYRCYoKk52bOYbKUyz/G/8gERbagsN8jFm4FjQubkrcIqQEghTpQaUw6uk+0edw==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/property-provider": 2.0.6 - "@smithy/shared-ini-file-loader": 2.0.6 - "@smithy/types": 2.2.2 + "@smithy/property-provider": 2.0.14 + "@smithy/shared-ini-file-loader": 2.2.4 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/node-http-handler@2.0.5: + /@smithy/node-http-handler@2.1.9: resolution: { - integrity: sha512-lZm5DZf4b3V0saUw9WTC4/du887P6cy2fUyQgQQKRRV6OseButyD5yTzeMmXE53CaXJBMBsUvvIQ0hRVxIq56w==, + integrity: sha512-+K0q3SlNcocmo9OZj+fz67gY4lwhOCvIJxVbo/xH+hfWObvaxrMTx7JEzzXcluK0thnnLz++K3Qe7Z/8MDUreA==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/abort-controller": 2.0.5 - "@smithy/protocol-http": 2.0.5 - "@smithy/querystring-builder": 2.0.5 - "@smithy/types": 2.2.2 + "@smithy/abort-controller": 2.0.13 + "@smithy/protocol-http": 3.0.9 + "@smithy/querystring-builder": 2.0.13 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/property-provider@2.0.6: + /@smithy/property-provider@2.0.14: resolution: { - integrity: sha512-CVem6ZkkWxbTnhjDLyLESY0oLA6IUZYtdqrCpGQKUXaFBOuc/izjm7fIFGBxEbjZ1EGcH9hHxrjqX36RWULNRg==, + integrity: sha512-k3D2qp9o6imTrLaXRj6GdLYEJr1sXqS99nLhzq8fYmJjSVOeMg/G+1KVAAc7Oxpu71rlZ2f8SSZxcSxkevuR0A==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/protocol-http@2.0.5: + /@smithy/protocol-http@3.0.9: resolution: { - integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==, + integrity: sha512-U1wl+FhYu4/BC+rjwh1lg2gcJChQhytiNQSggREgQ9G2FzmoK9sACBZvx7thyWMvRyHQTE22mO2d5UM8gMKDBg==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/querystring-builder@2.0.5: + /@smithy/querystring-builder@2.0.13: resolution: { - integrity: sha512-4DCX9krxLzATj+HdFPC3i8pb7XTAWzzKqSw8aTZMjXjtQY+vhe4azMAqIvbb6g7JKwIkmkRAjK6EXO3YWSnJVQ==, + integrity: sha512-JhXKwp3JtsFUe96XLHy/nUPEbaXqn6r7xE4sNaH8bxEyytE5q1fwt0ew/Ke6+vIC7gP87HCHgQpJHg1X1jN2Fw==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 + "@smithy/types": 2.5.0 "@smithy/util-uri-escape": 2.0.0 tslib: 2.6.2 - dev: true - /@smithy/querystring-parser@2.0.5: + /@smithy/querystring-parser@2.0.13: resolution: { - integrity: sha512-C2stCULH0r54KBksv3AWcN8CLS3u9+WsEW8nBrvctrJ5rQTNa1waHkffpVaiKvcW2nP0aIMBPCobD/kYf/q9mA==, + integrity: sha512-TEiT6o8CPZVxJ44Rly/rrsATTQsE+b/nyBVzsYn2sa75xAaZcurNxsFd8z1haoUysONiyex24JMHoJY6iCfLdA==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/service-error-classification@2.0.0: + /@smithy/service-error-classification@2.0.6: resolution: { - integrity: sha512-2z5Nafy1O0cTf69wKyNjGW/sNVMiqDnb4jgwfMG8ye8KnFJ5qmJpDccwIbJNhXIfbsxTg9SEec2oe1cexhMJvw==, + integrity: sha512-fCQ36frtYra2fqY2/DV8+3/z2d0VB/1D1hXbjRcM5wkxTToxq6xHbIY/NGGY6v4carskMyG8FHACxgxturJ9Pg==, } engines: { node: ">=14.0.0" } - dev: true + dependencies: + "@smithy/types": 2.5.0 - /@smithy/shared-ini-file-loader@2.0.6: + /@smithy/shared-ini-file-loader@2.2.4: resolution: { - integrity: sha512-NO6dHqho6APbVR0DxPtYoL4KXBqUeSM3Slsd103MOgL50YbzzsQmMLtDMZ87W8MlvvCN0tuiq+OrAO/rM7hTQg==, + integrity: sha512-9dRknGgvYlRIsoTcmMJXuoR/3ekhGwhRq4un3ns2/byre4Ql5hyUN4iS0x8eITohjU90YOnUCsbRwZRvCkbRfw==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/types": 2.2.2 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true /@smithy/signature-v4@2.0.5: resolution: @@ -1310,20 +2189,18 @@ packages: "@smithy/util-uri-escape": 2.0.0 "@smithy/util-utf8": 2.0.0 tslib: 2.6.2 - dev: true - /@smithy/smithy-client@2.0.5: + /@smithy/smithy-client@2.1.15: resolution: { - integrity: sha512-kCTFr8wfOAWKDzGvfBElc6shHigWtHNhMQ1IbosjC4jOlayFyZMSs2PysKB+Ox/dhQ41KqOzgVjgiQ+PyWqHMQ==, + integrity: sha512-rngZcQu7Jvs9UbHihK1EI67RMPuzkc3CJmu4MBgB7D7yBnMGuFR86tq5rqHfL2gAkNnMelBN/8kzQVvZjNKefQ==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/middleware-stack": 2.0.0 - "@smithy/types": 2.2.2 - "@smithy/util-stream": 2.0.5 + "@smithy/middleware-stack": 2.0.7 + "@smithy/types": 2.5.0 + "@smithy/util-stream": 2.0.20 tslib: 2.6.2 - dev: true /@smithy/types@2.2.2: resolution: @@ -1333,18 +2210,25 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true - /@smithy/url-parser@2.0.5: + /@smithy/types@2.5.0: resolution: { - integrity: sha512-OdMBvZhpckQSkugCXNJQCvqJ71wE7Ftxce92UOQLQ9pwF6hoS5PLL7wEfpnuEXtStzBqJYkzu1C1ZfjuFGOXAA==, + integrity: sha512-/a31lYofrMBkJb3BuPlYJTMKDj0hUmKUP6JFZQu6YVuQVoAjubiY0A52U9S0Uysd33n/djexCUSNJ+G9bf3/aA==, } + engines: { node: ">=14.0.0" } dependencies: - "@smithy/querystring-parser": 2.0.5 - "@smithy/types": 2.2.2 tslib: 2.6.2 - dev: true + + /@smithy/url-parser@2.0.13: + resolution: + { + integrity: sha512-okWx2P/d9jcTsZWTVNnRMpFOE7fMkzloSFyM53fA7nLKJQObxM2T4JlZ5KitKKuXq7pxon9J6SF2kCwtdflIrA==, + } + dependencies: + "@smithy/querystring-parser": 2.0.13 + "@smithy/types": 2.5.0 + tslib: 2.6.2 /@smithy/util-base64@2.0.0: resolution: @@ -1355,7 +2239,17 @@ packages: dependencies: "@smithy/util-buffer-from": 2.0.0 tslib: 2.6.2 - dev: true + dev: false + + /@smithy/util-base64@2.0.1: + resolution: + { + integrity: sha512-DlI6XFYDMsIVN+GH9JtcRp3j02JEVuWIn/QOZisVzpIAprdsxGveFed0bjbMRCqmIFe8uetn5rxzNrBtIGrPIQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/util-buffer-from": 2.0.0 + tslib: 2.6.2 /@smithy/util-body-length-browser@2.0.0: resolution: @@ -1364,7 +2258,6 @@ packages: } dependencies: tslib: 2.6.2 - dev: true /@smithy/util-body-length-node@2.1.0: resolution: @@ -1374,7 +2267,6 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true /@smithy/util-buffer-from@2.0.0: resolution: @@ -1385,7 +2277,6 @@ packages: dependencies: "@smithy/is-array-buffer": 2.0.0 tslib: 2.6.2 - dev: true /@smithy/util-config-provider@2.0.0: resolution: @@ -1395,35 +2286,45 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true - /@smithy/util-defaults-mode-browser@2.0.6: + /@smithy/util-defaults-mode-browser@2.0.19: resolution: { - integrity: sha512-h8xyKTZIIom62DN4xbPUmL+RL1deZcK1qJGmCr4c2yXjOrs5/iZ1VtQQcl+xP78620ga/565AikZE1sktdg2yA==, + integrity: sha512-VHP8xdFR7/orpiABJwgoTB0t8Zhhwpf93gXhNfUBiwAE9O0rvsv7LwpQYjgvbOUDDO8JfIYQB2GYJNkqqGWsXw==, } engines: { node: ">= 10.0.0" } dependencies: - "@smithy/property-provider": 2.0.6 - "@smithy/types": 2.2.2 + "@smithy/property-provider": 2.0.14 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 bowser: 2.11.0 tslib: 2.6.2 - dev: true - /@smithy/util-defaults-mode-node@2.0.7: + /@smithy/util-defaults-mode-node@2.0.25: resolution: { - integrity: sha512-2C1YfmYJj9bpM/cRAgQppYNzPd8gDEXZ5XIVDuEQg3TmmIiinZaFf/HsHYo9NK/PMy5oawJVdIuR7SVriIo1AQ==, + integrity: sha512-jkmep6/JyWmn2ADw9VULDeGbugR4N/FJCKOt+gYyVswmN1BJOfzF2umaYxQ1HhQDvna3kzm1Dbo1qIfBW4iuHA==, } engines: { node: ">= 10.0.0" } dependencies: - "@smithy/config-resolver": 2.0.5 - "@smithy/credential-provider-imds": 2.0.7 - "@smithy/node-config-provider": 2.0.7 - "@smithy/property-provider": 2.0.6 - "@smithy/types": 2.2.2 + "@smithy/config-resolver": 2.0.18 + "@smithy/credential-provider-imds": 2.1.1 + "@smithy/node-config-provider": 2.1.5 + "@smithy/property-provider": 2.0.14 + "@smithy/smithy-client": 2.1.15 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + + /@smithy/util-endpoints@1.0.4: + resolution: + { + integrity: sha512-FPry8j1xye5yzrdnf4xKUXVnkQErxdN7bUIaqC0OFoGsv2NfD9b2UUMuZSSt+pr9a8XWAqj0HoyVNUfPiZ/PvQ==, + } + engines: { node: ">= 14.0.0" } + dependencies: + "@smithy/node-config-provider": 2.1.5 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true /@smithy/util-hex-encoding@2.0.0: resolution: @@ -1433,7 +2334,6 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true /@smithy/util-middleware@2.0.0: resolution: @@ -1443,35 +2343,43 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true - /@smithy/util-retry@2.0.0: + /@smithy/util-middleware@2.0.6: resolution: { - integrity: sha512-/dvJ8afrElasuiiIttRJeoS2sy8YXpksQwiM/TcepqdRVp7u4ejd9C4IQURHNjlfPUT7Y6lCDSa2zQJbdHhVTg==, + integrity: sha512-7W4uuwBvSLgKoLC1x4LfeArCVcbuHdtVaC4g30kKsD1erfICyQ45+tFhhs/dZNeQg+w392fhunCm/+oCcb6BSA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.5.0 + tslib: 2.6.2 + + /@smithy/util-retry@2.0.6: + resolution: + { + integrity: sha512-PSO41FofOBmyhPQJwBQJ6mVlaD7Sp9Uff9aBbnfBJ9eqXOE/obrqQjn0PNdkfdvViiPXl49BINfnGcFtSP4kYw==, } engines: { node: ">= 14.0.0" } dependencies: - "@smithy/service-error-classification": 2.0.0 + "@smithy/service-error-classification": 2.0.6 + "@smithy/types": 2.5.0 tslib: 2.6.2 - dev: true - /@smithy/util-stream@2.0.5: + /@smithy/util-stream@2.0.20: resolution: { - integrity: sha512-ylx27GwI05xLpYQ4hDIfS15vm+wYjNN0Sc2P0FxuzgRe8v0BOLHppGIQ+Bezcynk8C9nUzsUue3TmtRhjut43g==, + integrity: sha512-tT8VASuD8jJu0yjHEMTCPt1o5E3FVzgdsxK6FQLAjXKqVv5V8InCnc0EOsYrijgspbfDqdAJg7r0o2sySfcHVg==, } engines: { node: ">=14.0.0" } dependencies: - "@smithy/fetch-http-handler": 2.0.5 - "@smithy/node-http-handler": 2.0.5 - "@smithy/types": 2.2.2 - "@smithy/util-base64": 2.0.0 + "@smithy/fetch-http-handler": 2.2.6 + "@smithy/node-http-handler": 2.1.9 + "@smithy/types": 2.5.0 + "@smithy/util-base64": 2.0.1 "@smithy/util-buffer-from": 2.0.0 "@smithy/util-hex-encoding": 2.0.0 - "@smithy/util-utf8": 2.0.0 + "@smithy/util-utf8": 2.0.2 tslib: 2.6.2 - dev: true /@smithy/util-uri-escape@2.0.0: resolution: @@ -1481,7 +2389,6 @@ packages: engines: { node: ">=14.0.0" } dependencies: tslib: 2.6.2 - dev: true /@smithy/util-utf8@2.0.0: resolution: @@ -1492,7 +2399,28 @@ packages: dependencies: "@smithy/util-buffer-from": 2.0.0 tslib: 2.6.2 - dev: true + + /@smithy/util-utf8@2.0.2: + resolution: + { + integrity: sha512-qOiVORSPm6Ce4/Yu6hbSgNHABLP2VMv8QOC3tTDNHHlWY19pPyc++fBTbZPtx6egPXi4HQxKDnMxVxpbtX2GoA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/util-buffer-from": 2.0.0 + tslib: 2.6.2 + + /@smithy/util-waiter@2.0.13: + resolution: + { + integrity: sha512-YovIQatiuM7giEsRFotqJa2i3EbU2EE3PgtpXgtLgpx5rXiZMAwPxXYDFVFhuO0lbqvc/Zx4n+ZIisXOHPSqyg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/abort-controller": 2.0.13 + "@smithy/types": 2.5.0 + tslib: 2.6.2 + dev: false /@tsconfig/node10@1.0.9: resolution: @@ -1580,6 +2508,7 @@ packages: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: true /ansi-regex@5.0.1: resolution: @@ -1587,6 +2516,7 @@ packages: integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, } engines: { node: ">=8" } + dev: true /ansi-styles@4.3.0: resolution: @@ -1596,6 +2526,7 @@ packages: engines: { node: ">=8" } dependencies: color-convert: 2.0.1 + dev: true /arg@4.1.3: resolution: @@ -1604,36 +2535,19 @@ packages: } dev: true - /astral-regex@2.0.0: - resolution: - { - integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, - } - engines: { node: ">=8" } - - /aws-cdk-lib@2.93.0(constructs@10.2.70): + /aws-cdk-lib@2.108.1(constructs@10.3.0): resolution: { - integrity: sha512-kKbcKkts272Ju5xjGKI3pXTOpiJxW4OQbDF8Vmw/NIkkuJLo8GlRCFfeOfoN/hilvlYQgENA67GCgSWccbvu7w==, + integrity: sha512-rqBJIB8cVjF2BjO3kEUn1j0JVY0GqrQc7KzMez40ew6I/QzqJwy6j8lPAI+eibn1JBifNeMb8wU2DpwVxz4fhQ==, } engines: { node: ">= 14.15.0" } peerDependencies: constructs: ^10.0.0 dependencies: - "@aws-cdk/asset-awscli-v1": 2.2.200 + "@aws-cdk/asset-awscli-v1": 2.2.201 "@aws-cdk/asset-kubectl-v20": 2.1.2 "@aws-cdk/asset-node-proxy-agent-v6": 2.0.1 - "@balena/dockerignore": 1.0.2 - case: 1.6.3 - constructs: 10.2.70 - fs-extra: 11.1.1 - ignore: 5.2.4 - jsonschema: 1.4.1 - minimatch: 3.1.2 - punycode: 2.3.0 - semver: 7.5.4 - table: 6.8.1 - yaml: 1.10.2 + constructs: 10.3.0 bundledDependencies: - "@balena/dockerignore" - case @@ -1646,10 +2560,10 @@ packages: - table - yaml - /aws-cdk@2.93.0: + /aws-cdk@2.108.1: resolution: { - integrity: sha512-C0o7rzlXbQ3othvQ9uZamRwr741MSX/9eZ74zNJvpkX5Eitx/XoQYwUHeD+cbb4lKHMi7m2SwJfx3yOEkpu9OQ==, + integrity: sha512-VSu1KYLT1VzJdZqKPgVFQGfEBxaWmWCp0USfT4Xqk7drOmMzZK1PmXhSDpWr1mq1jn0m+4rwaifUi1Tt/0eFNQ==, } engines: { node: ">= 14.15.0" } hasBin: true @@ -1662,13 +2576,13 @@ packages: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } + dev: true /bowser@2.11.0: resolution: { integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==, } - dev: true /brace-expansion@1.1.11: resolution: @@ -1678,6 +2592,7 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /brace-expansion@2.0.1: resolution: @@ -1712,6 +2627,7 @@ packages: integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==, } engines: { node: ">= 0.8.0" } + dev: true /chalk@4.1.2: resolution: @@ -1755,10 +2671,10 @@ packages: engines: { node: ">=0.8" } dev: true - /codemaker@1.88.0: + /codemaker@1.91.0: resolution: { - integrity: sha512-/7+1mPQCEFmBm9zhf5blMiqirCcXNwulb8dozu2LVsDLgnafPt1h2eg/OwvyrqSMWUnsIFetAssKVP2gE66MPQ==, + integrity: sha512-yI9ibYUBdJDI8n5Vffd4kfg7mSy6Fes2FHq3/TrZtqhL5CJcXvI8Lltl6iTWM5f1JkeIeAMQOC45PjscBhWyZg==, } engines: { node: ">= 14.17.0" } dependencies: @@ -1775,12 +2691,14 @@ packages: engines: { node: ">=7.0.0" } dependencies: color-name: 1.1.4 + dev: true /color-name@1.1.4: resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } + dev: true /commonmark@0.30.0: resolution: @@ -1800,11 +2718,12 @@ packages: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } + dev: true - /constructs@10.2.70: + /constructs@10.3.0: resolution: { - integrity: sha512-z6zr1E8K/9tzJbCQzY0UGX0/oVKPFKu9C/mzEnghCG6TAJINnvlq0CMKm63XqqeMleadZYm5T3sZGJKcxJS/Pg==, + integrity: sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ==, } engines: { node: ">= 16.14.0" } @@ -1879,7 +2798,7 @@ packages: dependencies: semver: 7.5.4 shelljs: 0.8.5 - typescript: 5.3.0-dev.20230907 + typescript: 5.4.0-dev.20231114 dev: true /emoji-regex@8.0.0: @@ -1887,6 +2806,7 @@ packages: { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, } + dev: true /entities@2.0.3: resolution: @@ -1956,6 +2876,7 @@ packages: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, } + dev: true /fast-glob@3.3.1: resolution: @@ -1979,7 +2900,6 @@ packages: hasBin: true dependencies: strnum: 1.0.5 - dev: true /fastq@1.15.0: resolution: @@ -2019,17 +2939,6 @@ packages: universalify: 2.0.0 dev: true - /fs-extra@11.1.1: - resolution: - { - integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==, - } - engines: { node: ">=14.14" } - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - /fs-extra@8.1.0: resolution: { @@ -2117,6 +3026,7 @@ packages: { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } + dev: true /has-flag@4.0.0: resolution: @@ -2136,13 +3046,6 @@ packages: function-bind: 1.1.1 dev: true - /ignore@5.2.4: - resolution: - { - integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, - } - engines: { node: ">= 4" } - /inflight@1.0.6: resolution: { @@ -2191,6 +3094,7 @@ packages: integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, } engines: { node: ">=8" } + dev: true /is-glob@4.0.3: resolution: @@ -2210,23 +3114,23 @@ packages: engines: { node: ">=0.12.0" } dev: true - /jsii-pacmak@1.88.0: + /jsii-pacmak@1.91.0: resolution: { - integrity: sha512-nanfSaYpe2lgOzvosup4iObQ76tCs47+rERUUGFyrCq7sruQ7VMYgRdAuGWh8PqF9fGNwq6Do1eR+EMC+d4WUg==, + integrity: sha512-k3Mc8v2nS7OTZxbwXczjSl5/RzGXHPq/BzZ+MRQhP5Z0Ai7QDF++aJxx6GZT9JXOD8zpHpv74QOr6eLPRVRIEQ==, } engines: { node: ">= 14.17.0" } hasBin: true dependencies: - "@jsii/check-node": 1.88.0 - "@jsii/spec": 1.88.0 + "@jsii/check-node": 1.91.0 + "@jsii/spec": 1.91.0 clone: 2.1.2 - codemaker: 1.88.0 + codemaker: 1.91.0 commonmark: 0.30.0 escape-string-regexp: 4.0.0 fs-extra: 10.1.0 - jsii-reflect: 1.88.0 - jsii-rosetta: 1.88.0 + jsii-reflect: 1.91.0 + jsii-rosetta: 1.91.0 semver: 7.5.4 spdx-license-list: 6.7.0 xmlbuilder: 15.1.1 @@ -2235,56 +3139,56 @@ packages: - supports-color dev: true - /jsii-reflect@1.88.0: + /jsii-reflect@1.91.0: resolution: { - integrity: sha512-YYZTEQpayvwMDtRMCjgNraTFUqsj4/KEOE8ChvDCkpxv6aH89vpZSsAJM5ymhNLDHj4XZ2OW3XE0sNOz31NbvA==, + integrity: sha512-RRFmvscXiBHUOP9ew71gPQ2IptiHYoRaihKoLg5+SQSeCvynaJrBWhNcBy26LHd28HEN2atdzYems0+HgeQNRg==, } engines: { node: ">= 14.17.0" } hasBin: true dependencies: - "@jsii/check-node": 1.88.0 - "@jsii/spec": 1.88.0 + "@jsii/check-node": 1.91.0 + "@jsii/spec": 1.91.0 chalk: 4.1.2 fs-extra: 10.1.0 - oo-ascii-tree: 1.88.0 + oo-ascii-tree: 1.91.0 yargs: 16.2.0 dev: true - /jsii-rosetta@1.88.0: + /jsii-rosetta@1.91.0: resolution: { - integrity: sha512-6xRRkwWUKFqDTnjgCXkB6v9dxA51KUD4Cd7InLB4qirMBDuMtyYhYVNc1yJbHPYs9gkN5/ao0dFk+1CQxt7T7g==, + integrity: sha512-v8eW/XiJHklnkmTtCIbyAeDPUVfovU/ZNh1ixvGri/ps5H3iRRpLEmqGJGMm2IEIjNCSmnmIsDMQLw20/7Nu+Q==, } engines: { node: ">= 14.17.0" } hasBin: true dependencies: - "@jsii/check-node": 1.88.0 - "@jsii/spec": 1.88.0 + "@jsii/check-node": 1.91.0 + "@jsii/spec": 1.91.0 "@xmldom/xmldom": 0.8.10 commonmark: 0.30.0 fast-glob: 3.3.1 - jsii: 1.88.0 + jsii: 1.91.0 semver: 7.5.4 semver-intersect: 1.4.0 stream-json: 1.8.0 typescript: 3.9.10 - workerpool: 6.4.2 + workerpool: 6.5.1 yargs: 16.2.0 transitivePeerDependencies: - supports-color dev: true - /jsii@1.88.0: + /jsii@1.91.0: resolution: { - integrity: sha512-WKfwHbcEI/j5OYDPexvkH8KKDcTZR7tIBFNTxu8h1Nh3G8xFT4hh3pObUUSMRCa6rsSF9EHGjS+AKC+TfpFGrQ==, + integrity: sha512-dJ2FbnUfX5Eg9BdZx6Cz2JhDsvzGi2DoQeomzdjO9ltvVUouAFPWkpcUtJdLXaNmHQtPM4/I+AzelUX7w2mWVw==, } engines: { node: ">= 14.17.0" } hasBin: true dependencies: - "@jsii/check-node": 1.88.0 - "@jsii/spec": 1.88.0 + "@jsii/check-node": 1.91.0 + "@jsii/spec": 1.91.0 case: 1.6.3 chalk: 4.1.2 fast-deep-equal: 3.1.3 @@ -2300,16 +3204,16 @@ packages: - supports-color dev: true - /jsii@5.2.2: + /jsii@5.2.29: resolution: { - integrity: sha512-0GufgQqaSSt/cLoMeNSP/Xw7xYIGis5KP8nfGRVP04zVJQ/BUXChxwCfG4LaYN2roxixIPAzdO4fj6W8lv7v3g==, + integrity: sha512-2ApVgH/6473cyyVIxDtYGCm2yozJn0yhXYM+KYBxXsTjVXaXtkzSfD2PbPvzJ1phlR3FKAXSphFv8HIheRc/BA==, } engines: { node: ">= 16.14.0" } hasBin: true dependencies: - "@jsii/check-node": 1.88.0 - "@jsii/spec": 1.88.0 + "@jsii/check-node": 1.91.0 + "@jsii/spec": 1.91.0 case: 1.6.3 chalk: 4.1.2 downlevel-dts: 0.11.0 @@ -2318,7 +3222,7 @@ packages: semver: 7.5.4 semver-intersect: 1.4.0 sort-json: 2.0.1 - spdx-license-list: 6.7.0 + spdx-license-list: 6.8.0 typescript: 5.2.2 yargs: 17.7.2 transitivePeerDependencies: @@ -2330,6 +3234,7 @@ packages: { integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, } + dev: true /jsonfile@4.0.0: resolution: @@ -2349,18 +3254,7 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.11 - - /jsonschema@1.4.1: - resolution: - { - integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==, - } - - /lodash.truncate@4.4.2: - resolution: - { - integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, - } + dev: true /log4js@6.9.1: resolution: @@ -2394,6 +3288,7 @@ packages: engines: { node: ">=10" } dependencies: yallist: 4.0.0 + dev: true /make-error@1.3.6: resolution: @@ -2435,6 +3330,7 @@ packages: } dependencies: brace-expansion: 1.1.11 + dev: true /minimatch@9.0.3: resolution: @@ -2477,10 +3373,10 @@ packages: wrappy: 1.0.2 dev: true - /oo-ascii-tree@1.88.0: + /oo-ascii-tree@1.91.0: resolution: { - integrity: sha512-A7m3z7XlUD3DnXSYxWmAdKQTIY6+1JzWS0lhaqgPGhj6g7a/odCsV1ctaRnjJljCB3zQBrbp2QHdYTUsD9AXcQ==, + integrity: sha512-pH4FFNLTO8VG+vNUm4AHmhLNjoSfQlO1UKIrzBGdeScppY785D93GVMH1XkCwbuO7pd9rrh6El5WF3a5QNvaww==, } engines: { node: ">= 14.17.0" } dev: true @@ -2557,16 +3453,16 @@ packages: hasBin: true dev: true - /publib@0.2.737: + /publib@0.2.745: resolution: { - integrity: sha512-wGNz2o5wZgMqes2qIH6AjnKLG6jEA3O/mqJ6fO3TULSREUY2Xm5jwijUbwEHJuYaNeFK8TEab2y8ybW1oNhqTw==, + integrity: sha512-/HzsNkJAC15znzXF0xmY9Vsdz8ET2w5hPsl7B3ZMW3SrAT8P5dz5ucoqhKtnt6/3Odp/R6T0xqT4LdnGA9snUQ==, } hasBin: true dependencies: - "@aws-sdk/client-codeartifact": 3.405.0 - "@aws-sdk/credential-providers": 3.405.0 - "@aws-sdk/types": 3.398.0 + "@aws-sdk/client-codeartifact": 3.451.0 + "@aws-sdk/credential-providers": 3.451.0 + "@aws-sdk/types": 3.449.0 "@types/fs-extra": 8.1.2 fs-extra: 8.1.0 glob: 10.0.0 @@ -2583,6 +3479,7 @@ packages: integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, } engines: { node: ">=6" } + dev: true /queue-microtask@1.2.3: resolution: @@ -2615,6 +3512,7 @@ packages: integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, } engines: { node: ">=0.10.0" } + dev: true /resolve@1.22.4: resolution: @@ -2678,6 +3576,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /shelljs@0.8.5: resolution: @@ -2699,17 +3598,6 @@ packages: } dev: true - /slice-ansi@4.0.0: - resolution: - { - integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - /sort-json@2.0.1: resolution: { @@ -2730,6 +3618,14 @@ packages: engines: { node: ">=8" } dev: true + /spdx-license-list@6.8.0: + resolution: + { + integrity: sha512-5UdM7r9yJ1EvsPQZWfa41AZjLQngl9iMMysm9XBW7Lqhq7aF8cllfqjS+rFCHB8FFMGSM0yFWue2LUV9mR0QzQ==, + } + engines: { node: ">=8" } + dev: true + /stream-chain@2.2.5: resolution: { @@ -2770,6 +3666,7 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + dev: true /string.prototype.repeat@0.2.0: resolution: @@ -2786,13 +3683,13 @@ packages: engines: { node: ">=8" } dependencies: ansi-regex: 5.0.1 + dev: true /strnum@1.0.5: resolution: { integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==, } - dev: true /supports-color@7.2.0: resolution: @@ -2812,19 +3709,6 @@ packages: engines: { node: ">= 0.4" } dev: true - /table@6.8.1: - resolution: - { - integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==, - } - engines: { node: ">=10.0.0" } - dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - /to-regex-range@5.0.1: resolution: { @@ -2874,14 +3758,12 @@ packages: { integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, } - dev: true /tslib@2.6.2: resolution: { integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, } - dev: true /typescript@3.9.10: resolution: @@ -2910,10 +3792,10 @@ packages: hasBin: true dev: true - /typescript@5.3.0-dev.20230907: + /typescript@5.4.0-dev.20231114: resolution: { - integrity: sha512-8yegC0GyY5ug9184BxLq8fLDt08+g8jRfut0QSraLFoT13c39Z6fVoviDEeqJgbnIGVxzAEiNQLUslpKYCyUsg==, + integrity: sha512-z7rH8Vy4KWJyzNUaFt1HMzwYNRUmy2HMN98eufjvqbhmS3WPoQF89/UgonRmYf1vAP/69z0PytuV9hBMHNkaDg==, } engines: { node: ">=14.17" } hasBin: true @@ -2933,6 +3815,7 @@ packages: integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, } engines: { node: ">= 10.0.0" } + dev: true /uri-js@4.4.1: resolution: @@ -2941,6 +3824,7 @@ packages: } dependencies: punycode: 2.3.0 + dev: true /uuid@8.3.2: resolution: @@ -2948,7 +3832,6 @@ packages: integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, } hasBin: true - dev: true /v8-compile-cache-lib@3.0.1: resolution: @@ -2957,10 +3840,10 @@ packages: } dev: true - /workerpool@6.4.2: + /workerpool@6.5.1: resolution: { - integrity: sha512-MrDWwemtC4xNV22kbbZDQQQmxNX+yLm790sgYl2wVD3CWnK7LJY1youI/11wHorAjHjK+GEjUxUh74XoPU71uQ==, + integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==, } dev: true @@ -3004,13 +3887,7 @@ packages: { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, } - - /yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: ">= 6" } + dev: true /yargs-parser@20.2.9: resolution: