From 23e27c698b072f306e470bd6ab808d257551138e Mon Sep 17 00:00:00 2001 From: monadierickx <126071495+monadierickx@users.noreply.github.com> Date: Sun, 25 May 2025 00:06:16 +0200 Subject: [PATCH 01/33] nova reel example code --- .../metadata/bedrock-runtime_metadata.yaml | 8 ++ .../Sources/Converse/main.swift | 2 +- .../amazon_nova_reel/Package.swift | 31 +++++ .../amazon_nova_reel/Sources/main.swift | 112 ++++++++++++++++++ 4 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Package.swift create mode 100644 swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift diff --git a/.doc_gen/metadata/bedrock-runtime_metadata.yaml b/.doc_gen/metadata/bedrock-runtime_metadata.yaml index 6c98247ca0e..ad9c370f3c3 100644 --- a/.doc_gen/metadata/bedrock-runtime_metadata.yaml +++ b/.doc_gen/metadata/bedrock-runtime_metadata.yaml @@ -1488,6 +1488,14 @@ bedrock-runtime_Scenario_AmazonNova_TextToVideo: - description: Use Amazon Nova Reel to generate a video from a text prompt. snippet_tags: - python.example_code.bedrock-runtime.Scenario_AmazonNova_TextToVideo + Swift: + versions: + - sdk_version: 1 + github: swift/example_code/bedrock-runtime + excerpts: + - description: Use Amazon Nova Reel to generate a video from a text prompt. + snippet_tags: + - swift.example_code.bedrock-runtime.Scenario_AmazonNova_TextToVideo services: bedrock-runtime: {GetAsyncInvoke, StartAsyncInvoke} diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift index 2153263bcff..39a252db2da 100644 --- a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift +++ b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // -// snippet-start:[swift.example_code.bedrock-runtime.Converse_AmazonNovaText] +// snippet-start:[swift.example_code.bedrock-runtime.Scenario_AmazonNova_TextToVideo] // An example demonstrating how to use the Conversation API to send // a text message to Amazon Nova. diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Package.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Package.swift new file mode 100644 index 00000000000..2ac9ca5d756 --- /dev/null +++ b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Package.swift @@ -0,0 +1,31 @@ +// swift-tools-version: 6.1 +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "AmazonNovaVideo", + platforms: [ + .macOS(.v13), + .iOS(.v15) + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/awslabs/aws-sdk-swift", from: "1.2.61"), + .package(url: "https://github.com/smithy-lang/smithy-swift", from: "0.118.0") + ], + targets: [ + // Targets are the basic building blocks of a package, defining a module or a test suite. + // Targets can depend on other targets in this package and products from dependencies. + .executableTarget( + name: "TextToVideo", + dependencies: [ + .product(name: "AWSBedrockRuntime", package: "aws-sdk-swift"), + .product(name: "Smithy", package: "smithy-swift") + ] + ) + ] +) diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift new file mode 100644 index 00000000000..55d4d102002 --- /dev/null +++ b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift @@ -0,0 +1,112 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// +// snippet-start:[swift.example_code.bedrock-runtime.Converse_AmazonNovaText] +// This example demonstrates how to use Amazon Nova Reel to generate a video from a text prompt. +// It shows how to: +// - Set up the Amazon Bedrock runtime client +// - Configure a text-to-video request +// - Submit an asynchronous job for video generation +// - Poll for job completion status +// - Access the generated video from S3 + +import AWSBedrockRuntime +import Foundation +import Smithy + +func startTextToVideoGenerationJob( + bedrockRuntimeClient: BedrockRuntimeClient, prompt: String, outputS3Uri: String +) async throws -> String? { + // Specify the model ID for text-to-video generation + let modelId = "amazon.nova-reel-v1:0" + + // Configure the video generation request with additional parameters + let modelInputSource: [String: Any] = [ + "taskType": "TEXT_VIDEO", + "textToVideoParams": [ + "text": "\(prompt)" + ], + "videoGenerationConfig": [ + "durationSeconds": 6, + "fps": 24, + "dimension": "1280x720", + ], + ] + + let modelInput = try Document.make(from: modelInputSource) + + let input = StartAsyncInvokeInput( + modelId: modelId, + modelInput: modelInput, + outputDataConfig: .s3outputdataconfig( + BedrockRuntimeClientTypes.AsyncInvokeS3OutputDataConfig( + s3Uri: outputS3Uri + ) + ) + ) + + // Invoke the model asynchronously + let output = try await bedrockRuntimeClient.startAsyncInvoke(input: input) + return output.invocationArn +} + +func queryJobStatus( + bedrockRuntimeClient: BedrockRuntimeClient, + invocationArn: String? +) async throws -> GetAsyncInvokeOutput { + try await bedrockRuntimeClient.getAsyncInvoke( + input: GetAsyncInvokeInput(invocationArn: invocationArn)) +} + +func main() async throws { + // Create a Bedrock Runtime client + let config = + try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( + region: "us-east-1" + ) + let client = BedrockRuntimeClient(config: config) + + // Specify the S3 location for the output video + let bucket = "s3://REPLACE-WITH-YOUR-S3-BUCKET-NAM" + + print("Submitting video generation job...") + let invocationArn = try await startTextToVideoGenerationJob( + bedrockRuntimeClient: client, + prompt: "A pomegranate juice in a railway station", + outputS3Uri: bucket + ) + print(f"Job started with invocation ARN: {invocation_arn}") + + // Poll for job completion + var status: BedrockRuntimeClientTypes.AsyncInvokeStatus? + var isReady = false + var hasFailed = false + + while !isReady && !hasFailed { + print("\nPolling job status...") + status = try await queryJobStatus( + bedrockRuntimeClient: client, invocationArn: invocationArn + ).status + switch status { + case .completed: + isReady = true + print("Video is ready\nCheck S3 bucket: \(bucket)") + case .failed: + hasFailed = true + print("Something went wrong") + case .inProgress: + print("Job is in progress...") + try await Task.sleep(nanoseconds: 15 * 1_000_000_000) // 15 seconds + default: + isReady = true + } + } +} + +do { + try await main() +} catch { + print("An error occurred: \(error)") +} + +// snippet-end:[swift.example_code.bedrock-runtime.Converse_AmazonNovaText] From 570ec9fc5237b02bcad8a3daff5210f276299171 Mon Sep 17 00:00:00 2001 From: monadierickx <126071495+monadierickx@users.noreply.github.com> Date: Sun, 25 May 2025 10:12:38 +0200 Subject: [PATCH 02/33] mistake fixed --- .../amazon-nova/amazon-nova-text/Sources/Converse/main.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift index 39a252db2da..2153263bcff 100644 --- a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift +++ b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // -// snippet-start:[swift.example_code.bedrock-runtime.Scenario_AmazonNova_TextToVideo] +// snippet-start:[swift.example_code.bedrock-runtime.Converse_AmazonNovaText] // An example demonstrating how to use the Conversation API to send // a text message to Amazon Nova. From 6850f5f3a82a22dde0730d2da68565897afda4eb Mon Sep 17 00:00:00 2001 From: monadierickx <126071495+monadierickx@users.noreply.github.com> Date: Sun, 25 May 2025 10:55:40 +0200 Subject: [PATCH 03/33] Regenerate documentation --- swift/example_code/bedrock-runtime/README.md | 4 ++++ .../models/amazon-nova/amazon_nova_reel/Sources/main.swift | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/swift/example_code/bedrock-runtime/README.md b/swift/example_code/bedrock-runtime/README.md index f6c653aac19..e16a82f6bd4 100644 --- a/swift/example_code/bedrock-runtime/README.md +++ b/swift/example_code/bedrock-runtime/README.md @@ -33,6 +33,10 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `swift - [Converse](models/amazon-nova/amazon-nova-text/Sources/Converse/main.swift#L4) - [ConverseStream](models/amazon-nova/amazon-nova-text/Sources/ConverseStream/main.swift#L4) +### Amazon Nova Reel + +- [Text-to-video](models/amazon-nova/amazon_nova_reel/Sources/main.swift#L4) + ### Anthropic Claude - [Converse](models/anthropic_claude/Sources/Converse/main.swift#L4) diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift index 55d4d102002..07fc026a84b 100644 --- a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift +++ b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // -// snippet-start:[swift.example_code.bedrock-runtime.Converse_AmazonNovaText] +// snippet-start:[swift.example_code.bedrock-runtime.Scenario_AmazonNova_TextToVideo] // This example demonstrates how to use Amazon Nova Reel to generate a video from a text prompt. // It shows how to: // - Set up the Amazon Bedrock runtime client @@ -109,4 +109,4 @@ do { print("An error occurred: \(error)") } -// snippet-end:[swift.example_code.bedrock-runtime.Converse_AmazonNovaText] +// snippet-end:[swift.example_code.bedrock-runtime.Scenario_AmazonNova_TextToVideo] From 91874c734cfd3ca0ca7a6caadcd9638125ef8d7a Mon Sep 17 00:00:00 2001 From: monadierickx <126071495+monadierickx@users.noreply.github.com> Date: Mon, 16 Jun 2025 12:59:57 +0200 Subject: [PATCH 04/33] mistake fixed --- .../models/amazon-nova/amazon_nova_reel/Sources/main.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift index 07fc026a84b..9ea24bbc452 100644 --- a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift +++ b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift @@ -75,7 +75,7 @@ func main() async throws { prompt: "A pomegranate juice in a railway station", outputS3Uri: bucket ) - print(f"Job started with invocation ARN: {invocation_arn}") + print("Job started with invocation ARN: \(String(describing:invocationArn))") // Poll for job completion var status: BedrockRuntimeClientTypes.AsyncInvokeStatus? From 22bde58d155c4348e8488b9c2ab8e494daab0e1c Mon Sep 17 00:00:00 2001 From: Eric Shepherd Date: Mon, 19 May 2025 12:47:49 -0400 Subject: [PATCH 05/33] Fix SoS tags for example for Swift (#7436) Fix SoS tags --- swift/example_code/swift-sdk/http-config/Sources/entry.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/swift/example_code/swift-sdk/http-config/Sources/entry.swift b/swift/example_code/swift-sdk/http-config/Sources/entry.swift index f60991ac53f..41eff1e1e90 100644 --- a/swift/example_code/swift-sdk/http-config/Sources/entry.swift +++ b/swift/example_code/swift-sdk/http-config/Sources/entry.swift @@ -49,7 +49,7 @@ struct ExampleCommand: ParsableCommand { print("*** Getting bucket list with custom timeouts...") - // snippet-start: [swift.http-config.timeouts] + // snippet-start:[swift.http-config.timeouts] do { let config = try await S3Client.S3ClientConfiguration( region: region, @@ -66,7 +66,7 @@ struct ExampleCommand: ParsableCommand { } catch { print("*** Unexpected error occurred requesting the bucket list.") } - // snippet-end: [swift.http-config.timeouts] + // snippet-end:[swift.http-config.timeouts] } } From 10793d0155dea406e52273d9a79a706712e4643c Mon Sep 17 00:00:00 2001 From: Dennis Traub Date: Tue, 20 May 2025 16:19:36 +0200 Subject: [PATCH 06/33] Swift: Bedrock-Runtime Readme - add custom prerequisite (#7453) Add model access prerequisite to Swift readme --- swift/example_code/bedrock-runtime/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/swift/example_code/bedrock-runtime/README.md b/swift/example_code/bedrock-runtime/README.md index e16a82f6bd4..85fd11088e9 100644 --- a/swift/example_code/bedrock-runtime/README.md +++ b/swift/example_code/bedrock-runtime/README.md @@ -27,6 +27,9 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `swift +> ⚠ You must request access to a model before you can use it. If you try to use the model (with the API or console) +> before you have requested access to it, you will receive an error message. For more information, +> see [Model access](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html). ### Amazon Nova From 829f0af0b711f2d57ca2a32b7ee3ad2e5f836019 Mon Sep 17 00:00:00 2001 From: Laren-AWS <57545972+Laren-AWS@users.noreply.github.com> Date: Tue, 20 May 2025 11:47:39 -0700 Subject: [PATCH 07/33] Update to latest tools release 2025.18.3. (#7441) --- .github/workflows/validate-doc-metadata.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate-doc-metadata.yml b/.github/workflows/validate-doc-metadata.yml index 18931e87431..bb8790561fb 100644 --- a/.github/workflows/validate-doc-metadata.yml +++ b/.github/workflows/validate-doc-metadata.yml @@ -16,7 +16,7 @@ jobs: - name: checkout repo content uses: actions/checkout@v4 - name: validate metadata - uses: awsdocs/aws-doc-sdk-examples-tools@2025.18.0 + uses: awsdocs/aws-doc-sdk-examples-tools@2025.18.3 with: doc_gen_only: "False" strict_titles: "True" From 526eb86b6709d8abb4ef53bae42361b836af1b1b Mon Sep 17 00:00:00 2001 From: Dennis Traub Date: Tue, 20 May 2025 23:06:33 +0200 Subject: [PATCH 08/33] Bedrock Runtime: Remove explicit references to Llama 3 (#7444) --- .../metadata/bedrock-runtime_metadata.yaml | 12 +++--- .gitignore | 1 + dotnetv3/Bedrock-runtime/README.md | 4 +- .../example_code/bedrock-runtime/README.md | 9 +---- javav2/example_code/bedrock-runtime/README.md | 39 ++++++++++++++++++- kotlin/services/bedrock-runtime/README.md | 4 -- python/example_code/bedrock-runtime/README.md | 25 +++++++++++- 7 files changed, 71 insertions(+), 23 deletions(-) diff --git a/.doc_gen/metadata/bedrock-runtime_metadata.yaml b/.doc_gen/metadata/bedrock-runtime_metadata.yaml index ad9c370f3c3..8f60a29b330 100644 --- a/.doc_gen/metadata/bedrock-runtime_metadata.yaml +++ b/.doc_gen/metadata/bedrock-runtime_metadata.yaml @@ -1001,9 +1001,9 @@ bedrock-runtime_InvokeModel_CohereCommandR: bedrock-runtime: {InvokeModel} bedrock-runtime_InvokeModel_MetaLlama3: - title: Invoke Meta Llama 3 on &BR; using the Invoke Model API - title_abbrev: "InvokeModel: Llama 3" - synopsis: send a text message to Meta Llama 3, using the Invoke Model API. + title: Invoke Meta Llama on &BR; using the Invoke Model API + title_abbrev: "InvokeModel" + synopsis: send a text message to Meta Llama, using the Invoke Model API. category: Meta Llama languages: Java: @@ -1233,9 +1233,9 @@ bedrock-runtime_InvokeModelWithResponseStream_CohereCommandR: bedrock-runtime: {InvokeModel} bedrock-runtime_InvokeModelWithResponseStream_MetaLlama3: - title: Invoke Meta Llama 3 on &BR; using the Invoke Model API with a response stream - title_abbrev: "InvokeModelWithResponseStream: Llama 3" - synopsis: send a text message to Meta Llama 3, using the Invoke Model API, and print the response stream. + title: Invoke Meta Llama on &BR; using the Invoke Model API with a response stream + title_abbrev: "InvokeModelWithResponseStream" + synopsis: send a text message to Meta Llama, using the Invoke Model API, and print the response stream. category: Meta Llama languages: Java: diff --git a/.gitignore b/.gitignore index 5f57c026395..0b25f6593e2 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ kotlin/services/**/gradle/ kotlin/services/**/gradlew kotlin/services/**/gradlew.bat kotlin/services/**/.kotlin/ +/.local/ diff --git a/dotnetv3/Bedrock-runtime/README.md b/dotnetv3/Bedrock-runtime/README.md index 174ab4345b8..f7f69a21350 100644 --- a/dotnetv3/Bedrock-runtime/README.md +++ b/dotnetv3/Bedrock-runtime/README.md @@ -77,8 +77,8 @@ functions within the same service. - [Converse](Models/MetaLlama/Converse/Converse.cs#L4) - [ConverseStream](Models/MetaLlama/ConverseStream/ConverseStream.cs#L4) -- [InvokeModel: Llama 3](Models/MetaLlama/Llama3_InvokeModel/InvokeModel.cs#L4) -- [InvokeModelWithResponseStream: Llama 3](Models/MetaLlama/Llama3_InvokeModelWithResponseStream/InvokeModelWithResponseStream.cs#L4) +- [InvokeModel](Models/MetaLlama/Llama3_InvokeModel/InvokeModel.cs#L4) +- [InvokeModelWithResponseStream](Models/MetaLlama/Llama3_InvokeModelWithResponseStream/InvokeModelWithResponseStream.cs#L4) ### Mistral AI diff --git a/javascriptv3/example_code/bedrock-runtime/README.md b/javascriptv3/example_code/bedrock-runtime/README.md index f05f968c924..12cb74ff458 100644 --- a/javascriptv3/example_code/bedrock-runtime/README.md +++ b/javascriptv3/example_code/bedrock-runtime/README.md @@ -46,11 +46,6 @@ functions within the same service. - [Invoke multiple foundation models on Amazon Bedrock](scenarios/cli_text_playground.js) - [Tool use with the Converse API](scenarios/converse_tool_scenario/converse-tool-scenario.js) -### AI21 Labs Jurassic-2 - -- [Converse](models/ai21LabsJurassic2/converse.js#L4) -- [InvokeModel](models/ai21LabsJurassic2/invoke_model.js) - ### Amazon Nova - [Converse](models/amazonNovaText/converse.js#L4) @@ -83,8 +78,8 @@ functions within the same service. - [Converse](models/metaLlama/converse.js#L4) - [ConverseStream](models/metaLlama/converseStream.js#L4) -- [InvokeModel: Llama 3](models/metaLlama/llama3/invoke_model_quickstart.js#L4) -- [InvokeModelWithResponseStream: Llama 3](models/metaLlama/llama3/invoke_model_with_response_stream_quickstart.js#L4) +- [InvokeModel](models/metaLlama/llama3/invoke_model_quickstart.js#L4) +- [InvokeModelWithResponseStream](models/metaLlama/llama3/invoke_model_with_response_stream_quickstart.js#L4) ### Mistral AI diff --git a/javav2/example_code/bedrock-runtime/README.md b/javav2/example_code/bedrock-runtime/README.md index 3eda403f21e..fa5fb38db37 100644 --- a/javav2/example_code/bedrock-runtime/README.md +++ b/javav2/example_code/bedrock-runtime/README.md @@ -34,6 +34,15 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `javav > see [Model access](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html). > + +### Scenarios + +Code examples that show you how to accomplish a specific task by calling multiple +functions within the same service. + +- [Generate videos from text prompts using Amazon Bedrock](../../usecases/video_generation_bedrock_nova_reel/src/main/java/com/example/novareel/VideoGenerationService.java) +- [Tool use with the Converse API](src/main/java/com/example/bedrockruntime/scenario/BedrockScenario.java) + ### AI21 Labs Jurassic-2 - [Converse](src/main/java/com/example/bedrockruntime/models/ai21LabsJurassic2/Converse.java#L6) @@ -43,6 +52,7 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `javav - [Converse](src/main/java/com/example/bedrockruntime/models/amazon/nova/text/ConverseAsync.java#L6) - [ConverseStream](src/main/java/com/example/bedrockruntime/models/amazon/nova/text/ConverseStream.java#L6) +- [Scenario: Tool use with the Converse API](src/main/java/com/example/bedrockruntime/scenario/BedrockScenario.java#L15) ### Amazon Nova Canvas @@ -85,8 +95,8 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `javav - [Converse](src/main/java/com/example/bedrockruntime/models/metaLlama/Converse.java#L6) - [ConverseStream](src/main/java/com/example/bedrockruntime/models/metaLlama/ConverseStream.java#L6) -- [InvokeModel: Llama 3](src/main/java/com/example/bedrockruntime/models/metaLlama/Llama3_InvokeModel.java#L6) -- [InvokeModelWithResponseStream: Llama 3](src/main/java/com/example/bedrockruntime/models/metaLlama/Llama3_InvokeModelWithResponseStream.java#L6) +- [InvokeModel](src/main/java/com/example/bedrockruntime/models/metaLlama/Llama3_InvokeModel.java#L6) +- [InvokeModelWithResponseStream](src/main/java/com/example/bedrockruntime/models/metaLlama/Llama3_InvokeModelWithResponseStream.java#L6) ### Mistral AI @@ -111,7 +121,32 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `javav +#### Generate videos from text prompts using Amazon Bedrock + +This example shows you how to a Spring Boot app that generates videos from text prompts using Amazon Bedrock and the +Nova-Reel model. + + + + + + + + + +#### Tool use with the Converse API + +This example shows you how to build a typical interaction between an application, a generative AI model, and connected +tools or APIs to mediate interactions between the AI and the outside world. It uses the example of connecting an +external weather API to the AI model so it can provide real-time weather information based on user input. + + + + + + + ### Tests diff --git a/kotlin/services/bedrock-runtime/README.md b/kotlin/services/bedrock-runtime/README.md index cff05f35426..420906a1ddd 100644 --- a/kotlin/services/bedrock-runtime/README.md +++ b/kotlin/services/bedrock-runtime/README.md @@ -35,10 +35,6 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `kotli - [Converse](src/main/kotlin/com/example/bedrockruntime/models/amazon/nova/text/Converse.kt#L6) - [ConverseStream](src/main/kotlin/com/example/bedrockruntime/models/amazon/nova/text/ConverseStream.kt#L6) -### Amazon Nova Canvas - -- [InvokeModel](src/main/kotlin/com/example/bedrockruntime/models/amazon/nova/canvas/InvokeModel.kt#L6) - ### Amazon Titan Text - [InvokeModel](src/main/kotlin/com/example/bedrockruntime/models/amazon/titan/text/InvokeModel.kt#L6) diff --git a/python/example_code/bedrock-runtime/README.md b/python/example_code/bedrock-runtime/README.md index f99fc539588..1addfc901dd 100644 --- a/python/example_code/bedrock-runtime/README.md +++ b/python/example_code/bedrock-runtime/README.md @@ -48,6 +48,7 @@ python -m pip install -r requirements.txt Code examples that show you how to accomplish a specific task by calling multiple functions within the same service. +- [Create and invoke a managed prompt](../bedrock-agent/prompts/scenario_get_started_with_prompts.py) - [Tool use with the Converse API](cross-model-scenarios/tool_use_demo/tool_use_demo.py) ### AI21 Labs Jurassic-2 @@ -105,8 +106,8 @@ functions within the same service. - [Converse](models/meta_llama/converse.py#L4) - [ConverseStream](models/meta_llama/converse_stream.py#L4) -- [InvokeModel: Llama 3](models/meta_llama/llama3_invoke_model.py#L4) -- [InvokeModelWithResponseStream: Llama 3](models/meta_llama/llama3_invoke_model_with_response_stream.py#L4) +- [InvokeModel](models/meta_llama/llama3_invoke_model.py#L4) +- [InvokeModelWithResponseStream](models/meta_llama/llama3_invoke_model_with_response_stream.py#L4) ### Mistral AI @@ -153,6 +154,26 @@ This example shows you how to get started using Amazon Bedrock Runtime. python hello/hello_bedrock_runtime_invoke.py ``` +#### Create and invoke a managed prompt + +This example shows you how to do the following: + +- Create a managed prompt. +- Create a version of the prompt. +- Invoke the prompt using the version. +- Clean up resources (optional). + + + + +Start the example by running the following at a command prompt: + +``` +python ../bedrock-agent/prompts/scenario_get_started_with_prompts.py +``` + + + #### Tool use with the Converse API From 28a58ad5c1851836933f064ec8b6ac7574adcddf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 May 2025 13:28:46 +0000 Subject: [PATCH 09/33] Bump aws-cdk-lib from 2.189.0 to 2.189.1 in /resources/cdk/cognito_scenario_user_pool_with_mfa (#7454) Bump aws-cdk-lib in /resources/cdk/cognito_scenario_user_pool_with_mfa Bumps [aws-cdk-lib](https://github.com/aws/aws-cdk/tree/HEAD/packages/aws-cdk-lib) from 2.189.0 to 2.189.1. - [Release notes](https://github.com/aws/aws-cdk/releases) - [Changelog](https://github.com/aws/aws-cdk/blob/main/CHANGELOG.v2.alpha.md) - [Commits](https://github.com/aws/aws-cdk/commits/v2.189.1/packages/aws-cdk-lib) --- updated-dependencies: - dependency-name: aws-cdk-lib dependency-version: 2.189.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../package-lock.json | 16 ++++++++-------- .../package.json | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/resources/cdk/cognito_scenario_user_pool_with_mfa/package-lock.json b/resources/cdk/cognito_scenario_user_pool_with_mfa/package-lock.json index 74cb634af25..110373eb6a1 100644 --- a/resources/cdk/cognito_scenario_user_pool_with_mfa/package-lock.json +++ b/resources/cdk/cognito_scenario_user_pool_with_mfa/package-lock.json @@ -17,7 +17,7 @@ "devDependencies": { "@types/jest": "^28.1.3", "@types/node": "^18.0.0", - "aws-cdk-lib": "^2.189.0", + "aws-cdk-lib": "^2.189.1", "constructs": "^10.1.42", "jest": "^28.1.1", "ts-jest": "^28.0.5", @@ -25,7 +25,7 @@ "typescript": "^4.7.4" }, "peerDependencies": { - "aws-cdk-lib": "^2.189.0", + "aws-cdk-lib": "^2.189.1", "constructs": "^10.1.42" } }, @@ -1345,9 +1345,9 @@ } }, "node_modules/aws-cdk-lib": { - "version": "2.189.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.0.tgz", - "integrity": "sha512-B5Uha7uRntOAyuKfU0eFtxij3ZVTzGAbetw5qaXlURa68wsWpKlU72/OyKugB6JYkhjCZkSTVVBxd1pVTosxEw==", + "version": "2.189.1", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.1.tgz", + "integrity": "sha512-9JU0yUr2iRTJ1oCPrHyx7hOtBDWyUfyOcdb6arlumJnMcQr2cyAMASY8HuAXHc8Y10ipVp8dRTW+J4/132IIYA==", "bundleDependencies": [ "@balena/dockerignore", "case", @@ -5243,9 +5243,9 @@ } }, "aws-cdk-lib": { - "version": "2.189.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.0.tgz", - "integrity": "sha512-B5Uha7uRntOAyuKfU0eFtxij3ZVTzGAbetw5qaXlURa68wsWpKlU72/OyKugB6JYkhjCZkSTVVBxd1pVTosxEw==", + "version": "2.189.1", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.189.1.tgz", + "integrity": "sha512-9JU0yUr2iRTJ1oCPrHyx7hOtBDWyUfyOcdb6arlumJnMcQr2cyAMASY8HuAXHc8Y10ipVp8dRTW+J4/132IIYA==", "dev": true, "requires": { "@aws-cdk/asset-awscli-v1": "^2.2.229", diff --git a/resources/cdk/cognito_scenario_user_pool_with_mfa/package.json b/resources/cdk/cognito_scenario_user_pool_with_mfa/package.json index 79c5c19d5d2..878f76332ae 100644 --- a/resources/cdk/cognito_scenario_user_pool_with_mfa/package.json +++ b/resources/cdk/cognito_scenario_user_pool_with_mfa/package.json @@ -11,11 +11,11 @@ "cdk": "cdk" }, "peerDependencies": { - "aws-cdk-lib": "^2.189.0", + "aws-cdk-lib": "^2.189.1", "constructs": "^10.1.42" }, "devDependencies": { - "aws-cdk-lib": "^2.189.0", + "aws-cdk-lib": "^2.189.1", "constructs": "^10.1.42", "@types/jest": "^28.1.3", "@types/node": "^18.0.0", @@ -25,7 +25,7 @@ "typescript": "^4.7.4" }, "dependencies": { - "aws-cdk-lib": "^2.189.0", + "aws-cdk-lib": "^2.189.1", "constructs": "^10.1.42", "source-map-support": "^0.5.21" } From e76ed2905efa622e072f938372364a89ab848ab5 Mon Sep 17 00:00:00 2001 From: Dennis Traub Date: Wed, 21 May 2025 18:37:01 +0200 Subject: [PATCH 10/33] Python: Bedrock Runtime document understanding examples (#7446) --- .../metadata/bedrock-runtime_metadata.yaml | 103 ++++++++++++++++++ python/example_code/bedrock-runtime/README.md | 9 ++ .../amazon-nova-service-cards.pdf | Bin 0 -> 333189 bytes .../document_understanding.py | 54 +++++++++ .../document_understanding.py | 54 +++++++++ .../cohere_command/document_understanding.py | 54 +++++++++ .../models/deepseek/document_understanding.py | 62 +++++++++++ .../meta_llama/document_understanding.py | 54 +++++++++ .../mistral_ai/document_understanding.py | 54 +++++++++ .../bedrock-runtime/requirements.txt | 6 +- .../test/test_document_understanding.py | 28 +++++ 11 files changed, 475 insertions(+), 3 deletions(-) create mode 100644 python/example_code/bedrock-runtime/example-data/amazon-nova-service-cards.pdf create mode 100644 python/example_code/bedrock-runtime/models/amazon_nova/amazon_nova_text/document_understanding.py create mode 100644 python/example_code/bedrock-runtime/models/anthropic_claude/document_understanding.py create mode 100644 python/example_code/bedrock-runtime/models/cohere_command/document_understanding.py create mode 100644 python/example_code/bedrock-runtime/models/deepseek/document_understanding.py create mode 100644 python/example_code/bedrock-runtime/models/meta_llama/document_understanding.py create mode 100644 python/example_code/bedrock-runtime/models/mistral_ai/document_understanding.py create mode 100644 python/example_code/bedrock-runtime/test/test_document_understanding.py diff --git a/.doc_gen/metadata/bedrock-runtime_metadata.yaml b/.doc_gen/metadata/bedrock-runtime_metadata.yaml index 8f60a29b330..62fc8fd344f 100644 --- a/.doc_gen/metadata/bedrock-runtime_metadata.yaml +++ b/.doc_gen/metadata/bedrock-runtime_metadata.yaml @@ -1530,6 +1530,109 @@ bedrock-runtime_InvokeModelWithResponseStream_TitanTextEmbeddings: services: bedrock-runtime: {InvokeModel} +# Document understanding +bedrock-runtime_DocumentUnderstanding_AmazonNova: + title: Send and process a document with Amazon Nova on &BR; + title_abbrev: "Document understanding" + synopsis: send and process a document with Amazon Nova on &BR;. + category: Amazon Nova + languages: + Python: + versions: + - sdk_version: 3 + github: python/example_code/bedrock-runtime + excerpts: + - description: Send and process a document with Amazon Nova on &BR;. + snippet_tags: + - python.example_code.bedrock-runtime.DocumentUnderstanding_AmazonNovaText + services: + bedrock-runtime: {Converse} + +bedrock-runtime_DocumentUnderstanding_AnthropicClaude: + title: Send and process a document with Anthropic Claude on &BR; + title_abbrev: "Document understanding" + synopsis: send and process a document with Anthropic Claude on &BR;. + category: Anthropic Claude + languages: + Python: + versions: + - sdk_version: 3 + github: python/example_code/bedrock-runtime + excerpts: + - description: Send and process a document with Anthropic Claude on &BR;. + snippet_tags: + - python.example_code.bedrock-runtime.DocumentUnderstanding_AnthropicClaude + services: + bedrock-runtime: {Converse} + +bedrock-runtime_DocumentUnderstanding_CohereCommand: + title: Send and process a document with Cohere Command models on &BR; + title_abbrev: "Document understanding" + synopsis: send and process a document with Cohere Command models on &BR;. + category: Cohere Command + languages: + Python: + versions: + - sdk_version: 3 + github: python/example_code/bedrock-runtime + excerpts: + - description: Send and process a document with Cohere Command models on &BR;. + snippet_tags: + - python.example_code.bedrock-runtime.DocumentUnderstanding_CohereCommand + services: + bedrock-runtime: {Converse} + +bedrock-runtime_DocumentUnderstanding_DeepSeek: + title: Send and process a document with DeepSeek on &BR; + title_abbrev: "Document understanding" + synopsis: send and process a document with DeepSeek on &BR;. + category: DeepSeek + languages: + Python: + versions: + - sdk_version: 3 + github: python/example_code/bedrock-runtime + excerpts: + - description: Send and process a document with DeepSeek on &BR;. + snippet_tags: + - python.example_code.bedrock-runtime.DocumentUnderstanding_DeepSeek + services: + bedrock-runtime: {Converse} + +bedrock-runtime_DocumentUnderstanding_MetaLlama: + title: Send and process a document with Llama on &BR; + title_abbrev: "Document understanding" + synopsis: send and process a document with Llama on &BR;. + category: Meta Llama + languages: + Python: + versions: + - sdk_version: 3 + github: python/example_code/bedrock-runtime + excerpts: + - description: Send and process a document with Llama on &BR;. + snippet_tags: + - python.example_code.bedrock-runtime.DocumentUnderstanding_MetaLlama + services: + bedrock-runtime: {Converse} + +bedrock-runtime_DocumentUnderstanding_Mistral: + title: Send and process a document with Mistral models on &BR; + title_abbrev: "Document understanding" + synopsis: send and process a document with Mistral models on &BR;. + category: Mistral AI + languages: + Python: + versions: + - sdk_version: 3 + github: python/example_code/bedrock-runtime + excerpts: + - description: Send and process a document with Mistral models on &BR;. + snippet_tags: + - python.example_code.bedrock-runtime.DocumentUnderstanding_Mistral + services: + bedrock-runtime: {Converse} + # Tool use scenarios bedrock-runtime_Scenario_ToolUseDemo_AmazonNova: title: "A tool use demo illustrating how to connect AI models on &BR; with a custom tool or API" diff --git a/python/example_code/bedrock-runtime/README.md b/python/example_code/bedrock-runtime/README.md index 1addfc901dd..784ae837f07 100644 --- a/python/example_code/bedrock-runtime/README.md +++ b/python/example_code/bedrock-runtime/README.md @@ -60,6 +60,7 @@ functions within the same service. - [Converse](models/amazon_nova/amazon_nova_text/converse.py#L4) - [ConverseStream](models/amazon_nova/amazon_nova_text/converse_stream.py#L4) +- [Document understanding](models/amazon_nova/amazon_nova_text/document_understanding.py#L4) ### Amazon Nova Canvas @@ -88,6 +89,7 @@ functions within the same service. - [Converse](models/anthropic_claude/converse.py#L4) - [ConverseStream](models/anthropic_claude/converse_stream.py#L4) +- [Document understanding](models/anthropic_claude/document_understanding.py#L4) - [InvokeModel](models/anthropic_claude/invoke_model.py#L4) - [InvokeModelWithResponseStream](models/anthropic_claude/invoke_model_with_response_stream.py#L4) - [Scenario: Tool use with the Converse API](cross-model-scenarios/tool_use_demo/tool_use_demo.py) @@ -96,16 +98,22 @@ functions within the same service. - [Converse](models/cohere_command/converse.py#L4) - [ConverseStream](models/cohere_command/converse_stream.py#L4) +- [Document understanding](models/cohere_command/document_understanding.py#L4) - [InvokeModel: Command R and R+](models/cohere_command/command_r_invoke_model.py#L4) - [InvokeModel: Command and Command Light](models/cohere_command/command_invoke_model.py#L4) - [InvokeModelWithResponseStream: Command R and R+](models/cohere_command/command_r_invoke_model_with_response_stream.py#L4) - [InvokeModelWithResponseStream: Command and Command Light](models/cohere_command/command_invoke_model_with_response_stream.py#L4) - [Scenario: Tool use with the Converse API](cross-model-scenarios/tool_use_demo/tool_use_demo.py) +### DeepSeek + +- [Document understanding](models/deepseek/document_understanding.py#L4) + ### Meta Llama - [Converse](models/meta_llama/converse.py#L4) - [ConverseStream](models/meta_llama/converse_stream.py#L4) +- [Document understanding](models/meta_llama/document_understanding.py#L4) - [InvokeModel](models/meta_llama/llama3_invoke_model.py#L4) - [InvokeModelWithResponseStream](models/meta_llama/llama3_invoke_model_with_response_stream.py#L4) @@ -113,6 +121,7 @@ functions within the same service. - [Converse](models/mistral_ai/converse.py#L4) - [ConverseStream](models/mistral_ai/converse_stream.py#L4) +- [Document understanding](models/mistral_ai/document_understanding.py#L4) - [InvokeModel](models/mistral_ai/invoke_model.py#L4) - [InvokeModelWithResponseStream](models/mistral_ai/invoke_model_with_response_stream.py#L4) diff --git a/python/example_code/bedrock-runtime/example-data/amazon-nova-service-cards.pdf b/python/example_code/bedrock-runtime/example-data/amazon-nova-service-cards.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f0bddc4cb56142679729e431284587cc47be9dcb GIT binary patch literal 333189 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 z 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�Q^gcT=!*o-gsu|yw+SUne1(?Nujx3s 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 O8Q8v4r$g)ew*P;~dM}Fr literal 0 HcmV?d00001 diff --git a/python/example_code/bedrock-runtime/models/amazon_nova/amazon_nova_text/document_understanding.py b/python/example_code/bedrock-runtime/models/amazon_nova/amazon_nova_text/document_understanding.py new file mode 100644 index 00000000000..202cb666243 --- /dev/null +++ b/python/example_code/bedrock-runtime/models/amazon_nova/amazon_nova_text/document_understanding.py @@ -0,0 +1,54 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# snippet-start:[python.example_code.bedrock-runtime.DocumentUnderstanding_AmazonNovaText] +# Send and process a document with Amazon Nova on Amazon Bedrock. + +import boto3 +from botocore.exceptions import ClientError + +# Create a Bedrock Runtime client in the AWS Region you want to use. +client = boto3.client("bedrock-runtime", region_name="us-east-1") + +# Set the model ID, e.g. Amazon Nova Lite. +model_id = "amazon.nova-lite-v1:0" + +# Load the document +with open("example-data/amazon-nova-service-cards.pdf", "rb") as file: + document_bytes = file.read() + +# Start a conversation with a user message and the document +conversation = [ + { + "role": "user", + "content": [ + {"text": "Briefly compare the models described in this document"}, + { + "document": { + # Available formats: html, md, pdf, doc/docx, xls/xlsx, csv, and txt + "format": "pdf", + "name": "Amazon Nova Service Cards", + "source": {"bytes": document_bytes}, + } + }, + ], + } +] + +try: + # Send the message to the model, using a basic inference configuration. + response = client.converse( + modelId=model_id, + messages=conversation, + inferenceConfig={"maxTokens": 500, "temperature": 0.3}, + ) + + # Extract and print the response text. + response_text = response["output"]["message"]["content"][0]["text"] + print(response_text) + +except (ClientError, Exception) as e: + print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") + exit(1) + +# snippet-end:[python.example_code.bedrock-runtime.DocumentUnderstanding_AmazonNovaText] diff --git a/python/example_code/bedrock-runtime/models/anthropic_claude/document_understanding.py b/python/example_code/bedrock-runtime/models/anthropic_claude/document_understanding.py new file mode 100644 index 00000000000..436034b2c65 --- /dev/null +++ b/python/example_code/bedrock-runtime/models/anthropic_claude/document_understanding.py @@ -0,0 +1,54 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# snippet-start:[python.example_code.bedrock-runtime.DocumentUnderstanding_AnthropicClaude] +# Send and process a document with Anthropic Claude on Amazon Bedrock. + +import boto3 +from botocore.exceptions import ClientError + +# Create a Bedrock Runtime client in the AWS Region you want to use. +client = boto3.client("bedrock-runtime", region_name="us-east-1") + +# Set the model ID, e.g. Claude 3 Haiku. +model_id = "anthropic.claude-3-haiku-20240307-v1:0" + +# Load the document +with open("example-data/amazon-nova-service-cards.pdf", "rb") as file: + document_bytes = file.read() + +# Start a conversation with a user message and the document +conversation = [ + { + "role": "user", + "content": [ + {"text": "Briefly compare the models described in this document"}, + { + "document": { + # Available formats: html, md, pdf, doc/docx, xls/xlsx, csv, and txt + "format": "pdf", + "name": "Amazon Nova Service Cards", + "source": {"bytes": document_bytes}, + } + }, + ], + } +] + +try: + # Send the message to the model, using a basic inference configuration. + response = client.converse( + modelId=model_id, + messages=conversation, + inferenceConfig={"maxTokens": 500, "temperature": 0.3}, + ) + + # Extract and print the response text. + response_text = response["output"]["message"]["content"][0]["text"] + print(response_text) + +except (ClientError, Exception) as e: + print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") + exit(1) + +# snippet-end:[python.example_code.bedrock-runtime.DocumentUnderstanding_AnthropicClaude] diff --git a/python/example_code/bedrock-runtime/models/cohere_command/document_understanding.py b/python/example_code/bedrock-runtime/models/cohere_command/document_understanding.py new file mode 100644 index 00000000000..61df1170874 --- /dev/null +++ b/python/example_code/bedrock-runtime/models/cohere_command/document_understanding.py @@ -0,0 +1,54 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# snippet-start:[python.example_code.bedrock-runtime.DocumentUnderstanding_CohereCommand] +# Send and process a document with Cohere Command models on Amazon Bedrock. + +import boto3 +from botocore.exceptions import ClientError + +# Create a Bedrock Runtime client in the AWS Region you want to use. +client = boto3.client("bedrock-runtime", region_name="us-east-1") + +# Set the model ID, e.g. Command R+. +model_id = "cohere.command-r-plus-v1:0" + +# Load the document +with open("example-data/amazon-nova-service-cards.pdf", "rb") as file: + document_bytes = file.read() + +# Start a conversation with a user message and the document +conversation = [ + { + "role": "user", + "content": [ + {"text": "Briefly compare the models described in this document"}, + { + "document": { + # Available formats: html, md, pdf, doc/docx, xls/xlsx, csv, and txt + "format": "pdf", + "name": "Amazon Nova Service Cards", + "source": {"bytes": document_bytes}, + } + }, + ], + } +] + +try: + # Send the message to the model, using a basic inference configuration. + response = client.converse( + modelId=model_id, + messages=conversation, + inferenceConfig={"maxTokens": 500, "temperature": 0.3}, + ) + + # Extract and print the response text. + response_text = response["output"]["message"]["content"][0]["text"] + print(response_text) + +except (ClientError, Exception) as e: + print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") + exit(1) + +# snippet-end:[python.example_code.bedrock-runtime.DocumentUnderstanding_CohereCommand] diff --git a/python/example_code/bedrock-runtime/models/deepseek/document_understanding.py b/python/example_code/bedrock-runtime/models/deepseek/document_understanding.py new file mode 100644 index 00000000000..1f56cd0355e --- /dev/null +++ b/python/example_code/bedrock-runtime/models/deepseek/document_understanding.py @@ -0,0 +1,62 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# snippet-start:[python.example_code.bedrock-runtime.DocumentUnderstanding_DeepSeek] +# Send and process a document with DeepSeek on Amazon Bedrock. + +import boto3 +from botocore.exceptions import ClientError + +# Create a Bedrock Runtime client in the AWS Region you want to use. +client = boto3.client("bedrock-runtime", region_name="us-east-1") + +# Set the model ID, e.g. DeepSeek-R1 +model_id = "us.deepseek.r1-v1:0" + +# Load the document +with open("example-data/amazon-nova-service-cards.pdf", "rb") as file: + document_bytes = file.read() + +# Start a conversation with a user message and the document +conversation = [ + { + "role": "user", + "content": [ + {"text": "Briefly compare the models described in this document"}, + { + "document": { + # Available formats: html, md, pdf, doc/docx, xls/xlsx, csv, and txt + "format": "pdf", + "name": "Amazon Nova Service Cards", + "source": {"bytes": document_bytes}, + } + }, + ], + } +] + +try: + # Send the message to the model, using a basic inference configuration. + response = client.converse( + modelId=model_id, + messages=conversation, + inferenceConfig={"maxTokens": 2000, "temperature": 0.3}, + ) + + # Extract and print the reasoning and response text. + reasoning, response_text = "", "" + for item in response["output"]["message"]["content"]: + for key, value in item.items(): + if key == "reasoningContent": + reasoning = value["reasoningText"]["text"] + elif key == "text": + response_text = value + + print(f"\nReasoning:\n{reasoning}") + print(f"\nResponse:\n{response_text}") + +except (ClientError, Exception) as e: + print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") + exit(1) + +# snippet-end:[python.example_code.bedrock-runtime.DocumentUnderstanding_DeepSeek] diff --git a/python/example_code/bedrock-runtime/models/meta_llama/document_understanding.py b/python/example_code/bedrock-runtime/models/meta_llama/document_understanding.py new file mode 100644 index 00000000000..2da4af01cf0 --- /dev/null +++ b/python/example_code/bedrock-runtime/models/meta_llama/document_understanding.py @@ -0,0 +1,54 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# snippet-start:[python.example_code.bedrock-runtime.DocumentUnderstanding_MetaLlama] +# Send and process a document with Llama on Amazon Bedrock. + +import boto3 +from botocore.exceptions import ClientError + +# Create a Bedrock Runtime client in the AWS Region you want to use. +client = boto3.client("bedrock-runtime", region_name="us-east-1") + +# Set the model ID, e.g. Llama 3.1 8B Instruct. +model_id = "us.meta.llama3-1-8b-instruct-v1:0" + +# Load the document +with open("example-data/amazon-nova-service-cards.pdf", "rb") as file: + document_bytes = file.read() + +# Start a conversation with a user message and the document +conversation = [ + { + "role": "user", + "content": [ + {"text": "Briefly compare the models described in this document"}, + { + "document": { + # Available formats: html, md, pdf, doc/docx, xls/xlsx, csv, and txt + "format": "pdf", + "name": "Amazon Nova Service Cards", + "source": {"bytes": document_bytes}, + } + }, + ], + } +] + +try: + # Send the message to the model, using a basic inference configuration. + response = client.converse( + modelId=model_id, + messages=conversation, + inferenceConfig={"maxTokens": 500, "temperature": 0.3}, + ) + + # Extract and print the response text. + response_text = response["output"]["message"]["content"][0]["text"] + print(response_text) + +except (ClientError, Exception) as e: + print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") + exit(1) + +# snippet-end:[python.example_code.bedrock-runtime.DocumentUnderstanding_MetaLlama] diff --git a/python/example_code/bedrock-runtime/models/mistral_ai/document_understanding.py b/python/example_code/bedrock-runtime/models/mistral_ai/document_understanding.py new file mode 100644 index 00000000000..050ad3a437e --- /dev/null +++ b/python/example_code/bedrock-runtime/models/mistral_ai/document_understanding.py @@ -0,0 +1,54 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +# snippet-start:[python.example_code.bedrock-runtime.DocumentUnderstanding_Mistral] +# Send and process a document with Mistral models on Amazon Bedrock. + +import boto3 +from botocore.exceptions import ClientError + +# Create a Bedrock Runtime client in the AWS Region you want to use. +client = boto3.client("bedrock-runtime", region_name="us-east-1") + +# Set the model ID, e.g., Mistral Large. +model_id = "mistral.mistral-large-2402-v1:0" + +# Load the document +with open("example-data/amazon-nova-service-cards.pdf", "rb") as file: + document_bytes = file.read() + +# Start a conversation with a user message and the document +conversation = [ + { + "role": "user", + "content": [ + {"text": "Briefly compare the models described in this document"}, + { + "document": { + # Available formats: html, md, pdf, doc/docx, xls/xlsx, csv, and txt + "format": "pdf", + "name": "Amazon Nova Service Cards", + "source": {"bytes": document_bytes}, + } + }, + ], + } +] + +try: + # Send the message to the model, using a basic inference configuration. + response = client.converse( + modelId=model_id, + messages=conversation, + inferenceConfig={"maxTokens": 500, "temperature": 0.3}, + ) + + # Extract and print the response text. + response_text = response["output"]["message"]["content"][0]["text"] + print(response_text) + +except (ClientError, Exception) as e: + print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") + exit(1) + +# snippet-end:[python.example_code.bedrock-runtime.DocumentUnderstanding_Mistral] diff --git a/python/example_code/bedrock-runtime/requirements.txt b/python/example_code/bedrock-runtime/requirements.txt index 1bb204d4cb5..7184fd7684a 100644 --- a/python/example_code/bedrock-runtime/requirements.txt +++ b/python/example_code/bedrock-runtime/requirements.txt @@ -1,5 +1,5 @@ -boto3==1.37.9 -botocore==1.37.9 +boto3==1.38.15 +botocore==1.38.15 colorama==0.4.6 iniconfig==2.0.0 jmespath==1.0.1 @@ -7,6 +7,6 @@ packaging==24.2 pluggy==1.5.0 pytest==8.3.4 python-dateutil==2.9.0.post0 -s3transfer==0.11.2 +s3transfer==0.12.0 six==1.17.0 urllib3==2.3.0 diff --git a/python/example_code/bedrock-runtime/test/test_document_understanding.py b/python/example_code/bedrock-runtime/test/test_document_understanding.py new file mode 100644 index 00000000000..09938051008 --- /dev/null +++ b/python/example_code/bedrock-runtime/test/test_document_understanding.py @@ -0,0 +1,28 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +import subprocess +import sys + +import pytest + +files_under_test = [ + "models/amazon_nova/amazon_nova_text/document_understanding.py", + "models/anthropic_claude/document_understanding.py", + "models/cohere_command/document_understanding.py", + "models/deepseek/document_understanding.py", + "models/meta_llama/document_understanding.py", + "models/mistral_ai/document_understanding.py", +] + + +@pytest.mark.integ +@pytest.mark.parametrize("file", files_under_test) +def test_invoke_model(file): + result = subprocess.run( + [sys.executable, file], + capture_output=True, + text=True, + ) + assert result.stdout != "" + assert result.returncode == 0 From 8f0cbd732ce2133f04f81eb89bf1f28477c81c18 Mon Sep 17 00:00:00 2001 From: Laren-AWS <57545972+Laren-AWS@users.noreply.github.com> Date: Fri, 23 May 2025 06:39:23 -0700 Subject: [PATCH 11/33] Update to latest tools release 2025.20.1 (#7457) --- .github/workflows/validate-doc-metadata.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate-doc-metadata.yml b/.github/workflows/validate-doc-metadata.yml index bb8790561fb..099b7565567 100644 --- a/.github/workflows/validate-doc-metadata.yml +++ b/.github/workflows/validate-doc-metadata.yml @@ -16,7 +16,7 @@ jobs: - name: checkout repo content uses: actions/checkout@v4 - name: validate metadata - uses: awsdocs/aws-doc-sdk-examples-tools@2025.18.3 + uses: awsdocs/aws-doc-sdk-examples-tools@2025.20.1 with: doc_gen_only: "False" strict_titles: "True" From bfd4aef9b3222aa786232b72fc7b013e24e58ad8 Mon Sep 17 00:00:00 2001 From: Martin Conur Date: Tue, 27 May 2025 14:15:12 -0400 Subject: [PATCH 12/33] Update README.md - fixing bedrock runtime crate link (#7461) --- rustv1/examples/bedrock-runtime/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rustv1/examples/bedrock-runtime/README.md b/rustv1/examples/bedrock-runtime/README.md index abb0df99ce4..722c4a5f160 100644 --- a/rustv1/examples/bedrock-runtime/README.md +++ b/rustv1/examples/bedrock-runtime/README.md @@ -84,7 +84,7 @@ in the `rustv1` folder. - [Amazon Bedrock Runtime User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) - [Amazon Bedrock Runtime API Reference](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html) -- [SDK for Rust Amazon Bedrock Runtime reference](https://docs.rs/aws-sdk-bedrock-runtime/latest/aws_sdk_bedrock-runtime/) +- [SDK for Rust Amazon Bedrock Runtime reference](https://docs.rs/aws-sdk-bedrockruntime/latest/aws_sdk_bedrockruntime/)) From a1199b930d66fccf73172b16632a0dea5ad14915 Mon Sep 17 00:00:00 2001 From: Laren-AWS <57545972+Laren-AWS@users.noreply.github.com> Date: Thu, 29 May 2025 04:33:46 -0700 Subject: [PATCH 13/33] Update to latest tools release 2025.1.0 (#7463) --- .github/workflows/validate-doc-metadata.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate-doc-metadata.yml b/.github/workflows/validate-doc-metadata.yml index 099b7565567..7ba49d10fcc 100644 --- a/.github/workflows/validate-doc-metadata.yml +++ b/.github/workflows/validate-doc-metadata.yml @@ -16,7 +16,7 @@ jobs: - name: checkout repo content uses: actions/checkout@v4 - name: validate metadata - uses: awsdocs/aws-doc-sdk-examples-tools@2025.20.1 + uses: awsdocs/aws-doc-sdk-examples-tools@2025.21.0 with: doc_gen_only: "False" strict_titles: "True" From 944acfd7d33dd18296eeb54619be5265ed47304d Mon Sep 17 00:00:00 2001 From: Todd Hill <110035210+tkhill-AWS@users.noreply.github.com> Date: Thu, 29 May 2025 07:35:37 -0400 Subject: [PATCH 14/33] Java V2: add existing hard-coded example for the SQS extended client (#7455) * SqsExtendedClientExample added --- .doc_gen/metadata/sqs_metadata.yaml | 18 ++ javav2/example_code/sqs/README.md | 13 + javav2/example_code/sqs/pom.xml | 11 + .../example/sqs/SqsExtendedClientExample.java | 280 ++++++++++++++++++ .../sqs/SqsExtendedClientExampleTest.java | 110 +++++++ 5 files changed, 432 insertions(+) create mode 100644 javav2/example_code/sqs/src/main/java/com/example/sqs/SqsExtendedClientExample.java create mode 100644 javav2/example_code/sqs/src/test/java/com/example/sqs/SqsExtendedClientExampleTest.java diff --git a/.doc_gen/metadata/sqs_metadata.yaml b/.doc_gen/metadata/sqs_metadata.yaml index b52a35a63ff..60d2b83ee2a 100644 --- a/.doc_gen/metadata/sqs_metadata.yaml +++ b/.doc_gen/metadata/sqs_metadata.yaml @@ -1211,3 +1211,21 @@ sqs_Scenario_UseJMS: - javav2/example_code/sqs-jms/src/main/java/com/example/sqs/jms/SqsJmsExampleUtils.java services: sqs: {CreateQueue, DeleteQueue} +sqs_Scenario_SqsExtendedClient: + title: Manage large &SQS; messages using &S3; with an &AWS; SDK + title_abbrev: Manage large messages using S3 + synopsis: use the Amazon SQS Extended Client Library to work with large &SQS; messages. + category: Scenarios + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/sqs + sdkguide: AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.html + excerpts: + - description: + snippet_tags: + - sqs.java2.sqs-extended-client.main + services: + sqs: {SendMessage, ReceiveMessage} + s3: {CreateBucket, PutBucketLifecycleConfiguration} diff --git a/javav2/example_code/sqs/README.md b/javav2/example_code/sqs/README.md index 194236086be..02e10ae1769 100644 --- a/javav2/example_code/sqs/README.md +++ b/javav2/example_code/sqs/README.md @@ -54,6 +54,7 @@ Code examples that show you how to accomplish a specific task by calling multipl functions within the same service. - [Create and publish to a FIFO topic](../sns/src/main/java/com/example/sns/PriceUpdateExample.java) +- [Manage large messages using S3](src/main/java/com/example/sqs/SqsExtendedClientExample.java) - [Process S3 event notifications](../s3/src/main/java/com/example/s3/ProcessS3EventNotification.java) - [Publish messages to queues](../../usecases/topics_and_queues/src/main/java/com/example/sns/SNSWorkflow.java) - [Use the Amazon SQS Java Messaging Library to work with the JMS interface](../sqs-jms/src/main/java/com/example/sqs/jms/stdqueue/TextMessageSender.java) @@ -89,6 +90,18 @@ This example shows you how to create and publish to a FIFO Amazon SNS topic. +#### Manage large messages using S3 + +This example shows you how to use the Amazon SQS Extended Client Library to work with large Amazon SQS messages. + + + + + + + + + #### Process S3 event notifications This example shows you how to work with S3 event notifications in an object-oriented way. diff --git a/javav2/example_code/sqs/pom.xml b/javav2/example_code/sqs/pom.xml index 4f4738153e1..ead18d93914 100644 --- a/javav2/example_code/sqs/pom.xml +++ b/javav2/example_code/sqs/pom.xml @@ -59,6 +59,11 @@ software.amazon.awssdk secretsmanager + + com.amazonaws + amazon-sqs-java-extended-client-lib + 2.1.1 + com.google.code.gson gson @@ -109,6 +114,12 @@ org.apache.logging.log4j log4j-1.2-api + + + joda-time + joda-time + 2.12.6 + org.mockito mockito-core diff --git a/javav2/example_code/sqs/src/main/java/com/example/sqs/SqsExtendedClientExample.java b/javav2/example_code/sqs/src/main/java/com/example/sqs/SqsExtendedClientExample.java new file mode 100644 index 00000000000..228def67606 --- /dev/null +++ b/javav2/example_code/sqs/src/main/java/com/example/sqs/SqsExtendedClientExample.java @@ -0,0 +1,280 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.sqs; +// snippet-start:[sqs.java2.sqs-extended-client.main] +import com.amazon.sqs.javamessaging.AmazonSQSExtendedClient; +import com.amazon.sqs.javamessaging.ExtendedClientConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; +import software.amazon.awssdk.services.s3.S3Client; +import software.amazon.awssdk.services.s3.model.BucketLifecycleConfiguration; +import software.amazon.awssdk.services.s3.model.CreateBucketRequest; +import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; +import software.amazon.awssdk.services.s3.model.DeleteObjectRequest; +import software.amazon.awssdk.services.s3.model.ExpirationStatus; +import software.amazon.awssdk.services.s3.model.LifecycleExpiration; +import software.amazon.awssdk.services.s3.model.LifecycleRule; +import software.amazon.awssdk.services.s3.model.LifecycleRuleFilter; +import software.amazon.awssdk.services.s3.model.ListObjectVersionsRequest; +import software.amazon.awssdk.services.s3.model.ListObjectVersionsResponse; +import software.amazon.awssdk.services.s3.model.ListObjectsV2Request; +import software.amazon.awssdk.services.s3.model.ListObjectsV2Response; +import software.amazon.awssdk.services.s3.model.PutBucketLifecycleConfigurationRequest; +import software.amazon.awssdk.services.sqs.SqsClient; +import software.amazon.awssdk.services.sqs.model.CreateQueueRequest; +import software.amazon.awssdk.services.sqs.model.CreateQueueResponse; +import software.amazon.awssdk.services.sqs.model.DeleteMessageRequest; +import software.amazon.awssdk.services.sqs.model.DeleteQueueRequest; +import software.amazon.awssdk.services.sqs.model.Message; +import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest; +import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse; +import software.amazon.awssdk.services.sqs.model.SendMessageRequest; + +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** + * Example of using Amazon SQS Extended Client Library for Java 2.x. + */ +public class SqsExtendedClientExample { + private static final Logger logger = LoggerFactory.getLogger(SqsExtendedClientExample.class); + + private String s3BucketName; + private String queueUrl; + private final String queueName; + private final S3Client s3Client; + private final SqsClient sqsExtendedClient; + private final int messageSize; + + /** + * Constructor with default clients and message size. + */ + public SqsExtendedClientExample() { + this(S3Client.create(), 300000); + } + + /** + * Constructor with custom S3 client and message size. + * + * @param s3Client The S3 client to use + * @param messageSize The size of the test message to create + */ + public SqsExtendedClientExample(S3Client s3Client, int messageSize) { + this.s3Client = s3Client; + this.messageSize = messageSize; + + // Generate a unique bucket name. + this.s3BucketName = UUID.randomUUID() + "-" + + DateTimeFormat.forPattern("yyMMdd-hhmmss").print(new DateTime()); + + // Generate a unique queue name. + this.queueName = "MyQueue-" + UUID.randomUUID(); + + // Configure the SQS extended client. + final ExtendedClientConfiguration extendedClientConfig = new ExtendedClientConfiguration() + .withPayloadSupportEnabled(s3Client, s3BucketName); + + this.sqsExtendedClient = new AmazonSQSExtendedClient(SqsClient.builder().build(), extendedClientConfig); + } + + public static void main(String[] args) { + SqsExtendedClientExample example = new SqsExtendedClientExample(); + try { + example.setup(); + example.sendAndReceiveMessage(); + } finally { + example.cleanup(); + } + } + + /** + * Send a large message and receive it back. + * + * @return The received message + */ + public Message sendAndReceiveMessage() { + try { + // Create a large message. + char[] chars = new char[messageSize]; + Arrays.fill(chars, 'x'); + String largeMessage = new String(chars); + + // Send the message. + final SendMessageRequest sendMessageRequest = SendMessageRequest.builder() + .queueUrl(queueUrl) + .messageBody(largeMessage) + .build(); + + sqsExtendedClient.sendMessage(sendMessageRequest); + logger.info("Sent message of size: {}", largeMessage.length()); + + // Receive and return the message. + final ReceiveMessageResponse receiveMessageResponse = sqsExtendedClient.receiveMessage( + ReceiveMessageRequest.builder().queueUrl(queueUrl).build()); + + List messages = receiveMessageResponse.messages(); + if (messages.isEmpty()) { + throw new RuntimeException("No messages received"); + } + + Message message = messages.getFirst(); + logger.info("\nMessage received."); + logger.info(" ID: {}", message.messageId()); + logger.info(" Receipt handle: {}", message.receiptHandle()); + logger.info(" Message body size: {}", message.body().length()); + logger.info(" Message body (first 5 characters): {}", message.body().substring(0, 5)); + + return message; + } catch (RuntimeException e) { + logger.error("Error during message processing: {}", e.getMessage(), e); + throw e; + } + } +// snippet-end:[sqs.java2.sqs-extended-client.main] + /** + * Set up the S3 bucket and SQS queue. + */ + public void setup() { + try { + // Create and configure the S3 bucket. + createAndConfigureS3Bucket(); + + // Create the SQS queue. + createSqsQueue(); + } catch (RuntimeException e) { + logger.error("Error during setup: {}", e.getMessage(), e); + cleanup(); // Clean up any resources that were created before the error + throw e; + } + } + + /** + * Clean up all AWS resources + */ + public void cleanup() { + try { + // Delete the queue if it was created + if (queueUrl != null) { + sqsExtendedClient.deleteQueue(DeleteQueueRequest.builder().queueUrl(queueUrl).build()); + logger.info("Deleted the queue: {}", queueUrl); + queueUrl = null; + } + + // Delete the S3 bucket and its contents if it was created + if (s3BucketName != null) { + deleteBucketAndAllContents(); + logger.info("Deleted the bucket: {}", s3BucketName); + s3BucketName = null; + } + } catch (RuntimeException e) { + logger.error("Error during cleanup: {}", e.getMessage(), e); + } + } + + /** + * Create and configure the S3 bucket with lifecycle rules + */ + private void createAndConfigureS3Bucket() { + final LifecycleRule lifeCycleRule = LifecycleRule.builder() + .expiration(LifecycleExpiration.builder().days(14).build()) + .filter(LifecycleRuleFilter.builder().prefix("").build()) + .status(ExpirationStatus.ENABLED) + .build(); + + final BucketLifecycleConfiguration lifecycleConfig = BucketLifecycleConfiguration.builder() + .rules(lifeCycleRule) + .build(); + + s3Client.createBucket(CreateBucketRequest.builder().bucket(s3BucketName).build()); + s3Client.putBucketLifecycleConfiguration(PutBucketLifecycleConfigurationRequest.builder() + .bucket(s3BucketName) + .lifecycleConfiguration(lifecycleConfig) + .build()); + + logger.info("Bucket created and configured: {}", s3BucketName); + } + + /** + * Create the SQS queue + */ + private void createSqsQueue() { + final CreateQueueResponse createQueueResponse = sqsExtendedClient.createQueue( + CreateQueueRequest.builder().queueName(queueName).build()); + queueUrl = createQueueResponse.queueUrl(); + logger.info("Queue created: {}", queueUrl); + } + + /** + * Delete the message from the SQS queue + * + * @param message The message to delete + */ + public void deleteMessage(Message message) { + sqsExtendedClient.deleteMessage( + DeleteMessageRequest.builder() + .queueUrl(queueUrl) + .receiptHandle(message.receiptHandle()) + .build()); + + logger.info("Deleted the message: {}", message.messageId()); + } + + /** + * Delete the S3 bucket and all its contents + */ + private void deleteBucketAndAllContents() { + ListObjectsV2Response listObjectsResponse = s3Client.listObjectsV2( + ListObjectsV2Request.builder().bucket(s3BucketName).build()); + + listObjectsResponse.contents().forEach(object -> { + s3Client.deleteObject(DeleteObjectRequest.builder() + .bucket(s3BucketName) + .key(object.key()) + .build()); + logger.info("Deleted S3 object: {}", object.key()); + }); + + ListObjectVersionsResponse listVersionsResponse = s3Client.listObjectVersions( + ListObjectVersionsRequest.builder().bucket(s3BucketName).build()); + + listVersionsResponse.versions().forEach(version -> s3Client.deleteObject(DeleteObjectRequest.builder() + .bucket(s3BucketName) + .key(version.key()) + .versionId(version.versionId()) + .build())); + + s3Client.deleteBucket(DeleteBucketRequest.builder().bucket(s3BucketName).build()); + } + + /** + * Get the S3 bucket name + * + * @return The S3 bucket name + */ + public String getS3BucketName() { + return s3BucketName; + } + + /** + * Get the SQS queue URL + * + * @return The SQS queue URL + */ + public String getQueueUrl() { + return queueUrl; + } + + /** + * Get the SQS queue name + * + * @return The SQS queue name + */ + public String getQueueName() { + return queueName; + } + +} diff --git a/javav2/example_code/sqs/src/test/java/com/example/sqs/SqsExtendedClientExampleTest.java b/javav2/example_code/sqs/src/test/java/com/example/sqs/SqsExtendedClientExampleTest.java new file mode 100644 index 00000000000..b3caaa3d56c --- /dev/null +++ b/javav2/example_code/sqs/src/test/java/com/example/sqs/SqsExtendedClientExampleTest.java @@ -0,0 +1,110 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.sqs; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import software.amazon.awssdk.services.s3.S3Client; +import software.amazon.awssdk.services.s3.model.HeadObjectRequest; +import software.amazon.awssdk.services.s3.model.HeadObjectResponse; +import software.amazon.awssdk.services.s3.model.ListObjectsV2Request; +import software.amazon.awssdk.services.s3.model.ListObjectsV2Response; +import software.amazon.awssdk.services.s3.model.S3Object; +import software.amazon.awssdk.services.sqs.model.Message; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Integration test for SqsExtendedClientExample + *

+ * This test verifies that: + * 1. The S3 bucket is created and configured correctly + * 2. The SQS queue is created correctly + * 3. A large message is sent to the queue and stored in S3 + * 4. The message can be received from the queue + * 5. All resources are cleaned up properly + *

+ * Note: This test requires valid AWS credentials to be configured + */ +public class SqsExtendedClientExampleTest { + + private SqsExtendedClientExample example; + private S3Client s3Client; + private final int TEST_MESSAGE_SIZE = 300000; // 300KB, exceeds the SQS limit of 256KB + + @BeforeEach + public void setUp() { + s3Client = S3Client.create(); + example = new SqsExtendedClientExample(s3Client, TEST_MESSAGE_SIZE); + } + + @AfterEach + public void tearDown() { + // Ensure all resources are cleaned up even if tests fail + if (example != null) { + example.cleanup(); + } + } + + @Test + @Tag("IntegrationTest") + public void testFullWorkflow() { + // Set up the resources + example.setup(); + + // Verify the S3 bucket was created + String bucketName = example.getS3BucketName(); + assertNotNull(bucketName, "S3 bucket name should not be null"); + + // Verify the SQS queue was created + String queueUrl = example.getQueueUrl(); + assertNotNull(queueUrl, "Queue URL should not be null"); + assertTrue(queueUrl.contains(example.getQueueName()), "Queue URL should contain the queue name"); + + // Send and receive a message + Message receivedMessage = example.sendAndReceiveMessage(); + + // Verify the message was received correctly + assertNotNull(receivedMessage, "Received message should not be null"); + assertNotNull(receivedMessage.messageId(), "Message ID should not be null"); + assertNotNull(receivedMessage.receiptHandle(), "Receipt handle should not be null"); + assertEquals(TEST_MESSAGE_SIZE, receivedMessage.body().length(), "Message body length should match"); + assertEquals("xxxxx", receivedMessage.body().substring(0, 5), "Message content should match"); + + // Verify the message was stored in S3 + ListObjectsV2Response listObjectsResponse = s3Client.listObjectsV2( + ListObjectsV2Request.builder().bucket(bucketName).build()); + + List s3Objects = listObjectsResponse.contents(); + assertFalse(s3Objects.isEmpty(), "S3 bucket should contain objects"); + + // Verify at least one object in the bucket + S3Object s3Object = s3Objects.getFirst(); + assertNotNull(s3Object.key(), "S3 object key should not be null"); + + // Verify the object size is approximately the same as our message + HeadObjectResponse headObjectResponse = s3Client.headObject( + HeadObjectRequest.builder() + .bucket(bucketName) + .key(s3Object.key()) + .build()); + + // The S3 object size might be slightly larger due to metadata + assertTrue(headObjectResponse.contentLength() >= TEST_MESSAGE_SIZE, + "S3 object size should be at least the message size"); + + // Delete the message + example.deleteMessage(receivedMessage); + + // Clean up resources (this is also done in tearDown as a safety measure) + example.cleanup(); + } +} From e5f22e5d3cb1696f64f51fe6633b0d6d15d91d83 Mon Sep 17 00:00:00 2001 From: Scott Macdonald <57190223+scmacdon@users.noreply.github.com> Date: Thu, 29 May 2025 07:37:15 -0400 Subject: [PATCH 15/33] Java V2 added SES example that shows new header information (#7430) added the new header example --- .doc_gen/metadata/sesv2_metadata.yaml | 3 + javav2/example_code/ses/pom.xml | 5 +- .../java/com/example/sesv2/SendEmail.java | 161 +++++++++--------- .../com/example/sesv2/SendwithHeader.java | 116 +++++++++++++ 4 files changed, 203 insertions(+), 82 deletions(-) create mode 100644 javav2/example_code/ses/src/main/java/com/example/sesv2/SendwithHeader.java diff --git a/.doc_gen/metadata/sesv2_metadata.yaml b/.doc_gen/metadata/sesv2_metadata.yaml index ef50f9e9911..979befadf16 100644 --- a/.doc_gen/metadata/sesv2_metadata.yaml +++ b/.doc_gen/metadata/sesv2_metadata.yaml @@ -168,6 +168,9 @@ sesv2_SendEmail: - description: Sends a message using a template. snippet_tags: - sesv2.java2.newsletter.SendEmail.template + - description: Sends a message with header information. + snippet_tags: + - ses.java2.send.header.sesv2.main Rust: versions: - sdk_version: 1 diff --git a/javav2/example_code/ses/pom.xml b/javav2/example_code/ses/pom.xml index d6d40878d13..24927c3ea08 100644 --- a/javav2/example_code/ses/pom.xml +++ b/javav2/example_code/ses/pom.xml @@ -19,8 +19,9 @@ maven-compiler-plugin 3.1 - ${java.version} - ${java.version} + 21 + 21 + --enable-preview diff --git a/javav2/example_code/ses/src/main/java/com/example/sesv2/SendEmail.java b/javav2/example_code/ses/src/main/java/com/example/sesv2/SendEmail.java index 530a6790711..e0a726b7069 100644 --- a/javav2/example_code/ses/src/main/java/com/example/sesv2/SendEmail.java +++ b/javav2/example_code/ses/src/main/java/com/example/sesv2/SendEmail.java @@ -5,6 +5,7 @@ // snippet-start:[ses.java2.sendmessage.sesv2.main] // snippet-start:[ses.java2.sendmessage.sesv2.import] + import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sesv2.model.Body; import software.amazon.awssdk.services.sesv2.model.Content; @@ -19,93 +20,93 @@ /** * Before running this AWS SDK for Java (v2) example, set up your development * environment, including your credentials. - * + *

* For more information, see the following documentation topic: - * + *

* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class SendEmail { - public static void main(String[] args) { - final String usage = """ - - Usage: - \s - - Where: - sender - An email address that represents the sender.\s - recipient - An email address that represents the recipient.\s - subject - The subject line.\s - """; - - if (args.length != 3) { - System.out.println(usage); - System.exit(1); - } - - String sender = args[0]; - String recipient = args[1]; - String subject = args[2]; - - Region region = Region.US_EAST_1; - SesV2Client sesv2Client = SesV2Client.builder() - .region(region) - .build(); - - // The HTML body of the email. - String bodyHTML = "" + "" + "" + "

Hello!

" - + "

See the list of customers.

" + "" + ""; - - send(sesv2Client, sender, recipient, subject, bodyHTML); + public static void main(String[] args) { + final String usage = """ + + Usage: + \s + + Where: + sender - An email address that represents the sender.\s + recipient - An email address that represents the recipient.\s + subject - The subject line.\s + """; + + if (args.length != 3) { + System.out.println(usage); + System.exit(1); } - public static void send(SesV2Client client, - String sender, - String recipient, - String subject, - String bodyHTML) { - - Destination destination = Destination.builder() - .toAddresses(recipient) - .build(); - - Content content = Content.builder() - .data(bodyHTML) - .build(); - - Content sub = Content.builder() - .data(subject) - .build(); - - Body body = Body.builder() - .html(content) - .build(); - - Message msg = Message.builder() - .subject(sub) - .body(body) - .build(); - - EmailContent emailContent = EmailContent.builder() - .simple(msg) - .build(); - - SendEmailRequest emailRequest = SendEmailRequest.builder() - .destination(destination) - .content(emailContent) - .fromEmailAddress(sender) - .build(); - - try { - System.out.println("Attempting to send an email through Amazon SES " - + "using the AWS SDK for Java..."); - client.sendEmail(emailRequest); - System.out.println("email was sent"); - - } catch (SesV2Exception e) { - System.err.println(e.awsErrorDetails().errorMessage()); - System.exit(1); - } + String sender = args[0]; + String recipient = args[1]; + String subject = args[2]; + + Region region = Region.US_EAST_1; + SesV2Client sesv2Client = SesV2Client.builder() + .region(region) + .build(); + + // The HTML body of the email. + String bodyHTML = "" + "" + "" + "

Hello!

" + + "

See the list of customers.

" + "" + ""; + + send(sesv2Client, sender, recipient, subject, bodyHTML); + } + + public static void send(SesV2Client client, + String sender, + String recipient, + String subject, + String bodyHTML) { + + Destination destination = Destination.builder() + .toAddresses(recipient) + .build(); + + Content content = Content.builder() + .data(bodyHTML) + .build(); + + Content sub = Content.builder() + .data(subject) + .build(); + + Body body = Body.builder() + .html(content) + .build(); + + Message msg = Message.builder() + .subject(sub) + .body(body) + .build(); + + EmailContent emailContent = EmailContent.builder() + .simple(msg) + .build(); + + SendEmailRequest emailRequest = SendEmailRequest.builder() + .destination(destination) + .content(emailContent) + .fromEmailAddress(sender) + .build(); + + try { + System.out.println("Attempting to send an email through Amazon SES " + + "using the AWS SDK for Java..."); + client.sendEmail(emailRequest); + System.out.println("email was sent"); + + } catch (SesV2Exception e) { + System.err.println(e.awsErrorDetails().errorMessage()); + System.exit(1); } + } } // snippet-end:[ses.java2.sendmessage.sesv2.main] diff --git a/javav2/example_code/ses/src/main/java/com/example/sesv2/SendwithHeader.java b/javav2/example_code/ses/src/main/java/com/example/sesv2/SendwithHeader.java new file mode 100644 index 00000000000..5e7969a3f45 --- /dev/null +++ b/javav2/example_code/ses/src/main/java/com/example/sesv2/SendwithHeader.java @@ -0,0 +1,116 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.sesv2; + +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.sesv2.SesV2Client; +import software.amazon.awssdk.services.sesv2.model.EmailContent; +import software.amazon.awssdk.services.sesv2.model.Message; +import software.amazon.awssdk.services.sesv2.model.MessageHeader; +import software.amazon.awssdk.services.sesv2.model.SendEmailRequest; +import software.amazon.awssdk.services.sesv2.model.SendEmailResponse; +import software.amazon.awssdk.services.sesv2.model.SesV2Exception; + +import java.util.List; + +import static java.nio.charset.StandardCharsets.UTF_8; + +/** + * Before running this AWS SDK for Java (v2) example, set up your development + * environment, including your credentials. + *

+ * For more information, see the following documentation topic: + *

+ * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html + */ + +// snippet-start:[ses.java2.send.header.sesv2.main] +public class SendwithHeader { + + public static void main(String[] args) { + final String usage = """ + + Usage: + \s + + Where: + sender - An email address that represents the sender.\s + recipient - An email address that represents the recipient.\s + subject - The subject line.\s + """; + + if (args.length != 3) { + System.out.println(usage); + System.exit(1); + } + + String sender = args[0]; + String recipient = args[1]; + String subject = args[2]; + Region region = Region.US_EAST_1; + SesV2Client sesv2Client = SesV2Client.builder() + .region(region) + .build(); + + String bodyHTML = """ + + + +

Hello!

+

See the list of customers.

+ + + """; + + sendWithHeader(sesv2Client, sender, recipient, subject, bodyHTML); + sesv2Client.close(); + } + + /** + * Sends an email using the AWS SES V2 client. + * + * @param sesv2Client the SES V2 client to use for sending the email + * @param sender the email address of the sender + * @param recipient the email address of the recipient + * @param subject the subject of the email + * @param bodyHTML the HTML content of the email body + */ + public static void sendWithHeader(SesV2Client sesv2Client, + String sender, + String recipient, + String subject, + String bodyHTML) { + EmailContent emailContent = EmailContent.builder() + .simple(Message.builder() + .body(b -> b.html(c -> c.charset(UTF_8.name()).data(bodyHTML)) + .text(c -> c.charset(UTF_8.name()).data(bodyHTML))) + .subject(c -> c.charset(UTF_8.name()).data(subject)) + .headers(List.of( + MessageHeader.builder() + .name("List-Unsubscribe") + .value(", ") + .build(), + MessageHeader.builder() + .name("List-Unsubscribe-Post") + .value("List-Unsubscribe=One-Click") + .build())) + .build()) + .build(); + + SendEmailRequest request = SendEmailRequest.builder() + .fromEmailAddress(sender) + .destination(d -> d.toAddresses(recipient)) + .content(emailContent) + .build(); + + try { + SendEmailResponse response = sesv2Client.sendEmail(request); + System.out.println("Email sent! Message ID: " + response.messageId()); + } catch (SesV2Exception e) { + System.err.println("Failed to send email: " + e.awsErrorDetails().errorMessage()); + throw new RuntimeException(e); + } + } +} +// snippet-end:[ses.java2.send.header.sesv2.main] \ No newline at end of file From 927ce7340fc931cbe1418835f63043fe0ce8c37d Mon Sep 17 00:00:00 2001 From: Dennis Traub Date: Thu, 29 May 2025 13:41:31 +0200 Subject: [PATCH 16/33] PHP: Add example for Amazon Nova text models, remove example for Jurassic-2 (#7445) * Add .local config * Add Nova Text PHP example * Remove PHP examples for Jurassic-2 (deprecated) * Regenerate docs * Revert add .gitattributes * Fix formatting --- .../metadata/bedrock-runtime_metadata.yaml | 16 +- .../bedrock-runtime/BedrockRuntimeService.php | 30 - .../GettingStartedWithBedrockRuntime.php | 2 - .../Models/AmazonNova/Text/Converse.php | 62 + php/example_code/bedrock-runtime/README.md | 8 +- .../bedrock-runtime/composer.json | 5 +- .../bedrock-runtime/composer.lock | 1872 ++++++++++++++++- .../tests/BedrockRuntimeTests.php | 8 +- .../bedrock-runtime/tests/ConverseTests.php | 19 + 9 files changed, 1909 insertions(+), 113 deletions(-) create mode 100644 php/example_code/bedrock-runtime/Models/AmazonNova/Text/Converse.php create mode 100644 php/example_code/bedrock-runtime/tests/ConverseTests.php diff --git a/.doc_gen/metadata/bedrock-runtime_metadata.yaml b/.doc_gen/metadata/bedrock-runtime_metadata.yaml index 62fc8fd344f..35234a7eb90 100644 --- a/.doc_gen/metadata/bedrock-runtime_metadata.yaml +++ b/.doc_gen/metadata/bedrock-runtime_metadata.yaml @@ -124,6 +124,14 @@ bedrock-runtime_Converse_AmazonNovaText: genai: some snippet_tags: - Bedrock.ConverseTool.dotnetv3.SendConverseRequest + PHP: + versions: + - sdk_version: 3 + github: php/example_code/bedrock-runtime + excerpts: + - description: Send a text message to Amazon Nova, using Bedrock's Converse API. + snippet_tags: + - php.example_code.bedrock-runtime.service.Converse_AmazonNovaText Python: versions: - sdk_version: 3 @@ -792,14 +800,6 @@ bedrock-runtime_InvokeModel_Ai21LabsJurassic2: snippet_tags: - gov2.bedrock-runtime.InvokeModelWrapper.struct - gov2.bedrock-runtime.InvokeJurassic2 - PHP: - versions: - - sdk_version: 3 - github: php/example_code/bedrock-runtime - excerpts: - - description: Use the Invoke Model API to send a text message. - snippet_tags: - - php.example_code.bedrock-runtime.service.invokeJurassic2 services: bedrock-runtime: {InvokeModel} diff --git a/php/example_code/bedrock-runtime/BedrockRuntimeService.php b/php/example_code/bedrock-runtime/BedrockRuntimeService.php index f311880fc2c..c201f73e25b 100644 --- a/php/example_code/bedrock-runtime/BedrockRuntimeService.php +++ b/php/example_code/bedrock-runtime/BedrockRuntimeService.php @@ -63,36 +63,6 @@ public function invokeClaude($prompt) } // snippet-end:[php.example_code.bedrock-runtime.service.invokeClaude] - // snippet-start:[php.example_code.bedrock-runtime.service.invokeJurassic2] - public function invokeJurassic2($prompt) - { - # The different model providers have individual request and response formats. - # For the format, ranges, and default values for AI21 Labs Jurassic-2, refer to: - # https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-jurassic2.html - - $completion = ""; - try { - $modelId = 'ai21.j2-mid-v1'; - $body = [ - 'prompt' => $prompt, - 'temperature' => 0.5, - 'maxTokens' => 200, - ]; - $result = $this->bedrockRuntimeClient->invokeModel([ - 'contentType' => 'application/json', - 'body' => json_encode($body), - 'modelId' => $modelId, - ]); - $response_body = json_decode($result['body']); - $completion = $response_body->completions[0]->data->text; - } catch (Exception $e) { - echo "Error: ({$e->getCode()}) - {$e->getMessage()}\n"; - } - - return $completion; - } - // snippet-end:[php.example_code.bedrock-runtime.service.invokeJurassic2] - // snippet-start:[php.example_code.bedrock-runtime.service.invokeStableDiffusion] public function invokeStableDiffusion(string $prompt, int $seed, string $style_preset) { diff --git a/php/example_code/bedrock-runtime/GettingStartedWithBedrockRuntime.php b/php/example_code/bedrock-runtime/GettingStartedWithBedrockRuntime.php index 271698bc5e8..787c2244a27 100644 --- a/php/example_code/bedrock-runtime/GettingStartedWithBedrockRuntime.php +++ b/php/example_code/bedrock-runtime/GettingStartedWithBedrockRuntime.php @@ -25,8 +25,6 @@ public function runExample() echo "\nPrompt: " . $prompt; echo "\n\nAnthropic Claude:\n"; echo $bedrockRuntimeService->invokeClaude($prompt); - echo "\n\nAI21 Labs Jurassic-2:\n"; - echo $bedrockRuntimeService->invokeJurassic2($prompt); echo "\n---------------------------------------------------------------------\n"; $image_prompt = 'stylized picture of a cute old steampunk robot'; echo "\nImage prompt: " . $image_prompt; diff --git a/php/example_code/bedrock-runtime/Models/AmazonNova/Text/Converse.php b/php/example_code/bedrock-runtime/Models/AmazonNova/Text/Converse.php new file mode 100644 index 00000000000..64c61a84681 --- /dev/null +++ b/php/example_code/bedrock-runtime/Models/AmazonNova/Text/Converse.php @@ -0,0 +1,62 @@ + 'us-east-1', + 'profile' => 'default' + ]); + + // Set the model ID, e.g., Amazon Nova Lite. + $modelId = 'amazon.nova-lite-v1:0'; + + // Start a conversation with the user message. + $userMessage = "Describe the purpose of a 'hello world' program in one line."; + $conversation = [ + [ + "role" => "user", + "content" => [["text" => $userMessage]] + ] + ]; + + try { + // Send the message to the model, using a basic inference configuration. + $response = $client->converse([ + 'modelId' => $modelId, + 'messages' => $conversation, + 'inferenceConfig' => [ + 'maxTokens' => 512, + 'temperature' => 0.5 + ] + ]); + + // Extract and return the response text. + $responseText = $response['output']['message']['content'][0]['text']; + return $responseText; + } catch (AwsException $e) { + echo "ERROR: Can't invoke {$modelId}. Reason: {$e->getAwsErrorMessage()}"; + throw new RuntimeException("Failed to invoke model: " . $e->getAwsErrorMessage(), 0, $e); + } + } +} + +$demo = new Converse(); +echo $demo->converse(); + +// snippet-end:[php.example_code.bedrock-runtime.service.Converse_AmazonNovaText] diff --git a/php/example_code/bedrock-runtime/README.md b/php/example_code/bedrock-runtime/README.md index 402bf239b40..7dd122ff661 100644 --- a/php/example_code/bedrock-runtime/README.md +++ b/php/example_code/bedrock-runtime/README.md @@ -42,13 +42,13 @@ functions within the same service. - [Invoke multiple foundation models on Amazon Bedrock](GettingStartedWithBedrockRuntime.php) -### AI21 Labs Jurassic-2 +### Amazon Nova -- [InvokeModel](BedrockRuntimeService.php#L66) +- [Converse](Models/AmazonNova/Text/Converse.php#L9) ### Amazon Titan Image Generator -- [InvokeModel](BedrockRuntimeService.php#L133) +- [InvokeModel](BedrockRuntimeService.php#L103) ### Anthropic Claude @@ -56,7 +56,7 @@ functions within the same service. ### Stable Diffusion -- [InvokeModel](BedrockRuntimeService.php#L96) +- [InvokeModel](BedrockRuntimeService.php#L66) diff --git a/php/example_code/bedrock-runtime/composer.json b/php/example_code/bedrock-runtime/composer.json index 877018afa42..44ca1f5cdc8 100644 --- a/php/example_code/bedrock-runtime/composer.json +++ b/php/example_code/bedrock-runtime/composer.json @@ -1,6 +1,6 @@ { "require": { - "aws/aws-sdk-php": "^3.336", + "aws/aws-sdk-php": "^3.343", "guzzlehttp/guzzle": "^7.9.2" }, "autoload": { @@ -11,5 +11,8 @@ "BedrockRuntime\\": "../bedrock-runtime/", "AwsUtilities\\": "../aws_utilities/" } + }, + "scripts": { + "Models/AmazonNova/Text/Converse": "php Models/AmazonNova/Text/Converse.php" } } diff --git a/php/example_code/bedrock-runtime/composer.lock b/php/example_code/bedrock-runtime/composer.lock index 3483421752b..7f2a7075218 100644 --- a/php/example_code/bedrock-runtime/composer.lock +++ b/php/example_code/bedrock-runtime/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d230eb9467db7bff94de3a670e473719", + "content-hash": "1fd289f6f558baafb5f4dfc37fec584b", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.336.13", + "version": "3.343.10", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "dcb43c029ca74c52fa03a739341cc77086296a83" + "reference": "473d632d03a78b19f9f75a2126c5ba8c21f09346" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/dcb43c029ca74c52fa03a739341cc77086296a83", - "reference": "dcb43c029ca74c52fa03a739341cc77086296a83", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/473d632d03a78b19f9f75a2126c5ba8c21f09346", + "reference": "473d632d03a78b19f9f75a2126c5ba8c21f09346", "shasum": "" }, "require": { @@ -79,31 +79,30 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0" + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/promises": "^2.0", + "guzzlehttp/psr7": "^2.4.5", + "mtdowling/jmespath.php": "^2.8.0", + "php": ">=8.1", + "psr/http-message": "^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", - "composer/composer": "^1.10.22", + "composer/composer": "^2.7.8", "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", "ext-pcntl": "*", "ext-sockets": "*", - "nette/neon": "^2.3", - "paragonie/random_compat": ">= 2", "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" + "psr/cache": "^2.0 || ^3.0", + "psr/simple-cache": "^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", + "symfony/filesystem": "^v6.4.0 || ^v7.1.0", + "yoast/phpunit-polyfills": "^2.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -152,24 +151,24 @@ "sdk" ], "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.336.13" + "source": "https://github.com/aws/aws-sdk-php/tree/3.343.10" }, - "time": "2025-01-10T19:04:25+00:00" + "time": "2025-05-13T18:09:50+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "version": "7.9.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", "shasum": "" }, "require": { @@ -266,7 +265,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "source": "https://github.com/guzzle/guzzle/tree/7.9.3" }, "funding": [ { @@ -282,20 +281,20 @@ "type": "tidelift" } ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2025-03-27T13:37:11+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.4", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", "shasum": "" }, "require": { @@ -349,7 +348,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" + "source": "https://github.com/guzzle/promises/tree/2.2.0" }, "funding": [ { @@ -365,20 +364,20 @@ "type": "tidelift" } ], - "time": "2024-10-17T10:06:22+00:00" + "time": "2025-03-27T13:27:01+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", "shasum": "" }, "require": { @@ -465,7 +464,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "source": "https://github.com/guzzle/psr7/tree/2.7.1" }, "funding": [ { @@ -481,7 +480,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2025-03-27T12:30:47+00:00" }, { "name": "mtdowling/jmespath.php", @@ -755,16 +754,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -772,12 +771,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -802,7 +801,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -818,23 +817,24 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -846,8 +846,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -882,7 +882,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, "funding": [ { @@ -898,16 +898,1766 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:23:10+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-04-29T12:36:36+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.4.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + }, + "time": "2024-12-30T11:07:19+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.32", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.6" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:23:01+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.6.23", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.5.0 || ^2", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", + "sebastian/version": "^3.0.2" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-05-02T06:40:34+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:27:43+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:41:17+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:19:30+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:30:58+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:33:00+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:35:11+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:20:34+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:07:39+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-14T16:00:52+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" } ], - "packages-dev": [], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], + "platform": {}, + "platform-dev": {}, "plugin-api-version": "2.6.0" } diff --git a/php/example_code/bedrock-runtime/tests/BedrockRuntimeTests.php b/php/example_code/bedrock-runtime/tests/BedrockRuntimeTests.php index 2d9a14cca9c..0d4ecacff29 100644 --- a/php/example_code/bedrock-runtime/tests/BedrockRuntimeTests.php +++ b/php/example_code/bedrock-runtime/tests/BedrockRuntimeTests.php @@ -6,7 +6,7 @@ * Integration tests for the Amazon Bedrock Runtime service. */ -namespace bedrockruntime\tests; +namespace BedrockRuntime\tests; use Aws\BedrockRuntime\BedrockRuntimeClient; use BedrockRuntime\BedrockRuntimeService; @@ -47,12 +47,6 @@ public function test_claude_can_be_invoked() self::assertNotEmpty($completion); } - public function test_jurassic2_can_be_invoked() - { - $completion = $this->bedrockRuntimeService->invokeJurassic2($this->prompt); - self::assertNotEmpty($completion); - } - public function test_stable_diffusion_can_be_invoked() { $seed = 0; diff --git a/php/example_code/bedrock-runtime/tests/ConverseTests.php b/php/example_code/bedrock-runtime/tests/ConverseTests.php new file mode 100644 index 00000000000..0051724aa8d --- /dev/null +++ b/php/example_code/bedrock-runtime/tests/ConverseTests.php @@ -0,0 +1,19 @@ +converse(); + self::assertIsString($result); + self::assertNotEmpty($result); + } +} From 0d7d1717f2697c635b7fe2a4f403d6dcffae44ec Mon Sep 17 00:00:00 2001 From: Laren-AWS <57545972+Laren-AWS@users.noreply.github.com> Date: Fri, 30 May 2025 10:25:47 -0700 Subject: [PATCH 17/33] Update to latest tools release 2025.21.1. (#7464) --- .github/workflows/validate-doc-metadata.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate-doc-metadata.yml b/.github/workflows/validate-doc-metadata.yml index 7ba49d10fcc..af4b3051172 100644 --- a/.github/workflows/validate-doc-metadata.yml +++ b/.github/workflows/validate-doc-metadata.yml @@ -16,7 +16,7 @@ jobs: - name: checkout repo content uses: actions/checkout@v4 - name: validate metadata - uses: awsdocs/aws-doc-sdk-examples-tools@2025.21.0 + uses: awsdocs/aws-doc-sdk-examples-tools@2025.21.1 with: doc_gen_only: "False" strict_titles: "True" From 6fa1c49f9993198d69f7bc121b61aaf668277a83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 15:58:05 +0000 Subject: [PATCH 18/33] Bump axios and @ailly/cli in /.tools/ailly (#7465) Bumps [axios](https://github.com/axios/axios) to 1.9.0 and updates ancestor dependency [@ailly/cli](https://github.com/DavidSouther/ailly). These dependencies need to be updated together. Updates `axios` from 1.6.8 to 1.9.0 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.6.8...v1.9.0) Updates `@ailly/cli` from 1.2.5-rc1 to 1.6.0 - [Release notes](https://github.com/DavidSouther/ailly/releases) - [Commits](https://github.com/DavidSouther/ailly/commits/v1.6.0) --- updated-dependencies: - dependency-name: axios dependency-version: 1.9.0 dependency-type: indirect - dependency-name: "@ailly/cli" dependency-version: 1.6.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .tools/ailly/package-lock.json | 5558 +++++++++++++++++++++++++++++--- .tools/ailly/package.json | 2 +- 2 files changed, 5080 insertions(+), 480 deletions(-) diff --git a/.tools/ailly/package-lock.json b/.tools/ailly/package-lock.json index ce7ae4c9b12..7cba8aaed2b 100644 --- a/.tools/ailly/package-lock.json +++ b/.tools/ailly/package-lock.json @@ -6,29 +6,114 @@ "": { "name": "ailly-aws-doc-sdk-examples", "dependencies": { - "@ailly/cli": "1.2.5-rc1", + "@ailly/cli": "1.6.0", "@ailly/core": "1.2.5-rc1" } }, "node_modules/@ailly/cli": { - "version": "1.2.5-rc1", - "resolved": "https://registry.npmjs.org/@ailly/cli/-/cli-1.2.5-rc1.tgz", - "integrity": "sha512-DaEDpMuI0C7jK8GUG34vekcAg79rsw2CyC/1UiyzbtzQthL+bqZQLqVX3Iby90lwBJ43jOOWZvDAVNtu4+sVTg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@ailly/cli/-/cli-1.6.0.tgz", + "integrity": "sha512-QTRIfBnOgHx+9eB6QbagkIbGzqEtYGmijE2UMTjRrtmTxAHnwHehxVcSHhrpEXmsLHgcJBRG9j6TcQIDYho7TQ==", + "license": "ISC", "dependencies": { - "@ailly/core": "^1.2.5-rc1", - "@davidsouther/jiffies": "^2.1.4" + "@ailly/core": "1.6.0", + "@davidsouther/jiffies": "^2.2.4", + "yaml": "^2.4.1" }, "bin": { "ailly": "index.js" }, "engines": { - "node": ">=20" + "node": ">=16" + } + }, + "node_modules/@ailly/cli/node_modules/@ailly/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@ailly/core/-/core-1.6.0.tgz", + "integrity": "sha512-tPUbTniuKMdg/IkwencwHzKtadwl/Mn2mBLS0FDXgAZw/oqG8IeQY9gZPOTHqcU1vk6HpT1Qk84+ShQYCl+xOw==", + "license": "ISC", + "dependencies": { + "@aws-sdk/client-bedrock-runtime": "^3.743.0", + "@aws-sdk/credential-providers": "^3.572.0", + "@davidsouther/jiffies": "^2.2.5", + "@dqbd/tiktoken": "^1.0.7", + "esbuild": "0.25.4", + "gitignore-parser": "^0.0.2", + "gray-matter": "^4.0.3", + "mustache": "^4.2.0", + "openai": "^4.11.1", + "temporal-polyfill": "^0.2.4", + "vectra": "^0.11.0", + "yaml": "^2.4.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@ailly/cli/node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@ailly/cli/node_modules/json-colorizer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-3.0.1.tgz", + "integrity": "sha512-4YyRAbD6eHeRnJD9vo0zjiU5fyY9QR6T+iYuH5DpO0XPThKWozpD4MaeY/8nLZIkHC3yEQMFLL+6P94E+JekDw==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.20" + } + }, + "node_modules/@ailly/cli/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/@ailly/cli/node_modules/vectra": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/vectra/-/vectra-0.11.1.tgz", + "integrity": "sha512-i0NeIi9pAkf81Uh46vA+1Xdf71sOFjZc365b+xyTtJcl1KlEquxUvKEq5HlYXNkow82pA99Bjrfs7YX4p4iWyg==", + "license": "MIT", + "dependencies": { + "axios": "^1.9.0", + "cheerio": "^1.0.0", + "dotenv": "^16.5.0", + "gpt-3-encoder": "1.1.4", + "json-colorizer": "^3.0.1", + "openai": "^4.97.0", + "turndown": "^7.2.0", + "uuid": "^11.1.0", + "wink-bm25-text-search": "^3.1.2", + "wink-nlp": "^2.3.2", + "yargs": "^17.7.2" + }, + "bin": { + "vectra": "bin/vectra.js" + }, + "engines": { + "node": ">=20.x" } }, "node_modules/@ailly/core": { "version": "1.2.5-rc1", "resolved": "https://registry.npmjs.org/@ailly/core/-/core-1.2.5-rc1.tgz", "integrity": "sha512-xAO4AjiiqymdN5sTvg1KmLbGO7JqI+Shurcki0BgUDhnwWEOtP1UBFP7PPN/BcjhM1IF6ADaS9XVdEGpim0Q7g==", + "license": "ISC", "dependencies": { "@aws-sdk/client-bedrock": "^3.427.0", "@aws-sdk/client-bedrock-runtime": "^3.427.0", @@ -46,6 +131,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -223,411 +309,4230 @@ } }, "node_modules/@aws-sdk/client-bedrock-runtime": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.621.0.tgz", - "integrity": "sha512-08QQhvnY3WQvIKX3rdzPcOwq13rD16jL63U2itpciNPVAlsDdw/4cUnbVSW+h9V/Lhb9LmlmbbbYdI3ZvGW+7A==", + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.817.0.tgz", + "integrity": "sha512-fG3QAjIEq7P0a134E2P8r4qw/V6rL0X5voUPIcXte1oNKUXUjNXJb21N/NGmcDLCUVWvYXb24dD0YXyQ2kwZdA==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.621.0", - "@aws-sdk/client-sts": "3.621.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/credential-provider-node": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/eventstream-serde-browser": "^3.0.5", - "@smithy/eventstream-serde-config-resolver": "^3.0.3", - "@smithy/eventstream-serde-node": "^3.0.4", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-stream": "^3.1.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" + "@aws-sdk/core": "3.816.0", + "@aws-sdk/credential-provider-node": "3.817.0", + "@aws-sdk/eventstream-handler-node": "3.804.0", + "@aws-sdk/middleware-eventstream": "3.804.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.816.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.3", + "@smithy/eventstream-serde-browser": "^4.0.2", + "@smithy/eventstream-serde-config-resolver": "^4.1.0", + "@smithy/eventstream-serde-node": "^4.0.2", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.6", + "@smithy/middleware-retry": "^4.1.7", + "@smithy/middleware-serde": "^4.0.5", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.14", + "@smithy/util-defaults-mode-node": "^4.0.14", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-stream": "^4.2.0", + "@smithy/util-utf8": "^4.0.0", + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz", - "integrity": "sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA==", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/client-sso": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.817.0.tgz", + "integrity": "sha512-fCh5rUHmWmWDvw70NNoWpE5+BRdtNi45kDnIoeoszqVg7UKF79SlG+qYooUT52HKCgDNHqgbWaXxMOSqd2I/OQ==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.816.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.3", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.6", + "@smithy/middleware-retry": "^4.1.7", + "@smithy/middleware-serde": "^4.0.5", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.14", + "@smithy/util-defaults-mode-node": "^4.0.14", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz", - "integrity": "sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg==", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/core": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.816.0.tgz", + "integrity": "sha512-Lx50wjtyarzKpMFV6V+gjbSZDgsA/71iyifbClGUSiNPoIQ4OCV0KVOmAAj7mQRVvGJqUMWKVM+WzK79CjbjWA==", + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/credential-provider-node": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", + "@aws-sdk/types": "3.804.0", + "@smithy/core": "^3.3.3", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.816.0.tgz", + "integrity": "sha512-wUJZwRLe+SxPxRV9AENYBLrJZRrNIo+fva7ZzejsC83iz7hdfq6Rv6B/aHEdPwG/nQC4+q7UUvcRPlomyrpsBA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz", - "integrity": "sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA==", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.816.0.tgz", + "integrity": "sha512-gcWGzMQ7yRIF+ljTkR8Vzp7727UY6cmeaPrFQrvcFB8PhOqWpf7g0JsgOf5BSaP8CkkSQcTQHc0C5ZYAzUFwPg==", + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.621.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/credential-provider-node": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/core": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.621.0.tgz", - "integrity": "sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ==", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.817.0.tgz", + "integrity": "sha512-kyEwbQyuXE+phWVzloMdkFv6qM6NOon+asMXY5W0fhDKwBz9zQLObDRWBrvQX9lmqq8BbDL1sCfZjOh82Y+RFw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^2.3.1", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "fast-xml-parser": "4.4.1", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/credential-provider-env": "3.816.0", + "@aws-sdk/credential-provider-http": "3.816.0", + "@aws-sdk/credential-provider-process": "3.816.0", + "@aws-sdk/credential-provider-sso": "3.817.0", + "@aws-sdk/credential-provider-web-identity": "3.817.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", - "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.817.0.tgz", + "integrity": "sha512-b5mz7av0Lhavs1Bz3Zb+jrs0Pki93+8XNctnVO0drBW98x1fM4AR38cWvGbM/w9F9Q0/WEH3TinkmrMPrP4T/w==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", + "@aws-sdk/credential-provider-env": "3.816.0", + "@aws-sdk/credential-provider-http": "3.816.0", + "@aws-sdk/credential-provider-ini": "3.817.0", + "@aws-sdk/credential-provider-process": "3.816.0", + "@aws-sdk/credential-provider-sso": "3.817.0", + "@aws-sdk/credential-provider-web-identity": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz", - "integrity": "sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg==", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.816.0.tgz", + "integrity": "sha512-9Tm+AxMoV2Izvl5b9tyMQRbBwaex8JP06HN7ZeCXgC5sAsSN+o8dsThnEhf8jKN+uBpT6CLWKN1TXuUMrAmW1A==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.3", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz", - "integrity": "sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA==", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.817.0.tgz", + "integrity": "sha512-gFUAW3VmGvdnueK1bh6TOcRX+j99Xm0men1+gz3cA4RE+rZGNy1Qjj8YHlv0hPwI9OnTPZquvPzA5fkviGREWg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/client-sso": "3.817.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/token-providers": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.817.0.tgz", + "integrity": "sha512-A2kgkS9g6NY0OMT2f2EdXHpL17Ym81NhbGnQ8bRXPqESIi7TFypFD2U6osB2VnsFv+MhwM+Ke4PKXSmLun22/A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", + "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-logger": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", + "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", + "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.816.0.tgz", + "integrity": "sha512-bHRSlWZ0xDsFR8E2FwDb//0Ff6wMkVx4O+UKsfyNlAbtqCiiHRt5ANNfKPafr95cN2CCxLxiPvFTFVblQM5TsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@smithy/core": "^3.3.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", + "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/token-providers": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.817.0.tgz", + "integrity": "sha512-CYN4/UO0VaqyHf46ogZzNrVX7jI3/CfiuktwKlwtpKA6hjf2+ivfgHSKzPpgPBcSEfiibA/26EeLuMnB6cpSrQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-endpoints": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", + "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "@smithy/util-endpoints": "^3.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", + "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.816.0.tgz", + "integrity": "sha512-Q6dxmuj4hL7pudhrneWEQ7yVHIQRBFr0wqKLF1opwOi1cIePuoEbPyJ2jkel6PDEv1YMfvsAKaRshp6eNA8VHg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/abort-controller": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz", + "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/config-resolver": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.4.tgz", + "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.5.1.tgz", + "integrity": "sha512-xSw7bZEFKwOKrm/iv8e2BLt2ur98YZdrRD6nII8ditQeUsY2Q1JmIQ0rpILOhaLKYxxG2ivnoOpokzr9qLyDWA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.0.8", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.2", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/credential-provider-imds": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz", + "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/fetch-http-handler": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz", + "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/hash-node": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.4.tgz", + "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/invalid-dependency": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz", + "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/is-array-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", + "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/middleware-content-length": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz", + "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/middleware-endpoint": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.9.tgz", + "integrity": "sha512-AjDgX4UjORLltD/LZCBQTwjQqEfyrx/GeDTHcYLzIgf87pIT70tMWnN87NQpJru1K4ITirY2htSOxNECZJCBOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/middleware-retry": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.10.tgz", + "integrity": "sha512-RyhcA3sZIIvAo6r48b2Nx2qfg0OnyohlaV0fw415xrQyx5HQ2bvHl9vs/WBiDXIP49mCfws5wX4308c9Pi/isw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/service-error-classification": "^4.0.5", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.5", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/middleware-serde": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz", + "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/middleware-stack": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz", + "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/node-config-provider": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz", + "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/node-http-handler": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz", + "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/property-provider": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz", + "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/protocol-http": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz", + "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/querystring-builder": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz", + "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-uri-escape": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/querystring-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz", + "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/service-error-classification": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.5.tgz", + "integrity": "sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz", + "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/signature-v4": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.2.tgz", + "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-uri-escape": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/smithy-client": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.1.tgz", + "integrity": "sha512-XPbcHRfd0iwx8dY5XCBCGyI7uweMW0oezYezxXcG8ANgvZ5YPuC6Ylh+n0bTHpdU3SCMZOnhzgVklYz+p3fIhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-endpoint": "^4.1.9", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-stream": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/url-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.4.tgz", + "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-base64": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", + "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-body-length-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", + "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-body-length-node": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", + "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-buffer-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", + "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-config-provider": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", + "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.17.tgz", + "integrity": "sha512-HXq5181qnXmIwB7VrwqwP8rsJybHMoYuJnNoXy4PROs2pfSI4sWDMASF2i+7Lo+u64Y6xowhegcdxczowgJtZg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.17.tgz", + "integrity": "sha512-RfU2A5LjFhEHw4Nwl1GZNitK4AUWu5jGtigAUDoQtfDUvYHpQxcuLw2QGAdKDtKRflIiHSZ8wXBDR36H9R2Ang==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.1.4", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-endpoints": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz", + "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-hex-encoding": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", + "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-middleware": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.4.tgz", + "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-retry": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.5.tgz", + "integrity": "sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.0.5", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-stream": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz", + "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/node-http-handler": "^4.0.6", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-uri-escape": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", + "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/util-utf8": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", + "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.817.0.tgz", + "integrity": "sha512-MNGwOJDQU0jpvsLLPSuPQDhPtDzFTc/k7rLmiKoPrIlgb3Y8pSF4crpJ+ZH3+xod2NWyyOVMEMQeMaKFFdMaKw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/credential-provider-node": "3.817.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.816.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.3", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.6", + "@smithy/middleware-retry": "^4.1.7", + "@smithy/middleware-serde": "^4.0.5", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.14", + "@smithy/util-defaults-mode-node": "^4.0.14", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.817.0.tgz", + "integrity": "sha512-fCh5rUHmWmWDvw70NNoWpE5+BRdtNi45kDnIoeoszqVg7UKF79SlG+qYooUT52HKCgDNHqgbWaXxMOSqd2I/OQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.816.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.3", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.6", + "@smithy/middleware-retry": "^4.1.7", + "@smithy/middleware-serde": "^4.0.5", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.14", + "@smithy/util-defaults-mode-node": "^4.0.14", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/core": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.816.0.tgz", + "integrity": "sha512-Lx50wjtyarzKpMFV6V+gjbSZDgsA/71iyifbClGUSiNPoIQ4OCV0KVOmAAj7mQRVvGJqUMWKVM+WzK79CjbjWA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/core": "^3.3.3", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.816.0.tgz", + "integrity": "sha512-wUJZwRLe+SxPxRV9AENYBLrJZRrNIo+fva7ZzejsC83iz7hdfq6Rv6B/aHEdPwG/nQC4+q7UUvcRPlomyrpsBA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.816.0.tgz", + "integrity": "sha512-gcWGzMQ7yRIF+ljTkR8Vzp7727UY6cmeaPrFQrvcFB8PhOqWpf7g0JsgOf5BSaP8CkkSQcTQHc0C5ZYAzUFwPg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.817.0.tgz", + "integrity": "sha512-kyEwbQyuXE+phWVzloMdkFv6qM6NOon+asMXY5W0fhDKwBz9zQLObDRWBrvQX9lmqq8BbDL1sCfZjOh82Y+RFw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/credential-provider-env": "3.816.0", + "@aws-sdk/credential-provider-http": "3.816.0", + "@aws-sdk/credential-provider-process": "3.816.0", + "@aws-sdk/credential-provider-sso": "3.817.0", + "@aws-sdk/credential-provider-web-identity": "3.817.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.817.0.tgz", + "integrity": "sha512-b5mz7av0Lhavs1Bz3Zb+jrs0Pki93+8XNctnVO0drBW98x1fM4AR38cWvGbM/w9F9Q0/WEH3TinkmrMPrP4T/w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.816.0", + "@aws-sdk/credential-provider-http": "3.816.0", + "@aws-sdk/credential-provider-ini": "3.817.0", + "@aws-sdk/credential-provider-process": "3.816.0", + "@aws-sdk/credential-provider-sso": "3.817.0", + "@aws-sdk/credential-provider-web-identity": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.816.0.tgz", + "integrity": "sha512-9Tm+AxMoV2Izvl5b9tyMQRbBwaex8JP06HN7ZeCXgC5sAsSN+o8dsThnEhf8jKN+uBpT6CLWKN1TXuUMrAmW1A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.817.0.tgz", + "integrity": "sha512-gFUAW3VmGvdnueK1bh6TOcRX+j99Xm0men1+gz3cA4RE+rZGNy1Qjj8YHlv0hPwI9OnTPZquvPzA5fkviGREWg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.817.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/token-providers": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.817.0.tgz", + "integrity": "sha512-A2kgkS9g6NY0OMT2f2EdXHpL17Ym81NhbGnQ8bRXPqESIi7TFypFD2U6osB2VnsFv+MhwM+Ke4PKXSmLun22/A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", + "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-logger": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", + "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", + "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.816.0.tgz", + "integrity": "sha512-bHRSlWZ0xDsFR8E2FwDb//0Ff6wMkVx4O+UKsfyNlAbtqCiiHRt5ANNfKPafr95cN2CCxLxiPvFTFVblQM5TsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@smithy/core": "^3.3.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", + "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/token-providers": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.817.0.tgz", + "integrity": "sha512-CYN4/UO0VaqyHf46ogZzNrVX7jI3/CfiuktwKlwtpKA6hjf2+ivfgHSKzPpgPBcSEfiibA/26EeLuMnB6cpSrQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-endpoints": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", + "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "@smithy/util-endpoints": "^3.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", + "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.816.0.tgz", + "integrity": "sha512-Q6dxmuj4hL7pudhrneWEQ7yVHIQRBFr0wqKLF1opwOi1cIePuoEbPyJ2jkel6PDEv1YMfvsAKaRshp6eNA8VHg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/abort-controller": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz", + "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/config-resolver": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.4.tgz", + "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.5.1.tgz", + "integrity": "sha512-xSw7bZEFKwOKrm/iv8e2BLt2ur98YZdrRD6nII8ditQeUsY2Q1JmIQ0rpILOhaLKYxxG2ivnoOpokzr9qLyDWA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.0.8", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.2", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/credential-provider-imds": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz", + "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/fetch-http-handler": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz", + "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/hash-node": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.4.tgz", + "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/invalid-dependency": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz", + "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/is-array-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", + "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-content-length": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz", + "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-endpoint": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.9.tgz", + "integrity": "sha512-AjDgX4UjORLltD/LZCBQTwjQqEfyrx/GeDTHcYLzIgf87pIT70tMWnN87NQpJru1K4ITirY2htSOxNECZJCBOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-retry": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.10.tgz", + "integrity": "sha512-RyhcA3sZIIvAo6r48b2Nx2qfg0OnyohlaV0fw415xrQyx5HQ2bvHl9vs/WBiDXIP49mCfws5wX4308c9Pi/isw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/service-error-classification": "^4.0.5", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.5", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-serde": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz", + "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/middleware-stack": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz", + "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/node-config-provider": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz", + "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/node-http-handler": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz", + "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/property-provider": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz", + "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/protocol-http": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz", + "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/querystring-builder": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz", + "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-uri-escape": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/querystring-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz", + "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/service-error-classification": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.5.tgz", + "integrity": "sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz", + "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/signature-v4": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.2.tgz", + "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-uri-escape": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/smithy-client": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.1.tgz", + "integrity": "sha512-XPbcHRfd0iwx8dY5XCBCGyI7uweMW0oezYezxXcG8ANgvZ5YPuC6Ylh+n0bTHpdU3SCMZOnhzgVklYz+p3fIhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-endpoint": "^4.1.9", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-stream": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/url-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.4.tgz", + "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-base64": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", + "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-body-length-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", + "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-body-length-node": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", + "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-buffer-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", + "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-config-provider": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", + "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.17.tgz", + "integrity": "sha512-HXq5181qnXmIwB7VrwqwP8rsJybHMoYuJnNoXy4PROs2pfSI4sWDMASF2i+7Lo+u64Y6xowhegcdxczowgJtZg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.17.tgz", + "integrity": "sha512-RfU2A5LjFhEHw4Nwl1GZNitK4AUWu5jGtigAUDoQtfDUvYHpQxcuLw2QGAdKDtKRflIiHSZ8wXBDR36H9R2Ang==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.1.4", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-endpoints": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz", + "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-hex-encoding": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", + "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-middleware": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.4.tgz", + "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-retry": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.5.tgz", + "integrity": "sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.0.5", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-stream": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz", + "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/node-http-handler": "^4.0.6", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-uri-escape": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", + "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/util-utf8": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", + "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz", + "integrity": "sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.621.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.1", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.13", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.11", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.13", + "@smithy/util-defaults-mode-node": "^3.0.13", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz", + "integrity": "sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.621.0", + "@aws-sdk/credential-provider-node": "3.621.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.1", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.13", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.11", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.13", + "@smithy/util-defaults-mode-node": "^3.0.13", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz", + "integrity": "sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.621.0", + "@aws-sdk/core": "3.621.0", + "@aws-sdk/credential-provider-node": "3.621.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.620.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.1", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.13", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.11", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.13", + "@smithy/util-defaults-mode-node": "^3.0.13", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.621.0.tgz", + "integrity": "sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ==", + "dependencies": { + "@smithy/core": "^2.3.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.11", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.817.0.tgz", + "integrity": "sha512-+dzgWGmdmMNDdeSF+VvONN+hwqoGKX5A6Z3+siMO4CIoKWN7u5nDOx/JLjTGdVQji3522pJjJ+o9veQJNWOMRg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@smithy/property-provider": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz", + "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz", + "integrity": "sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.11", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz", + "integrity": "sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.621.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.621.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz", + "integrity": "sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.620.1", "@aws-sdk/credential-provider-http": "3.621.0", + "@aws-sdk/credential-provider-ini": "3.621.0", "@aws-sdk/credential-provider-process": "3.620.1", "@aws-sdk/credential-provider-sso": "3.621.0", "@aws-sdk/credential-provider-web-identity": "3.621.0", "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz", + "integrity": "sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw==", + "dependencies": { + "@aws-sdk/client-sso": "3.621.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.817.0.tgz", + "integrity": "sha512-i6Q2MyktWHG4YG+EmLlnXTgNVjW9/yeNHSKzF55GTho5fjqfU+t9beJfuMWclanRCifamm3N5e5OCm52rVDdTQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.817.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/credential-provider-cognito-identity": "3.817.0", + "@aws-sdk/credential-provider-env": "3.816.0", + "@aws-sdk/credential-provider-http": "3.816.0", + "@aws-sdk/credential-provider-ini": "3.817.0", + "@aws-sdk/credential-provider-node": "3.817.0", + "@aws-sdk/credential-provider-process": "3.816.0", + "@aws-sdk/credential-provider-sso": "3.817.0", + "@aws-sdk/credential-provider-web-identity": "3.817.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.3", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.817.0.tgz", + "integrity": "sha512-fCh5rUHmWmWDvw70NNoWpE5+BRdtNi45kDnIoeoszqVg7UKF79SlG+qYooUT52HKCgDNHqgbWaXxMOSqd2I/OQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.816.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.3", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.6", + "@smithy/middleware-retry": "^4.1.7", + "@smithy/middleware-serde": "^4.0.5", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.14", + "@smithy/util-defaults-mode-node": "^4.0.14", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/core": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.816.0.tgz", + "integrity": "sha512-Lx50wjtyarzKpMFV6V+gjbSZDgsA/71iyifbClGUSiNPoIQ4OCV0KVOmAAj7mQRVvGJqUMWKVM+WzK79CjbjWA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/core": "^3.3.3", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.816.0.tgz", + "integrity": "sha512-wUJZwRLe+SxPxRV9AENYBLrJZRrNIo+fva7ZzejsC83iz7hdfq6Rv6B/aHEdPwG/nQC4+q7UUvcRPlomyrpsBA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.816.0.tgz", + "integrity": "sha512-gcWGzMQ7yRIF+ljTkR8Vzp7727UY6cmeaPrFQrvcFB8PhOqWpf7g0JsgOf5BSaP8CkkSQcTQHc0C5ZYAzUFwPg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/util-stream": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.817.0.tgz", + "integrity": "sha512-kyEwbQyuXE+phWVzloMdkFv6qM6NOon+asMXY5W0fhDKwBz9zQLObDRWBrvQX9lmqq8BbDL1sCfZjOh82Y+RFw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/credential-provider-env": "3.816.0", + "@aws-sdk/credential-provider-http": "3.816.0", + "@aws-sdk/credential-provider-process": "3.816.0", + "@aws-sdk/credential-provider-sso": "3.817.0", + "@aws-sdk/credential-provider-web-identity": "3.817.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.817.0.tgz", + "integrity": "sha512-b5mz7av0Lhavs1Bz3Zb+jrs0Pki93+8XNctnVO0drBW98x1fM4AR38cWvGbM/w9F9Q0/WEH3TinkmrMPrP4T/w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.816.0", + "@aws-sdk/credential-provider-http": "3.816.0", + "@aws-sdk/credential-provider-ini": "3.817.0", + "@aws-sdk/credential-provider-process": "3.816.0", + "@aws-sdk/credential-provider-sso": "3.817.0", + "@aws-sdk/credential-provider-web-identity": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/credential-provider-imds": "^4.0.4", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.816.0.tgz", + "integrity": "sha512-9Tm+AxMoV2Izvl5b9tyMQRbBwaex8JP06HN7ZeCXgC5sAsSN+o8dsThnEhf8jKN+uBpT6CLWKN1TXuUMrAmW1A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.817.0.tgz", + "integrity": "sha512-gFUAW3VmGvdnueK1bh6TOcRX+j99Xm0men1+gz3cA4RE+rZGNy1Qjj8YHlv0hPwI9OnTPZquvPzA5fkviGREWg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.817.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/token-providers": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.817.0.tgz", + "integrity": "sha512-A2kgkS9g6NY0OMT2f2EdXHpL17Ym81NhbGnQ8bRXPqESIi7TFypFD2U6osB2VnsFv+MhwM+Ke4PKXSmLun22/A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", + "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-logger": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", + "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", + "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.816.0.tgz", + "integrity": "sha512-bHRSlWZ0xDsFR8E2FwDb//0Ff6wMkVx4O+UKsfyNlAbtqCiiHRt5ANNfKPafr95cN2CCxLxiPvFTFVblQM5TsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@smithy/core": "^3.3.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", + "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/token-providers": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.817.0.tgz", + "integrity": "sha512-CYN4/UO0VaqyHf46ogZzNrVX7jI3/CfiuktwKlwtpKA6hjf2+ivfgHSKzPpgPBcSEfiibA/26EeLuMnB6cpSrQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/nested-clients": "3.817.0", + "@aws-sdk/types": "3.804.0", + "@smithy/property-provider": "^4.0.2", + "@smithy/shared-ini-file-loader": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-endpoints": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", + "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "@smithy/util-endpoints": "^3.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", + "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.816.0.tgz", + "integrity": "sha512-Q6dxmuj4hL7pudhrneWEQ7yVHIQRBFr0wqKLF1opwOi1cIePuoEbPyJ2jkel6PDEv1YMfvsAKaRshp6eNA8VHg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/abort-controller": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz", + "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/config-resolver": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.4.tgz", + "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.5.1.tgz", + "integrity": "sha512-xSw7bZEFKwOKrm/iv8e2BLt2ur98YZdrRD6nII8ditQeUsY2Q1JmIQ0rpILOhaLKYxxG2ivnoOpokzr9qLyDWA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.0.8", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.2", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/credential-provider-imds": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz", + "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/fetch-http-handler": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz", + "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/hash-node": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.4.tgz", + "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/invalid-dependency": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz", + "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/is-array-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", + "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/middleware-content-length": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz", + "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/middleware-endpoint": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.9.tgz", + "integrity": "sha512-AjDgX4UjORLltD/LZCBQTwjQqEfyrx/GeDTHcYLzIgf87pIT70tMWnN87NQpJru1K4ITirY2htSOxNECZJCBOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/middleware-retry": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.10.tgz", + "integrity": "sha512-RyhcA3sZIIvAo6r48b2Nx2qfg0OnyohlaV0fw415xrQyx5HQ2bvHl9vs/WBiDXIP49mCfws5wX4308c9Pi/isw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/service-error-classification": "^4.0.5", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.5", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/middleware-serde": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz", + "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/middleware-stack": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz", + "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/node-config-provider": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz", + "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/node-http-handler": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz", + "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/property-provider": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz", + "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/protocol-http": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz", + "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/querystring-builder": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz", + "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-uri-escape": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/querystring-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz", + "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/service-error-classification": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.5.tgz", + "integrity": "sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz", + "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/signature-v4": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.2.tgz", + "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-uri-escape": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/smithy-client": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.1.tgz", + "integrity": "sha512-XPbcHRfd0iwx8dY5XCBCGyI7uweMW0oezYezxXcG8ANgvZ5YPuC6Ylh+n0bTHpdU3SCMZOnhzgVklYz+p3fIhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-endpoint": "^4.1.9", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-stream": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/url-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.4.tgz", + "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-base64": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", + "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-body-length-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", + "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-body-length-node": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", + "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-buffer-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", + "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-config-provider": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", + "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.17.tgz", + "integrity": "sha512-HXq5181qnXmIwB7VrwqwP8rsJybHMoYuJnNoXy4PROs2pfSI4sWDMASF2i+7Lo+u64Y6xowhegcdxczowgJtZg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.17.tgz", + "integrity": "sha512-RfU2A5LjFhEHw4Nwl1GZNitK4AUWu5jGtigAUDoQtfDUvYHpQxcuLw2QGAdKDtKRflIiHSZ8wXBDR36H9R2Ang==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.1.4", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-endpoints": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz", + "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-hex-encoding": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", + "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-middleware": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.4.tgz", + "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-retry": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.5.tgz", + "integrity": "sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.0.5", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-stream": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz", + "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/node-http-handler": "^4.0.6", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-uri-escape": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", + "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/util-utf8": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", + "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-handler-node": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.804.0.tgz", + "integrity": "sha512-LZddQVBUCB86tZtLJRhqiDyIqr4hfRxZCcUp1fZSfpBMcf419lgcFRGWMR3J/kCWHQ0G05aor7fSeoeaxskuNQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/eventstream-codec": "^4.0.2", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-handler-node/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-eventstream": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.804.0.tgz", + "integrity": "sha512-3lPxZshOJoKSxIMUq8FCiIre+FZ1g/t+O7DHwOMB6EuzJ8lp5QyUeh1wE5iD/gB8VhWZoj90rGIaWCmT8ccEuA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-eventstream/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-eventstream/node_modules/@smithy/protocol-http": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz", + "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-eventstream/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", + "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", + "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.817.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.817.0.tgz", + "integrity": "sha512-vQ2E06A48STJFssueJQgxYD8lh1iGJoLJnHdshRDWOQb8gy1wVQR+a7MkPGhGR6lGoS0SCnF/Qp6CZhnwLsqsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.816.0", + "@aws-sdk/middleware-host-header": "3.804.0", + "@aws-sdk/middleware-logger": "3.804.0", + "@aws-sdk/middleware-recursion-detection": "3.804.0", + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/region-config-resolver": "3.808.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@aws-sdk/util-user-agent-browser": "3.804.0", + "@aws-sdk/util-user-agent-node": "3.816.0", + "@smithy/config-resolver": "^4.1.2", + "@smithy/core": "^3.3.3", + "@smithy/fetch-http-handler": "^5.0.2", + "@smithy/hash-node": "^4.0.2", + "@smithy/invalid-dependency": "^4.0.2", + "@smithy/middleware-content-length": "^4.0.2", + "@smithy/middleware-endpoint": "^4.1.6", + "@smithy/middleware-retry": "^4.1.7", + "@smithy/middleware-serde": "^4.0.5", + "@smithy/middleware-stack": "^4.0.2", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/node-http-handler": "^4.0.4", + "@smithy/protocol-http": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/url-parser": "^4.0.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.14", + "@smithy/util-defaults-mode-node": "^4.0.14", + "@smithy/util-endpoints": "^3.0.4", + "@smithy/util-middleware": "^4.0.2", + "@smithy/util-retry": "^4.0.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/core": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.816.0.tgz", + "integrity": "sha512-Lx50wjtyarzKpMFV6V+gjbSZDgsA/71iyifbClGUSiNPoIQ4OCV0KVOmAAj7mQRVvGJqUMWKVM+WzK79CjbjWA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/core": "^3.3.3", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/property-provider": "^4.0.2", + "@smithy/protocol-http": "^5.1.0", + "@smithy/signature-v4": "^5.1.0", + "@smithy/smithy-client": "^4.2.6", + "@smithy/types": "^4.2.0", + "@smithy/util-middleware": "^4.0.2", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", + "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-logger": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", + "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", + "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.816.0.tgz", + "integrity": "sha512-bHRSlWZ0xDsFR8E2FwDb//0Ff6wMkVx4O+UKsfyNlAbtqCiiHRt5ANNfKPafr95cN2CCxLxiPvFTFVblQM5TsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@aws-sdk/util-endpoints": "3.808.0", + "@smithy/core": "^3.3.3", + "@smithy/protocol-http": "^5.1.0", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", + "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/types": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", + "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": { + "version": "3.808.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", + "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "@smithy/util-endpoints": "^3.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", + "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.804.0", + "@smithy/types": "^4.2.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.816.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.816.0.tgz", + "integrity": "sha512-Q6dxmuj4hL7pudhrneWEQ7yVHIQRBFr0wqKLF1opwOi1cIePuoEbPyJ2jkel6PDEv1YMfvsAKaRshp6eNA8VHg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.816.0", + "@aws-sdk/types": "3.804.0", + "@smithy/node-config-provider": "^4.1.1", + "@smithy/types": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz", - "integrity": "sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/abort-controller": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz", + "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.621.0", - "@aws-sdk/credential-provider-ini": "3.621.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.621.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", - "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/config-resolver": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.4.tgz", + "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz", - "integrity": "sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.5.1.tgz", + "integrity": "sha512-xSw7bZEFKwOKrm/iv8e2BLt2ur98YZdrRD6nII8ditQeUsY2Q1JmIQ0rpILOhaLKYxxG2ivnoOpokzr9qLyDWA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.0.8", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.2", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/credential-provider-imds": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz", + "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/fetch-http-handler": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz", + "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/hash-node": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.4.tgz", + "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/invalid-dependency": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz", + "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/is-array-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", + "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-content-length": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz", + "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-endpoint": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.9.tgz", + "integrity": "sha512-AjDgX4UjORLltD/LZCBQTwjQqEfyrx/GeDTHcYLzIgf87pIT70tMWnN87NQpJru1K4ITirY2htSOxNECZJCBOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-retry": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.10.tgz", + "integrity": "sha512-RyhcA3sZIIvAo6r48b2Nx2qfg0OnyohlaV0fw415xrQyx5HQ2bvHl9vs/WBiDXIP49mCfws5wX4308c9Pi/isw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/service-error-classification": "^4.0.5", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.5", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-serde": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz", + "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-stack": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz", + "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-config-provider": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz", + "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz", + "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/property-provider": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz", + "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/protocol-http": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz", + "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/querystring-builder": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz", + "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "@smithy/util-uri-escape": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/querystring-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz", + "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/service-error-classification": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.5.tgz", + "integrity": "sha512-LvcfhrnCBvCmTee81pRlh1F39yTS/+kYleVeLCwNtkY8wtGg8V/ca9rbZZvYIl8OjlMtL6KIjaiL/lgVqHD2nA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz", + "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/signature-v4": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.2.tgz", + "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-uri-escape": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/smithy-client": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.1.tgz", + "integrity": "sha512-XPbcHRfd0iwx8dY5XCBCGyI7uweMW0oezYezxXcG8ANgvZ5YPuC6Ylh+n0bTHpdU3SCMZOnhzgVklYz+p3fIhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.5.1", + "@smithy/middleware-endpoint": "^4.1.9", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-stream": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/url-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.4.tgz", + "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-base64": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", + "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-body-length-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", + "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-body-length-node": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", + "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-buffer-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", + "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-config-provider": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", + "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.17.tgz", + "integrity": "sha512-HXq5181qnXmIwB7VrwqwP8rsJybHMoYuJnNoXy4PROs2pfSI4sWDMASF2i+7Lo+u64Y6xowhegcdxczowgJtZg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.17.tgz", + "integrity": "sha512-RfU2A5LjFhEHw4Nwl1GZNitK4AUWu5jGtigAUDoQtfDUvYHpQxcuLw2QGAdKDtKRflIiHSZ8wXBDR36H9R2Ang==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.1.4", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/smithy-client": "^4.4.1", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-endpoints": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz", + "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-hex-encoding": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", + "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.621.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", - "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-middleware": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.4.tgz", + "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", - "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-retry": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.5.tgz", + "integrity": "sha512-V7MSjVDTlEt/plmOFBn1762Dyu5uqMrV2Pl2X0dYk4XvWfdWJNe9Bs5Bzb56wkCuiWjSfClVMGcsuKrGj7S/yg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@smithy/service-error-classification": "^4.0.5", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", - "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-stream": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz", + "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", + "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/node-http-handler": "^4.0.6", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", - "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-uri-escape": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", + "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", - "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", + "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^4.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { @@ -673,83 +4578,489 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz", + "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", + "dependencies": { + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@davidsouther/jiffies": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@davidsouther/jiffies/-/jiffies-2.2.5.tgz", + "integrity": "sha512-ZbuL28BWr7NfkRiW0PUSZJn5INGGRGHckqB1k05O+TPAXY1iiYaDhGaeYfxREjvlgfUQr+qXjwOawFafXjLlZw==", + "dependencies": { + "sass": "^1.49.9", + "typescript": "^4.7.1" + }, + "engines": { + "node": ">=20.0.9" + } + }, + "node_modules/@dqbd/tiktoken": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@dqbd/tiktoken/-/tiktoken-1.0.13.tgz", + "integrity": "sha512-941kjlHjfI97l6NuH/AwuXV4mHuVnRooDcHNSlzi98hz+4ug3wT4gJcWjSwSZHqeGAEn90lC9sFD+8a9d5Jvxg==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz", - "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "@smithy/util-endpoints": "^2.0.5", - "tslib": "^2.6.2" - }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=16.0.0" + "node": ">=18" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.568.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", - "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=16.0.0" + "node": ">=18" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", - "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", - "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@davidsouther/jiffies": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@davidsouther/jiffies/-/jiffies-2.1.9.tgz", - "integrity": "sha512-uYFids/9YZi98B6s5GdmvtHxz0bTsI+Ncs7/YmgcjhBAega2jZItWl/+5VZ3xEwPliBWX8dkAXiLZwE1P41ZVw==", - "dependencies": { - "sass": "^1.49.9", - "typescript": "^4.7.1" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=20.0.9" + "node": ">=18" } }, - "node_modules/@dqbd/tiktoken": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@dqbd/tiktoken/-/tiktoken-1.0.13.tgz", - "integrity": "sha512-941kjlHjfI97l6NuH/AwuXV4mHuVnRooDcHNSlzi98hz+4ug3wT4gJcWjSwSZHqeGAEn90lC9sFD+8a9d5Jvxg==" + "node_modules/@esbuild/win32-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@mixmark-io/domino": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@mixmark-io/domino/-/domino-2.2.0.tgz", + "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==", + "license": "BSD-2-Clause" }, "node_modules/@smithy/abort-controller": { "version": "3.1.1", @@ -812,65 +5123,145 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", - "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz", + "integrity": "sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^3.3.0", - "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/util-hex-encoding": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", + "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "license": "Apache-2.0", + "dependencies": { "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz", - "integrity": "sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.4.tgz", + "integrity": "sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.4", - "@smithy/types": "^3.3.0", + "@smithy/eventstream-serde-universal": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", - "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.2.tgz", + "integrity": "sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz", - "integrity": "sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.4.tgz", + "integrity": "sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==", + "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.4", - "@smithy/types": "^3.3.0", + "@smithy/eventstream-serde-universal": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz", - "integrity": "sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.4.tgz", + "integrity": "sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^3.1.2", - "@smithy/types": "^3.3.0", + "@smithy/eventstream-codec": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/types": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", + "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@smithy/fetch-http-handler": { @@ -1342,6 +5733,12 @@ "form-data": "^4.0.0" } }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "license": "MIT" + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -1406,20 +5803,16 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, - "node_modules/base-64": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", - "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -1465,29 +5858,26 @@ "node": ">=4" } }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "engines": { - "node": "*" - } - }, "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=18.17" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" @@ -1558,6 +5948,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1569,14 +5965,6 @@ "node": ">= 0.8" } }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "engines": { - "node": "*" - } - }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -1611,15 +5999,6 @@ "node": ">=0.4.0" } }, - "node_modules/digest-fetch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/digest-fetch/-/digest-fetch-1.3.0.tgz", - "integrity": "sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==", - "dependencies": { - "base-64": "^0.1.0", - "md5": "^2.3.0" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -1658,11 +6037,6 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/domino": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", - "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==" - }, "node_modules/domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", @@ -1689,6 +6063,19 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1700,6 +6087,46 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/esbuild": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" + } + }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -1924,9 +6351,9 @@ } }, "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -1934,11 +6361,12 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, "node_modules/humanize-ms": { @@ -1949,6 +6377,18 @@ "ms": "^2.0.0" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/immutable": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", @@ -1965,11 +6405,6 @@ "node": ">=8" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -2046,16 +6481,6 @@ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -2145,22 +6570,33 @@ } }, "node_modules/openai": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.29.1.tgz", - "integrity": "sha512-vvKRIgB4/7w48PGVbeR8OceH/PT6fRo4sTIjRC7+y7WoK7by1R0cXs2SZRx4KsEh0ZB8J0eqdVIdRgs8XzeoEg==", + "version": "4.104.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", + "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", + "license": "Apache-2.0", "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", - "digest-fetch": "^1.3.0", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7", - "web-streams-polyfill": "^3.2.1" + "node-fetch": "^2.6.7" }, "bin": { "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } } }, "node_modules/parse5": { @@ -2186,6 +6622,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -2221,6 +6669,12 @@ "node": ">=0.10.0" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/sass": { "version": "1.72.0", "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", @@ -2310,6 +6764,21 @@ "node": ">=4" } }, + "node_modules/temporal-polyfill": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.2.5.tgz", + "integrity": "sha512-ye47xp8Cb0nDguAhrrDS1JT1SzwEV9e26sSsrWzVu+yPZ7LzceEcH0i2gci9jWfOfSCCgM3Qv5nOYShVUUFUXA==", + "license": "MIT", + "dependencies": { + "temporal-spec": "^0.2.4" + } + }, + "node_modules/temporal-spec": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.2.4.tgz", + "integrity": "sha512-lDMFv4nKQrSjlkHKAlHVqKrBG4DyFfa9F74cmBZ3Iy3ed8yvWnlWSIdi4IKfSqwmazAohBNwiN64qGx4y5Q3IQ==", + "license": "ISC" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2332,11 +6801,12 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/turndown": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.1.3.tgz", - "integrity": "sha512-Z3/iJ6IWh8VBiACWQJaA5ulPQE5E1QwvBHj00uGzdQxdRnd8fh1DPqNOJqzQDu6DkOstORrtXzf/9adB+vMtEA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/turndown/-/turndown-7.2.0.tgz", + "integrity": "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A==", + "license": "MIT", "dependencies": { - "domino": "^2.1.6" + "@mixmark-io/domino": "^2.2.0" } }, "node_modules/typescript": { @@ -2351,6 +6821,15 @@ "node": ">=4.2.0" } }, + "node_modules/undici": { + "version": "6.21.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", + "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -2404,19 +6883,32 @@ "follow-redirects": "^1.14.8" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -2426,6 +6918,102 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/wink-bm25-text-search": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/wink-bm25-text-search/-/wink-bm25-text-search-3.1.2.tgz", + "integrity": "sha512-s+xY0v/yurUhiUop/XZnf9IvO9XVuwI14X+QTW0JqlmQCg+9ZgVXTMudXKqZuQVsnm5J+RjLnqrOflnD5BLApA==", + "license": "MIT", + "dependencies": { + "wink-eng-lite-web-model": "^1.4.3", + "wink-helpers": "^2.0.0", + "wink-nlp": "^1.12.2", + "wink-nlp-utils": "^2.0.4" + } + }, + "node_modules/wink-bm25-text-search/node_modules/wink-nlp": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/wink-nlp/-/wink-nlp-1.14.3.tgz", + "integrity": "sha512-lvY5iCs3T8I34F8WKS70+2P0U9dWLn3vdPf/Z+m2VK14N7OmqnPzmHfh3moHdusajoQ37Em39z0IZB9K4x/96A==", + "license": "MIT" + }, + "node_modules/wink-distance": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/wink-distance/-/wink-distance-2.0.2.tgz", + "integrity": "sha512-pyEhUB/OKFYcgOC4J6E+c+gwVA/8qg2s5n49mIcUsJZM5iDSa17uOxRQXR4rvfp+gbj55K/I08FwjFBwb6fq3g==", + "license": "MIT", + "dependencies": { + "wink-helpers": "^2.0.0", + "wink-jaro-distance": "^2.0.0" + } + }, + "node_modules/wink-eng-lite-web-model": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/wink-eng-lite-web-model/-/wink-eng-lite-web-model-1.8.1.tgz", + "integrity": "sha512-M2tSOU/rVNkDj8AS8IoKJaM7apJJjS0cN+hE8CPazfnB4A/ojyc9+7RMPk18UOiIdSyWk7MR6w8z9lWix2l5tA==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/wink-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wink-helpers/-/wink-helpers-2.0.0.tgz", + "integrity": "sha512-I/ZzXrHcNRXuoeFJmp2vMVqDI6UCK02Tds1WP4kSGAmx520gjL1BObVzF7d2ps24tyHIly9ngdB2jwhlFUjPvg==", + "license": "MIT" + }, + "node_modules/wink-jaro-distance": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wink-jaro-distance/-/wink-jaro-distance-2.0.0.tgz", + "integrity": "sha512-9bcUaXCi9N8iYpGWbFkf83OsBkg17r4hEyxusEzl+nnReLRPqxhB9YNeRn3g54SYnVRNXP029lY3HDsbdxTAuA==", + "license": "MIT" + }, + "node_modules/wink-nlp": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/wink-nlp/-/wink-nlp-2.3.2.tgz", + "integrity": "sha512-PsK/nOjI0nfC23HbpJa/eeca+wvmx2SVvH2hIhOJSDe0hbsyOwwImmRgYvv6BwsGN7/8aCHoeNzCac9xAsrvaw==", + "license": "MIT" + }, + "node_modules/wink-nlp-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wink-nlp-utils/-/wink-nlp-utils-2.1.0.tgz", + "integrity": "sha512-b7PcRhEBNxQmsmht70jLOkwYUyie3da4/cgEXL+CumYO5b/nwV+W7fuMXToh5BtGq1RABznmc2TGTp1Qf/JUXg==", + "license": "MIT", + "dependencies": { + "wink-distance": "^2.0.1", + "wink-eng-lite-web-model": "^1.4.3", + "wink-helpers": "^2.0.0", + "wink-nlp": "^1.12.0", + "wink-porter2-stemmer": "^2.0.1", + "wink-tokenizer": "^5.2.3" + } + }, + "node_modules/wink-nlp-utils/node_modules/wink-nlp": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/wink-nlp/-/wink-nlp-1.14.3.tgz", + "integrity": "sha512-lvY5iCs3T8I34F8WKS70+2P0U9dWLn3vdPf/Z+m2VK14N7OmqnPzmHfh3moHdusajoQ37Em39z0IZB9K4x/96A==", + "license": "MIT" + }, + "node_modules/wink-porter2-stemmer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wink-porter2-stemmer/-/wink-porter2-stemmer-2.0.1.tgz", + "integrity": "sha512-0g+RkkqhRXFmSpJQStVXW5N/WsshWpJXsoDRW7DwVkGI2uDT6IBCoq3xdH5p6IHLaC6ygk7RWUsUx4alKxoagQ==", + "license": "MIT" + }, + "node_modules/wink-tokenizer": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/wink-tokenizer/-/wink-tokenizer-5.3.0.tgz", + "integrity": "sha512-O/yAw0g3FmSgeeQuYAJJfP7fVPB4A6ay0018qASh79aWmIOyPYy4j4r9EQT8xBjicja6lCLvgRVAybmEBaATQA==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^9.0.0" + } + }, + "node_modules/wink-tokenizer/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -2480,6 +7068,18 @@ "node": ">=10" } }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/.tools/ailly/package.json b/.tools/ailly/package.json index d5fad4e8cbe..946cba4c118 100644 --- a/.tools/ailly/package.json +++ b/.tools/ailly/package.json @@ -1,7 +1,7 @@ { "name": "ailly-aws-doc-sdk-examples", "dependencies": { - "@ailly/cli": "1.2.5-rc1", + "@ailly/cli": "1.6.0", "@ailly/core": "1.2.5-rc1" } } From b8974fbd9fb80d21563844b7ec8a029fd831d28e Mon Sep 17 00:00:00 2001 From: Brian Murray <40031786+brmur@users.noreply.github.com> Date: Mon, 2 Jun 2025 17:15:33 +0100 Subject: [PATCH 19/33] Entity resolution js (#7438) --- .../metadata/entityresolution_metadata.yaml | 97 +++ .../example_code/entityresolution/README.md | 123 +++ .../actions/check-workflow-status.js | 38 + .../actions/create-matching-workflow.js | 78 ++ .../actions/create-schema-mapping.js | 75 ++ .../actions/delete-matching-workflow.js | 37 + .../actions/delete-schema-mapping.js | 37 + .../actions/get-matching-job.js | 40 + .../actions/get-schema-mapping.js | 42 ++ .../actions/list-schema-mappings.js | 46 ++ .../actions/start-matching-job.js | 38 + .../actions/tag-entity-resource.js | 42 ++ .../example_code/entityresolution/data.csv | 5 + .../example_code/entityresolution/data.json | 5 + .../example_code/entityresolution/hello.js | 37 + .../example_code/entityresolution/inputs.json | 14 + .../entityresolution/package.json | 21 + .../scenarios/entity-resolution-basics.js | 706 ++++++++++++++++++ .../check-workflow-status.integration.test.js | 59 ++ .../create-schema-mapping.integration.test.js | 32 + ...lete-matching-workflow.integration.test.js | 18 + .../delete-schema-mapping.integration.test.js | 18 + ...tity-resolution-basics.integration.test.js | 15 + .../get-matching-job.integration.test.js | 19 + .../tests/hello.integration.test.js | 15 + .../list-schema-mappings.integration.test.js | 19 + .../entity-resolution-basics-template.yml | 262 +++++++ 27 files changed, 1938 insertions(+) create mode 100644 javascriptv3/example_code/entityresolution/README.md create mode 100644 javascriptv3/example_code/entityresolution/actions/check-workflow-status.js create mode 100644 javascriptv3/example_code/entityresolution/actions/create-matching-workflow.js create mode 100644 javascriptv3/example_code/entityresolution/actions/create-schema-mapping.js create mode 100644 javascriptv3/example_code/entityresolution/actions/delete-matching-workflow.js create mode 100644 javascriptv3/example_code/entityresolution/actions/delete-schema-mapping.js create mode 100644 javascriptv3/example_code/entityresolution/actions/get-matching-job.js create mode 100644 javascriptv3/example_code/entityresolution/actions/get-schema-mapping.js create mode 100644 javascriptv3/example_code/entityresolution/actions/list-schema-mappings.js create mode 100644 javascriptv3/example_code/entityresolution/actions/start-matching-job.js create mode 100644 javascriptv3/example_code/entityresolution/actions/tag-entity-resource.js create mode 100644 javascriptv3/example_code/entityresolution/data.csv create mode 100644 javascriptv3/example_code/entityresolution/data.json create mode 100644 javascriptv3/example_code/entityresolution/hello.js create mode 100644 javascriptv3/example_code/entityresolution/inputs.json create mode 100644 javascriptv3/example_code/entityresolution/package.json create mode 100644 javascriptv3/example_code/entityresolution/scenarios/entity-resolution-basics.js create mode 100644 javascriptv3/example_code/entityresolution/tests/check-workflow-status.integration.test.js create mode 100644 javascriptv3/example_code/entityresolution/tests/create-schema-mapping.integration.test.js create mode 100644 javascriptv3/example_code/entityresolution/tests/delete-matching-workflow.integration.test.js create mode 100644 javascriptv3/example_code/entityresolution/tests/delete-schema-mapping.integration.test.js create mode 100644 javascriptv3/example_code/entityresolution/tests/entity-resolution-basics.integration.test.js create mode 100644 javascriptv3/example_code/entityresolution/tests/get-matching-job.integration.test.js create mode 100644 javascriptv3/example_code/entityresolution/tests/hello.integration.test.js create mode 100644 javascriptv3/example_code/entityresolution/tests/list-schema-mappings.integration.test.js create mode 100644 resources/cfn/entity-resolution-basics/entity-resolution-basics-template.yml diff --git a/.doc_gen/metadata/entityresolution_metadata.yaml b/.doc_gen/metadata/entityresolution_metadata.yaml index b318b6c2a41..a992fe8359e 100644 --- a/.doc_gen/metadata/entityresolution_metadata.yaml +++ b/.doc_gen/metadata/entityresolution_metadata.yaml @@ -12,6 +12,14 @@ entityresolution_Hello: - description: snippet_tags: - entityres.java2_hello.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - javascript.v3.entity-resolution.hello services: entityresolution: {listMatchingWorkflows} entityresolution_DeleteSchemaMapping: @@ -24,6 +32,14 @@ entityresolution_DeleteSchemaMapping: - description: snippet_tags: - entityres.java2_delete_mappings.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.delete.schema-mapping services: entityresolution: {DeleteSchemaMapping} entityresolution_TagEntityResource: @@ -36,6 +52,14 @@ entityresolution_TagEntityResource: - description: snippet_tags: - entityres.java2_tag_resource.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.tag.entity-resource services: entityresolution: {TagEntityResource} entityresolution_CreateMatchingWorkflow: @@ -48,6 +72,14 @@ entityresolution_CreateMatchingWorkflow: - description: snippet_tags: - entityres.java2_create_matching_workflow.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.create-matching-workflow services: entityresolution: {CreateMatchingWorkflow} entityresolution_CheckWorkflowStatus: @@ -60,6 +92,14 @@ entityresolution_CheckWorkflowStatus: - description: snippet_tags: - entityres.java2_check_matching_workflow.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.check-workflow-status services: entityresolution: {CheckWorkflowStatus} entityresolution_StartMatchingJob: @@ -72,6 +112,14 @@ entityresolution_StartMatchingJob: - description: snippet_tags: - entityres.java2_start_job.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.start.matching-job services: entityresolution: {StartMatchingJob} entityresolution_GetMatchingJob: @@ -84,6 +132,14 @@ entityresolution_GetMatchingJob: - description: snippet_tags: - entityres.java2_get_job.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.get.matching-job services: entityresolution: {GetMatchingJob} entityresolution_DeleteMatchingWorkflow: @@ -96,6 +152,14 @@ entityresolution_DeleteMatchingWorkflow: - description: snippet_tags: - entityres.java2_delete_matching_workflow.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.delete-matching-workflow services: entityresolution: {DeleteMatchingWorkflow} entityresolution_ListSchemaMappings: @@ -108,6 +172,14 @@ entityresolution_ListSchemaMappings: - description: snippet_tags: - entityres.java2_list_mappings.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.list.schema-mapping services: entityresolution: {ListSchemaMappings} entityresolution_GetSchemaMapping: @@ -120,6 +192,14 @@ entityresolution_GetSchemaMapping: - description: snippet_tags: - entityres.java2_get_schema_mapping.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.get.schema-mapping services: entityresolution: {GetSchemaMapping} entityresolution_CreateSchemaMapping: @@ -132,6 +212,14 @@ entityresolution_CreateSchemaMapping: - description: snippet_tags: - entityres.java2_create_schema.main + JavaScript: + versions: + - sdk_version: 3 + github: javascriptv3/example_code/entityresolution + excerpts: + - description: + snippet_tags: + - entity-resolution.JavaScriptv3.create-schema-mapping services: entityresolution: {CreateSchemaMapping} entityresolution_Scenario: @@ -158,5 +246,14 @@ entityresolution_Scenario: - description: A wrapper class for &ERlong; SDK methods. snippet_tags: - entityres.java2_actions.main + JavaScript: + versions: + - sdk_version: 2 + github: javav2/example_code/entityresolution + sdkguide: + excerpts: + - description: Run an interactive scenario demonstrating &ERlong; features. + snippet_tags: + - entity-resolution.JavaScriptv3.scenario.basics services: entityresolution: {} diff --git a/javascriptv3/example_code/entityresolution/README.md b/javascriptv3/example_code/entityresolution/README.md new file mode 100644 index 00000000000..b165d48fdca --- /dev/null +++ b/javascriptv3/example_code/entityresolution/README.md @@ -0,0 +1,123 @@ +# AWS Entity Resolution code examples for the SDK for JavaScript (v3) + +## Overview + +Shows how to use the AWS SDK for JavaScript (v3) to work with AWS Entity Resolution. + + + + +_AWS Entity Resolution helps organizations extract, link, and organize information from multiple data sources._ + +## ⚠ Important + +* Running this code might result in charges to your AWS account. For more details, see [AWS Pricing](https://aws.amazon.com/pricing/) and [Free Tier](https://aws.amazon.com/free/). +* Running the tests might result in charges to your AWS account. +* We recommend that you grant your code least privilege. At most, grant only the minimum permissions required to perform the task. For more information, see [Grant least privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). +* This code is not tested in every AWS Region. For more information, see [AWS Regional Services](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services). + + + + +## Code examples + +### Prerequisites + +For prerequisites, see the [README](../../README.md#Prerequisites) in the `javascriptv3` folder. + + + + + +### Get started + +- [Hello AWS Entity Resolution](hello.js#L4) (`listMatchingWorkflows`) + + +### Single actions + +Code excerpts that show you how to call individual service functions. + +- [CreateMatchingWorkflow](actions/create-matching-workflow.js#L4) +- [CreateSchemaMapping](actions/create-schema-mapping.js#L4) +- [DeleteMatchingWorkflow](actions/delete-matching-workflow.js#L4) +- [DeleteSchemaMapping](actions/delete-schema-mapping.js#L4) +- [GetMatchingJob](actions/get-matching-job.js#L4) +- [GetSchemaMapping](actions/get-schema-mapping.js#L4) +- [ListSchemaMappings](actions/list-schema-mappings.js#L4) +- [StartMatchingJob](actions/start-matching-job.js#L4) +- [TagEntityResource](actions/tag-entity-resource.js#L4) + + + + + +## Run the examples + +### Instructions + +**Note**: All code examples are written in ECMAscript 6 (ES6). For guidelines on converting to CommonJS, see +[JavaScript ES6/CommonJS syntax](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/sdk-examples-javascript-syntax.html). + +**Run a single action** + +```bash +node ./actions/ +``` + +**Run a scenario** + +Most scenarios can be run with the following command: +```bash +node ./scenarios/ +``` + +**Run with options** + +Some actions and scenarios can be run with options from the command line: +```bash +node ./scenarios/ --option1 --option2 +``` +[util.parseArgs](https://nodejs.org/api/util.html#utilparseargsconfig) is used to configure +these options. For the specific options available to each script, see the `parseArgs` usage +for that file. + + + + +#### Hello AWS Entity Resolution + +This example shows you how to get started using AWS Entity Resolution. + +```bash +node ./hello.js +``` + + +### Tests + +⚠ Running tests might result in charges to your AWS account. + + +To find instructions for running these tests, see the [README](../../README.md#Tests) +in the `javascriptv3` folder. + + + + + + +## Additional resources + +- [AWS Entity Resolution User Guide](https://docs.aws.amazon.com/entityresolution/latest/userguide/what-is-service.html) +- [AWS Entity Resolution API Reference](https://docs.aws.amazon.com/entityresolution/latest/apireference/Welcome.html) +- [SDK for JavaScript (v3) AWS Entity Resolution reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/entityresolution/) + + + + +--- + +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 diff --git a/javascriptv3/example_code/entityresolution/actions/check-workflow-status.js b/javascriptv3/example_code/entityresolution/actions/check-workflow-status.js new file mode 100644 index 00000000000..37b5ac415f5 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/check-workflow-status.js @@ -0,0 +1,38 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.check-workflow-status] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + GetMatchingJobCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async ({ workflowName, jobId }) => { + const getMatchingJobParams = { + workflowName: `${data.inputs.workflowName}`, + jobId: `${data.inputs.jobId}`, + }; + try { + const command = new GetMatchingJobCommand(getMatchingJobParams); + const response = await erClient.send(command); + console.log(`Job status: ${response.status}`); + } catch (error) { + console.log("error ", error.message); + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.check-workflow-status] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/create-matching-workflow.js b/javascriptv3/example_code/entityresolution/actions/create-matching-workflow.js new file mode 100644 index 00000000000..5d053a82efc --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/create-matching-workflow.js @@ -0,0 +1,78 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.create-matching-workflow] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + CreateMatchingWorkflowCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + const createMatchingWorkflowParams = { + roleArn: `${data.inputs.roleArn}`, + workflowName: `${data.inputs.workflowName}`, + description: "Created by using the AWS SDK for JavaScript (v3).", + inputSourceConfig: [ + { + inputSourceARN: `${data.inputs.JSONinputSourceARN}`, + schemaName: `${data.inputs.schemaNameJson}`, + applyNormalization: false, + }, + { + inputSourceARN: `${data.inputs.CSVinputSourceARN}`, + schemaName: `${data.inputs.schemaNameCSV}`, + applyNormalization: false, + }, + ], + outputSourceConfig: [ + { + outputS3Path: `s3://${data.inputs.myBucketName}/eroutput`, + output: [ + { + name: "id", + }, + { + name: "name", + }, + { + name: "email", + }, + { + name: "phone", + }, + ], + applyNormalization: false, + }, + ], + resolutionTechniques: { resolutionType: "ML_MATCHING" }, + }; + try { + const command = new CreateMatchingWorkflowCommand( + createMatchingWorkflowParams, + ); + const response = await erClient.send(command); + + console.log( + `Workflow created successfully.\n The workflow ARN is: ${response.workflowArn}`, + ); + } catch (caught) { + console.error(caught.message); + throw caught; + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.create-matching-workflow] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/create-schema-mapping.js b/javascriptv3/example_code/entityresolution/actions/create-schema-mapping.js new file mode 100644 index 00000000000..43acdb709c9 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/create-schema-mapping.js @@ -0,0 +1,75 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.create-schema-mapping] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + CreateSchemaMappingCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + const createSchemaMappingParamsJson = { + schemaName: `${data.inputs.schemaNameJson}`, + mappedInputFields: [ + { + fieldName: "id", + type: "UNIQUE_ID", + }, + { + fieldName: "name", + type: "NAME", + }, + { + fieldName: "email", + type: "EMAIL_ADDRESS", + }, + ], + }; + const createSchemaMappingParamsCSV = { + schemaName: `${data.inputs.schemaNameCSV}`, + mappedInputFields: [ + { + fieldName: "id", + type: "UNIQUE_ID", + }, + { + fieldName: "name", + type: "NAME", + }, + { + fieldName: "email", + type: "EMAIL_ADDRESS", + }, + { + fieldName: "phone", + type: "PROVIDER_ID", + subType: "STRING", + }, + ], + }; + try { + const command = new CreateSchemaMappingCommand( + createSchemaMappingParamsJson, + ); + const response = await erClient.send(command); + console.log("The JSON schema mapping name is ", response.schemaName); + } catch (error) { + console.log("error ", error.message); + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.create-schema-mapping] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/delete-matching-workflow.js b/javascriptv3/example_code/entityresolution/actions/delete-matching-workflow.js new file mode 100644 index 00000000000..c1a898c302e --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/delete-matching-workflow.js @@ -0,0 +1,37 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.delete-matching-workflow] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + DeleteMatchingWorkflowCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + try { + const deleteWorkflowParams = { + workflowName: `${data.inputs.workflowName}`, + }; + const command = new DeleteMatchingWorkflowCommand(deleteWorkflowParams); + const response = await erClient.send(command); + console.log("Workflow deleted successfully!", response); + } catch (error) { + console.log("error ", error); + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.delete-matching-workflow] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/delete-schema-mapping.js b/javascriptv3/example_code/entityresolution/actions/delete-schema-mapping.js new file mode 100644 index 00000000000..fb27803089b --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/delete-schema-mapping.js @@ -0,0 +1,37 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.delete.schema-mapping] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + DeleteSchemaMappingCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + const deleteSchemaMapping = { + schemaName: `${data.inputs.schemaNameJson}`, + }; + try { + const command = new DeleteSchemaMappingCommand(deleteSchemaMapping); + const response = await erClient.send(command); + console.log("Schema mapping deleted successfully. ", response); + } catch (error) { + console.log("error ", error); + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.delete.schema-mapping] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/get-matching-job.js b/javascriptv3/example_code/entityresolution/actions/get-matching-job.js new file mode 100644 index 00000000000..a26378260c7 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/get-matching-job.js @@ -0,0 +1,40 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.get.matching-job] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + GetMatchingJobCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + async function getInfo() { + const getJobInfoParams = { + workflowName: `${data.inputs.workflowName}`, + jobId: `${data.inputs.jobId}`, + }; + try { + const command = new GetMatchingJobCommand(getJobInfoParams); + const response = await erClient.send(command); + console.log(`Job status: ${response.status}`); + } catch (error) { + console.log("error ", error.message); + } + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.get.matching-job] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/get-schema-mapping.js b/javascriptv3/example_code/entityresolution/actions/get-schema-mapping.js new file mode 100644 index 00000000000..8a5be1f2dd7 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/get-schema-mapping.js @@ -0,0 +1,42 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.get.schema-mapping] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + GetSchemaMappingCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + const getSchemaMappingJsonParams = { + schemaName: `${data.inputs.schemaNameJson}`, + }; + try { + const command = new GetSchemaMappingCommand(getSchemaMappingJsonParams); + const response = await erClient.send(command); + console.log(response); + console.log( + `Schema mapping for the JSON data:\n ${response.mappedInputFields[0]}`, + ); + console.log("Schema mapping ARN is: ", response.schemaArn); + } catch (caught) { + console.error(caught.message); + throw caught; + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.get.schema-mapping] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/list-schema-mappings.js b/javascriptv3/example_code/entityresolution/actions/list-schema-mappings.js new file mode 100644 index 00000000000..e172d29f58c --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/list-schema-mappings.js @@ -0,0 +1,46 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.list.schema-mapping] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + ListSchemaMappingsCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + async function getInfo() { + const listSchemaMappingsParams = { + workflowName: `${data.inputs.workflowName}`, + jobId: `${data.inputs.jobId}`, + }; + try { + const command = new ListSchemaMappingsCommand(listSchemaMappingsParams); + const response = await erClient.send(command); + const noOfSchemas = response.schemaList.length; + for (let i = 0; i < noOfSchemas; i++) { + console.log( + `Schema Mapping Name: ${response.schemaList[i].schemaName} `, + ); + } + } catch (caught) { + console.error(caught.message); + throw caught; + } + } + + // snippet-end:[entity-resolution.JavaScriptv3.list.schema-mapping] + + // Invoke main function if this file was run directly. + if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); + } +}; diff --git a/javascriptv3/example_code/entityresolution/actions/start-matching-job.js b/javascriptv3/example_code/entityresolution/actions/start-matching-job.js new file mode 100644 index 00000000000..2b0461f054a --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/start-matching-job.js @@ -0,0 +1,38 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.start.matching-job] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; +import { + StartMatchingJobCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + const matchingJobOfWorkflowParams = { + workflowName: `${data.inputs.workflowName}`, + }; + try { + const command = new StartMatchingJobCommand(matchingJobOfWorkflowParams); + const response = await erClient.send(command); + console.log(`Job ID: ${response.jobID} \n +The matching job was successfully started.`); + } catch (caught) { + console.error(caught.message); + throw caught; + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.start.matching-job] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/actions/tag-entity-resource.js b/javascriptv3/example_code/entityresolution/actions/tag-entity-resource.js new file mode 100644 index 00000000000..60572c1e10c --- /dev/null +++ b/javascriptv3/example_code/entityresolution/actions/tag-entity-resource.js @@ -0,0 +1,42 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[entity-resolution.JavaScriptv3.tag.entity-resource] + +//The default inputs for this demo are read from the ../inputs.json. + +import { fileURLToPath } from "node:url"; + +import { + TagResourceCommand, + EntityResolutionClient, +} from "@aws-sdk/client-entityresolution"; +import data from "../inputs.json" with { type: "json" }; + +const region = "eu-west-1"; +const erClient = new EntityResolutionClient({ region: region }); + +export const main = async () => { + const tagResourceCommandParams = { + resourceArn: `${data.inputs.schemaArn}`, + tags: { + tag1: "tag1Value", + tag2: "tag2Value", + }, + }; + try { + const command = new TagResourceCommand(tagResourceCommandParams); + const response = await erClient.send(command); + console.log("Successfully tagged the resource."); + } catch (caught) { + console.error(caught.message); + throw caught; + } +}; + +// snippet-end:[entity-resolution.JavaScriptv3.tag.entity-resource] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/data.csv b/javascriptv3/example_code/entityresolution/data.csv new file mode 100644 index 00000000000..1ed995993e2 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/data.csv @@ -0,0 +1,5 @@ +id,name,email,phone +1,Jane B.,Doe,jane.doe@example.com,555-876-9846 +2,John Doe Jr.,john.doe@example.com,555-654-3210 +3,María García,maría_garcia@company.com,555-567-1234 +4,Mary Major,mary_major@company.com,555-222-3333 \ No newline at end of file diff --git a/javascriptv3/example_code/entityresolution/data.json b/javascriptv3/example_code/entityresolution/data.json new file mode 100644 index 00000000000..01f35f7fc93 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/data.json @@ -0,0 +1,5 @@ +[ + { "id": "1", "name": "Jane Doe", "email": "jane.doe@example.com" }, + { "id": "2", "name": "John Doe", "email": "john.doe@example.com" }, + { "id": "3", "name": "Jorge Souza", "email": "jorge_souza@example.com" } +] diff --git a/javascriptv3/example_code/entityresolution/hello.js b/javascriptv3/example_code/entityresolution/hello.js new file mode 100644 index 00000000000..7f709c7d952 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/hello.js @@ -0,0 +1,37 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// snippet-start:[javascript.v3.entity-resolution.hello] +import { fileURLToPath } from "node:url"; +import { + EntityResolutionClient, + ListMatchingWorkflowsCommand, +} from "@aws-sdk/client-entityresolution"; + +export const main = async () => { + const region = "eu-west-1"; + const erClient = new EntityResolutionClient({ region: region }); + try { + const command = new ListMatchingWorkflowsCommand({}); + const response = await erClient.send(command); + const workflowSummaries = response.workflowSummaries; + for (const workflowSummary of workflowSummaries) { + console.log(`Attribute name: ${workflowSummaries[0].workflowName} `); + } + if (workflowSummaries.length === 0) { + console.log("No matching workflows found."); + } + } catch (error) { + console.error( + `An error occurred in listing the workflow summaries: ${error.message} \n Exiting program.`, + ); + return; + } +}; + +// snippet-end:[javascript.v3.entity-resolution.hello] + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + main(); +} diff --git a/javascriptv3/example_code/entityresolution/inputs.json b/javascriptv3/example_code/entityresolution/inputs.json new file mode 100644 index 00000000000..03874f0f32e --- /dev/null +++ b/javascriptv3/example_code/entityresolution/inputs.json @@ -0,0 +1,14 @@ +{ + "inputs": { + "schemaNameJson": "json-AWSSchema", + "schemaNameCSV": "csv-AWSSchema", + "workflowName": "AWSWorkFlow", + "jobId": "JobId", + "entityResolutionStack": "EntityResolutionBasicsStack", + "schemaArn": "mySchemaARN", + "JSONinputSourceARN": "arn:aws:glue:us-east-1:123456789012:table/my-database/my-table", + "CSVinputSourceARN": "arn:aws:glue:us-east-1:123456789012:table/my-glue-database-name/my-glue-table-name", + "roleArn": "EntityResolutionRoleARN", + "myBucketName": "my-bucket-123.example-bucket" + } +} diff --git a/javascriptv3/example_code/entityresolution/package.json b/javascriptv3/example_code/entityresolution/package.json new file mode 100644 index 00000000000..40f60acc4dc --- /dev/null +++ b/javascriptv3/example_code/entityresolution/package.json @@ -0,0 +1,21 @@ +{ + "name": "@aws-doc-sdk-examples/javascript-entity-resolution-basics", + "version": "1.0.0", + "description": "Code samples for interacting with AWS Entity Resolutions via the AWS SDK for JavaScript (v3)", + "author": "Brian Murray (brmur@amazon.com)", + "license": "Apache-2.0", + "type": "module", + "scripts": { + "integration-test": "vitest run integration --reporter=junit --outputFile=test_results/entity-resolution-test-results.junit.xml" + }, + "dependencies": { + "@aws-doc-sdk-examples/lib": "^1.0.1", + "@aws-sdk/client-entityresolution": "^3.163.0", + "@aws-sdk/client-cloudformation": "^3.797.0", + "@aws-sdk/client-s3": "^3.797.0" + }, + "devDependencies": { + "prettier": "3.5.3", + "vitest": "^1.6.1" + } +} diff --git a/javascriptv3/example_code/entityresolution/scenarios/entity-resolution-basics.js b/javascriptv3/example_code/entityresolution/scenarios/entity-resolution-basics.js new file mode 100644 index 00000000000..d5fa6825993 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/scenarios/entity-resolution-basics.js @@ -0,0 +1,706 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/* +Before running this JavaScript code example, set up your development environment, including your credentials. +This demo illustrates how to use the AWS SDK for JavaScript (v3) to work with AWS Entity Resolution. + +The default inputs for this demo are read from the ../inputs.json. + +For more information, see the following documentation topic: + +https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started.html +*/ +// snippet-start:[entity-resolution.JavaScriptv3.scenario.basics] + +import { + Scenario, + ScenarioAction, + ScenarioInput, + ScenarioOutput, +} from "@aws-doc-sdk-examples/lib/scenario/index.js"; +import { + CloudFormationClient, + CreateStackCommand, + DeleteStackCommand, + DescribeStacksCommand, + waitUntilStackExists, + waitUntilStackCreateComplete, +} from "@aws-sdk/client-cloudformation"; +import { + EntityResolutionClient, + CreateSchemaMappingCommand, + CreateMatchingWorkflowCommand, + GetMatchingJobCommand, + StartMatchingJobCommand, + GetSchemaMappingCommand, + ListSchemaMappingsCommand, + TagResourceCommand, + DeleteMatchingWorkflowCommand, + DeleteSchemaMappingCommand, + ConflictException, + ValidationException, +} from "@aws-sdk/client-entityresolution"; +import { + DeleteObjectsCommand, + DeleteBucketCommand, + PutObjectCommand, + S3Client, + ListObjectsCommand, +} from "@aws-sdk/client-s3"; +import { wait } from "@aws-doc-sdk-examples/lib/utils/util-timers.js"; + +import { readFile } from "node:fs/promises"; +import { parseArgs } from "node:util"; +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname } from "node:path"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const stackName = `${data.inputs.entityResolutionStack}`; + +/*The inputs for this example can be edited in the ../input.json.*/ +import data from "../inputs.json" with { type: "json" }; +const skipWhenErrors = (state) => state.errors.length > 0; +/** + * Used repeatedly to have the user press enter. + * @type {ScenarioInput} + */ +/* v8 ignore next 3 */ +const pressEnter = new ScenarioInput("continue", "Press Enter to continue", { + type: "input", + verbose: "false", + skipWhen: skipWhenErrors, +}); + +const region = "eu-west-1"; + +const entityResolutionClient = new EntityResolutionClient({ region: region }); +const cloudFormationClient = new CloudFormationClient({ region: region }); +const s3Client = new S3Client({ region: region }); + +const greet = new ScenarioOutput( + "greet", + "AWS Entity Resolution is a fully-managed machine learning service provided by " + + "Amazon Web Services (AWS) that helps organizations extract, link, and " + + "organize information from multiple data sources. It leverages natural " + + "language processing and deep learning models to identify and resolve " + + "entities, such as people, places, organizations, and products, " + + "across structured and unstructured data.\n" + + "\n" + + "With Entity Resolution, customers can build robust data integration " + + "pipelines to combine and reconcile data from multiple systems, databases, " + + "and documents. The service can handle ambiguous, incomplete, or conflicting " + + "information, and provide a unified view of entities and their relationships. " + + "This can be particularly valuable in applications such as customer 360, " + + "fraud detection, supply chain management, and knowledge management, where " + + "accurate entity identification is crucial.\n" + + "\n" + + "The `EntityResolutionAsyncClient` interface in the AWS SDK for Java 2.x " + + "provides a set of methods to programmatically interact with the AWS Entity " + + "Resolution service. This allows developers to automate the entity extraction, " + + "linking, and deduplication process as part of their data processing workflows. " + + "With Entity Resolution, organizations can unlock the value of their data, " + + "improve decision-making, and enhance customer experiences by having a reliable, " + + "comprehensive view of their key entities.", + + { header: true }, +); +const displayBuildCloudFormationStack = new ScenarioOutput( + "displayBuildCloudFormationStack", + "To prepare the AWS resources needed for this scenario application, the next step uploads " + + "a CloudFormation template whose resulting stack creates the following resources:\n" + + "- An AWS Glue Data Catalog table \n" + + "- An AWS IAM role \n" + + "- An AWS S3 bucket \n" + + "- An AWS Entity Resolution Schema \n" + + "It can take a couple minutes for the Stack to finish creating the resources.", +); + +const sdkBuildCloudFormationStack = new ScenarioAction( + "sdkBuildCloudFormationStack", + async (/** @type {State} */ state) => { + try { + const data = readFileSync( + `${__dirname}/../../../../resources/cfn/entity-resolution-basics/entity-resolution-basics-template.yml`, + "utf8", + ); + await cloudFormationClient.send( + new CreateStackCommand({ + StackName: stackName, + TemplateBody: data, + Capabilities: ["CAPABILITY_IAM"], + }), + ); + await waitUntilStackExists( + { client: cloudFormationClient }, + { StackName: stackName }, + ); + await waitUntilStackCreateComplete( + { client: cloudFormationClient }, + { StackName: stackName }, + ); + const stack = await cloudFormationClient.send( + new DescribeStacksCommand({ + StackName: stackName, + }), + ); + + state.entityResolutionRole = stack.Stacks[0].Outputs[1]; + state.jsonGlueTable = stack.Stacks[0].Outputs[2]; + state.CSVGlueTable = stack.Stacks[0].Outputs[3]; + state.glueDataBucket = stack.Stacks[0].Outputs[0]; + state.stackName = stack.StackName; + console.log(state.glueDataBucket); + console.log( + `The ARN of the EntityResolution Role is ${state.entityResolutionRole.OutputValue}`, + ); + console.log( + `The ARN of the Json Glue Table is ${state.jsonGlueTable.OutputValue}`, + ); + console.log( + `The ARN of the CSV Glue Table is ${state.CSVGlueTable.OutputValue}`, + ); + console.log( + `The name of the Glue Data Bucket is ${state.glueDataBucket.OutputValue}\n`, + ); + } catch (caught) { + console.error(caught.message); + throw caught; + } + try { + console.log( + `Uploading the following JSON in ../data.json to the ${state.glueDataBucket.OutputValue} S3 bucket...`, + ); + const bucketName = state.glueDataBucket.OutputValue; + + const putObjectParams = { + Bucket: bucketName, + Key: "jsonData/data.json", + Body: await readFileSync( + `${__dirname}/../../../../javascriptv3/example_code/entityresolution/data.json`, + ), + }; + const command = new PutObjectCommand(putObjectParams); + const response = await s3Client.send(command); + console.log( + `../data.json file data uploaded to the ${state.glueDataBucket.OutputValue} S3 bucket.\n`, + ); + } catch (caught) { + console.error(caught.message); + throw caught; + } + try { + console.log( + `Uploading the CSV data in ../data.csv to the ${state.glueDataBucket.OutputValue} S3 bucket...`, + ); + + const bucketName = state.glueDataBucket.OutputValue; + const putObjectParams = { + Bucket: bucketName, + Key: "csvData/data.csv", + Body: await readFileSync( + `${__dirname}/../../../../javascriptv3/example_code/entityresolution/data.csv`, + ), + }; + const command = new PutObjectCommand(putObjectParams); + const response = await s3Client.send(command); + console.log( + `../data.csv file data uploaded to the ${state.glueDataBucket.OutputValue} S3 bucket.`, + ); + } catch (caught) { + console.error(caught.message); + throw caught; + } + }, +); + +const displayCreateSchemaMapping = new ScenarioOutput( + "displayCreateSchemaMapping", + "1. Create Schema Mapping" + + "Entity Resolution schema mapping aligns and integrates data from " + + "multiple sources by identifying and matching corresponding entities " + + "like customers or products. It unifies schemas, resolves conflicts, " + + "and uses machine learning to link related entities, enabling a " + + "consolidated, accurate view for improved data quality and decision-making." + + "\n" + + "In this example, the schema mapping lines up with the fields in the JSON and CSV objects. That is, " + + " it contains these fields: id, name, and email. ", +); + +const sdkCreateSchemaMapping = new ScenarioAction( + "sdkCreateSchemaMapping", + async (/** @type {State} */ state) => { + const createSchemaMappingParamsJson = { + schemaName: `${data.inputs.schemaNameJson}`, + mappedInputFields: [ + { + fieldName: "id", + type: "UNIQUE_ID", + }, + { + fieldName: "name", + type: "NAME", + }, + { + fieldName: "email", + type: "EMAIL_ADDRESS", + }, + ], + }; + const createSchemaMappingParamsCSV = { + schemaName: `${data.inputs.schemaNameCSV}`, + mappedInputFields: [ + { + fieldName: "id", + type: "UNIQUE_ID", + }, + { + fieldName: "name", + type: "NAME", + }, + { + fieldName: "email", + type: "EMAIL_ADDRESS", + }, + { + fieldName: "phone", + type: "PROVIDER_ID", + subType: "STRING", + }, + ], + }; + try { + const command = new CreateSchemaMappingCommand( + createSchemaMappingParamsJson, + ); + const response = await entityResolutionClient.send(command); + state.schemaNameJson = response.schemaName; + state.schemaArn = response.schemaArn; + state.idOutputAttribute = response.mappedInputFields[0].fieldName; + state.nameOutputAttribute = response.mappedInputFields[1].fieldName; + state.emailOutputAttribute = response.mappedInputFields[2].fieldName; + + console.log("The JSON schema mapping name is ", state.schemaNameJson); + } catch (caught) { + if (caught instanceof ConflictException) { + console.error( + `The schema mapping already exists: ${caught.message} \n Exiting program.`, + ); + return; + } + } + try { + const command = new CreateSchemaMappingCommand( + createSchemaMappingParamsCSV, + ); + const response = await entityResolutionClient.send(command); + state.schemaNameCSV = response.schemaName; + state.phoneOutputAttribute = response.mappedInputFields[3].fieldName; + console.log("The CSV schema mapping name is ", state.schemaNameCSV); + } catch (caught) { + if (caught instanceof ConflictException) { + console.error( + `An unexpected error occurred while creating the geofence collection: ${caught.message} \n Exiting program.`, + ); + return; + } + } + }, +); +const displayCreateMatchingWorkflow = new ScenarioOutput( + "displayCreateMatchingWorkflow", + "2. Create an AWS Entity Resolution Workflow. " + + "An Entity Resolution matching workflow identifies and links records " + + "across datasets that represent the same real-world entity, such as " + + "customers or products. Using techniques like schema mapping, " + + "data profiling, and machine learning algorithms, " + + "it evaluates attributes like names or emails to detect duplicates " + + "or relationships, even with variations or inconsistencies. " + + "The workflow outputs consolidated, de-duplicated data." + + "\n" + + "We will use the machine learning-based matching technique.", +); + +const sdkCreateMatchingWorkflow = new ScenarioAction( + "sdkCreateMatchingWorkflow", + async (/** @type {State} */ state) => { + const createMatchingWorkflowParams = { + roleArn: `${state.entityResolutionRole.OutputValue}`, + workflowName: `${data.inputs.workflowName}`, + description: "Created by using the AWS SDK for JavaScript (v3).", + inputSourceConfig: [ + { + inputSourceARN: `${state.jsonGlueTable.OutputValue}`, + schemaName: `${data.inputs.schemaNameJson}`, + applyNormalization: false, + }, + { + inputSourceARN: `${state.CSVGlueTable.OutputValue}`, + schemaName: `${data.inputs.schemaNameCSV}`, + applyNormalization: false, + }, + ], + outputSourceConfig: [ + { + outputS3Path: `s3://${state.glueDataBucket.OutputValue}/eroutput`, + output: [ + { + name: state.idOutputAttribute, + }, + { + name: state.nameOutputAttribute, + }, + { + name: state.emailOutputAttribute, + }, + { + name: state.phoneOutputAttribute, + }, + ], + applyNormalization: false, + }, + ], + resolutionTechniques: { resolutionType: "ML_MATCHING" }, + }; + try { + const command = new CreateMatchingWorkflowCommand( + createMatchingWorkflowParams, + ); + const response = await entityResolutionClient.send(command); + state.workflowArn = response.workflowArn; + console.log( + `Workflow created successfully.\n The workflow ARN is: ${response.workflowArn}`, + ); + } catch (caught) { + if (caught instanceof ConflictException) { + console.error( + `The matching workflow already exists: ${caught.message} \n Exiting program.`, + ); + return; + } + if (caught instanceof ValidationException) { + console.error( + `There was a validation exception: ${caught.message} \n Exiting program.`, + ); + return; + } + } + }, +); +const displayMatchingJobOfWorkflow = new ScenarioOutput( + "displayMatchingJobOfWorkflow", + "3. Start the matching job of the workflow", +); + +const sdkMatchingJobOfWorkflow = new ScenarioAction( + "sdk", + async (/** @type {State} */ state) => { + const matchingJobOfWorkflowParams = { + workflowName: `${data.inputs.workflowName}`, + }; + try { + const command = new StartMatchingJobCommand(matchingJobOfWorkflowParams); + const response = await entityResolutionClient.send(command); + state.jobID = response.jobId; + console.log(`Job ID: ${state.jobID} \n +The matching job was successfully started.`); + } catch (caught) { + if (caught instanceof ConflictException) { + console.error( + `The matching workflow already exists: ${caught.message} \n Exiting program.`, + ); + return; + } + } + }, +); + +const displayGetDetailsforJob = new ScenarioOutput( + "displayGetDetailsforJob", + `4. While the matching job is running, let's look at other API methods. First, let's get details for the job `, +); + +const sdkGetDetailsforJob = new ScenarioAction( + "sdkGetDetailsforJob", + async (/** @type {State} */ state) => { + const getDetailsforJobParams = { + workflowName: `${data.inputs.workflowName}`, + jobId: `${state.jobID}`, + }; + try { + const command = new GetMatchingJobCommand(getDetailsforJobParams); + const response = await entityResolutionClient.send(command); + state.Status = response.status; + state.response = response; + console.log(`Job status: ${state.Status} `); + } catch (caught) { + console.error(caught.message); + throw caught; + } + }, +); + +const displayGetSchemaMappingJson = new ScenarioOutput( + "displayGetSchemaMappingJson", + "5. Get the schema mapping for the JSON data.", +); + +const sdkGetSchemaMappingJson = new ScenarioAction( + "sdkGetSchemaMappingJson", + async (/** @type {State} */ state) => { + const getSchemaMappingJsonParams = { + schemaName: `${data.inputs.schemaNameJson}`, + }; + try { + const command = new GetSchemaMappingCommand(getSchemaMappingJsonParams); + const response = await entityResolutionClient.send(command); + console.log("Schema·mapping·ARN·is:·", response.schemaArn); + const resultMappings = response.mappedInputFields; + const noOfResultMappings = resultMappings.length; + for (let i = 0; i < noOfResultMappings; i++) { + console.log( + `Attribute name: ${resultMappings[i].fieldName} `, + `Attribute type: ${resultMappings[i].type}`, + ); + } + } catch (caught) { + console.error(caught.message); + throw caught; + } + }, +); + +const displayListSchemaMappings = new ScenarioOutput( + "displayListSchemaMappings", + "6. List Schema Mappings.", +); + +const sdkListSchemaMappings = new ScenarioAction( + "sdkListSchemaMappings", + async (/** @type {State} */ state) => { + try { + const command = new ListSchemaMappingsCommand({}); + const response = await entityResolutionClient.send(command); + const noOfSchemas = response.schemaList.length; + for (let i = 0; i < noOfSchemas; i++) { + console.log( + `Schema Mapping Name: ${response.schemaList[i].schemaName} `, + ); + } + } catch (caught) { + console.error(caught.message); + throw caught; + } + }, +); + +const displayTagTheJsonSchema = new ScenarioOutput( + "display", + "7. Tag the resource. \n" + + "Tags can help you organize and categorize your Entity Resolution resources. " + + "You can also use them to scope user permissions by granting a user permission " + + "to access or change only resources with certain tag values. " + + "In Entity Resolution, SchemaMapping and MatchingWorkflow can be tagged. For this example, " + + "the SchemaMapping is tagged.", +); + +const sdkTagTheJsonSchema = new ScenarioAction( + "sdkGetSchemaMappingJson", + async (/** @type {State} */ state) => { + const tagResourceCommandParams = { + resourceArn: state.schemaArn, + tags: { + tag1: "tag1Value", + tag2: "tag2Value", + }, + }; + try { + const command = new TagResourceCommand(tagResourceCommandParams); + const response = await entityResolutionClient.send(command); + console.log("Successfully tagged the resource."); + } catch (caught) { + console.error(caught.message); + throw caught; + } + }, +); + +const displayGetJobInfo = new ScenarioOutput( + "displayGetJobInfo", + "8. View the results of the AWS Entity Resolution Workflow.\n " + + "Please perform this task manually in the AWS Management Console. ", +); + +const displayDeleteResources = new ScenarioOutput( + "displayDeleteResources", + "9. Delete the resources \n" + + "You cannot delete a workflow that is in a running state. So this will take ~30 minutes.\n" + + "If you don't want to delete the resources, simply exit this application.", +); + +const sdkDeleteResources = new ScenarioAction( + "sdkDeleteResources", + async (/** @type {State} */ state) => { + console.log( + "You selected to delete the resources. This will take about 30 minutes.", + ); + await wait(1800); + const bucketName = state.glueDataBucket.OutputValue; + try { + const emptyBucket = async ({ bucketName }) => { + const listObjectsCommand = new ListObjectsCommand({ + Bucket: bucketName, + }); + const { Contents } = await s3Client.send(listObjectsCommand); + const keys = Contents.map((c) => c.Key); + + const deleteObjectsCommand = new DeleteObjectsCommand({ + Bucket: bucketName, + Delete: { Objects: keys.map((key) => ({ Key: key })) }, + }); + await s3Client.send(deleteObjectsCommand); + console.log(`Bucket ${bucketName} emptied successfully.\n`); + }; + await emptyBucket({ bucketName }); + } catch (error) { + console.log("error ", error); + } + try { + const deleteBucket = async ({ bucketName }) => { + const command = new DeleteBucketCommand({ Bucket: bucketName }); + await s3Client.send(command); + console.log(`Bucket ${bucketName} deleted successfully.\n`); + }; + await deleteBucket({ bucketName }); + } catch (error) { + console.log("error ", error); + } + try { + console.log( + "Now we will delete the CloudFormation stack, which deletes the resources that were created at the beginning of the scenario.", + ); + const deleteStackParams = { StackName: `${state.stackName}` }; + const command = new DeleteStackCommand(deleteStackParams); + const response = await cloudFormationClient.send(command); + console.log("CloudFormation stack deleted successfully."); + } catch (error) { + console.log("error ", error); + } + try { + const deleteWorkflowParams = { + workflowName: `${data.inputs.workflowName}`, + }; + const command = new DeleteMatchingWorkflowCommand(deleteWorkflowParams); + const response = await entityResolutionClient.send(command); + console.log("Workflow deleted successfully!"); + } catch (caught) { + if (caught instanceof ConflictException) { + console.error( + `Job associated with workflow ${data.inputs.workflowName} is still running, so can't be deleted. + Neither can schemas ${data.inputs.schemaNameJson} and ${data.inputs.schemaNameCSV} associated with it. Please confirm this workflow is finished in the AWS Management Console, then delete it manually.`, + ); + throw caught; + } + } + try { + const deleteJSONschemaMapping = { + schemaName: `${data.inputs.schemaNameJson}`, + }; + const command = new DeleteSchemaMappingCommand(deleteJSONschemaMapping); + const response = await entityResolutionClient.send(command); + console.log("Schema mapping deleted successfully. "); + } catch (caught) { + if (caught instanceof ConflictException) { + console.error( + `The schema ${data.inputs.schemaNameJson} can't be deleted because it is associated with workflow + ${data.inputs.workflowName}, which is still running. Please confirm this workflow is finished in the AWS Management Console, then delete it manually.`, + ); + throw caught; + } + } + try { + const deleteCSVschemaMapping = { + schemaName: `${data.inputs.schemaNameCSV}`, + }; + const command = new DeleteSchemaMappingCommand(deleteCSVschemaMapping); + const response = await entityResolutionClient.send(command); + console.log("Schema mapping deleted successfully."); + } catch (caught) { + if (caught instanceof ConflictException) { + console.error( + `The schema ${data.inputs.schemaNameCSV} can't be deleted because it is associated with workflow ${data.inputs.workflowName}, which is still running. Please confirm this workflow is finished in the AWS Management Console, then delete it manually.`, + ); + throw caught; + } + } + }, + { + skipWhen: (/** @type {State} */ state) => + state.confirmDeleteResources === "", + }, +); + +const goodbye = new ScenarioOutput( + "goodbye", + "Thank you for checking out the Amazon Location Service Use demo. We hope you " + + "learned something new, or got some inspiration for your own apps today!" + + " For more Amazon Location Services examples in different programming languages, have a look at: " + + "https://docs.aws.amazon.com/code-library/latest/ug/location_code_examples.html", +); + +const myScenario = new Scenario("Entity Resolution Basics Scenario", [ + greet, + pressEnter, + displayBuildCloudFormationStack, + sdkBuildCloudFormationStack, + pressEnter, + displayCreateSchemaMapping, + sdkCreateSchemaMapping, + pressEnter, + displayCreateMatchingWorkflow, + sdkCreateMatchingWorkflow, + pressEnter, + displayMatchingJobOfWorkflow, + sdkMatchingJobOfWorkflow, + pressEnter, + displayGetDetailsforJob, + sdkGetDetailsforJob, + pressEnter, + displayGetSchemaMappingJson, + sdkGetSchemaMappingJson, + pressEnter, + displayListSchemaMappings, + sdkListSchemaMappings, + pressEnter, + displayTagTheJsonSchema, + sdkTagTheJsonSchema, + pressEnter, + displayGetJobInfo, + pressEnter, + displayDeleteResources, + pressEnter, + sdkDeleteResources, + pressEnter, + goodbye, +]); + +/** @type {{ stepHandlerOptions: StepHandlerOptions }} */ +export const main = async (stepHandlerOptions) => { + await myScenario.run(stepHandlerOptions); +}; + +// Invoke main function if this file was run directly. +if (process.argv[1] === fileURLToPath(import.meta.url)) { + const { values } = parseArgs({ + options: { + yes: { + type: "boolean", + short: "y", + }, + }, + }); + main({ confirmAll: values.yes }); +} +// snippet-end:[entity-resolution.JavaScriptv3.scenario.basics] diff --git a/javascriptv3/example_code/entityresolution/tests/check-workflow-status.integration.test.js b/javascriptv3/example_code/entityresolution/tests/check-workflow-status.integration.test.js new file mode 100644 index 00000000000..eacfabd77e1 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/check-workflow-status.integration.test.js @@ -0,0 +1,59 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../actions/check-workflow-status.js"; +import data from "../inputs.json"; + +describe("test check-workflow-status", () => { + it( + "should not re-throw service exceptions", + async () => { + await main({ + workflowName: `${data.inputs.workflowName}`, + jobId: `${data.inputs.jobId}`, + }); + }, + { timeout: 600000 }, + ); +}); + +/* +{ + roleArn: `${data.inputs.roleArn}`, + workflowName: `${data.inputs.workflowName}`, + description: "Created by using the AWS SDK for JavaScript (v3).", + inputSourceConfig: [ + { + inputSourceARN: `${data.inputs.JSONinputSourceARN}`, + schemaName: `${data.inputs.schemaNameJson}`, + applyNormalization: false, + }, + { + inputSourceARN: `${data.inputs.CSVinputSourceARN}`, + schemaName: `${data.inputs.schemaNameCSV}`, + applyNormalization: false, + }, + ], + outputSourceConfig: [ + { + outputS3Path: `s3://" + ${data.inputs.bucketName} + "/eroutput`, + output: [ + { + name: "id", + }, + { + name: "name", + }, + { + name: "email", + }, + { + name: "phone", + }, + ], + applyNormalization: false, + }, + ], + resolutionTechniques: { resolutionType: "ML_MATCHING" }, + }*/ diff --git a/javascriptv3/example_code/entityresolution/tests/create-schema-mapping.integration.test.js b/javascriptv3/example_code/entityresolution/tests/create-schema-mapping.integration.test.js new file mode 100644 index 00000000000..dbe17576111 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/create-schema-mapping.integration.test.js @@ -0,0 +1,32 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../actions/delete-matching-workflow.js"; +import data from "../inputs.json"; + +describe("test delete-matching-workflow", () => { + it( + "should not re-throw service exceptions", + async () => { + await main({ + schemaName: `${data.inputs.schemaNameJson}`, + mappedInputFields: [ + { + fieldName: "id", + type: "UNIQUE_ID", + }, + { + fieldName: "name", + type: "NAME", + }, + { + fieldName: "email", + type: "EMAIL_ADDRESS", + }, + ], + }); + }, + { timeout: 600000 }, + ); +}); diff --git a/javascriptv3/example_code/entityresolution/tests/delete-matching-workflow.integration.test.js b/javascriptv3/example_code/entityresolution/tests/delete-matching-workflow.integration.test.js new file mode 100644 index 00000000000..5ac231066a2 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/delete-matching-workflow.integration.test.js @@ -0,0 +1,18 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../actions/delete-matching-workflow.js"; +import data from "../inputs.json"; + +describe("test delete-matching-workflow", () => { + it( + "should not re-throw service exceptions", + async () => { + await main({ + workflowName: `${data.inputs.workflowName}`, + }); + }, + { timeout: 600000 }, + ); +}); diff --git a/javascriptv3/example_code/entityresolution/tests/delete-schema-mapping.integration.test.js b/javascriptv3/example_code/entityresolution/tests/delete-schema-mapping.integration.test.js new file mode 100644 index 00000000000..168e76af7dd --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/delete-schema-mapping.integration.test.js @@ -0,0 +1,18 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../actions/delete-schema-mapping.js"; +import data from "../inputs.json"; + +describe("test delete-schema-mapping", () => { + it( + "should not re-throw service exceptions", + async () => { + await main({ + schemaName: `${data.inputs.schemaNameJson}`, + }); + }, + { timeout: 600000 }, + ); +}); diff --git a/javascriptv3/example_code/entityresolution/tests/entity-resolution-basics.integration.test.js b/javascriptv3/example_code/entityresolution/tests/entity-resolution-basics.integration.test.js new file mode 100644 index 00000000000..abd5e689458 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/entity-resolution-basics.integration.test.js @@ -0,0 +1,15 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../scenarios/entity-resolution-basics.js"; + +describe("Entity Resolution basic scenario", () => { + it( + "should run without error", + async () => { + await main({ confirmAll: true }); + }, + { timeout: 600000 }, + ); +}); diff --git a/javascriptv3/example_code/entityresolution/tests/get-matching-job.integration.test.js b/javascriptv3/example_code/entityresolution/tests/get-matching-job.integration.test.js new file mode 100644 index 00000000000..b6fdffcbf11 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/get-matching-job.integration.test.js @@ -0,0 +1,19 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../actions/get-matching-job.js"; +import data from "../inputs.json"; + +describe("test get-matching-job", () => { + it( + "should not re-throw service exceptions", + async () => { + await main({ + workflowName: `${data.inputs.workflowName}`, + jobId: `${data.inputs.jobId}`, + }); + }, + { timeout: 600000 }, + ); +}); diff --git a/javascriptv3/example_code/entityresolution/tests/hello.integration.test.js b/javascriptv3/example_code/entityresolution/tests/hello.integration.test.js new file mode 100644 index 00000000000..e1073db1030 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/hello.integration.test.js @@ -0,0 +1,15 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../hello.js"; + +describe("test entity-resolution hello", () => { + it( + "should not re-throw service exceptions", + async () => { + await main({}); + }, + { timeout: 600000 }, + ); +}); diff --git a/javascriptv3/example_code/entityresolution/tests/list-schema-mappings.integration.test.js b/javascriptv3/example_code/entityresolution/tests/list-schema-mappings.integration.test.js new file mode 100644 index 00000000000..4d32af31e06 --- /dev/null +++ b/javascriptv3/example_code/entityresolution/tests/list-schema-mappings.integration.test.js @@ -0,0 +1,19 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { describe, it } from "vitest"; +import { main } from "../actions/list-schema-mappings.js"; +import data from "../inputs.json"; + +describe("test list-schema-mappings", () => { + it( + "should not re-throw service exceptions", + async () => { + await main({ + workflowName: `${data.inputs.workflowName}`, + jobId: `${data.inputs.jobId}`, + }); + }, + { timeout: 600000 }, + ); +}); diff --git a/resources/cfn/entity-resolution-basics/entity-resolution-basics-template.yml b/resources/cfn/entity-resolution-basics/entity-resolution-basics-template.yml new file mode 100644 index 00000000000..4c106c05881 --- /dev/null +++ b/resources/cfn/entity-resolution-basics/entity-resolution-basics-template.yml @@ -0,0 +1,262 @@ +Resources: + ErBucket6EA35F9D: + Type: AWS::S3::Bucket + Properties: + BucketName: erbucketf684533d2680435fa99d24b1bdaf5179 + UpdateReplacePolicy: Delete + DeletionPolicy: Delete + Metadata: + aws:cdk:path: EntityResolutionCdkStack/ErBucket/Resource + GlueDatabase: + Type: AWS::Glue::Database + Properties: + CatalogId: + Ref: AWS::AccountId + DatabaseInput: + Name: entity_resolution_db + Metadata: + aws:cdk:path: EntityResolutionCdkStack/GlueDatabase + jsongluetable: + Type: AWS::Glue::Table + Properties: + CatalogId: + Ref: AWS::AccountId + DatabaseName: + Ref: GlueDatabase + TableInput: + Name: jsongluetable + StorageDescriptor: + Columns: + - Name: id + Type: string + - Name: name + Type: string + - Name: email + Type: string + InputFormat: org.apache.hadoop.mapred.TextInputFormat + Location: + Fn::Join: + - "" + - - s3:// + - Ref: ErBucket6EA35F9D + - /jsonData/ + OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + SerdeInfo: + Parameters: + serialization.format: "1" + SerializationLibrary: org.openx.data.jsonserde.JsonSerDe + TableType: EXTERNAL_TABLE + DependsOn: + - GlueDatabase + Metadata: + aws:cdk:path: EntityResolutionCdkStack/jsongluetable + csvgluetable: + Type: AWS::Glue::Table + Properties: + CatalogId: + Ref: AWS::AccountId + DatabaseName: + Ref: GlueDatabase + TableInput: + Name: csvgluetable + StorageDescriptor: + Columns: + - Name: id + Type: string + - Name: name + Type: string + - Name: email + Type: string + - Name: phone + Type: string + InputFormat: org.apache.hadoop.mapred.TextInputFormat + Location: + Fn::Join: + - "" + - - s3:// + - Ref: ErBucket6EA35F9D + - /csvData/ + OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + SerdeInfo: + Parameters: + serialization.format: "1" + SerializationLibrary: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + TableType: EXTERNAL_TABLE + DependsOn: + - GlueDatabase + Metadata: + aws:cdk:path: EntityResolutionCdkStack/csvgluetable + EntityResolutionRoleB51A51D3: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Statement: + - Action: sts:AssumeRole + Effect: Allow + Principal: + Service: entityresolution.amazonaws.com + Version: "2012-10-17" + ManagedPolicyArns: + - Fn::Join: + - "" + - - "arn:" + - Ref: AWS::Partition + - :iam::aws:policy/AmazonS3FullAccess + - Fn::Join: + - "" + - - "arn:" + - Ref: AWS::Partition + - :iam::aws:policy/AWSEntityResolutionConsoleFullAccess + - Fn::Join: + - "" + - - "arn:" + - Ref: AWS::Partition + - :iam::aws:policy/AWSGlueConsoleFullAccess + - Fn::Join: + - "" + - - "arn:" + - Ref: AWS::Partition + - :iam::aws:policy/service-role/AWSGlueServiceRole + Metadata: + aws:cdk:path: EntityResolutionCdkStack/EntityResolutionRole/Resource + EntityResolutionRoleDefaultPolicy586C8066: + Type: AWS::IAM::Policy + Properties: + PolicyDocument: + Statement: + - Action: + - entityresolution:GetMatchingWorkflow + - entityresolution:StartMatchingWorkflow + Effect: Allow + Resource: "*" + Version: "2012-10-17" + PolicyName: EntityResolutionRoleDefaultPolicy586C8066 + Roles: + - Ref: EntityResolutionRoleB51A51D3 + Metadata: + aws:cdk:path: EntityResolutionCdkStack/EntityResolutionRole/DefaultPolicy/Resource + CDKMetadata: + Type: AWS::CDK::Metadata + Properties: + Analytics: v2:deflate64:H4sIAAAAAAAA/02MzQ7CIBCEn6V3WPuTvoD15EVTvZstRbOWgimgMYR3t4WLp5n5ZjI1VE0LZYEfy8U4cUUDhItDMbEV3YJtIOy9mKRj3V1nF9lDeQlhBQd0OKCVW3nFQcnICGcIvVGJJT0bReK7xexiZL20xi8ibU7evXy6/6ed0SM5MjqyI75xV1dQQls8LRFfvHY0S+iz/gCPIXoRxAAAAA== + Metadata: + aws:cdk:path: EntityResolutionCdkStack/CDKMetadata/Default + Condition: CDKMetadataAvailable +Outputs: + EntityResolutionRoleArn: + Description: The ARN of the EntityResolution Role + Value: + Fn::GetAtt: + - EntityResolutionRoleB51A51D3 + - Arn + JsonErGlueTableArn: + Description: The ARN of the Json Glue Table + Value: + Fn::Join: + - "" + - - "arn:aws:glue:" + - Ref: AWS::Region + - ":" + - Ref: AWS::AccountId + - :table/ + - Ref: GlueDatabase + - /jsongluetable + CsvErGlueTableArn: + Description: The ARN of the CSV Glue Table + Value: + Fn::Join: + - "" + - - "arn:aws:glue:" + - Ref: AWS::Region + - ":" + - Ref: AWS::AccountId + - :table/ + - Ref: GlueDatabase + - /csvgluetable + GlueDataBucketName: + Description: The name of the Glue Data Bucket + Value: + Ref: ErBucket6EA35F9D +Conditions: + CDKMetadataAvailable: + Fn::Or: + - Fn::Or: + - Fn::Equals: + - Ref: AWS::Region + - af-south-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-east-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-northeast-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-northeast-2 + - Fn::Equals: + - Ref: AWS::Region + - ap-south-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-southeast-1 + - Fn::Equals: + - Ref: AWS::Region + - ap-southeast-2 + - Fn::Equals: + - Ref: AWS::Region + - ca-central-1 + - Fn::Equals: + - Ref: AWS::Region + - cn-north-1 + - Fn::Equals: + - Ref: AWS::Region + - cn-northwest-1 + - Fn::Or: + - Fn::Equals: + - Ref: AWS::Region + - eu-central-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-north-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-south-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-west-1 + - Fn::Equals: + - Ref: AWS::Region + - eu-west-2 + - Fn::Equals: + - Ref: AWS::Region + - eu-west-3 + - Fn::Equals: + - Ref: AWS::Region + - il-central-1 + - Fn::Equals: + - Ref: AWS::Region + - me-central-1 + - Fn::Equals: + - Ref: AWS::Region + - me-south-1 + - Fn::Equals: + - Ref: AWS::Region + - sa-east-1 + - Fn::Or: + - Fn::Equals: + - Ref: AWS::Region + - us-east-1 + - Fn::Equals: + - Ref: AWS::Region + - us-east-2 + - Fn::Equals: + - Ref: AWS::Region + - us-west-1 + - Fn::Equals: + - Ref: AWS::Region + - us-west-2 +Parameters: + BootstrapVersion: + Type: AWS::SSM::Parameter::Value + Default: /cdk-bootstrap/hnb659fds/version + Description: Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip] From 776b683bdfbac9cc3c53e7516314109bef87949b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 16:29:27 +0000 Subject: [PATCH 20/33] Bump org.springframework:spring-context from 6.1.14 to 6.1.20 in /javav2/example_code/sqs-jms (#7468) Bump org.springframework:spring-context in /javav2/example_code/sqs-jms Bumps [org.springframework:spring-context](https://github.com/spring-projects/spring-framework) from 6.1.14 to 6.1.20. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.14...v6.1.20) --- updated-dependencies: - dependency-name: org.springframework:spring-context dependency-version: 6.1.20 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- javav2/example_code/sqs-jms/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javav2/example_code/sqs-jms/pom.xml b/javav2/example_code/sqs-jms/pom.xml index f9d13824bb4..0f4f5b7d917 100644 --- a/javav2/example_code/sqs-jms/pom.xml +++ b/javav2/example_code/sqs-jms/pom.xml @@ -83,7 +83,7 @@ org.springframework spring-context - 6.1.14 + 6.1.20 From 31ee18a7db00f2f488493a2585114d07632c6358 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 16:32:43 +0000 Subject: [PATCH 21/33] Bump degenerator and aws-cdk in /resources/cdk/rekognition-sns-video-analyzer (#7467) Bump degenerator and aws-cdk Removes [degenerator](https://github.com/TooTallNate/proxy-agents/tree/HEAD/packages/degenerator). It's no longer used after updating ancestor dependency [aws-cdk](https://github.com/aws/aws-cdk-cli/tree/HEAD/packages/aws-cdk). These dependencies need to be updated together. Removes `degenerator` Updates `aws-cdk` from 1.87.1 to 1.203.0 - [Release notes](https://github.com/aws/aws-cdk-cli/releases) - [Commits](https://github.com/aws/aws-cdk-cli/commits/HEAD/packages/aws-cdk) --- updated-dependencies: - dependency-name: degenerator dependency-version: dependency-type: indirect - dependency-name: aws-cdk dependency-version: 1.203.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../package-lock.json | 11710 ++++++---------- .../package.json | 2 +- 2 files changed, 4294 insertions(+), 7418 deletions(-) diff --git a/resources/cdk/rekognition-sns-video-analyzer/package-lock.json b/resources/cdk/rekognition-sns-video-analyzer/package-lock.json index 0327f414431..acb142ea022 100644 --- a/resources/cdk/rekognition-sns-video-analyzer/package-lock.json +++ b/resources/cdk/rekognition-sns-video-analyzer/package-lock.json @@ -25,7 +25,7 @@ "@aws-cdk/assert": "1.203.0", "@types/jest": "^26.0.10", "@types/node": "10.17.27", - "aws-cdk": "1.87.1", + "aws-cdk": "1.203.0", "jest": "^29.7.0", "ts-jest": "^29.1.4", "ts-node": "^9.0.0", @@ -3731,681 +3731,677 @@ } }, "node_modules/aws-cdk": { - "version": "1.87.1", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-1.87.1.tgz", - "integrity": "sha512-W1CaXKw9NBbtX3XVDpatJGXzpvDI+bo9LtA4Qr9pqB/Wl+ChGg119qoT4Oj2NKf03PE74MHQQsCkIiixPILjPA==", - "dev": true, - "hasShrinkwrap": true, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": "1.87.1", - "@aws-cdk/cloudformation-diff": "1.87.1", - "@aws-cdk/cx-api": "1.87.1", - "@aws-cdk/region-info": "1.87.1", - "@aws-cdk/yaml-cfn": "1.87.1", - "archiver": "^5.2.0", - "aws-sdk": "^2.830.0", - "camelcase": "^6.2.0", - "cdk-assets": "1.87.1", - "colors": "^1.4.0", - "decamelize": "^5.0.0", - "fs-extra": "^9.1.0", - "glob": "^7.1.6", - "json-diff": "^0.5.4", - "minimatch": ">=3.0", - "promptly": "^3.2.0", - "proxy-agent": "^4.0.1", - "semver": "^7.3.2", - "source-map-support": "^0.5.19", - "table": "^6.0.7", - "uuid": "^8.3.2", - "wrap-ansi": "^7.0.0", - "yargs": "^16.2.0" - }, + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-1.203.0.tgz", + "integrity": "sha512-9nghEa+JGzh7LEz2Yl2q4v+76Uf+Y4A4Pa38PSsNgI0jAwnBAz5NaC3MB4Tdzd5szSfQuS72u5Uuxh6Lz1H0ow==", + "dev": true, + "license": "Apache-2.0", "bin": { "cdk": "bin/cdk" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" + }, + "optionalDependencies": { + "fsevents": "2.3.2" } }, - "node_modules/aws-cdk/node_modules/@aws-cdk/cfnspec": { - "version": "1.87.1", + "node_modules/aws-cdk/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "dependencies": { - "md5": "^2.3.0" + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/aws-cdk/node_modules/@aws-cdk/cloud-assembly-schema": { - "version": "1.87.1", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "dependencies": { - "jsonschema": "^1.4.0", - "semver": "^7.3.2" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/aws-cdk/node_modules/@aws-cdk/cloudformation-diff": { - "version": "1.87.1", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "@aws-cdk/cfnspec": "1.87.1", - "colors": "^1.4.0", - "diff": "^5.0.0", - "fast-deep-equal": "^3.1.3", - "string-width": "^4.2.0", - "table": "^6.0.7" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/@aws-cdk/cx-api": { - "version": "1.87.1", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { - "@aws-cdk/cloud-assembly-schema": "1.87.1", - "semver": "^7.3.2" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/@aws-cdk/region-info": { - "version": "1.87.1", - "dev": true - }, - "node_modules/aws-cdk/node_modules/@aws-cdk/yaml-cfn": { - "version": "1.87.1", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "dependencies": { - "yaml": "1.10.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, "dependencies": { - "debug": "4" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/aws-cdk/node_modules/ajv": { - "version": "7.0.3", - "resolved": "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/aws-cdk/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/aws-cdk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - } - }, - "node_modules/aws-cdk/node_modules/archiver": { - "version": "5.2.0", - "resolved": "https://registry.yarnpkg.com/archiver/-/archiver-5.2.0.tgz#25aa1b3d9febf7aec5b0f296e77e69960c26db94", - "integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.1.4", - "zip-stream": "^4.0.4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/aws-cdk/node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/archiver/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/aws-cdk/node_modules/archiver/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/archiver/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/aws-cdk/node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "dependencies": { - "tslib": "^2.0.1" + "node-int64": "^0.4.0" } }, - "node_modules/aws-cdk/node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/aws-cdk/node_modules/aws-sdk": { - "version": "2.830.0", - "resolved": "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.830.0.tgz#1d3631d573d18c48373046da7ad92855a7fd1636", - "integrity": "sha512-vFatoWkdJmRzpymWbqsuwVsAJdhdAvU2JcM9jKRENTNKJw90ljnLyeP1eKCp4O3/4Lg43PVBwY/KUqPy4wL+OA==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.15.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.3.2", - "xml2js": "0.4.19" + "engines": { + "node": ">=6" } }, - "node_modules/aws-cdk/node_modules/aws-sdk/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/aws-cdk/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/aws-sdk/node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/aws-sdk/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001634", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", + "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/aws-cdk/node_modules/bl": { - "version": "4.0.3", - "resolved": "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/aws-cdk/node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "node_modules/aws-cdk/node_modules/bl/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/bl/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" + "engines": { + "node": ">=10" } }, - "node_modules/aws-cdk/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": "*" } }, - "node_modules/aws-cdk/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, - "node_modules/aws-cdk/node_modules/cdk-assets": { - "version": "1.87.1", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "@aws-cdk/cloud-assembly-schema": "1.87.1", - "@aws-cdk/cx-api": "1.87.1", - "archiver": "^5.2.0", - "aws-sdk": "^2.830.0", - "glob": "^7.1.6", - "yargs": "^16.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/aws-cdk/node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/cli-color": { - "version": "0.1.7", - "resolved": "https://registry.yarnpkg.com/cli-color/-/cli-color-0.1.7.tgz#adc3200fa471cc211b0da7f566b71e98b9d67347", - "integrity": "sha1-rcMgD6RxzCEbDaf1ZrcemLnWc0c=", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "dependencies": { - "es5-ext": "0.8.x" + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/aws-cdk/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true }, - "node_modules/aws-cdk/node_modules/color-convert": { + "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/aws-cdk/node_modules/color-name": { + "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/aws-cdk/node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/aws-cdk/node_modules/compress-commons": { - "version": "4.0.2", - "resolved": "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.0.2.tgz#d6896be386e52f37610cef9e6fa5defc58c31bd7", - "integrity": "sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - } - }, - "node_modules/aws-cdk/node_modules/compress-commons/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "node_modules/constructs": { + "version": "3.4.329", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-3.4.329.tgz", + "integrity": "sha512-uj62KOOmaX6i10KcBLzXcXgcFRZpP+XoCiEqT8tg1zXIGSY3iQ6n6wzw/44laG9L4qrWvCtMna6wACW8CejKkQ==", + "engines": { + "node": ">= 16.14.0" } }, - "node_modules/aws-cdk/node_modules/compress-commons/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/aws-cdk/node_modules/compress-commons/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/aws-cdk/node_modules/crc-32": { - "version": "1.2.0", - "resolved": "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/aws-cdk/node_modules/crc32-stream": { - "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.1.tgz#0f047d74041737f8a55e86837a1b826bd8ab0067", - "integrity": "sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw==", + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" + "engines": { + "node": "*" } }, - "node_modules/aws-cdk/node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/aws-cdk/node_modules/crc32-stream/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/crc32-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/aws-cdk/node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/debug": { - "version": "4.2.0", - "resolved": "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "dependencies": { - "ms": "2.1.2" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/aws-cdk/node_modules/decamelize": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.0.tgz#88358157b010ef133febfd27c18994bd80c6215b", - "integrity": "sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/degenerator": { - "version": "2.2.0", - "resolved": "https://registry.yarnpkg.com/degenerator/-/degenerator-2.2.0.tgz#49e98c11fa0293c5b26edfbb52f15729afcdb254", - "integrity": "sha512-aiQcQowF01RxFI4ZLFMpzyotbQonhNpBao6dkI8JPk5a+hmSjR5ErHp2CQySmQe8os3VBqLCIh87nDBgZXvsmg==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "dependencies": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/difflib": { - "version": "0.2.4", - "resolved": "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e", - "integrity": "sha1-teMDYabbAjF21WKJLbhZQKcY9H4=", + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, - "dependencies": { - "heap": ">= 0.2.0" + "engines": { + "node": ">=0.3.1" } }, - "node_modules/aws-cdk/node_modules/dreamopt": { - "version": "0.6.0", - "resolved": "https://registry.yarnpkg.com/dreamopt/-/dreamopt-0.6.0.tgz#d813ccdac8d39d8ad526775514a13dda664d6b4b", - "integrity": "sha1-2BPM2sjTnYrVJndVFKE92mZNa0s=", + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true, - "dependencies": { - "wordwrap": ">=0.0.2" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/aws-cdk/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/electron-to-chromium": { + "version": "1.4.803", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.803.tgz", + "integrity": "sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==", "dev": true }, - "node_modules/aws-cdk/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "dependencies": { - "once": "^1.4.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/aws-cdk/node_modules/es5-ext": { - "version": "0.8.2", - "resolved": "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.8.2.tgz#aba8d9e1943a895ac96837a62a39b3f55ecd94ab", - "integrity": "sha1-q6jZ4ZQ6iVrJaDemKjmz9V7NlKs=", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/aws-cdk/node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/esprima": { + "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/aws-cdk/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } }, - "node_modules/aws-cdk/node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/aws-cdk/node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/aws-cdk/node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true + "node_modules/expect/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/aws-cdk/node_modules/fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/aws-cdk/node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, - "node_modules/aws-cdk/node_modules/file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", - "dev": true + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } }, - "node_modules/aws-cdk/node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/aws-cdk/node_modules/fs-extra": { + "node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { @@ -4413,1794 +4409,1626 @@ "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/aws-cdk/node_modules/fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/aws-cdk/node_modules/ftp": { - "version": "0.3.10", - "resolved": "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "dependencies": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/aws-cdk/node_modules/ftp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/ftp/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/aws-cdk/node_modules/ftp/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/aws-cdk/node_modules/get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/get-uri": { - "version": "3.0.2", - "resolved": "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/aws-cdk/node_modules/get-uri/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/aws-cdk/node_modules/get-uri/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/get-uri/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/aws-cdk/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/aws-cdk/node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/heap": { - "version": "0.2.6", - "resolved": "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac", - "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/aws-cdk/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/aws-cdk/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/aws-cdk/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "node_modules/aws-cdk/node_modules/inflight": { + "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "node_modules/aws-cdk/node_modules/inherits": { + "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/aws-cdk/node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/aws-cdk/node_modules/is-buffer": { + "node_modules/is-buffer": { "version": "1.1.6", - "resolved": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "node_modules/aws-cdk/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/jmespath": { - "version": "0.15.0", - "resolved": "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/json-diff": { - "version": "0.5.4", - "resolved": "https://registry.yarnpkg.com/json-diff/-/json-diff-0.5.4.tgz#7bc8198c441756632aab66c7d9189d365a7a035a", - "integrity": "sha512-q5Xmx9QXNOzOzIlMoYtLrLiu4Jl/Ce2bn0CNcv54PhyH89CI4GWlGVDye8ei2Ijt9R3U+vsWPsXpLUNob8bs8Q==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "cli-color": "~0.1.6", - "difflib": "~0.2.1", - "dreamopt": "~0.6.0" + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/aws-cdk/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "universalify": "^2.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" + "engines": { + "node": ">=6" } }, - "node_modules/aws-cdk/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/aws-cdk/node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/aws-cdk/node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/aws-cdk/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "dependencies": { - "yallist": "^3.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" } }, - "node_modules/aws-cdk/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/aws-cdk/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/netmask": { - "version": "1.0.6", - "resolved": "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "wrappy": "1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/aws-cdk/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/aws-cdk/node_modules/pac-proxy-agent": { - "version": "4.1.0", - "resolved": "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-4.1.0.tgz#66883eeabadc915fc5e95457324cb0f0ac78defb", - "integrity": "sha512-ejNgYm2HTXSIYX9eFlkvqFp8hyJ374uDf0Zq5YUAifiSh1D6fo+iBivQZirGvVv8dCYUsLhmLBRhlAYvBKI5+Q==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^4.1.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/aws-cdk/node_modules/pac-resolver": { - "version": "4.1.0", - "resolved": "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-4.1.0.tgz#4b12e7d096b255a3b84e53f6831f32e9c7e5fe95", - "integrity": "sha512-d6lf2IrZJJ7ooVHr7BfwSjRO1yKSJMaiiWYSHcrxSIUtZrCa4KKGwcztdkZ/E9LFleJfjoi1yl+XLR7AX24nbQ==", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "degenerator": "^2.2.0", - "ip": "^1.1.5", - "netmask": "^1.0.6" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/aws-cdk/node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/printj": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/promptly": { - "version": "3.2.0", - "resolved": "https://registry.yarnpkg.com/promptly/-/promptly-3.2.0.tgz#a5517fbbf59bd31c1751d4e1d9bef1714f42b9d8", - "integrity": "sha512-WnR9obtgW+rG4oUV3hSnNGl1pHm3V1H/qD9iJBumGSmVsSC5HpZOLuu8qdMb6yCItGfT7dcRszejr/5P3i9Pug==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { - "read": "^1.0.4" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-4.0.1.tgz#326c3250776c7044cd19655ccbfadf2e065a045c", - "integrity": "sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^4.1.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/aws-cdk/node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "mute-stream": "~0.0.4" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true }, - "node_modules/aws-cdk/node_modules/readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.1.tgz#f0e10bb7bf7bfa7e0add8baffdc54c3f7dbee6c4", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/aws-cdk/node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/semver": { - "version": "7.3.2", - "resolved": "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/aws-cdk/node_modules/smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/socks": { - "version": "2.5.0", - "resolved": "https://registry.yarnpkg.com/socks/-/socks-2.5.0.tgz#3a7c286db114f67864a4bd8b4207a91d1db3d6db", - "integrity": "sha512-00OqQHp5SCbwm9ecOMJj9aQtMSjwi1uVuGQoxnpKCS50VKZcOZ8z11CTKypmR8sEy7nZimy/qXY7rYJYbRlXmA==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/aws-cdk/node_modules/socks-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60", - "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4", - "socks": "^2.3.3" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "node_modules/jest-config/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/aws-cdk/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/aws-cdk/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/table": { - "version": "6.0.7", - "resolved": "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/aws-cdk/node_modules/tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "node_modules/aws-cdk/node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "node_modules/aws-cdk/node_modules/tar-stream/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/tar-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "node_modules/jest-each/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/aws-cdk/node_modules/uri-js": { - "version": "4.4.0", - "resolved": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/uri-js/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/aws-cdk/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/aws-cdk/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/xml2js": { - "version": "0.4.19", - "resolved": "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/xml2js/node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/xregexp": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true - }, - "node_modules/aws-cdk/node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/yaml": { - "version": "1.10.0", - "resolved": "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/aws-cdk/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "node_modules/aws-cdk/node_modules/zip-stream": { - "version": "4.0.4", - "resolved": "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.0.4.tgz#3a8f100b73afaa7d1ae9338d910b321dec77ff3a", - "integrity": "sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==", + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.0.2", - "readable-stream": "^3.6.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/aws-cdk/node_modules/zip-stream/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/aws-cdk/node_modules/zip-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/babel-jest": { + "node_modules/jest-matcher-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/jest-matcher-utils/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/babel-plugin-jest-hoist": { + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { - "fill-range": "^7.1.1" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/browserslist": { - "version": "4.23.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", - "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001629", - "electron-to-chromium": "^1.4.796", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.16" - }, - "bin": { - "browserslist": "cli.js" - }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "fast-json-stable-stringify": "2.x" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "node-int64": "^0.4.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "engines": { "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001634", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001634.tgz", - "integrity": "sha512-fbBYXQ9q3+yp1q1gBk86tOFs4pyn/yxFm5ZNP18OXJDfA3txImOY9PhfxVggZ4vRHDqoU8NrKU81eN0OtzOgRA==", + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/constructs": { - "version": "3.4.329", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-3.4.329.tgz", - "integrity": "sha512-uj62KOOmaX6i10KcBLzXcXgcFRZpP+XoCiEqT8tg1zXIGSY3iQ6n6wzw/44laG9L4qrWvCtMna6wACW8CejKkQ==", + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">= 16.14.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, - "node_modules/create-jest": { + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", - "exit": "^0.1.2", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" + "picomatch": "^2.2.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, "engines": { - "node": ">=0.3.1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.803", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.803.tgz", - "integrity": "sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "json5": "lib/cli.js" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=6" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/expect/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "bser": "2.1.1" + "yallist": "^3.0.2" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "node": ">=10" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "tmpl": "1.0.5" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "dev": true, - "engines": { - "node": ">=6.9.0" + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">=8.0.0" + "node": ">=8.6" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "function-bind": "^1.1.2" + "path-key": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "engines": { - "node": ">=10.17.0" + "dependencies": { + "wrappy": "1" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { "node": ">=8" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=6" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, "engines": { "node": ">=8" }, @@ -6208,6210 +6036,3258 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">= 10" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/pretty-format/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10.14.2" } }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "node_modules/pretty-format/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "dev": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@types/yargs-parser": "*" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "resolve": "bin/resolve" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "resolve-from": "^5.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/jest-config/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/jest-each/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">= 10.14.2" + "node": ">=10" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">=8" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-matcher-utils/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "is-number": "^7.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8.0" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/ts-jest": { + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "node": ">=10" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4.2.0" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10.0.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "punycode": "^2.1.0" } }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "makeerror": "1.0.12" } }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "@aws-cdk/assert": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/assert/-/assert-1.203.0.tgz", + "integrity": "sha512-fr1ce67W9yOu7wnFfuV3iS4eWR4OriGO3tX1fYEij8zlL1RtO8lntMP3Wuf/Lo9GE0ovksSBoVWaBpK3C+6Hgg==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "requires": { + "@aws-cdk/cloudformation-diff": "1.203.0", + "@aws-cdk/core": "1.203.0", + "@aws-cdk/cx-api": "1.203.0", + "constructs": "^3.3.69" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "dependencies": { + "@aws-cdk/core": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/core/-/core-1.203.0.tgz", + "integrity": "sha512-3/quPwnGWKHm/Bzna/du5WP5a/Wp/NYqDyL1rJ1A3EPpsRQYywJPj77+M8nG5sD5qNIoFbhN7Q5aee+bcS7GGA==", + "dev": true, + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.203.0", + "@aws-cdk/cx-api": "1.203.0", + "@aws-cdk/region-info": "1.203.0", + "@balena/dockerignore": "^1.0.2", + "constructs": "^3.3.69", + "fs-extra": "^9.1.0", + "ignore": "^5.2.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "@balena/dockerignore": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "fs-extra": { + "version": "9.1.0", + "bundled": true, + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "bundled": true, + "dev": true + }, + "ignore": { + "version": "5.2.4", + "bundled": true, + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "universalify": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "@aws-cdk/region-info": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/region-info/-/region-info-1.203.0.tgz", + "integrity": "sha512-3GzFYrdUO2NGcOrlIJ1TvjRxB0/ntBEyQgwFtVJQSvt3msCznE/w1n6pZS+oDF12NWtIPFbsJ5zTGdJ+PLMJhg==", + "dev": true + } } }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "@aws-cdk/assets": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/assets/-/assets-1.204.0.tgz", + "integrity": "sha512-rY9YHZ3gUWr+dLwTwSUWYbIfk/AXy4JZRkhLbunrtzjQhH+QMm/2IWIebfBGu+A5AlVRaFbRLonReuGP5WZoUQ==", + "requires": { + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "dependencies": { + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@aws-cdk/aws-acmpca": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-acmpca/-/aws-acmpca-1.204.0.tgz", + "integrity": "sha512-2zyuQZwynwkz2qiuFDp088tglWXKX3q7saWRDqeuq2n2HE6PGuQRjd4zjl9nDGUVxQYtzzXyEuPyaEta8fg9lQ==", + "requires": { + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "@aws-cdk/aws-applicationautoscaling": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.204.0.tgz", + "integrity": "sha512-sEe2NODKUowJx2guM2SPfs/20gGdBq1C09M32b8c1im7K+PqQkHkE156nyz5Ml0hpsNeCZlRS17oKZ042aZevQ==", + "requires": { + "@aws-cdk/aws-autoscaling-common": "1.204.0", + "@aws-cdk/aws-cloudwatch": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@aws-cdk/aws-autoscaling-common": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.204.0.tgz", + "integrity": "sha512-P+PwbTaj28Eg9+/U9ZTXTh1gA7L9Z45GL+9xcEZvEqAkJt9MNgzZICavVZu1sMD74foK1r1ZOBXTsqV6wEiltQ==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" + "@aws-cdk/aws-certificatemanager": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.204.0.tgz", + "integrity": "sha512-ZLykfAOb5Zbg/MFtzA+eHhMAK1xL32+oHKSK6tAYrgvv2aS42wJE4zSBV6jGCjnCkhcliUd5pwnACEl3ib0KLw==", + "requires": { + "@aws-cdk/aws-acmpca": "1.204.0", + "@aws-cdk/aws-cloudwatch": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-lambda": "1.204.0", + "@aws-cdk/aws-route53": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" + "@aws-cdk/aws-cloudformation": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.204.0.tgz", + "integrity": "sha512-9PkZa9mKLneB0My8wJC7lLZmPJsnOxNYy57ZZlRCQhK0eO6Jc9eVqrI29537W+3ireaEjCLEitkb8NO1FN/kQA==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-lambda": "1.204.0", + "@aws-cdk/aws-s3": "1.204.0", + "@aws-cdk/aws-sns": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" + "@aws-cdk/aws-cloudwatch": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.204.0.tgz", + "integrity": "sha512-ADT2D+4FtB9Zcy/TlF2tswQmjmrPVgORYTkznQQ2SniCODHWzz558+G1RV+IVvWRdH7nYQtV0UEuGZKpffWh2w==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" + "@aws-cdk/aws-codeguruprofiler": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.204.0.tgz", + "integrity": "sha512-IrgY4SmVf9p5POfHm8BsPzaAO5lQTG7nhb5qN5AzS6zKCTuEjjTNHjx1TOfPV12mMIDAIVsK91mjDlAR88Mjbg==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "@aws-cdk/aws-codestarnotifications": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-codestarnotifications/-/aws-codestarnotifications-1.204.0.tgz", + "integrity": "sha512-t//hSpC5/uVW2321YlbGabNVzhWayvqz+xSnagADGcT9qiq3KQR/uUlrgpHv1/eHRMk7EMrY9prlXeZpfzZ+cw==", + "requires": { + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" + } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" + "@aws-cdk/aws-cognito": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-cognito/-/aws-cognito-1.204.0.tgz", + "integrity": "sha512-7QIbExW9dn1fktpDOh2nMHmor2S3uuHtIX5y33lc9OKg3xUuYw4AZ67MKapunN7QUBlffTlNzoUqlHoNSab+Zg==", + "requires": { + "@aws-cdk/aws-certificatemanager": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/aws-lambda": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/custom-resources": "1.204.0", + "constructs": "^3.3.69", + "punycode": "^2.3.0" }, - "engines": { - "node": ">=8" + "dependencies": { + "punycode": { + "version": "2.3.0", + "bundled": true + } } }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@aws-cdk/aws-ec2": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ec2/-/aws-ec2-1.204.0.tgz", + "integrity": "sha512-SoqZEgzdfPW0aa+FQ0CjzbDG+X+sDu6/BnLL2O10lxpa+9Dc1iyArAqNKFJG5KXGJe9ibvQXyNQqEjeGRFc22Q==", + "requires": { + "@aws-cdk/aws-cloudwatch": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/aws-logs": "1.204.0", + "@aws-cdk/aws-s3": "1.204.0", + "@aws-cdk/aws-s3-assets": "1.204.0", + "@aws-cdk/aws-ssm": "1.204.0", + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "@aws-cdk/region-info": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, "dependencies": { - "tmpl": "1.0.5" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "@aws-cdk/aws-ecr": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ecr/-/aws-ecr-1.204.0.tgz", + "integrity": "sha512-oCts9e+ackWoFHeyn/3oKm3X1lSizleWNNXHp5WGM38lpNVrtCLMKSShu5iXJBhqRH2Mz1AcA4fDMWhe8DvJFA==", + "requires": { + "@aws-cdk/aws-events": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "@aws-cdk/aws-ecr-assets": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.204.0.tgz", + "integrity": "sha512-2GHD3pZdDoPxq3HhD4czANuI7TMoxpjszbzsQAc2wbdMX1j+K4vIL+PBpj3altfscPqcvy1v70lBjbG5rcBIkQ==", + "requires": { + "@aws-cdk/assets": "1.204.0", + "@aws-cdk/aws-ecr": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-s3": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" + "@aws-cdk/aws-efs": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-efs/-/aws-efs-1.204.0.tgz", + "integrity": "sha512-FB6nHgCuzYF5K9ywqYPEPjL2G1ATLIR9dJp1p4ydcEUuXDb4KSEVN4Bgx+q1e7EkWGIq+9glr+ckheEcTvETgw==", + "requires": { + "@aws-cdk/aws-ec2": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { - "wrappy": "1" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@aws-cdk/aws-events": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-events/-/aws-events-1.204.0.tgz", + "integrity": "sha512-KnfUmtv+4RhydD9+5CHFxNJxtgn7+Xftwfwg1G7qV/tWYPFHcNIvhlSOgwDrQPa+pTo1MmkiUN0lAR0G8B/cbw==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "@aws-cdk/aws-iam": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-iam/-/aws-iam-1.204.0.tgz", + "integrity": "sha512-Fh2egW3v/uDdw3m4jvcupS7COL/+sJl2NHjz9l298ddyMxqDwJD2NQwE8mvgPLK4rDtAtDnE0c8RS6d+NWiC+w==", + "requires": { + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "@aws-cdk/region-info": "1.204.0", + "constructs": "^3.3.69" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "@aws-cdk/aws-kms": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-kms/-/aws-kms-1.204.0.tgz", + "integrity": "sha512-iryZQ428L1VUVQ0zE96XTWWX7ANVtDrb6x+ZXXLTVUEPgjEd/W6zlcp++Qi0A3a9HLNd4PbEhK9rs0UKNTylzw==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" + "@aws-cdk/aws-lambda": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-lambda/-/aws-lambda-1.204.0.tgz", + "integrity": "sha512-r0XXovrLAx8Q8Fz915SwzyQM/KLhEB6YCp3CsWliFGSOHEjRP8yX8UZdEJqe5kYD7Th9JAhUVzKgyv20P7g5Tg==", + "requires": { + "@aws-cdk/aws-applicationautoscaling": "1.204.0", + "@aws-cdk/aws-cloudwatch": "1.204.0", + "@aws-cdk/aws-codeguruprofiler": "1.204.0", + "@aws-cdk/aws-ec2": "1.204.0", + "@aws-cdk/aws-ecr": "1.204.0", + "@aws-cdk/aws-ecr-assets": "1.204.0", + "@aws-cdk/aws-efs": "1.204.0", + "@aws-cdk/aws-events": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/aws-logs": "1.204.0", + "@aws-cdk/aws-s3": "1.204.0", + "@aws-cdk/aws-s3-assets": "1.204.0", + "@aws-cdk/aws-signer": "1.204.0", + "@aws-cdk/aws-sns": "1.204.0", + "@aws-cdk/aws-sqs": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "@aws-cdk/region-info": "1.204.0", + "constructs": "^3.3.69" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pretty-format/node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "@aws-cdk/aws-logs": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-logs/-/aws-logs-1.204.0.tgz", + "integrity": "sha512-PuHsDSkX6JFBgldxViGw91eFLageJ2cX89/RyLbWaJJUV4tlUKXSmmkVgOaBmvil0QKuGqbOzLXcXCoIK9Sg3A==", + "requires": { + "@aws-cdk/aws-cloudwatch": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/aws-s3-assets": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/pretty-format/node_modules/@types/yargs": { - "version": "15.0.19", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", - "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } } - ] - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "@aws-cdk/aws-route53": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-route53/-/aws-route53-1.204.0.tgz", + "integrity": "sha512-wQpGUXqc2y7yJFTipfuVxWy/VGeshyGlfGl4evusQK9Md0DMpVmG8kRgazLk1myqUSNSfi643UwvDJqNbYmdnA==", + "requires": { + "@aws-cdk/aws-ec2": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-logs": "1.204.0", + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/custom-resources": "1.204.0", + "constructs": "^3.3.69" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" + "@aws-cdk/aws-s3": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-s3/-/aws-s3-1.204.0.tgz", + "integrity": "sha512-jsQ4n1L4MdPYDirBoOYgg7yzSk1TaFYo4dnwDlKiLJ5LcHG3Nai1cHb9XQbCy/9KKqbWsbd3WlkH+vcWEl8EUA==", + "requires": { + "@aws-cdk/aws-events": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": ">=8" + "dependencies": { + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" + "@aws-cdk/aws-s3-assets": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.204.0.tgz", + "integrity": "sha512-3MQbVZ95wW29Bl63tqu0Bz0td3osLyGg352l5G7Ztf3nK35FpuQlgxO4kcu74+s2sRwdd/R4KFV6eWhhPk+J7g==", + "requires": { + "@aws-cdk/assets": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/aws-s3": "1.204.0", + "@aws-cdk/core": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "constructs": "^3.3.69" + }, + "dependencies": { + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" + "@aws-cdk/aws-signer": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-signer/-/aws-signer-1.204.0.tgz", + "integrity": "sha512-AI26FhWF3+f/vDh3mleQa2CXv2/CmSerXgyk4XHMVVTTCjnlYGGmHmGlzYhqOSw6ALpQNdOSw8GVxU/ySpQCaw==", + "requires": { + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "@aws-cdk/aws-sns": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-sns/-/aws-sns-1.204.0.tgz", + "integrity": "sha512-KoWxqKT/dTjt9Pk0a3kJLcd6xZHvrwbZDC0mrLtxdRNhQoHmnURAHW2UqX/lefrCU1GcUFf4L58N9ehBTunAFQ==", + "requires": { + "@aws-cdk/aws-cloudwatch": "1.204.0", + "@aws-cdk/aws-codestarnotifications": "1.204.0", + "@aws-cdk/aws-events": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/aws-sqs": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" + "@aws-cdk/aws-sns-subscriptions": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.204.0.tgz", + "integrity": "sha512-yi78Kp0fV2nL7LnxL9ot8wbhGVYsL/ZeIzi6m2+iRZCgW1V+nO/a/eXdk5mMpBGLCqOtWcG59sIpSjqHvgpdaQ==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/aws-lambda": "1.204.0", + "@aws-cdk/aws-sns": "1.204.0", + "@aws-cdk/aws-sqs": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "@aws-cdk/aws-sqs": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-sqs/-/aws-sqs-1.204.0.tgz", + "integrity": "sha512-dVzuGMh6d5/X9P9jel1w2Wgdy5MuSE35+eBSFxN+S7oJRoVSARpyKMNYAPMCW+2OJCDw7fIqO1rWbsZBT1Gq8g==", + "requires": { + "@aws-cdk/aws-cloudwatch": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@aws-cdk/aws-ssm": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ssm/-/aws-ssm-1.204.0.tgz", + "integrity": "sha512-yYx7HZ8cWNXDAmX/99WkB477QhLoV2rcB8orei8aj7nRkNq5TMjeox0IJaZVgU+edNEDOi1fVX3flh0SAMiUrg==", + "requires": { + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-kms": "1.204.0", + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + } } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "@aws-cdk/cfnspec": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cfnspec/-/cfnspec-1.203.0.tgz", + "integrity": "sha512-D4E9Y2fCAzmwNNTn6Ipe16ZlHZc06XPiqQ5ijWHDnMKlDhM6bsPBEOSRc8uGRtWu317evTFanvLgAXmpHlHKZQ==", "dev": true, - "engines": { - "node": ">=6" + "requires": { + "fs-extra": "^9.1.0", + "md5": "^2.3.0" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "@aws-cdk/cloud-assembly-schema": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.203.0.tgz", + "integrity": "sha512-r252InZ8Oh7q7ztriaA3n6F48QOFVfNcT/KO4XOlYyt1xDWRMENDYf+D+DVr6O5klcaa3ivvvDT7DRuW3xdVOQ==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "jsonschema": { + "version": "1.4.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true, + "dev": true + } } }, - "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "@aws-cdk/cloudformation-diff": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.203.0.tgz", + "integrity": "sha512-QmNnwCwBvfHvvDg/GTWFUktXIEoXc9cbrwYWxjZSWqR7cI8tVYDWsCEEqeovdJHEru7gAoz85QId30pPFZPyLg==", "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", + "requires": { + "@aws-cdk/cfnspec": "1.203.0", + "@types/node": "^10.17.60", + "chalk": "^4", + "diff": "^5.1.0", + "fast-deep-equal": "^3.1.3", "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "table": "^6.8.1" }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true + } } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" + "@aws-cdk/core": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/core/-/core-1.204.0.tgz", + "integrity": "sha512-yO/flJ9ihpzRhLTEqlbdbuPGtyyghHiiQPkUTLslwUM5vThVTbpgvW4UQHSGqytyst4MYXrN2jQn2RkwIRU57g==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "@aws-cdk/cx-api": "1.204.0", + "@aws-cdk/region-info": "1.204.0", + "@balena/dockerignore": "^1.0.2", + "constructs": "^3.3.69", + "fs-extra": "^9.1.0", + "ignore": "^5.2.4", + "minimatch": "^3.1.2" }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-jest": { - "version": "29.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", - "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", - "dev": true, "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true + "@aws-cdk/cloud-assembly-schema": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", + "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "requires": { + "jsonschema": "^1.4.1", + "semver": "^7.3.8" + }, + "dependencies": { + "jsonschema": { + "version": "1.4.1", + "bundled": true + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } }, - "@jest/transform": { - "optional": true + "@aws-cdk/cx-api": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", + "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.204.0", + "semver": "^7.3.8" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } }, - "@jest/types": { - "optional": true + "@balena/dockerignore": { + "version": "1.0.2", + "bundled": true }, - "babel-jest": { - "optional": true + "at-least-node": { + "version": "1.0.0", + "bundled": true }, - "esbuild": { - "optional": true + "balanced-match": { + "version": "1.0.2", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "fs-extra": { + "version": "9.1.0", + "bundled": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "bundled": true + }, + "ignore": { + "version": "5.2.4", + "bundled": true + }, + "jsonfile": { + "version": "6.1.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "universalify": { + "version": "2.0.0", + "bundled": true } } }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@aws-cdk/custom-resources": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/custom-resources/-/custom-resources-1.204.0.tgz", + "integrity": "sha512-0w3oi7LnAtMZpf7uUBDH6aT2Oo1EBQrqD+VTvPZDX8PJFAox8ol7buZ9sSTpIXgv9j/GK9yaPTIHt4m8ok9kVQ==", + "requires": { + "@aws-cdk/aws-cloudformation": "1.204.0", + "@aws-cdk/aws-ec2": "1.204.0", + "@aws-cdk/aws-iam": "1.204.0", + "@aws-cdk/aws-lambda": "1.204.0", + "@aws-cdk/aws-logs": "1.204.0", + "@aws-cdk/aws-sns": "1.204.0", + "@aws-cdk/core": "1.204.0", + "constructs": "^3.3.69" } }, - "node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "@aws-cdk/cx-api": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.203.0.tgz", + "integrity": "sha512-W2flnJFGytifPw2ojEsh9l8MAI4UANaUcMKr+qt4eJmFwrtVcS7nasdJQGSatQdxkAwd2pX4x10brAHYoAqjjQ==", "dev": true, - "dependencies": { - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "engines": { - "node": ">=10.0.0" + "requires": { + "@aws-cdk/cloud-assembly-schema": "1.203.0", + "semver": "^7.3.8" }, - "peerDependencies": { - "typescript": ">=2.7" + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.8", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true, + "dev": true + } } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "@aws-cdk/region-info": { + "version": "1.204.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/region-info/-/region-info-1.204.0.tgz", + "integrity": "sha512-lPkYJNoN4Gjlf0Fdfgcd1RTm5RD9qtfaFMwVvTn2KGTr7ZqmFskGQ9FqIcd5vd6GmsbAL8OrFOToLr1AHDuOiQ==" + }, + "@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, - "engines": { - "node": ">=0.3.1" + "requires": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true }, - "node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" } }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "requires": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "requires": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, - "dependencies": { - "punycode": "^2.1.0" + "requires": { + "@babel/types": "^7.24.7" } }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" + "requires": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, - "dependencies": { - "makeerror": "1.0.12" + "requires": { + "@babel/types": "^7.24.7" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "requires": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "requires": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, - "engines": { - "node": ">=10" + "requires": { + "@babel/types": "^7.24.7" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } + "@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } + "@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, "requires": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" } }, - "@aws-cdk/assert": { - "version": "1.203.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/assert/-/assert-1.203.0.tgz", - "integrity": "sha512-fr1ce67W9yOu7wnFfuV3iS4eWR4OriGO3tX1fYEij8zlL1RtO8lntMP3Wuf/Lo9GE0ovksSBoVWaBpK3C+6Hgg==", + "@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "requires": { - "@aws-cdk/cloudformation-diff": "1.203.0", - "@aws-cdk/core": "1.203.0", - "@aws-cdk/cx-api": "1.203.0", - "constructs": "^3.3.69" + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "dependencies": { - "@aws-cdk/core": { - "version": "1.203.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/core/-/core-1.203.0.tgz", - "integrity": "sha512-3/quPwnGWKHm/Bzna/du5WP5a/Wp/NYqDyL1rJ1A3EPpsRQYywJPj77+M8nG5sD5qNIoFbhN7Q5aee+bcS7GGA==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "1.203.0", - "@aws-cdk/cx-api": "1.203.0", - "@aws-cdk/region-info": "1.203.0", - "@balena/dockerignore": "^1.0.2", - "constructs": "^3.3.69", - "fs-extra": "^9.1.0", - "ignore": "^5.2.4", - "minimatch": "^3.1.2" - }, - "dependencies": { - "@balena/dockerignore": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "fs-extra": { - "version": "9.1.0", - "bundled": true, - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "bundled": true, - "dev": true - }, - "ignore": { - "version": "5.2.4", - "bundled": true, - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "universalify": { - "version": "2.0.0", - "bundled": true, - "dev": true - } + "color-convert": "^1.9.0" } }, - "@aws-cdk/region-info": { - "version": "1.203.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/region-info/-/region-info-1.203.0.tgz", - "integrity": "sha512-3GzFYrdUO2NGcOrlIJ1TvjRxB0/ntBEyQgwFtVJQSvt3msCznE/w1n6pZS+oDF12NWtIPFbsJ5zTGdJ+PLMJhg==", - "dev": true - } - } - }, - "@aws-cdk/assets": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/assets/-/assets-1.204.0.tgz", - "integrity": "sha512-rY9YHZ3gUWr+dLwTwSUWYbIfk/AXy4JZRkhLbunrtzjQhH+QMm/2IWIebfBGu+A5AlVRaFbRLonReuGP5WZoUQ==", - "requires": { - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } + "color-name": "1.1.3" } - } - } - }, - "@aws-cdk/aws-acmpca": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-acmpca/-/aws-acmpca-1.204.0.tgz", - "integrity": "sha512-2zyuQZwynwkz2qiuFDp088tglWXKX3q7saWRDqeuq2n2HE6PGuQRjd4zjl9nDGUVxQYtzzXyEuPyaEta8fg9lQ==", - "requires": { - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" - } - }, - "@aws-cdk/aws-applicationautoscaling": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-applicationautoscaling/-/aws-applicationautoscaling-1.204.0.tgz", - "integrity": "sha512-sEe2NODKUowJx2guM2SPfs/20gGdBq1C09M32b8c1im7K+PqQkHkE156nyz5Ml0hpsNeCZlRS17oKZ042aZevQ==", + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "requires": { - "@aws-cdk/aws-autoscaling-common": "1.204.0", - "@aws-cdk/aws-cloudwatch": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@aws-cdk/aws-autoscaling-common": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-autoscaling-common/-/aws-autoscaling-common-1.204.0.tgz", - "integrity": "sha512-P+PwbTaj28Eg9+/U9ZTXTh1gA7L9Z45GL+9xcEZvEqAkJt9MNgzZICavVZu1sMD74foK1r1ZOBXTsqV6wEiltQ==", + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@aws-cdk/aws-certificatemanager": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-certificatemanager/-/aws-certificatemanager-1.204.0.tgz", - "integrity": "sha512-ZLykfAOb5Zbg/MFtzA+eHhMAK1xL32+oHKSK6tAYrgvv2aS42wJE4zSBV6jGCjnCkhcliUd5pwnACEl3ib0KLw==", + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "requires": { - "@aws-cdk/aws-acmpca": "1.204.0", - "@aws-cdk/aws-cloudwatch": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-lambda": "1.204.0", - "@aws-cdk/aws-route53": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@aws-cdk/aws-cloudformation": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-cloudformation/-/aws-cloudformation-1.204.0.tgz", - "integrity": "sha512-9PkZa9mKLneB0My8wJC7lLZmPJsnOxNYy57ZZlRCQhK0eO6Jc9eVqrI29537W+3ireaEjCLEitkb8NO1FN/kQA==", + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-lambda": "1.204.0", - "@aws-cdk/aws-s3": "1.204.0", - "@aws-cdk/aws-sns": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@aws-cdk/aws-cloudwatch": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-cloudwatch/-/aws-cloudwatch-1.204.0.tgz", - "integrity": "sha512-ADT2D+4FtB9Zcy/TlF2tswQmjmrPVgORYTkznQQ2SniCODHWzz558+G1RV+IVvWRdH7nYQtV0UEuGZKpffWh2w==", + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@aws-cdk/aws-codeguruprofiler": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-codeguruprofiler/-/aws-codeguruprofiler-1.204.0.tgz", - "integrity": "sha512-IrgY4SmVf9p5POfHm8BsPzaAO5lQTG7nhb5qN5AzS6zKCTuEjjTNHjx1TOfPV12mMIDAIVsK91mjDlAR88Mjbg==", + "@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.24.7" } }, - "@aws-cdk/aws-codestarnotifications": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-codestarnotifications/-/aws-codestarnotifications-1.204.0.tgz", - "integrity": "sha512-t//hSpC5/uVW2321YlbGabNVzhWayvqz+xSnagADGcT9qiq3KQR/uUlrgpHv1/eHRMk7EMrY9prlXeZpfzZ+cw==", + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "requires": { - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@aws-cdk/aws-cognito": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-cognito/-/aws-cognito-1.204.0.tgz", - "integrity": "sha512-7QIbExW9dn1fktpDOh2nMHmor2S3uuHtIX5y33lc9OKg3xUuYw4AZ67MKapunN7QUBlffTlNzoUqlHoNSab+Zg==", + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "requires": { - "@aws-cdk/aws-certificatemanager": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/aws-lambda": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/custom-resources": "1.204.0", - "constructs": "^3.3.69", - "punycode": "^2.3.0" - }, - "dependencies": { - "punycode": { - "version": "2.3.0", - "bundled": true - } + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@aws-cdk/aws-ec2": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ec2/-/aws-ec2-1.204.0.tgz", - "integrity": "sha512-SoqZEgzdfPW0aa+FQ0CjzbDG+X+sDu6/BnLL2O10lxpa+9Dc1iyArAqNKFJG5KXGJe9ibvQXyNQqEjeGRFc22Q==", + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "requires": { - "@aws-cdk/aws-cloudwatch": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/aws-logs": "1.204.0", - "@aws-cdk/aws-s3": "1.204.0", - "@aws-cdk/aws-s3-assets": "1.204.0", - "@aws-cdk/aws-ssm": "1.204.0", - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "@aws-cdk/region-info": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@babel/helper-plugin-utils": "^7.10.4" } }, - "@aws-cdk/aws-ecr": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ecr/-/aws-ecr-1.204.0.tgz", - "integrity": "sha512-oCts9e+ackWoFHeyn/3oKm3X1lSizleWNNXHp5WGM38lpNVrtCLMKSShu5iXJBhqRH2Mz1AcA4fDMWhe8DvJFA==", + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "requires": { - "@aws-cdk/aws-events": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@aws-cdk/aws-ecr-assets": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ecr-assets/-/aws-ecr-assets-1.204.0.tgz", - "integrity": "sha512-2GHD3pZdDoPxq3HhD4czANuI7TMoxpjszbzsQAc2wbdMX1j+K4vIL+PBpj3altfscPqcvy1v70lBjbG5rcBIkQ==", + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "requires": { - "@aws-cdk/assets": "1.204.0", - "@aws-cdk/aws-ecr": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-s3": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@aws-cdk/aws-efs": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-efs/-/aws-efs-1.204.0.tgz", - "integrity": "sha512-FB6nHgCuzYF5K9ywqYPEPjL2G1ATLIR9dJp1p4ydcEUuXDb4KSEVN4Bgx+q1e7EkWGIq+9glr+ckheEcTvETgw==", + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "requires": { - "@aws-cdk/aws-ec2": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@babel/helper-plugin-utils": "^7.8.0" } }, - "@aws-cdk/aws-events": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-events/-/aws-events-1.204.0.tgz", - "integrity": "sha512-KnfUmtv+4RhydD9+5CHFxNJxtgn7+Xftwfwg1G7qV/tWYPFHcNIvhlSOgwDrQPa+pTo1MmkiUN0lAR0G8B/cbw==", + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-plugin-utils": "^7.14.5" } }, - "@aws-cdk/aws-iam": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-iam/-/aws-iam-1.204.0.tgz", - "integrity": "sha512-Fh2egW3v/uDdw3m4jvcupS7COL/+sJl2NHjz9l298ddyMxqDwJD2NQwE8mvgPLK4rDtAtDnE0c8RS6d+NWiC+w==", + "@babel/plugin-syntax-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "dev": true, "requires": { - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "@aws-cdk/region-info": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@babel/helper-plugin-utils": "^7.24.7" } }, - "@aws-cdk/aws-kms": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-kms/-/aws-kms-1.204.0.tgz", - "integrity": "sha512-iryZQ428L1VUVQ0zE96XTWWX7ANVtDrb6x+ZXXLTVUEPgjEd/W6zlcp++Qi0A3a9HLNd4PbEhK9rs0UKNTylzw==", + "@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" } }, - "@aws-cdk/aws-lambda": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-lambda/-/aws-lambda-1.204.0.tgz", - "integrity": "sha512-r0XXovrLAx8Q8Fz915SwzyQM/KLhEB6YCp3CsWliFGSOHEjRP8yX8UZdEJqe5kYD7Th9JAhUVzKgyv20P7g5Tg==", + "@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, "requires": { - "@aws-cdk/aws-applicationautoscaling": "1.204.0", - "@aws-cdk/aws-cloudwatch": "1.204.0", - "@aws-cdk/aws-codeguruprofiler": "1.204.0", - "@aws-cdk/aws-ec2": "1.204.0", - "@aws-cdk/aws-ecr": "1.204.0", - "@aws-cdk/aws-ecr-assets": "1.204.0", - "@aws-cdk/aws-efs": "1.204.0", - "@aws-cdk/aws-events": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/aws-logs": "1.204.0", - "@aws-cdk/aws-s3": "1.204.0", - "@aws-cdk/aws-s3-assets": "1.204.0", - "@aws-cdk/aws-signer": "1.204.0", - "@aws-cdk/aws-sns": "1.204.0", - "@aws-cdk/aws-sqs": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "@aws-cdk/region-info": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" } }, - "@aws-cdk/aws-logs": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-logs/-/aws-logs-1.204.0.tgz", - "integrity": "sha512-PuHsDSkX6JFBgldxViGw91eFLageJ2cX89/RyLbWaJJUV4tlUKXSmmkVgOaBmvil0QKuGqbOzLXcXCoIK9Sg3A==", + "@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, "requires": { - "@aws-cdk/aws-cloudwatch": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/aws-s3-assets": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" } + }, + "react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true } } }, - "@aws-cdk/aws-route53": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-route53/-/aws-route53-1.204.0.tgz", - "integrity": "sha512-wQpGUXqc2y7yJFTipfuVxWy/VGeshyGlfGl4evusQK9Md0DMpVmG8kRgazLk1myqUSNSfi643UwvDJqNbYmdnA==", + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, "requires": { - "@aws-cdk/aws-ec2": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-logs": "1.204.0", - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/custom-resources": "1.204.0", - "constructs": "^3.3.69" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "requires": { + "jest-get-type": "^29.6.3" }, "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true } } }, - "@aws-cdk/aws-s3": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-s3/-/aws-s3-1.204.0.tgz", - "integrity": "sha512-jsQ4n1L4MdPYDirBoOYgg7yzSk1TaFYo4dnwDlKiLJ5LcHG3Nai1cHb9XQbCy/9KKqbWsbd3WlkH+vcWEl8EUA==", + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, "requires": { - "@aws-cdk/aws-events": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" } }, - "@aws-cdk/aws-s3-assets": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-s3-assets/-/aws-s3-assets-1.204.0.tgz", - "integrity": "sha512-3MQbVZ95wW29Bl63tqu0Bz0td3osLyGg352l5G7Ztf3nK35FpuQlgxO4kcu74+s2sRwdd/R4KFV6eWhhPk+J7g==", + "@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "requires": { - "@aws-cdk/assets": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/aws-s3": "1.204.0", - "@aws-cdk/core": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" } }, - "@aws-cdk/aws-signer": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-signer/-/aws-signer-1.204.0.tgz", - "integrity": "sha512-AI26FhWF3+f/vDh3mleQa2CXv2/CmSerXgyk4XHMVVTTCjnlYGGmHmGlzYhqOSw6ALpQNdOSw8GVxU/ySpQCaw==", + "@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, "requires": { - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" } }, - "@aws-cdk/aws-sns": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-sns/-/aws-sns-1.204.0.tgz", - "integrity": "sha512-KoWxqKT/dTjt9Pk0a3kJLcd6xZHvrwbZDC0mrLtxdRNhQoHmnURAHW2UqX/lefrCU1GcUFf4L58N9ehBTunAFQ==", + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "requires": { - "@aws-cdk/aws-cloudwatch": "1.204.0", - "@aws-cdk/aws-codestarnotifications": "1.204.0", - "@aws-cdk/aws-events": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/aws-sqs": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@sinclair/typebox": "^0.27.8" } }, - "@aws-cdk/aws-sns-subscriptions": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-sns-subscriptions/-/aws-sns-subscriptions-1.204.0.tgz", - "integrity": "sha512-yi78Kp0fV2nL7LnxL9ot8wbhGVYsL/ZeIzi6m2+iRZCgW1V+nO/a/eXdk5mMpBGLCqOtWcG59sIpSjqHvgpdaQ==", + "@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/aws-lambda": "1.204.0", - "@aws-cdk/aws-sns": "1.204.0", - "@aws-cdk/aws-sqs": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" } }, - "@aws-cdk/aws-sqs": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-sqs/-/aws-sqs-1.204.0.tgz", - "integrity": "sha512-dVzuGMh6d5/X9P9jel1w2Wgdy5MuSE35+eBSFxN+S7oJRoVSARpyKMNYAPMCW+2OJCDw7fIqO1rWbsZBT1Gq8g==", + "@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, "requires": { - "@aws-cdk/aws-cloudwatch": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" } }, - "@aws-cdk/aws-ssm": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/aws-ssm/-/aws-ssm-1.204.0.tgz", - "integrity": "sha512-yYx7HZ8cWNXDAmX/99WkB477QhLoV2rcB8orei8aj7nRkNq5TMjeox0IJaZVgU+edNEDOi1fVX3flh0SAMiUrg==", + "@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "requires": { - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-kms": "1.204.0", - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - } + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" } }, - "@aws-cdk/cfnspec": { - "version": "1.203.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cfnspec/-/cfnspec-1.203.0.tgz", - "integrity": "sha512-D4E9Y2fCAzmwNNTn6Ipe16ZlHZc06XPiqQ5ijWHDnMKlDhM6bsPBEOSRc8uGRtWu317evTFanvLgAXmpHlHKZQ==", + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "requires": { - "fs-extra": "^9.1.0", - "md5": "^2.3.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, - "@aws-cdk/cloud-assembly-schema": { - "version": "1.203.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.203.0.tgz", - "integrity": "sha512-r252InZ8Oh7q7ztriaA3n6F48QOFVfNcT/KO4XOlYyt1xDWRMENDYf+D+DVr6O5klcaa3ivvvDT7DRuW3xdVOQ==", + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" } }, - "@aws-cdk/cloudformation-diff": { - "version": "1.203.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-1.203.0.tgz", - "integrity": "sha512-QmNnwCwBvfHvvDg/GTWFUktXIEoXc9cbrwYWxjZSWqR7cI8tVYDWsCEEqeovdJHEru7gAoz85QId30pPFZPyLg==", + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "requires": { - "@aws-cdk/cfnspec": "1.203.0", - "@types/node": "^10.17.60", - "chalk": "^4", - "diff": "^5.1.0", - "fast-deep-equal": "^3.1.3", - "string-width": "^4.2.3", - "table": "^6.8.1" - }, - "dependencies": { - "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "dev": true - } + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "@aws-cdk/core": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/core/-/core-1.204.0.tgz", - "integrity": "sha512-yO/flJ9ihpzRhLTEqlbdbuPGtyyghHiiQPkUTLslwUM5vThVTbpgvW4UQHSGqytyst4MYXrN2jQn2RkwIRU57g==", + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "@aws-cdk/cx-api": "1.204.0", - "@aws-cdk/region-info": "1.204.0", - "@balena/dockerignore": "^1.0.2", - "constructs": "^3.3.69", - "fs-extra": "^9.1.0", - "ignore": "^5.2.4", - "minimatch": "^3.1.2" - }, - "dependencies": { - "@aws-cdk/cloud-assembly-schema": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-1.204.0.tgz", - "integrity": "sha512-DMNSR4DNKMNNfhOq1UizwZvesOKdhk3R3gRigrvWBHIkHMQg+W6aZFl7WZLKSBkChAXhIsH///psjhDQ20gl1w==", - "requires": { - "jsonschema": "^1.4.1", - "semver": "^7.3.8" - }, - "dependencies": { - "jsonschema": { - "version": "1.4.1", - "bundled": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@aws-cdk/cx-api": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.204.0.tgz", - "integrity": "sha512-Juh/jL1kFPD5JcI9Uu6X0mM2L6hBCN5grdjSS40F8dThbH25VPzFBejaKjiy5nP1UZB83X+HW3utYOEi97DqxA==", - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.204.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true - } - } - }, - "@balena/dockerignore": { - "version": "1.0.2", - "bundled": true - }, - "at-least-node": { - "version": "1.0.0", - "bundled": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "fs-extra": { - "version": "9.1.0", - "bundled": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "bundled": true - }, - "ignore": { - "version": "5.2.4", - "bundled": true - }, - "jsonfile": { - "version": "6.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "universalify": { - "version": "2.0.0", - "bundled": true - } + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@aws-cdk/custom-resources": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/custom-resources/-/custom-resources-1.204.0.tgz", - "integrity": "sha512-0w3oi7LnAtMZpf7uUBDH6aT2Oo1EBQrqD+VTvPZDX8PJFAox8ol7buZ9sSTpIXgv9j/GK9yaPTIHt4m8ok9kVQ==", - "requires": { - "@aws-cdk/aws-cloudformation": "1.204.0", - "@aws-cdk/aws-ec2": "1.204.0", - "@aws-cdk/aws-iam": "1.204.0", - "@aws-cdk/aws-lambda": "1.204.0", - "@aws-cdk/aws-logs": "1.204.0", - "@aws-cdk/aws-sns": "1.204.0", - "@aws-cdk/core": "1.204.0", - "constructs": "^3.3.69" - } + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true }, - "@aws-cdk/cx-api": { - "version": "1.203.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-1.203.0.tgz", - "integrity": "sha512-W2flnJFGytifPw2ojEsh9l8MAI4UANaUcMKr+qt4eJmFwrtVcS7nasdJQGSatQdxkAwd2pX4x10brAHYoAqjjQ==", + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "1.203.0", - "semver": "^7.3.8" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } + "type-detect": "4.0.8" } }, - "@aws-cdk/region-info": { - "version": "1.204.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/region-info/-/region-info-1.204.0.tgz", - "integrity": "sha512-lPkYJNoN4Gjlf0Fdfgcd1RTm5RD9qtfaFMwVvTn2KGTr7ZqmFskGQ9FqIcd5vd6GmsbAL8OrFOToLr1AHDuOiQ==" - }, - "@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "requires": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "@babel/compat-data": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", - "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", - "dev": true - }, - "@babel/core": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", - "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helpers": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "@babel/generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", - "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "requires": { - "@babel/types": "^7.24.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "@babel/types": "^7.0.0" } }, - "@babel/helper-compilation-targets": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", - "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "requires": { - "@babel/compat-data": "^7.24.7", - "@babel/helper-validator-option": "^7.24.7", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "requires": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.20.7" } }, - "@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "requires": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "@types/node": "*" } }, - "@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { - "@babel/types": "^7.24.7" + "@types/istanbul-lib-coverage": "*" } }, - "@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@types/istanbul-lib-report": "*" } }, - "@babel/helper-module-transforms": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", - "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", - "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "@types/node": { + "version": "10.17.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.27.tgz", + "integrity": "sha512-J0oqm9ZfAXaPdwNXMMgAhylw5fhmXkToJd06vuDUSAgEDZ/n/69/69UmyBZbc+zT34UnShuDSBqvim3SPnozJg==", "dev": true }, - "@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "requires": { - "@babel/types": "^7.24.7" + "@types/yargs-parser": "*" } }, - "@babel/helper-string-parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", - "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", - "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, - "@babel/helpers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", - "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "requires": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" } }, - "@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "type-fest": "^0.21.3" } }, - "@babel/parser": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.7" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "color-convert": "^2.0.1" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "sprintf-js": "~1.0.2" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "aws-cdk": { + "version": "1.203.0", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-1.203.0.tgz", + "integrity": "sha512-9nghEa+JGzh7LEz2Yl2q4v+76Uf+Y4A4Pa38PSsNgI0jAwnBAz5NaC3MB4Tdzd5szSfQuS72u5Uuxh6Lz1H0ow==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.7" - } - }, - "@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" - } - }, - "@babel/traverse": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", - "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", - "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "fsevents": "2.3.2" }, "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - }, - "pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - } - }, - "react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - } - } - }, - "@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - } - }, - "@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "requires": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - } - }, - "@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "requires": { - "jest-get-type": "^29.6.3" - }, - "dependencies": { - "jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true - } - } - }, - "@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "requires": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - } - }, - "@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - } - }, - "@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.27.8" - } - }, - "@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "requires": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "requires": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - } - }, - "@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } - }, - "@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "26.0.24", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", - "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", - "dev": true, - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, - "@types/node": { - "version": "10.17.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.27.tgz", - "integrity": "sha512-J0oqm9ZfAXaPdwNXMMgAhylw5fhmXkToJd06vuDUSAgEDZ/n/69/69UmyBZbc+zT34UnShuDSBqvim3SPnozJg==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "aws-cdk": { - "version": "1.87.1", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-1.87.1.tgz", - "integrity": "sha512-W1CaXKw9NBbtX3XVDpatJGXzpvDI+bo9LtA4Qr9pqB/Wl+ChGg119qoT4Oj2NKf03PE74MHQQsCkIiixPILjPA==", - "dev": true, - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.87.1", - "@aws-cdk/cloudformation-diff": "1.87.1", - "@aws-cdk/cx-api": "1.87.1", - "@aws-cdk/region-info": "1.87.1", - "@aws-cdk/yaml-cfn": "1.87.1", - "archiver": "^5.2.0", - "aws-sdk": "^2.830.0", - "camelcase": "^6.2.0", - "cdk-assets": "1.87.1", - "colors": "^1.4.0", - "decamelize": "^5.0.0", - "fs-extra": "^9.1.0", - "glob": "^7.1.6", - "json-diff": "^0.5.4", - "minimatch": ">=3.0", - "promptly": "^3.2.0", - "proxy-agent": "^4.0.1", - "semver": "^7.3.2", - "source-map-support": "^0.5.19", - "table": "^6.0.7", - "uuid": "^8.3.2", - "wrap-ansi": "^7.0.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "@aws-cdk/cfnspec": { - "version": "1.87.1", - "dev": true, - "requires": { - "md5": "^2.3.0" - } - }, - "@aws-cdk/cloud-assembly-schema": { - "version": "1.87.1", - "dev": true, - "requires": { - "jsonschema": "^1.4.0", - "semver": "^7.3.2" - } - }, - "@aws-cdk/cloudformation-diff": { - "version": "1.87.1", - "dev": true, - "requires": { - "@aws-cdk/cfnspec": "1.87.1", - "colors": "^1.4.0", - "diff": "^5.0.0", - "fast-deep-equal": "^3.1.3", - "string-width": "^4.2.0", - "table": "^6.0.7" - } - }, - "@aws-cdk/cx-api": { - "version": "1.87.1", - "dev": true, - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.87.1", - "semver": "^7.3.2" - } - }, - "@aws-cdk/region-info": { - "version": "1.87.1", - "dev": true - }, - "@aws-cdk/yaml-cfn": { - "version": "1.87.1", - "dev": true, - "requires": { - "yaml": "1.10.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "7.0.3", - "resolved": "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "archiver": { - "version": "5.2.0", - "resolved": "https://registry.yarnpkg.com/archiver/-/archiver-5.2.0.tgz#25aa1b3d9febf7aec5b0f296e77e69960c26db94", - "integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.0", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.1.4", - "zip-stream": "^4.0.4" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - } - }, - "ast-types": { - "version": "0.13.4", - "resolved": "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "aws-sdk": { - "version": "2.830.0", - "resolved": "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.830.0.tgz#1d3631d573d18c48373046da7ad92855a7fd1636", - "integrity": "sha512-vFatoWkdJmRzpymWbqsuwVsAJdhdAvU2JcM9jKRENTNKJw90ljnLyeP1eKCp4O3/4Lg43PVBwY/KUqPy4wL+OA==", - "dev": true, - "requires": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.15.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.3.2", - "xml2js": "0.4.19" - }, - "dependencies": { - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - }, - "dependencies": { - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - } - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bl": { - "version": "4.0.3", - "resolved": "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "cdk-assets": { - "version": "1.87.1", - "dev": true, - "requires": { - "@aws-cdk/cloud-assembly-schema": "1.87.1", - "@aws-cdk/cx-api": "1.87.1", - "archiver": "^5.2.0", - "aws-sdk": "^2.830.0", - "glob": "^7.1.6", - "yargs": "^16.2.0" - } - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true - }, - "cli-color": { - "version": "0.1.7", - "resolved": "https://registry.yarnpkg.com/cli-color/-/cli-color-0.1.7.tgz#adc3200fa471cc211b0da7f566b71e98b9d67347", - "integrity": "sha1-rcMgD6RxzCEbDaf1ZrcemLnWc0c=", - "dev": true, - "requires": { - "es5-ext": "0.8.x" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "compress-commons": { - "version": "4.0.2", - "resolved": "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.0.2.tgz#d6896be386e52f37610cef9e6fa5defc58c31bd7", - "integrity": "sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, - "crc32-stream": { - "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.1.tgz#0f047d74041737f8a55e86837a1b826bd8ab0067", - "integrity": "sha512-FN5V+weeO/8JaXsamelVYO1PHyeCsuL3HcG4cqsj0ceARcocxalaShCsohZMSAF+db7UYFwBy1rARK/0oFItUw==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true - }, - "data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", - "dev": true - }, - "debug": { - "version": "4.2.0", - "resolved": "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.0.tgz#88358157b010ef133febfd27c18994bd80c6215b", - "integrity": "sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w==", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "degenerator": { - "version": "2.2.0", - "resolved": "https://registry.yarnpkg.com/degenerator/-/degenerator-2.2.0.tgz#49e98c11fa0293c5b26edfbb52f15729afcdb254", - "integrity": "sha512-aiQcQowF01RxFI4ZLFMpzyotbQonhNpBao6dkI8JPk5a+hmSjR5ErHp2CQySmQe8os3VBqLCIh87nDBgZXvsmg==", - "dev": true, - "requires": { - "ast-types": "^0.13.2", - "escodegen": "^1.8.1", - "esprima": "^4.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "difflib": { - "version": "0.2.4", - "resolved": "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e", - "integrity": "sha1-teMDYabbAjF21WKJLbhZQKcY9H4=", - "dev": true, - "requires": { - "heap": ">= 0.2.0" - } - }, - "dreamopt": { - "version": "0.6.0", - "resolved": "https://registry.yarnpkg.com/dreamopt/-/dreamopt-0.6.0.tgz#d813ccdac8d39d8ad526775514a13dda664d6b4b", - "integrity": "sha1-2BPM2sjTnYrVJndVFKE92mZNa0s=", - "dev": true, - "requires": { - "wordwrap": ">=0.0.2" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "es5-ext": { - "version": "0.8.2", - "resolved": "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.8.2.tgz#aba8d9e1943a895ac96837a62a39b3f55ecd94ab", - "integrity": "sha1-q6jZ4ZQ6iVrJaDemKjmz9V7NlKs=", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "file-uri-to-path": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba", - "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==", - "dev": true - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "dev": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-uri": { - "version": "3.0.2", - "resolved": "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c", - "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "data-uri-to-buffer": "3", - "debug": "4", - "file-uri-to-path": "2", - "fs-extra": "^8.1.0", - "ftp": "^0.3.10" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - } - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "heap": { - "version": "0.2.6", - "resolved": "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac", - "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=", - "dev": true - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", - "dev": true - }, - "json-diff": { - "version": "0.5.4", - "resolved": "https://registry.yarnpkg.com/json-diff/-/json-diff-0.5.4.tgz#7bc8198c441756632aab66c7d9189d365a7a035a", - "integrity": "sha512-q5Xmx9QXNOzOzIlMoYtLrLiu4Jl/Ce2bn0CNcv54PhyH89CI4GWlGVDye8ei2Ijt9R3U+vsWPsXpLUNob8bs8Q==", - "dev": true, - "requires": { - "cli-color": "~0.1.6", - "difflib": "~0.2.1", - "dreamopt": "~0.6.0" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "universalify": "^2.0.0" - } - }, - "jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", - "dev": true - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", - "dev": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "md5": { - "version": "2.3.0", - "resolved": "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "pac-proxy-agent": { - "version": "4.1.0", - "resolved": "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-4.1.0.tgz#66883eeabadc915fc5e95457324cb0f0ac78defb", - "integrity": "sha512-ejNgYm2HTXSIYX9eFlkvqFp8hyJ374uDf0Zq5YUAifiSh1D6fo+iBivQZirGvVv8dCYUsLhmLBRhlAYvBKI5+Q==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4", - "get-uri": "3", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "5", - "pac-resolver": "^4.1.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "5" - } - }, - "pac-resolver": { - "version": "4.1.0", - "resolved": "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-4.1.0.tgz#4b12e7d096b255a3b84e53f6831f32e9c7e5fe95", - "integrity": "sha512-d6lf2IrZJJ7ooVHr7BfwSjRO1yKSJMaiiWYSHcrxSIUtZrCa4KKGwcztdkZ/E9LFleJfjoi1yl+XLR7AX24nbQ==", - "dev": true, - "requires": { - "degenerator": "^2.2.0", - "ip": "^1.1.5", - "netmask": "^1.0.6" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promptly": { - "version": "3.2.0", - "resolved": "https://registry.yarnpkg.com/promptly/-/promptly-3.2.0.tgz#a5517fbbf59bd31c1751d4e1d9bef1714f42b9d8", - "integrity": "sha512-WnR9obtgW+rG4oUV3hSnNGl1pHm3V1H/qD9iJBumGSmVsSC5HpZOLuu8qdMb6yCItGfT7dcRszejr/5P3i9Pug==", - "dev": true, - "requires": { - "read": "^1.0.4" - } - }, - "proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-4.0.1.tgz#326c3250776c7044cd19655ccbfadf2e065a045c", - "integrity": "sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA==", - "dev": true, - "requires": { - "agent-base": "^6.0.0", - "debug": "4", - "http-proxy-agent": "^4.0.0", - "https-proxy-agent": "^5.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^4.1.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^5.0.0" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "raw-body": { - "version": "2.4.1", - "resolved": "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.1.tgz#f0e10bb7bf7bfa7e0add8baffdc54c3f7dbee6c4", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.1", - "resolved": "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", - "dev": true - }, - "socks": { - "version": "2.5.0", - "resolved": "https://registry.yarnpkg.com/socks/-/socks-2.5.0.tgz#3a7c286db114f67864a4bd8b4207a91d1db3d6db", - "integrity": "sha512-00OqQHp5SCbwm9ecOMJj9aQtMSjwi1uVuGQoxnpKCS50VKZcOZ8z11CTKypmR8sEy7nZimy/qXY7rYJYbRlXmA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - } - }, - "socks-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60", - "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4", - "socks": "^2.3.3" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - } - }, - "tar-stream": { - "version": "2.1.4", - "resolved": "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa", - "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - } - } - }, - "url": { - "version": "0.10.3", - "resolved": "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - }, - "dependencies": { - "sax": { - "version": "1.2.4", - "resolved": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - } - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "zip-stream": { - "version": "4.0.4", - "resolved": "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.0.4.tgz#3a8f100b73afaa7d1ae9338d910b321dec77ff3a", - "integrity": "sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.0.2", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } + "optional": true } } }, diff --git a/resources/cdk/rekognition-sns-video-analyzer/package.json b/resources/cdk/rekognition-sns-video-analyzer/package.json index f1fc7efa52b..adb790a04e6 100644 --- a/resources/cdk/rekognition-sns-video-analyzer/package.json +++ b/resources/cdk/rekognition-sns-video-analyzer/package.json @@ -14,7 +14,7 @@ "@aws-cdk/assert": "1.203.0", "@types/jest": "^26.0.10", "@types/node": "10.17.27", - "aws-cdk": "1.87.1", + "aws-cdk": "1.203.0", "jest": "^29.7.0", "ts-jest": "^29.1.4", "ts-node": "^9.0.0", From 004db83b94371a42ebecf921e6c19163820dc97a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 16:44:36 +0000 Subject: [PATCH 22/33] Bump axios and @ailly/core in /.tools/ailly (#7466) Bumps [axios](https://github.com/axios/axios) to 1.9.0 and updates ancestor dependency [@ailly/core](https://github.com/DavidSouther/ailly). These dependencies need to be updated together. Updates `axios` from 0.26.1 to 1.9.0 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.26.1...v1.9.0) Updates `@ailly/core` from 1.2.5-rc1 to 1.6.0 - [Release notes](https://github.com/DavidSouther/ailly/releases) - [Commits](https://github.com/DavidSouther/ailly/commits/v1.6.0) --- updated-dependencies: - dependency-name: axios dependency-version: 1.9.0 dependency-type: indirect - dependency-name: "@ailly/core" dependency-version: 1.6.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .tools/ailly/package-lock.json | 1366 ++++---------------------------- .tools/ailly/package.json | 2 +- 2 files changed, 134 insertions(+), 1234 deletions(-) diff --git a/.tools/ailly/package-lock.json b/.tools/ailly/package-lock.json index 7cba8aaed2b..4a8c16208e2 100644 --- a/.tools/ailly/package-lock.json +++ b/.tools/ailly/package-lock.json @@ -7,7 +7,7 @@ "name": "ailly-aws-doc-sdk-examples", "dependencies": { "@ailly/cli": "1.6.0", - "@ailly/core": "1.2.5-rc1" + "@ailly/core": "1.6.0" } }, "node_modules/@ailly/cli": { @@ -27,7 +27,7 @@ "node": ">=16" } }, - "node_modules/@ailly/cli/node_modules/@ailly/core": { + "node_modules/@ailly/core": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@ailly/core/-/core-1.6.0.tgz", "integrity": "sha512-tPUbTniuKMdg/IkwencwHzKtadwl/Mn2mBLS0FDXgAZw/oqG8IeQY9gZPOTHqcU1vk6HpT1Qk84+ShQYCl+xOw==", @@ -50,83 +50,6 @@ "node": ">=16" } }, - "node_modules/@ailly/cli/node_modules/dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@ailly/cli/node_modules/json-colorizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-3.0.1.tgz", - "integrity": "sha512-4YyRAbD6eHeRnJD9vo0zjiU5fyY9QR6T+iYuH5DpO0XPThKWozpD4MaeY/8nLZIkHC3yEQMFLL+6P94E+JekDw==", - "license": "MIT", - "dependencies": { - "colorette": "^2.0.20" - } - }, - "node_modules/@ailly/cli/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/@ailly/cli/node_modules/vectra": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/vectra/-/vectra-0.11.1.tgz", - "integrity": "sha512-i0NeIi9pAkf81Uh46vA+1Xdf71sOFjZc365b+xyTtJcl1KlEquxUvKEq5HlYXNkow82pA99Bjrfs7YX4p4iWyg==", - "license": "MIT", - "dependencies": { - "axios": "^1.9.0", - "cheerio": "^1.0.0", - "dotenv": "^16.5.0", - "gpt-3-encoder": "1.1.4", - "json-colorizer": "^3.0.1", - "openai": "^4.97.0", - "turndown": "^7.2.0", - "uuid": "^11.1.0", - "wink-bm25-text-search": "^3.1.2", - "wink-nlp": "^2.3.2", - "yargs": "^17.7.2" - }, - "bin": { - "vectra": "bin/vectra.js" - }, - "engines": { - "node": ">=20.x" - } - }, - "node_modules/@ailly/core": { - "version": "1.2.5-rc1", - "resolved": "https://registry.npmjs.org/@ailly/core/-/core-1.2.5-rc1.tgz", - "integrity": "sha512-xAO4AjiiqymdN5sTvg1KmLbGO7JqI+Shurcki0BgUDhnwWEOtP1UBFP7PPN/BcjhM1IF6ADaS9XVdEGpim0Q7g==", - "license": "ISC", - "dependencies": { - "@aws-sdk/client-bedrock": "^3.427.0", - "@aws-sdk/client-bedrock-runtime": "^3.427.0", - "@davidsouther/jiffies": "^2.1.9", - "@dqbd/tiktoken": "^1.0.7", - "gitignore-parser": "^0.0.2", - "gray-matter": "^4.0.3", - "js-yaml": "^4.1.0", - "mustache": "^4.2.0", - "openai": "^4.11.1", - "vectra": "^0.4.4" - } - }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -256,58 +179,6 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock/-/client-bedrock-3.621.0.tgz", - "integrity": "sha512-ZMKydLr8dDLMU7Wi+ZK8y0ZF4ghS1DwrLP1Ih+GKcHED0K8Wo6eRWFCfhO75wnSLUrYTavNZo7VatF+g956TIg==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.621.0", - "@aws-sdk/client-sts": "3.621.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/credential-provider-node": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aws-sdk/client-bedrock-runtime": { "version": "3.817.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.817.0.tgz", @@ -2288,175 +2159,6 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz", - "integrity": "sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz", - "integrity": "sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/credential-provider-node": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" - } - }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz", - "integrity": "sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA==", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.621.0", - "@aws-sdk/core": "3.621.0", - "@aws-sdk/credential-provider-node": "3.621.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.620.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.3.1", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.13", - "@smithy/util-defaults-mode-node": "^3.0.13", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.621.0.tgz", - "integrity": "sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ==", - "dependencies": { - "@smithy/core": "^2.3.1", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { "version": "3.817.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.817.0.tgz", @@ -2511,134 +2213,6 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", - "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz", - "integrity": "sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz", - "integrity": "sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.621.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.621.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz", - "integrity": "sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.621.0", - "@aws-sdk/credential-provider-ini": "3.621.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.621.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", - "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz", - "integrity": "sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw==", - "dependencies": { - "@aws-sdk/client-sso": "3.621.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", - "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" - } - }, "node_modules/@aws-sdk/credential-providers": { "version": "3.817.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.817.0.tgz", @@ -3698,62 +3272,6 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", - "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", - "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", - "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz", - "integrity": "sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.614.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aws-sdk/nested-clients": { "version": "3.817.0", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.817.0.tgz", @@ -4535,40 +4053,6 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", - "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", - "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.614.0" - } - }, "node_modules/@aws-sdk/types": { "version": "3.609.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", @@ -4581,20 +4065,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz", - "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "@smithy/util-endpoints": "^2.0.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.568.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", @@ -4606,39 +4076,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", - "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", - "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", - "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, "node_modules/@davidsouther/jiffies": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@davidsouther/jiffies/-/jiffies-2.2.5.tgz", @@ -5062,66 +4499,6 @@ "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==", "license": "BSD-2-Clause" }, - "node_modules/@smithy/abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", - "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", - "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.1.tgz", - "integrity": "sha512-BC7VMXx/1BCmRPCVzzn4HGWAtsrb7/0758EtwOGFJQrlSwJBEjCcDLNZLFoL/68JexYa2s+KmgL/UfmXdG6v1w==", - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.13", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", - "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@smithy/eventstream-codec": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz", @@ -5264,260 +4641,6 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/fetch-http-handler": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", - "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", - "dependencies": { - "@smithy/protocol-http": "^4.1.0", - "@smithy/querystring-builder": "^3.0.3", - "@smithy/types": "^3.3.0", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/hash-node": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", - "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", - "dependencies": { - "@smithy/types": "^3.3.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", - "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", - "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", - "dependencies": { - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", - "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", - "dependencies": { - "@smithy/middleware-serde": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.13.tgz", - "integrity": "sha512-zvCLfaRYCaUmjbF2yxShGZdolSHft7NNCTA28HVN9hKcEbOH+g5irr1X9s+in8EpambclGnevZY4A3lYpvDCFw==", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/service-error-classification": "^3.0.3", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", - "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", - "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", - "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", - "dependencies": { - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", - "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", - "dependencies": { - "@smithy/abort-controller": "^3.1.1", - "@smithy/protocol-http": "^4.1.0", - "@smithy/querystring-builder": "^3.0.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", - "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", - "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", - "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", - "dependencies": { - "@smithy/types": "^3.3.0", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", - "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", - "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", - "dependencies": { - "@smithy/types": "^3.3.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", - "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", - "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.11.tgz", - "integrity": "sha512-l0BpyYkciNyMaS+PnFFz4aO5sBcXvGLoJd7mX9xrMBIm2nIQBVvYgp2ZpPDMzwjKCavsXu06iuCm0F6ZJZc6yQ==", - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@smithy/types": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", @@ -5529,193 +4652,6 @@ "node": ">=16.0.0" } }, - "node_modules/@smithy/url-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", - "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", - "dependencies": { - "@smithy/querystring-parser": "^3.0.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.13.tgz", - "integrity": "sha512-ZIRSUsnnMRStOP6OKtW+gCSiVFkwnfQF2xtf32QKAbHR6ACjhbAybDvry+3L5qQYdh3H6+7yD/AiUE45n8mTTw==", - "dependencies": { - "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.13.tgz", - "integrity": "sha512-voUa8TFJGfD+U12tlNNLCDlXibt9vRdNzRX45Onk/WxZe7TS+hTOZouEZRa7oARGicdgeXvt1A0W45qLGYdy+g==", - "dependencies": { - "@smithy/config-resolver": "^3.0.5", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.11", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", - "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", - "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", - "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", - "dependencies": { - "@smithy/service-error-classification": "^3.0.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", - "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", - "dependencies": { - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@types/node": { "version": "18.19.24", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.24.tgz", @@ -5765,19 +4701,24 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { @@ -5792,11 +4733,6 @@ "node": ">= 8" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -5827,7 +4763,8 @@ "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, "node_modules/bowser": { "version": "2.11.0", @@ -5845,19 +4782,6 @@ "node": ">=8" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/cheerio": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", @@ -5887,6 +4811,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", @@ -5926,6 +4851,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -5936,17 +4862,22 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", @@ -5969,6 +4900,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -5984,6 +4916,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -6003,6 +4936,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -6021,12 +4955,14 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -6038,9 +4974,10 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -6051,17 +4988,22 @@ } }, "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, "node_modules/encoding-sniffer": { "version": "0.2.0", @@ -6080,6 +5022,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -6128,21 +5071,14 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -6207,15 +5143,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -6280,6 +5217,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6306,7 +5244,8 @@ "node_modules/gpt-3-encoder": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/gpt-3-encoder/-/gpt-3-encoder-1.1.4.tgz", - "integrity": "sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg==" + "integrity": "sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg==", + "license": "MIT" }, "node_modules/gray-matter": { "version": "4.0.3", @@ -6342,14 +5281,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, "node_modules/htmlparser2": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", @@ -6425,6 +5356,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } @@ -6448,24 +5380,13 @@ "node": ">=0.12.0" } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/json-colorizer": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-2.2.2.tgz", - "integrity": "sha512-56oZtwV1piXrQnRNTtJeqRv+B9Y/dXAYLqBBaYl/COcUdoZxgLBLAO88+CnkbT6MxNs0c5E9mPBIb2sFcNz3vw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-3.0.1.tgz", + "integrity": "sha512-4YyRAbD6eHeRnJD9vo0zjiU5fyY9QR6T+iYuH5DpO0XPThKWozpD4MaeY/8nLZIkHC3yEQMFLL+6P94E+JekDw==", + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "lodash.get": "^4.4.2" + "colorette": "^2.0.20" } }, "node_modules/kind-of": { @@ -6476,11 +5397,6 @@ "node": ">=0.10.0" } }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6562,6 +5478,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -6600,22 +5517,24 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", "dependencies": { - "domhandler": "^5.0.2", + "domhandler": "^5.0.3", "parse5": "^7.0.0" }, "funding": { @@ -6634,6 +5553,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -6648,7 +5579,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/readdirp": { "version": "3.6.0", @@ -6665,6 +5597,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6720,6 +5653,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6729,10 +5663,17 @@ "node": ">=8" } }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6753,17 +5694,6 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/temporal-polyfill": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.2.5.tgz", @@ -6848,39 +5778,41 @@ } }, "node_modules/vectra": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/vectra/-/vectra-0.4.4.tgz", - "integrity": "sha512-SSp/nSC9i2Doh9nHXdDT5lECMy2p++aSHW68Lzgrau+1NeikPtnT0/KlaLIqL3Dq2iKhMf37jGJuKHUvg3hmxQ==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/vectra/-/vectra-0.11.1.tgz", + "integrity": "sha512-i0NeIi9pAkf81Uh46vA+1Xdf71sOFjZc365b+xyTtJcl1KlEquxUvKEq5HlYXNkow82pA99Bjrfs7YX4p4iWyg==", + "license": "MIT", "dependencies": { - "axios": "^1.3.4", - "cheerio": "^1.0.0-rc.12", - "dotenv": "^8.2.0", + "axios": "^1.9.0", + "cheerio": "^1.0.0", + "dotenv": "^16.5.0", "gpt-3-encoder": "1.1.4", - "json-colorizer": "^2.2.2", - "openai": "^3.2.1", - "turndown": "^7.1.2", - "uuid": "^9.0.0", + "json-colorizer": "^3.0.1", + "openai": "^4.97.0", + "turndown": "^7.2.0", + "uuid": "^11.1.0", + "wink-bm25-text-search": "^3.1.2", + "wink-nlp": "^2.3.2", "yargs": "^17.7.2" }, "bin": { "vectra": "bin/vectra.js" + }, + "engines": { + "node": ">=20.x" } }, - "node_modules/vectra/node_modules/openai": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-3.3.0.tgz", - "integrity": "sha512-uqxI/Au+aPRnsaQRe8CojU0eCR7I0mBiKjD3sNMzY6DaC1ZVrc85u98mtJW6voDug8fgGN+DIZmTDxTthxb7dQ==", - "dependencies": { - "axios": "^0.26.0", - "form-data": "^4.0.0" - } - }, - "node_modules/vectra/node_modules/openai/node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" + "node_modules/vectra/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" } }, "node_modules/webidl-conversions": { @@ -7008,16 +5940,11 @@ "emoji-regex": "^9.0.0" } }, - "node_modules/wink-tokenizer/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7030,40 +5957,11 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } @@ -7084,6 +5982,7 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -7101,6 +6000,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } diff --git a/.tools/ailly/package.json b/.tools/ailly/package.json index 946cba4c118..af9a418e6f6 100644 --- a/.tools/ailly/package.json +++ b/.tools/ailly/package.json @@ -2,6 +2,6 @@ "name": "ailly-aws-doc-sdk-examples", "dependencies": { "@ailly/cli": "1.6.0", - "@ailly/core": "1.2.5-rc1" + "@ailly/core": "1.6.0" } } From c6e7eadf70c8ad10dd264699843c8cfffeb7d4d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jun 2025 19:43:13 +0000 Subject: [PATCH 23/33] Bump braces from 3.0.2 to 3.0.3 in /gov2/workflows/user_pools_and_lambda_triggers/.cdk (#7469) Bump braces in /gov2/workflows/user_pools_and_lambda_triggers/.cdk Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-version: 3.0.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../.cdk/package-lock.json | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/gov2/workflows/user_pools_and_lambda_triggers/.cdk/package-lock.json b/gov2/workflows/user_pools_and_lambda_triggers/.cdk/package-lock.json index 95a48c69522..74667db6879 100644 --- a/gov2/workflows/user_pools_and_lambda_triggers/.cdk/package-lock.json +++ b/gov2/workflows/user_pools_and_lambda_triggers/.cdk/package-lock.json @@ -1763,12 +1763,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2220,10 +2221,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2468,6 +2470,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -3930,6 +3933,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -5571,12 +5575,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browserslist": { @@ -5884,9 +5888,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" From 6f50260ccf4aedea7a9229e999737a4a2656887c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jun 2025 18:55:24 +0000 Subject: [PATCH 24/33] Bump braces from 3.0.2 to 3.0.3 in /.tools/test/stacks/plugin/typescript (#7470) Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-version: 3.0.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../stacks/plugin/typescript/package-lock.json | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.tools/test/stacks/plugin/typescript/package-lock.json b/.tools/test/stacks/plugin/typescript/package-lock.json index d11206ad972..f3768b62390 100644 --- a/.tools/test/stacks/plugin/typescript/package-lock.json +++ b/.tools/test/stacks/plugin/typescript/package-lock.json @@ -3965,12 +3965,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -4422,10 +4423,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4670,6 +4672,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -6056,6 +6059,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, From f18cd3ba2d48ffece61678a09d02569b46c7df64 Mon Sep 17 00:00:00 2001 From: Scott Macdonald <57190223+scmacdon@users.noreply.github.com> Date: Thu, 5 Jun 2025 09:45:31 -0400 Subject: [PATCH 25/33] Java V2 Add Neptune Basics (#7462) --- .../cross_Neptune_Java_block.xml | 14 + .doc_gen/metadata/cross_metadata.yaml | 14 + .doc_gen/metadata/neptune_metadata.yaml | 239 +++++++ javav2/example_code/neptune/.gitignore | 38 ++ javav2/example_code/neptune/README.md | 123 ++++ javav2/example_code/neptune/pom.xml | 144 +++++ .../com/example/neptune/HelloNeptune.java | 78 +++ .../analytics/CreateNeptuneGraphExample.java | 82 +++ .../NeptuneAnalyticsQueryExample.java | 103 +++ .../database/GremlinProfileQueryExample.java | 86 +++ ...eptuneGremlinExplainAndProfileExample.java | 117 ++++ .../database/NeptuneGremlinQueryExample.java | 86 +++ .../database/OpenCypherExplainExample.java | 84 +++ .../neptune/scenerio/NeptuneActions.java | 592 ++++++++++++++++++ .../neptune/scenerio/NeptuneScenario.java | 252 ++++++++ .../neptune/src/main/resources/log4j2.xml | 17 + .../neptune/src/test/java/NeptuneTest.java | 106 ++++ .../creating_neptune_lambda/README.md | 339 ++++++++++ .../usecases/creating_neptune_lambda/pom.xml | 113 ++++ .../org/example/NeptuneLambdaHandler.java | 67 ++ scenarios/basics/neptune/README.md | 36 ++ scenarios/basics/neptune/SPECIFICATION.md | 289 +++++++++ 22 files changed, 3019 insertions(+) create mode 100644 .doc_gen/cross-content/cross_Neptune_Java_block.xml create mode 100644 .doc_gen/metadata/neptune_metadata.yaml create mode 100644 javav2/example_code/neptune/.gitignore create mode 100644 javav2/example_code/neptune/README.md create mode 100644 javav2/example_code/neptune/pom.xml create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/HelloNeptune.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/CreateNeptuneGraphExample.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/NeptuneAnalyticsQueryExample.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/database/GremlinProfileQueryExample.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinExplainAndProfileExample.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinQueryExample.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/database/OpenCypherExplainExample.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneActions.java create mode 100644 javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneScenario.java create mode 100644 javav2/example_code/neptune/src/main/resources/log4j2.xml create mode 100644 javav2/example_code/neptune/src/test/java/NeptuneTest.java create mode 100644 javav2/usecases/creating_neptune_lambda/README.md create mode 100644 javav2/usecases/creating_neptune_lambda/pom.xml create mode 100644 javav2/usecases/creating_neptune_lambda/src/main/java/org/example/NeptuneLambdaHandler.java create mode 100644 scenarios/basics/neptune/README.md create mode 100644 scenarios/basics/neptune/SPECIFICATION.md diff --git a/.doc_gen/cross-content/cross_Neptune_Java_block.xml b/.doc_gen/cross-content/cross_Neptune_Java_block.xml new file mode 100644 index 00000000000..21d8cd8e8c2 --- /dev/null +++ b/.doc_gen/cross-content/cross_Neptune_Java_block.xml @@ -0,0 +1,14 @@ + + + %phrases-shared; + ]> + + + Shows how to use &neptunelong; Java API to create a Lambda function that queries graph data within the VPC. + + + For complete source code and instructions on how to set up and run, see the full example on + GitHub. + + \ No newline at end of file diff --git a/.doc_gen/metadata/cross_metadata.yaml b/.doc_gen/metadata/cross_metadata.yaml index 203bd55ce40..5130d597490 100644 --- a/.doc_gen/metadata/cross_metadata.yaml +++ b/.doc_gen/metadata/cross_metadata.yaml @@ -1,4 +1,18 @@ # zexi 0.4.0 +cross_Neptune_Query: + title: Use the &neptunelong; API to develop a &LAM; function that queries graph data + title_abbrev: Use the &neptune; API to query graph data + synopsis: use the &neptune; API to query graph data. + category: Scenarios + languages: + Java: + versions: + - sdk_version: 2 + block_content: cross_Neptune_Java_block.xml + service_main: neptune + services: + neptune: + lambda: cross_MessageProcessingFrameworkTutorial: title: Use the &AWS; Message Processing Framework for .NET to publish and receive &SQS; messages title_abbrev: Use the &AWS; Message Processing Framework for .NET with &SQS; diff --git a/.doc_gen/metadata/neptune_metadata.yaml b/.doc_gen/metadata/neptune_metadata.yaml new file mode 100644 index 00000000000..6a616a3e6cc --- /dev/null +++ b/.doc_gen/metadata/neptune_metadata.yaml @@ -0,0 +1,239 @@ +# zexi 0.4.0 +neptune_Hello: + title: Hello &neptunelong; + title_abbrev: Hello &neptune; + synopsis: get started using &neptune;. + category: Hello + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.hello.main + services: + neptune: {DescribeDBClustersPaginator} +neptune_ExecuteQuery: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.graph.execute.main + services: + neptune: {ExecuteQuery} +neptune_CreateGraph: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.graph.create.main + services: + neptune: {CreateGraph} +neptune_ExecuteOpenCypherExplainQuery: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.data.query.opencypher.main + services: + neptune: {ExecuteOpenCypherExplainQuery} +neptune_ExecuteGremlinProfileQuery: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.data.query.gremlin.main + services: + neptune: {ExecuteGremlinProfileQuery} +neptune_ExecuteGremlinQuery: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.data.query.gremlin.profile.main + services: + neptune: {ExecuteGremlinQuery} +neptune_DeleteDBSubnetGroup: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.delete.subnet.group.main + services: + neptune: {DeleteDBSubnetGroup} +neptune_DeleteDBCluster: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.delete.cluster.main + services: + neptune: {DeleteDBCluster} +neptune_DeleteDBInstance: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.delete.instance.main + services: + neptune: {DeleteDBInstance} +neptune_StartDBCluster: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.start.cluster.main + services: + neptune: {StartDBCluster} +neptune_StopDBCluster: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.stop.cluster.main + services: + neptune: {StopDBCluster} +neptune_DescribeDBClusters: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.describe.cluster.main + services: + neptune: {DescribeDBClusters} +neptune_DescribeDBInstances: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.describe.dbinstance.main + services: + neptune: {DescribeDBInstances} +neptune_CreateDBInstance: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.create.dbinstance.main + services: + neptune: {CreateDBInstance} +neptune_CreateDBCluster: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.create.cluster.main + services: + neptune: {CreateDBCluster} +neptune_CreateDBSubnetGroup: + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: + snippet_tags: + - neptune.java2.create.subnet.main + services: + neptune: {CreateDBSubnetGroup} +neptune_Scenario: + synopsis_list: + - Create an &neptunelong; Subnet Group. + - Create an &neptune; Cluster. + - Create an &neptune; Instance. + - Check the status of the &neptune; Instance. + - Show &neptune; cluster details. + - Stop the &neptune; cluster. + - Start the &neptune; cluster. + - Delete the &neptune; Assets. + category: Basics + languages: + Java: + versions: + - sdk_version: 2 + github: javav2/example_code/neptune + sdkguide: + excerpts: + - description: Run an interactive scenario demonstrating &neptune; features. + snippet_tags: + - neptune.java2.scenario.main + - description: A wrapper class for &neptune; SDK methods. + snippet_tags: + - neptune.java2.actions.main + services: + neptune: {} diff --git a/javav2/example_code/neptune/.gitignore b/javav2/example_code/neptune/.gitignore new file mode 100644 index 00000000000..5ff6309b719 --- /dev/null +++ b/javav2/example_code/neptune/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/javav2/example_code/neptune/README.md b/javav2/example_code/neptune/README.md new file mode 100644 index 00000000000..c113b49fc31 --- /dev/null +++ b/javav2/example_code/neptune/README.md @@ -0,0 +1,123 @@ +# Neptune code examples for the SDK for Java 2.x + +## Overview + +Shows how to use the AWS SDK for Java 2.x to work with Amazon Neptune. + + + + +_Neptune is a serverless graph database designed for superior scalability and availability._ + +## ⚠ Important + +* Running this code might result in charges to your AWS account. For more details, see [AWS Pricing](https://aws.amazon.com/pricing/) and [Free Tier](https://aws.amazon.com/free/). +* Running the tests might result in charges to your AWS account. +* We recommend that you grant your code least privilege. At most, grant only the minimum permissions required to perform the task. For more information, see [Grant least privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). +* This code is not tested in every AWS Region. For more information, see [AWS Regional Services](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services). + + + + +## Code examples + +### Prerequisites + +For prerequisites, see the [README](../../README.md#Prerequisites) in the `javav2` folder. + + + + + +### Get started + +- [Hello Neptune](src/main/java/com/example/neptune/HelloNeptune.java#L14) (`DescribeDBClustersPaginator`) + + +### Basics + +Code examples that show you how to perform the essential operations within a service. + +- [Learn the basics](src/main/java/com/example/neptune/scenerio/NeptuneScenario.java) + + +### Single actions + +Code excerpts that show you how to call individual service functions. + +- [CreateDBCluster](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L443) +- [CreateDBInstance](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L404) +- [CreateDBSubnetGroup](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L478) +- [DeleteDBCluster](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L143) +- [DeleteDBInstance](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L168) +- [DeleteDBSubnetGroup](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L126) +- [DescribeDBClusters](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L294) +- [DescribeDBInstances](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L345) +- [StartDBCluster](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L262) +- [StopDBCluster](src/main/java/com/example/neptune/scenerio/NeptuneActions.java#L278) + + + + + +## Run the examples + +### Instructions + + + + + +#### Hello Neptune + +This example shows you how to get started using Neptune. + + +#### Learn the basics + +This example shows you how to do the following: + +- Create an Amazon Neptune Subnet Group. +- Create an Neptune Cluster. +- Create an Neptune Instance. +- Check the status of the Neptune Instance. +- Show Neptune cluster details. +- Stop the Neptune cluster. +- Start the Neptune cluster. +- Delete the Neptune Assets. + + + + + + + + + +### Tests + +⚠ Running tests might result in charges to your AWS account. + + +To find instructions for running these tests, see the [README](../../README.md#Tests) +in the `javav2` folder. + + + + + + +## Additional resources + +- [Neptune User Guide](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) +- [Neptune API Reference](https://docs.aws.amazon.com/neptune/latest/apiref/Welcome.html) +- [SDK for Java 2.x Neptune reference](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/neptune/package-summary.html) + + + + +--- + +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 diff --git a/javav2/example_code/neptune/pom.xml b/javav2/example_code/neptune/pom.xml new file mode 100644 index 00000000000..6ae67fba0de --- /dev/null +++ b/javav2/example_code/neptune/pom.xml @@ -0,0 +1,144 @@ + + + 4.0.0 + + org.example + neptune + 1.0-SNAPSHOT + + + UTF-8 + 21 + 21 + 21 + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + ${java.version} + 21 + 21 + --enable-preview + + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + + + + + + software.amazon.awssdk + bom + 2.31.8 + pom + import + + + org.apache.logging.log4j + log4j-bom + 2.23.1 + pom + import + + + + + + org.junit.jupiter + junit-jupiter + 5.11.4 + test + + + software.amazon.awssdk + neptune + + + software.amazon.awssdk + netty-nio-client + + + software.amazon.awssdk + ec2 + + + software.amazon.awssdk + neptunedata + + + software.amazon.awssdk + neptunegraph + + + software.amazon.awssdk + apache-client + 2.25.38 + + + + software.amazon.awssdk + secretsmanager + + + com.google.code.gson + gson + 2.10.1 + + + software.amazon.awssdk + sns + + + software.amazon.awssdk + sqs + + + software.amazon.awssdk + ssooidc + + + software.amazon.awssdk + sso + + + software.amazon.awssdk + iam-policy-builder + + + software.amazon.awssdk + sts + + + org.apache.logging.log4j + log4j-core + + + org.slf4j + slf4j-api + 2.0.13 + + + org.apache.logging.log4j + log4j-slf4j2-impl + + + org.apache.logging.log4j + log4j-1.2-api + + + diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/HelloNeptune.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/HelloNeptune.java new file mode 100644 index 00000000000..f7cf30b465f --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/HelloNeptune.java @@ -0,0 +1,78 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune; + +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; +import software.amazon.awssdk.core.async.SdkPublisher; +import software.amazon.awssdk.services.neptune.NeptuneAsyncClient; +import software.amazon.awssdk.services.neptune.model.DescribeDbClustersRequest; +import software.amazon.awssdk.services.neptune.model.DescribeDbClustersResponse; +import java.util.concurrent.CompletableFuture; + +// snippet-start:[neptune.java2.hello.main] +/** + * Before running this Java V2 code example, set up your development + * environment, including your credentials. + * + * For more information, see the following documentation topic: + * + * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html + */ +public class HelloNeptune { + public static void main(String[] args) { + NeptuneAsyncClient neptuneClient = NeptuneAsyncClient.create(); + describeDbCluster(neptuneClient).join(); // This ensures the async code runs to completion + } + + /** + * Describes the Amazon Neptune DB clusters. + * + * @param neptuneClient the Neptune asynchronous client used to make the request + * @return a {@link CompletableFuture} that completes when the operation is finished + */ + public static CompletableFuture describeDbCluster(NeptuneAsyncClient neptuneClient) { + DescribeDbClustersRequest request = DescribeDbClustersRequest.builder() + .maxRecords(20) + .build(); + + SdkPublisher paginator = neptuneClient.describeDBClustersPaginator(request); + CompletableFuture future = new CompletableFuture<>(); + + paginator.subscribe(new Subscriber() { + private Subscription subscription; + + @Override + public void onSubscribe(Subscription s) { + this.subscription = s; + s.request(Long.MAX_VALUE); // request all items + } + + @Override + public void onNext(DescribeDbClustersResponse response) { + response.dbClusters().forEach(cluster -> { + System.out.println("Cluster Identifier: " + cluster.dbClusterIdentifier()); + System.out.println("Status: " + cluster.status()); + }); + } + + @Override + public void onError(Throwable t) { + future.completeExceptionally(t); + } + + @Override + public void onComplete() { + future.complete(null); + } + }); + + return future.whenComplete((result, throwable) -> { + neptuneClient.close(); + if (throwable != null) { + System.err.println("Error describing DB clusters: " + throwable.getMessage()); + } + }); + } +}// snippet-end:[neptune.java2.hello.main] \ No newline at end of file diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/CreateNeptuneGraphExample.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/CreateNeptuneGraphExample.java new file mode 100644 index 00000000000..db3d453322b --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/CreateNeptuneGraphExample.java @@ -0,0 +1,82 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.analytics; + +import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunegraph.NeptuneGraphClient; +import software.amazon.awssdk.services.neptunegraph.model.CreateGraphRequest; +import software.amazon.awssdk.services.neptunegraph.model.CreateGraphResponse; +import software.amazon.awssdk.services.neptunegraph.model.NeptuneGraphException; + +/** + * This Java example demonstrates how to query Amazon Neptune Analytics (Neptune Graph) using the AWS SDK for Java V2. + * + * VPC NETWORKING REQUIREMENT: + * ---------------------------------------------------------------------- + * Amazon Neptune Analytics must be accessed from within an Amazon VPC. This means: + * + * 1. Your application must run within a VPC environment such as EC2, Lambda, ECS, Cloud9, or an AWS managed notebook. + * 2. You **cannot run this code from your local machine** unless you are connected via a VPN or Direct Connect. + * 3. Ensure that your Neptune Graph cluster endpoint is accessible and security groups allow inbound access from your client. + * 4. Always use the HTTPS endpoint when setting the `endpointOverride()` value. + * + * You can test access by running: + * curl https://:8182/status + * ---------------------------------------------------------------------- + */ + +public class CreateNeptuneGraphExample { + + public static void main(String[] args) { + Region region = Region.US_EAST_1; + String graphName = "sample-analytics-graph"; + + // Create the NeptuneGraph client + NeptuneGraphClient client = NeptuneGraphClient.builder() + .region(region) + .credentialsProvider(DefaultCredentialsProvider.create()) + .build(); + + executeCreateGraph(client, graphName); + } + + // snippet-start:[neptune.java2.graph.create.main] + /** + * Executes the process of creating a new Neptune graph. + * + * @param client the Neptune graph client used to interact with the Neptune service + * @param graphName the name of the graph to be created + * @throws NeptuneGraphException if an error occurs while creating the graph + */ + public static void executeCreateGraph(NeptuneGraphClient client, String graphName) { + try { + // Create the graph request + CreateGraphRequest request = CreateGraphRequest.builder() + .graphName(graphName) + .provisionedMemory(16) + .build(); + + // Create the graph + CreateGraphResponse response = client.createGraph(request); + + // Extract the graph name and ARN + String createdGraphName = response.name(); + String graphArn = response.arn(); + String graphEndpoint = response.endpoint(); + + System.out.println("Graph created successfully!"); + System.out.println("Graph Name: " + createdGraphName); + System.out.println("Graph ARN: " + graphArn); + System.out.println("Graph Endpoint: " +graphEndpoint ); + + } catch (NeptuneGraphException e) { + System.err.println("Failed to create graph: " + e.awsErrorDetails().errorMessage()); + } finally { + client.close(); + } + } + // snippet-end:[neptune.java2.graph.create.main] +} + diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/NeptuneAnalyticsQueryExample.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/NeptuneAnalyticsQueryExample.java new file mode 100644 index 00000000000..c9a695e86bb --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/analytics/NeptuneAnalyticsQueryExample.java @@ -0,0 +1,103 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.analytics; + +import software.amazon.awssdk.core.ResponseInputStream; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunegraph.NeptuneGraphClient; +import software.amazon.awssdk.services.neptunegraph.model.ExecuteQueryRequest; +import software.amazon.awssdk.services.neptunegraph.model.ExecuteQueryResponse; +import software.amazon.awssdk.services.neptunegraph.model.NeptuneGraphException; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.util.stream.Collectors; + +/** + * This Java example demonstrates how to query Amazon Neptune Analytics (Neptune Graph) using the AWS SDK for Java V2. + * + * VPC NETWORKING REQUIREMENT: + * ---------------------------------------------------------------------- + * Amazon Neptune Analytics must be accessed from within an Amazon VPC. This means: + * + * 1. Your application must run within a VPC environment such as EC2, Lambda, ECS, Cloud9, or an AWS managed notebook. + * 2. You **cannot run this code from your local machine** unless you are connected via a VPN or Direct Connect. + * 3. Ensure that your Neptune Graph cluster endpoint is accessible and security groups allow inbound access from your client. + * 4. Always use the HTTPS endpoint when setting the `endpointOverride()` value. + * + * You can test access by running: + * curl https://:8182/status + * ---------------------------------------------------------------------- + */ + +public class NeptuneAnalyticsQueryExample { + + public static void main(String[] args) { + + // Replace with your Neptune Analytics graph endpoint (including port 8182) + // You can get the Endpoint value by running CreateNeptuneGraphExample + String neptuneAnalyticsEndpoint = "https://:8182"; + String graphId = ""; + + NeptuneGraphClient client = NeptuneGraphClient.builder() + .region(Region.US_EAST_1) + .endpointOverride(URI.create(neptuneAnalyticsEndpoint)) + .httpClientBuilder(ApacheHttpClient.builder() + .connectionTimeout(Duration.ofSeconds(10)) + .socketTimeout(Duration.ofSeconds(0)) // No socket timeout (read_timeout=None) + ) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallAttemptTimeout(Duration.ofSeconds(0)) // No total timeout + .retryPolicy(b -> b.numRetries(0)) // Disable retries (total_max_attempts=1) + .build()) + .build(); + + executeGremlinProfileQuery(client, graphId); + } + + // snippet-start:[neptune.java2.graph.execute.main] + /** + * Executes a Gremlin profile query on the Neptune Analytics graph. + * + * @param client the {@link NeptuneGraphClient} instance to use for the query + * @param graphId the identifier of the graph to execute the query on + * + * @throws NeptuneGraphException if an error occurs while executing the query on the Neptune Graph + * @throws Exception if an unexpected error occurs + */ + public static void executeGremlinProfileQuery(NeptuneGraphClient client, String graphId) { + + try { + System.out.println("Running openCypher query on Neptune Analytics..."); + + ExecuteQueryRequest request = ExecuteQueryRequest.builder() + .graphIdentifier(graphId) + .queryString("MATCH (n {code: 'ANC'}) RETURN n") + .language("OPEN_CYPHER") + .build(); + + ResponseInputStream response = client.executeQuery(request); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(response, StandardCharsets.UTF_8))) { + String result = reader.lines().collect(Collectors.joining("\n")); + System.out.println("Query Result:"); + System.out.println(result); + } catch (Exception e) { + System.err.println("Error reading response: " + e.getMessage()); + } + + } catch (NeptuneGraphException e) { + System.err.println("NeptuneGraph error: " + e.awsErrorDetails().errorMessage()); + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + } finally { + client.close(); + } + } + // snippet-end:[neptune.java2.graph.execute.main] +} + diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/database/GremlinProfileQueryExample.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/GremlinProfileQueryExample.java new file mode 100644 index 00000000000..1f85706a97e --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/GremlinProfileQueryExample.java @@ -0,0 +1,86 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.database; + +import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunedata.NeptunedataClient; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinProfileQueryRequest; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinProfileQueryResponse; +import software.amazon.awssdk.services.neptunedata.model.NeptunedataException; +import java.net.URI; +import java.time.Duration; + +/** + * Example: Running a Gremlin Profile query using the AWS SDK for Java V2. + * + * ---------------------------------------------------------------------------------- + * VPC Networking Requirement: + * ---------------------------------------------------------------------------------- + * Amazon Neptune must be accessed from **within the same VPC** as the Neptune cluster. + * It does not expose a public endpoint, so this code must be executed from: + * + * - An **AWS Lambda function** configured to run inside the same VPC + * - An **EC2 instance** or **ECS task** running in the same VPC + * - A connected environment such as a **VPN**, **AWS Direct Connect**, or a **peered VPC** + * + * To see an example, see Creating an AWS Lambda function that queries Neptune graph data within the VPC + * in the AWS Code Library. + * + */ +public class GremlinProfileQueryExample { + + // Specify the endpoint. You can obtain an endpoint by running + // the main scenario. + private static final String NEPTUNE_ENDPOINT = "https://:8182"; + + public static void main(String[] args) { + NeptunedataClient client = NeptunedataClient.builder() + .credentialsProvider(DefaultCredentialsProvider.create()) + .region(Region.US_EAST_1) + .endpointOverride(URI.create(NEPTUNE_ENDPOINT)) + .httpClientBuilder(ApacheHttpClient.builder() + .connectionTimeout(Duration.ofSeconds(10)) + .socketTimeout(Duration.ofSeconds(30))) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallAttemptTimeout(Duration.ofSeconds(30)) + .build()) + .build(); + + try { + executeGremlinProfileQuery(client); + } catch (NeptunedataException e) { + System.err.println("Neptune error: " + e.awsErrorDetails().errorMessage()); + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + } finally { + client.close(); + } + } + + // snippet-start:[neptune.java2.data.query.gremlin.profile.main] + /** + * Executes a Gremlin PROFILE query using the provided NeptunedataClient. + * + * @param client The NeptunedataClient instance to be used for executing the Gremlin PROFILE query. + */ + private static void executeGremlinProfileQuery(NeptunedataClient client) { + System.out.println("Executing Gremlin PROFILE query..."); + + ExecuteGremlinProfileQueryRequest request = ExecuteGremlinProfileQueryRequest.builder() + .gremlinQuery("g.V().has('code', 'ANC')") + .build(); + + ExecuteGremlinProfileQueryResponse response = client.executeGremlinProfileQuery(request); + if (response.output() != null) { + System.out.println("Query Profile Output:"); + System.out.println(response.output()); + } else { + System.out.println("No output returned from the profile query."); + } + } + // snippet-end:[neptune.java2.data.query.gremlin.profile.main] +} \ No newline at end of file diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinExplainAndProfileExample.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinExplainAndProfileExample.java new file mode 100644 index 00000000000..87e8ebbaea8 --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinExplainAndProfileExample.java @@ -0,0 +1,117 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.database; + +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunedata.NeptunedataClient; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinExplainQueryRequest; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinExplainQueryResponse; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinProfileQueryRequest; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinProfileQueryResponse; +import software.amazon.awssdk.services.neptunedata.model.NeptunedataException; +import java.net.URI; +import java.time.Duration; + +/** + * This example demonstrates how to run a Gremlin Explain and Profile query on an Amazon Neptune database + * using the AWS SDK for Java V2. + * + * VPC NETWORKING REQUIREMENT: + * ---------------------------------------------------------------------- + * Amazon Neptune must be accessed from **within the same VPC** as the Neptune cluster. + * It does not expose a public endpoint, so this code must be executed from: + * + * - An **AWS Lambda function** configured to run inside the same VPC + * - An **EC2 instance** or **ECS task** running in the same VPC + * - A connected environment such as a **VPN**, **AWS Direct Connect**, or a **peered VPC** + * + * To see an example, see Creating an AWS Lambda function that queries Neptune graph data within the VPC + * in the AWS Code Library. + * + */ +public class NeptuneGremlinExplainAndProfileExample { + // Specify the endpoint. You can obtain an endpoint by running + // the main scenario. + private static final String NEPTUNE_ENDPOINT = "https://[Specify-Your-Endpoint]:8182"; + + public static void main(String[] args) { + NeptunedataClient client = NeptunedataClient.builder() + .region(Region.US_EAST_1) + .endpointOverride(URI.create(NEPTUNE_ENDPOINT)) + .httpClientBuilder(ApacheHttpClient.builder() + .connectionTimeout(Duration.ofSeconds(10)) + .socketTimeout(Duration.ofSeconds(30))) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallAttemptTimeout(Duration.ofSeconds(30)) + .build()) + .build(); + + executeGremlinExplainQuery(client); + } + + /** + * Executes a Gremlin explain query and a Gremlin profile query using the provided Neptune data client. + * + * @param client the Neptune data client to use for executing the Gremlin queries + * @throws NeptunedataException if an error occurs while executing the Gremlin queries on the Neptune data client + * @throws Exception if an unexpected error occurs during the execution + */ + public static void executeGremlinExplainQuery(NeptunedataClient client) { + try { + runExplainQuery(client); + runProfileQuery(client); + } catch (NeptunedataException e) { + System.err.println("Neptune error: " + e.awsErrorDetails().errorMessage()); + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + } finally { + client.close(); + } + } + + /** + * Runs an EXPLAIN query on the Neptune graph database using the provided NeptunedataClient. + * + * @param client The NeptunedataClient instance to use for executing the EXPLAIN query. + */ + private static void runExplainQuery(NeptunedataClient client) { + System.out.println("Running Gremlin EXPLAIN query..."); + ExecuteGremlinExplainQueryRequest explainRequest = ExecuteGremlinExplainQueryRequest.builder() + .gremlinQuery("g.V().has('code', 'ANC')") + .build(); + + ExecuteGremlinExplainQueryResponse explainResponse = client.executeGremlinExplainQuery(explainRequest); + + System.out.println("Explain Query Result:"); + if (explainResponse.output() != null) { + System.out.println(explainResponse.output()); + } else { + System.out.println("No explain output returned."); + } + } + + /** + * Runs a Gremlin PROFILE query using the provided NeptunedataClient instance. + * + * @param client the NeptunedataClient instance to use for executing the Gremlin query + */ + private static void runProfileQuery(NeptunedataClient client) { + System.out.println("Running Gremlin PROFILE query..."); + + ExecuteGremlinProfileQueryRequest profileRequest = ExecuteGremlinProfileQueryRequest.builder() + .gremlinQuery("g.V().has('code', 'ANC')") + .build(); + + ExecuteGremlinProfileQueryResponse profileResponse = client.executeGremlinProfileQuery(profileRequest); + + System.out.println("Profile Query Result:"); + if (profileResponse.output() != null) { + System.out.println(profileResponse.output()); + } else { + System.out.println("No profile output returned."); + } + } +} diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinQueryExample.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinQueryExample.java new file mode 100644 index 00000000000..4da409d8474 --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/NeptuneGremlinQueryExample.java @@ -0,0 +1,86 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.database; + +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunedata.NeptunedataClient; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryRequest; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryResponse; +import software.amazon.awssdk.services.neptunedata.model.NeptunedataException; +import java.net.URI; +import java.time.Duration; + +/** + * This example demonstrates how to execute a Gremlin query on an Amazon Neptune database using the AWS SDK for Java V2. + * + * VPC NETWORKING REQUIREMENT: + * ---------------------------------------------------------------------- + * Amazon Neptune must be accessed from **within the same VPC** as the Neptune cluster. + * It does not expose a public endpoint, so this code must be executed from: + * + * - An **AWS Lambda function** configured to run inside the same VPC + * - An **EC2 instance** or **ECS task** running in the same VPC + * - A connected environment such as a **VPN**, **AWS Direct Connect**, or a **peered VPC** + * + * To see an example, see Creating an AWS Lambda function that queries Neptune graph data within the VPC + * in the AWS Code Library. + * + */ + +public class NeptuneGremlinQueryExample { + + public static void main(String[] args) { + // Specify the endpoint. You can obtain an endpoint by running + // the main scenario. + String neptuneEndpoint = "https://[Specify Endpoint]:8182"; + + NeptunedataClient client = NeptunedataClient.builder() + .region(Region.US_EAST_1) + .endpointOverride(URI.create(neptuneEndpoint)) + .httpClientBuilder(ApacheHttpClient.builder() + .connectionTimeout(Duration.ofSeconds(10)) + .socketTimeout(Duration.ofSeconds(30))) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallAttemptTimeout(Duration.ofSeconds(30)) + .build()) + .build(); + } + + // snippet-start:[neptune.java2.data.query.gremlin.main] + /** + * Executes a Gremlin query against an Amazon Neptune database using the provided {@link NeptunedataClient}. + * + * @param client the {@link NeptunedataClient} instance to use for executing the Gremlin query + */ + public static void executeGremlinQuery(NeptunedataClient client) { + try { + System.out.println("Querying Neptune..."); + ExecuteGremlinQueryRequest request = ExecuteGremlinQueryRequest.builder() + .gremlinQuery("g.V().has('code', 'ANC')") + .build(); + + ExecuteGremlinQueryResponse response = client.executeGremlinQuery(request); + + System.out.println("Full Response:"); + System.out.println(response); + + // Retrieve and print the result + if (response.result() != null) { + System.out.println("Query Result:"); + System.out.println(response.result().toString()); + } else { + System.out.println("No result returned from the query."); + } + } catch (NeptunedataException e) { + System.err.println("Error calling Neptune: " + e.awsErrorDetails().errorMessage()); + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + } finally { + client.close(); + } + } + // snippet-end:[neptune.java2.data.query.gremlin.main] +} diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/database/OpenCypherExplainExample.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/OpenCypherExplainExample.java new file mode 100644 index 00000000000..51c8af264dd --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/database/OpenCypherExplainExample.java @@ -0,0 +1,84 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.database; + +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunedata.NeptunedataClient; +import software.amazon.awssdk.services.neptunedata.model.ExecuteOpenCypherExplainQueryRequest; +import software.amazon.awssdk.services.neptunedata.model.ExecuteOpenCypherExplainQueryResponse; +import software.amazon.awssdk.services.neptunedata.model.NeptunedataException; +import java.net.URI; +import java.time.Duration; + +/** + * Example: Running an OpenCypher EXPLAIN query on Amazon Neptune using AWS SDK for Java V2. + * + * ------------------------------------------------------------------------------ + * VPC NETWORKING REQUIREMENT: + * ------------------------------------------------------------------------------ + * Amazon Neptune must be accessed from **within the same VPC** as the Neptune cluster. + * It does not expose a public endpoint, so this code must be executed from: + * + * - An **AWS Lambda function** configured to run inside the same VPC + * - An **EC2 instance** or **ECS task** running in the same VPC + * - A connected environment such as a **VPN**, **AWS Direct Connect**, or a **peered VPC** + * + * To see an example, see Creating an AWS Lambda function that queries Neptune graph data within the VPC + * in the AWS Code Library. + * + */ +public class OpenCypherExplainExample { + + private static final String NEPTUNE_ENDPOINT = "https://:8182"; + + public static void main(String[] args) { + NeptunedataClient client = NeptunedataClient.builder() + .region(Region.US_EAST_1) + .endpointOverride(URI.create(NEPTUNE_ENDPOINT)) + .httpClientBuilder(ApacheHttpClient.builder() + .connectionTimeout(Duration.ofSeconds(10)) + .socketTimeout(Duration.ofSeconds(30))) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallAttemptTimeout(Duration.ofSeconds(30)) + .build()) + .build(); + + executeGremlinQuery(client); + } + + // snippet-start:[neptune.java2.data.query.opencypher.main] + /** + * Executes an OpenCypher EXPLAIN query using the provided Neptune data client. + * + * @param client The Neptune data client to use for the query execution. + */ + public static void executeGremlinQuery(NeptunedataClient client) { + try { + System.out.println("Executing OpenCypher EXPLAIN query..."); + ExecuteOpenCypherExplainQueryRequest request = ExecuteOpenCypherExplainQueryRequest.builder() + .openCypherQuery("MATCH (n {code: 'ANC'}) RETURN n") + .explainMode("debug") + .build(); + + ExecuteOpenCypherExplainQueryResponse response = client.executeOpenCypherExplainQuery(request); + + if (response.results() != null) { + System.out.println("Explain Results:"); + System.out.println(response.results().asUtf8String()); + } else { + System.out.println("No explain results returned."); + } + + } catch (NeptunedataException e) { + System.err.println("Neptune error: " + e.awsErrorDetails().errorMessage()); + } catch (Exception e) { + System.err.println("Unexpected error: " + e.getMessage()); + } finally { + client.close(); + } + } + // snippet-end:[neptune.java2.data.query.opencypher.main] +} diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneActions.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneActions.java new file mode 100644 index 00000000000..4e2f353b230 --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneActions.java @@ -0,0 +1,592 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.scenerio; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.core.retry.RetryMode; +import software.amazon.awssdk.http.async.SdkAsyncHttpClient; +import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.ec2.Ec2Client; +import software.amazon.awssdk.services.ec2.model.DescribeSubnetsRequest; +import software.amazon.awssdk.services.ec2.model.DescribeSubnetsResponse; +import software.amazon.awssdk.services.ec2.model.DescribeVpcsRequest; +import software.amazon.awssdk.services.ec2.model.Filter; +import software.amazon.awssdk.services.ec2.model.DescribeVpcsResponse; +import software.amazon.awssdk.services.ec2.model.Subnet; +import software.amazon.awssdk.services.ec2.model.Vpc; +import software.amazon.awssdk.services.neptune.NeptuneAsyncClient; +import software.amazon.awssdk.services.neptune.NeptuneClient; +import software.amazon.awssdk.services.neptune.model.*; +import software.amazon.awssdk.services.neptune.model.CreateDbClusterRequest; +import software.amazon.awssdk.services.neptune.model.CreateDbInstanceRequest; +import software.amazon.awssdk.services.neptune.model.CreateDbSubnetGroupRequest; +import software.amazon.awssdk.services.neptune.model.DBCluster; +import software.amazon.awssdk.services.neptune.model.DBInstance; +import software.amazon.awssdk.services.neptune.model.DeleteDbClusterRequest; +import software.amazon.awssdk.services.neptune.model.DeleteDbInstanceRequest; +import software.amazon.awssdk.services.neptune.model.DeleteDbSubnetGroupRequest; +import software.amazon.awssdk.services.neptune.model.DescribeDbInstancesRequest; +import software.amazon.awssdk.services.neptune.model.DescribeDbClustersRequest; +import software.amazon.awssdk.services.neptunegraph.model.ServiceQuotaExceededException; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +// snippet-start:[neptune.java2.actions.main] +public class NeptuneActions { + private CompletableFuture instanceCheckFuture; + private static NeptuneAsyncClient neptuneAsyncClient; + private final Region region = Region.US_EAST_1; + private static final Logger logger = LoggerFactory.getLogger(NeptuneActions.class); + private final NeptuneClient neptuneClient = NeptuneClient.builder().region(region).build(); + + /** + * Retrieves an instance of the NeptuneAsyncClient. + *

+ * This method initializes and returns a singleton instance of the NeptuneAsyncClient. The client + * is configured with the following settings: + *

    + *
  • Maximum concurrency: 100
  • + *
  • Connection timeout: 60 seconds
  • + *
  • Read timeout: 60 seconds
  • + *
  • Write timeout: 60 seconds
  • + *
  • API call timeout: 2 minutes
  • + *
  • API call attempt timeout: 90 seconds
  • + *
  • Retry strategy: STANDARD
  • + *
+ * The client is built using the NettyNioAsyncHttpClient. + * + * @return the singleton instance of the NeptuneAsyncClient + */ + private static NeptuneAsyncClient getAsyncClient() { + if (neptuneAsyncClient == null) { + SdkAsyncHttpClient httpClient = NettyNioAsyncHttpClient.builder() + .maxConcurrency(100) + .connectionTimeout(Duration.ofSeconds(60)) + .readTimeout(Duration.ofSeconds(60)) + .writeTimeout(Duration.ofSeconds(60)) + .build(); + + ClientOverrideConfiguration overrideConfig = ClientOverrideConfiguration.builder() + .apiCallTimeout(Duration.ofMinutes(2)) + .apiCallAttemptTimeout(Duration.ofSeconds(90)) + .retryStrategy(RetryMode.STANDARD) + .build(); + + neptuneAsyncClient = NeptuneAsyncClient.builder() + .httpClient(httpClient) + .overrideConfiguration(overrideConfig) + .build(); + } + return neptuneAsyncClient; + } + + /** + * Asynchronously deletes a set of Amazon Neptune resources in a defined order. + *

+ * The method performs the following operations in sequence: + *

    + *
  1. Deletes the Neptune DB instance identified by {@code dbInstanceId}.
  2. + *
  3. Waits until the DB instance is fully deleted.
  4. + *
  5. Deletes the Neptune DB cluster identified by {@code dbClusterId}.
  6. + *
  7. Deletes the Neptune DB subnet group identified by {@code subnetGroupName}.
  8. + *
+ *

+ * If any step fails, the subsequent operations are not performed, and the exception + * is logged. This method blocks the calling thread until all operations complete. + * + * @param dbInstanceId the ID of the Neptune DB instance to delete + * @param dbClusterId the ID of the Neptune DB cluster to delete + * @param subnetGroupName the name of the Neptune DB subnet group to delete + */ + public void deleteNeptuneResourcesAsync(String dbInstanceId, String dbClusterId, String subnetGroupName) { + deleteDBInstanceAsync(dbInstanceId) + .thenCompose(v -> waitUntilInstanceDeletedAsync(dbInstanceId)) + .thenCompose(v -> deleteDBClusterAsync(dbClusterId)) + .thenCompose(v -> deleteDBSubnetGroupAsync(subnetGroupName)) + .whenComplete((v, ex) -> { + if (ex != null) { + logger.info("Failed to delete Neptune resources: " + ex.getMessage()); + } else { + logger.info("Neptune resources deleted successfully."); + } + }) + .join(); // Waits for the entire async chain to complete + } + + // snippet-start:[neptune.java2.delete.subnet.group.main] + /** + * Deletes a subnet group. + * + * @param subnetGroupName the identifier of the subnet group to delete + * @return a {@link CompletableFuture} that completes when the cluster has been deleted + */ + public CompletableFuture deleteDBSubnetGroupAsync(String subnetGroupName) { + DeleteDbSubnetGroupRequest request = DeleteDbSubnetGroupRequest.builder() + .dbSubnetGroupName(subnetGroupName) + .build(); + + return getAsyncClient().deleteDBSubnetGroup(request) + .thenAccept(response -> logger.info("🗑️ Deleting Subnet Group: " + subnetGroupName)); + } + // snippet-end:[neptune.java2.delete.subnet.group.main] + + // snippet-start:[neptune.java2.delete.cluster.main] + /** + * Deletes a DB instance asynchronously. + * + * @param clusterId the identifier of the cluster to delete + * @return a {@link CompletableFuture} that completes when the cluster has been deleted + */ + public CompletableFuture deleteDBClusterAsync(String clusterId) { + DeleteDbClusterRequest request = DeleteDbClusterRequest.builder() + .dbClusterIdentifier(clusterId) + .skipFinalSnapshot(true) + .build(); + + return getAsyncClient().deleteDBCluster(request) + .thenAccept(response -> System.out.println("🗑️ Deleting DB Cluster: " + clusterId)); + } + // snippet-end:[neptune.java2.delete.cluster.main] + + public CompletableFuture waitUntilInstanceDeletedAsync(String instanceId) { + CompletableFuture future = new CompletableFuture<>(); + long startTime = System.currentTimeMillis(); + checkInstanceDeletedRecursive(instanceId, startTime, future); + return future; + } + + // snippet-start:[neptune.java2.delete.instance.main] + /** + * Deletes a DB instance asynchronously. + * + * @param instanceId the identifier of the DB instance to be deleted + * @return a {@link CompletableFuture} that completes when the DB instance has been deleted + */ + public CompletableFuture deleteDBInstanceAsync(String instanceId) { + DeleteDbInstanceRequest request = DeleteDbInstanceRequest.builder() + .dbInstanceIdentifier(instanceId) + .skipFinalSnapshot(true) + .build(); + + return getAsyncClient().deleteDBInstance(request) + .thenAccept(response -> System.out.println("🗑️ Deleting DB Instance: " + instanceId)); + } + // snippet-end:[neptune.java2.delete.instance.main] + + + private void checkInstanceDeletedRecursive(String instanceId, long startTime, CompletableFuture future) { + DescribeDbInstancesRequest request = DescribeDbInstancesRequest.builder() + .dbInstanceIdentifier(instanceId) + .build(); + + getAsyncClient().describeDBInstances(request) + .whenComplete((response, exception) -> { + if (exception != null) { + Throwable cause = exception.getCause(); + if (cause instanceof NeptuneException && + ((NeptuneException) cause).awsErrorDetails().errorCode().equals("DBInstanceNotFound")) { + long elapsed = (System.currentTimeMillis() - startTime) / 1000; + logger.info("\r Instance %s deleted after %ds%n", instanceId, elapsed); + future.complete(null); + return; + } + future.completeExceptionally(new CompletionException("Error polling DB instance", cause)); + return; + } + + String status = response.dbInstances().get(0).dbInstanceStatus(); + long elapsed = (System.currentTimeMillis() - startTime) / 1000; + System.out.printf("\r Waiting: Instance %s status: %-10s (%ds elapsed)", instanceId, status, elapsed); + System.out.flush(); + + CompletableFuture.delayedExecutor(20, TimeUnit.SECONDS) + .execute(() -> checkInstanceDeletedRecursive(instanceId, startTime, future)); + }); + } + + + public void waitForClusterStatus(String clusterId, String desiredStatus) { + System.out.printf("Waiting for cluster '%s' to reach status '%s'...\n", clusterId, desiredStatus); + CompletableFuture future = new CompletableFuture<>(); + checkClusterStatusRecursive(clusterId, desiredStatus, System.currentTimeMillis(), future); + future.join(); + } + + private void checkClusterStatusRecursive(String clusterId, String desiredStatus, long startTime, CompletableFuture future) { + DescribeDbClustersRequest request = DescribeDbClustersRequest.builder() + .dbClusterIdentifier(clusterId) + .build(); + + getAsyncClient().describeDBClusters(request) + .whenComplete((response, exception) -> { + if (exception != null) { + Throwable cause = exception.getCause(); + future.completeExceptionally( + new CompletionException("Error checking Neptune cluster status", cause) + ); + return; + } + + List clusters = response.dbClusters(); + if (clusters.isEmpty()) { + future.completeExceptionally(new RuntimeException("Cluster not found: " + clusterId)); + return; + } + + String currentStatus = clusters.get(0).status(); + long elapsedSeconds = (System.currentTimeMillis() - startTime) / 1000; + System.out.printf("\r Elapsed: %-20s Cluster status: %-20s", formatElapsedTime((int) elapsedSeconds), currentStatus); + System.out.flush(); + + if (desiredStatus.equalsIgnoreCase(currentStatus)) { + System.out.printf("\r Neptune cluster reached desired status '%s' after %s.\n", desiredStatus, formatElapsedTime((int) elapsedSeconds)); + future.complete(null); + } else { + CompletableFuture.delayedExecutor(20, TimeUnit.SECONDS) + .execute(() -> checkClusterStatusRecursive(clusterId, desiredStatus, startTime, future)); + } + }); + } + + + // snippet-start:[neptune.java2.start.cluster.main] + /** + * Starts an Amazon Neptune DB cluster. + * + * @param clusterIdentifier the unique identifier of the DB cluster to be stopped + */ + public CompletableFuture startDBClusterAsync(String clusterIdentifier) { + StartDbClusterRequest clusterRequest = StartDbClusterRequest.builder() + .dbClusterIdentifier(clusterIdentifier) + .build(); + + return getAsyncClient().startDBCluster(clusterRequest) + .whenComplete((response, error) -> { + if (error != null) { + Throwable cause = error.getCause() != null ? error.getCause() : error; + + if (cause instanceof ResourceNotFoundException) { + throw (ResourceNotFoundException) cause; + } + + throw new RuntimeException("Failed to start DB cluster: " + cause.getMessage(), cause); + } else { + logger.info("DB Cluster starting: " + clusterIdentifier); + } + }); + } + // snippet-end:[neptune.java2.start.cluster.main] + + // snippet-start:[neptune.java2.stop.cluster.main] + /** + * Stops an Amazon Neptune DB cluster. + * + * @param clusterIdentifier the unique identifier of the DB cluster to be stopped + */ + public CompletableFuture stopDBClusterAsync(String clusterIdentifier) { + StopDbClusterRequest clusterRequest = StopDbClusterRequest.builder() + .dbClusterIdentifier(clusterIdentifier) + .build(); + + return getAsyncClient().stopDBCluster(clusterRequest) + .whenComplete((response, error) -> { + if (error != null) { + Throwable cause = error.getCause() != null ? error.getCause() : error; + + if (cause instanceof ResourceNotFoundException) { + throw (ResourceNotFoundException) cause; + } + + throw new RuntimeException("Failed to stop DB cluster: " + cause.getMessage(), cause); + } else { + logger.info("DB Cluster stopped: " + clusterIdentifier); + } + }); + } + + // snippet-end:[neptune.java2.stop.cluster.main] + + // snippet-start:[neptune.java2.describe.cluster.main] + + /** + * Asynchronously describes the specified Amazon RDS DB cluster. + * + * @param clusterId the identifier of the DB cluster to describe + * @return a {@link CompletableFuture} that completes when the operation is done, or throws a {@link RuntimeException} + * if an error occurs + */ + public CompletableFuture describeDBClustersAsync(String clusterId) { + DescribeDbClustersRequest request = DescribeDbClustersRequest.builder() + .dbClusterIdentifier(clusterId) + .build(); + + return getAsyncClient().describeDBClusters(request) + .thenAccept(response -> { + for (DBCluster cluster : response.dbClusters()) { + logger.info("Cluster Identifier: " + cluster.dbClusterIdentifier()); + logger.info("Status: " + cluster.status()); + logger.info("Engine: " + cluster.engine()); + logger.info("Engine Version: " + cluster.engineVersion()); + logger.info("Endpoint: " + cluster.endpoint()); + logger.info("Reader Endpoint: " + cluster.readerEndpoint()); + logger.info("Availability Zones: " + cluster.availabilityZones()); + logger.info("Subnet Group: " + cluster.dbSubnetGroup()); + logger.info("VPC Security Groups:"); + cluster.vpcSecurityGroups().forEach(vpcGroup -> + logger.info(" - " + vpcGroup.vpcSecurityGroupId())); + logger.info("Storage Encrypted: " + cluster.storageEncrypted()); + logger.info("IAM DB Auth Enabled: " + cluster.iamDatabaseAuthenticationEnabled()); + logger.info("Backup Retention Period: " + cluster.backupRetentionPeriod() + " days"); + logger.info("Preferred Backup Window: " + cluster.preferredBackupWindow()); + logger.info("Preferred Maintenance Window: " + cluster.preferredMaintenanceWindow()); + logger.info("------"); + } + }) + .exceptionally(ex -> { + Throwable cause = ex.getCause() != null ? ex.getCause() : ex; + + if (cause instanceof ResourceNotFoundException) { + throw (ResourceNotFoundException) cause; + } + + throw new RuntimeException("Failed to describe the DB cluster: " + cause.getMessage(), cause); + }); + } + // snippet-end:[neptune.java2.describe.cluster.main] + + + public CompletableFuture checkInstanceStatus(String instanceId, String desiredStatus) { + CompletableFuture future = new CompletableFuture<>(); + long startTime = System.currentTimeMillis(); + checkStatusRecursive(instanceId, desiredStatus.toLowerCase(), startTime, future); + return future; + } + + // snippet-start:[neptune.java2.describe.dbinstance.main] + /** + * Checks the status of a Neptune instance recursively until the desired status is reached or a timeout occurs. + * + * @param instanceId the ID of the Neptune instance to check + * @param desiredStatus the desired status of the Neptune instance + * @param startTime the start time of the operation, used to calculate the elapsed time + * @param future a {@link CompletableFuture} that will be completed when the desired status is reached + */ + private void checkStatusRecursive(String instanceId, String desiredStatus, long startTime, CompletableFuture future) { + DescribeDbInstancesRequest request = DescribeDbInstancesRequest.builder() + .dbInstanceIdentifier(instanceId) + .build(); + + getAsyncClient().describeDBInstances(request) + .whenComplete((response, exception) -> { + if (exception != null) { + Throwable cause = exception.getCause(); + future.completeExceptionally( + new CompletionException("Error checking Neptune instance status", cause) + ); + return; + } + + List instances = response.dbInstances(); + if (instances.isEmpty()) { + future.completeExceptionally(new RuntimeException("Instance not found: " + instanceId)); + return; + } + + String currentStatus = instances.get(0).dbInstanceStatus(); + long elapsedSeconds = (System.currentTimeMillis() - startTime) / 1000; + System.out.printf("\r Elapsed: %-20s Status: %-20s", formatElapsedTime((int) elapsedSeconds), currentStatus); + System.out.flush(); + + if (desiredStatus.equalsIgnoreCase(currentStatus)) { + System.out.printf("\r Neptune instance reached desired status '%s' after %s.\n", desiredStatus, formatElapsedTime((int) elapsedSeconds)); + future.complete(null); + } else { + CompletableFuture.delayedExecutor(20, TimeUnit.SECONDS) + .execute(() -> checkStatusRecursive(instanceId, desiredStatus, startTime, future)); + } + }); + } + // snippet-end:[neptune.java2.describe.dbinstance.main] + + + private String formatElapsedTime(int seconds) { + int minutes = seconds / 60; + int remainingSeconds = seconds % 60; + + if (minutes > 0) { + return minutes + (minutes == 1 ? " min" : " mins") + ", " + + remainingSeconds + (remainingSeconds == 1 ? " sec" : " secs"); + } else { + return remainingSeconds + (remainingSeconds == 1 ? " sec" : " secs"); + } + } + + // snippet-start:[neptune.java2.create.dbinstance.main] + + /** + * Creates a new Amazon Neptune DB instance asynchronously. + * + * @param dbInstanceId the identifier for the new DB instance + * @param dbClusterId the identifier for the DB cluster that the new instance will be a part of + * @return a {@link CompletableFuture} that completes with the identifier of the newly created DB instance + * @throws CompletionException if the operation fails, with a cause of either: + * - {@link ServiceQuotaExceededException} if the request would exceed the maximum quota, or + * - a general exception with the failure message + */ + public CompletableFuture createDBInstanceAsync(String dbInstanceId, String dbClusterId) { + CreateDbInstanceRequest request = CreateDbInstanceRequest.builder() + .dbInstanceIdentifier(dbInstanceId) + .dbInstanceClass("db.r5.large") + .engine("neptune") + .dbClusterIdentifier(dbClusterId) + .build(); + + return getAsyncClient().createDBInstance(request) + .whenComplete((response, exception) -> { + if (exception != null) { + Throwable cause = exception.getCause(); + if (cause instanceof ServiceQuotaExceededException) { + throw new CompletionException("The operation was denied because the request would exceed the maximum quota.", cause); + } + throw new CompletionException("Failed to create Neptune DB instance: " + exception.getMessage(), exception); + } + }) + .thenApply(response -> { + String instanceId = response.dbInstance().dbInstanceIdentifier(); + logger.info("Created Neptune DB Instance: " + instanceId); + return instanceId; + }); + } + // snippet-end:[neptune.java2.create.dbinstance.main] + + // snippet-start:[neptune.java2.create.cluster.main] + + /** + * Creates a new Amazon Neptune DB cluster asynchronously. + * + * @param dbName the name of the DB cluster to be created + * @return a CompletableFuture that, when completed, provides the ID of the created DB cluster + * @throws CompletionException if the operation fails for any reason, including if the request would exceed the maximum quota + */ + public CompletableFuture createDBClusterAsync(String dbName) { + CreateDbClusterRequest request = CreateDbClusterRequest.builder() + .dbClusterIdentifier(dbName) + .engine("neptune") + .deletionProtection(false) + .backupRetentionPeriod(1) + .build(); + + return getAsyncClient().createDBCluster(request) + .whenComplete((response, exception) -> { + if (exception != null) { + Throwable cause = exception.getCause(); + if (cause instanceof ServiceQuotaExceededException) { + throw new CompletionException("The operation was denied because the request would exceed the maximum quota.", cause); + } + throw new CompletionException("Failed to create Neptune DB cluster: " + exception.getMessage(), exception); + } + }) + .thenApply(response -> { + String clusterId = response.dbCluster().dbClusterIdentifier(); + logger.info("DB Cluster created: " + clusterId); + return clusterId; + }); + } + // snippet-end:[neptune.java2.create.cluster.main] + + // snippet-start:[neptune.java2.create.subnet.main] + + /** + * Creates a new DB subnet group asynchronously. + * + * @param groupName the name of the subnet group to create + * @return a CompletableFuture that, when completed, returns the Amazon Resource Name (ARN) of the created subnet group + * @throws CompletionException if the operation fails, with a cause that may be a ServiceQuotaExceededException if the request would exceed the maximum quota + */ + public CompletableFuture createSubnetGroupAsync(String groupName) { + + // Get the Amazon Virtual Private Cloud (VPC) where the Neptune cluster and resources will be created + String vpcId = getDefaultVpcId(); + logger.info("VPC is : " + vpcId); + + List subnetList = getSubnetIds(vpcId); + for (String subnetId : subnetList) { + System.out.println("Subnet group:" +subnetId); + } + + CreateDbSubnetGroupRequest request = CreateDbSubnetGroupRequest.builder() + .dbSubnetGroupName(groupName) + .dbSubnetGroupDescription("Subnet group for Neptune cluster") + .subnetIds(subnetList) + .build(); + + return getAsyncClient().createDBSubnetGroup(request) + .whenComplete((response, exception) -> { + if (exception != null) { + Throwable cause = exception.getCause(); + if (cause instanceof ServiceQuotaExceededException) { + throw new CompletionException("The operation was denied because the request would exceed the maximum quota.", cause); + } + throw new CompletionException("Failed to create subnet group: " + exception.getMessage(), exception); + } + }) + .thenApply(response -> { + String name = response.dbSubnetGroup().dbSubnetGroupName(); + String arn = response.dbSubnetGroup().dbSubnetGroupArn(); + logger.info("Subnet group created: " + name); + return arn; + }); + } + // snippet-end:[neptune.java2.create.subnet.main] + + private List getSubnetIds(String vpcId) { + try (Ec2Client ec2 = Ec2Client.builder().region(region).build()) { + DescribeSubnetsRequest request = DescribeSubnetsRequest.builder() + .filters(builder -> builder.name("vpc-id").values(vpcId)) + .build(); + + DescribeSubnetsResponse response = ec2.describeSubnets(request); + return response.subnets().stream() + .map(Subnet::subnetId) + .collect(Collectors.toList()); + } + } + + public static String getDefaultVpcId() { + Ec2Client ec2 = Ec2Client.builder() + .region(Region.US_EAST_1) + .build(); + + Filter myFilter = Filter.builder() + .name("isDefault") + .values("true") + .build(); + + List filterList = new ArrayList<>(); + filterList.add(myFilter); + + DescribeVpcsRequest request = DescribeVpcsRequest.builder() + .filters(filterList) + .build(); + + + DescribeVpcsResponse response = ec2.describeVpcs(request); + if (!response.vpcs().isEmpty()) { + Vpc defaultVpc = response.vpcs().get(0); + return defaultVpc.vpcId(); + } else { + throw new RuntimeException("No default VPC found in this region."); + } + } +} +// snippet-end:[neptune.java2.actions.main] \ No newline at end of file diff --git a/javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneScenario.java b/javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneScenario.java new file mode 100644 index 00000000000..e61efdff508 --- /dev/null +++ b/javav2/example_code/neptune/src/main/java/com/example/neptune/scenerio/NeptuneScenario.java @@ -0,0 +1,252 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.example.neptune.scenerio; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import software.amazon.awssdk.services.neptunegraph.model.ResourceNotFoundException; +import software.amazon.awssdk.services.neptunegraph.model.ServiceQuotaExceededException; + +import java.util.Scanner; +import java.util.concurrent.CompletionException; + +// snippet-start:[neptune.java2.scenario.main] +public class NeptuneScenario { + public static final String DASHES = new String(new char[80]).replace("\0", "-"); + private static final Logger logger = LoggerFactory.getLogger(NeptuneScenario.class); + static Scanner scanner = new Scanner(System.in); + static NeptuneActions neptuneActions = new NeptuneActions(); + + public static void main(String[] args) { + final String usage = + """ + Usage: + + + Where: + subnetGroupName - The name of an existing Neptune DB subnet group that includes subnets in at least two Availability Zones. + clusterName - The unique identifier for the Neptune DB cluster. + dbInstanceId - The identifier for a specific Neptune DB instance within the cluster. + """; + String subnetGroupName = "neptuneSubnetGroup65"; + String clusterName = "neptuneCluster65"; + String dbInstanceId = "neptuneDB65"; + + logger.info(""" + Amazon Neptune is a fully managed graph + database service by AWS, designed specifically + for handling complex relationships and connected + datasets at scale. It supports two popular graph models: + property graphs (via openCypher and Gremlin) and RDF + graphs (via SPARQL). This makes Neptune ideal for + use cases such as knowledge graphs, fraud detection, + social networking, recommendation engines, and + network management, where relationships between + entities are central to the data. + + Being fully managed, Neptune handles database + provisioning, patching, backups, and replication, + while also offering high availability and durability + within AWS's infrastructure. + + For developers, programming with Neptune allows + for building intelligent, relationship-aware + applications that go beyond traditional tabular + databases. Developers can use the AWS SDK for Java + to automate infrastructure operations (via NeptuneClient). + + Let's get started... + """); + waitForInputToContinue(scanner); + runScenario(subnetGroupName, dbInstanceId, clusterName); + } + + public static void runScenario(String subnetGroupName, String dbInstanceId, String clusterName) { + logger.info(DASHES); + logger.info("1. Create a Neptune DB Subnet Group"); + logger.info("The Neptune DB subnet group is used when launching a Neptune cluster"); + waitForInputToContinue(scanner); + try { + neptuneActions.createSubnetGroupAsync(subnetGroupName).join(); + + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + if (cause instanceof ServiceQuotaExceededException) { + logger.error("The request failed due to service quota exceeded: {}", cause.getMessage()); + } else { + logger.error("An unexpected error occurred.", cause); + } + return; + } + waitForInputToContinue(scanner); + logger.info(DASHES); + + logger.info(DASHES); + logger.info("2. Create a Neptune Cluster"); + logger.info("A Neptune Cluster allows you to store and query highly connected datasets with low latency."); + waitForInputToContinue(scanner); + String dbClusterId; + try { + dbClusterId = neptuneActions.createDBClusterAsync(clusterName).join(); + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + if (cause instanceof ServiceQuotaExceededException) { + logger.error("The request failed due to service quota exceeded: {}", cause.getMessage()); + } else { + logger.error("An unexpected error occurred.", cause); + } + return; + } + + waitForInputToContinue(scanner); + logger.info(DASHES); + + logger.info(DASHES); + logger.info("3. Create a Neptune DB Instance"); + logger.info("In this step, we add a new database instance to the Neptune cluster"); + waitForInputToContinue(scanner); + try { + neptuneActions.createDBInstanceAsync(dbInstanceId, dbClusterId).join(); + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + if (cause instanceof ServiceQuotaExceededException) { + logger.error("The request failed due to service quota exceeded: {}", cause.getMessage()); + } else { + logger.error("An unexpected error occurred.", cause); + } + return; + } + waitForInputToContinue(scanner); + logger.info(DASHES); + + logger.info(DASHES); + logger.info("4. Check the status of the Neptune DB Instance"); + logger.info(""" + In this step, we will wait until the DB instance + becomes available. This may take around 10 minutes. + """); + waitForInputToContinue(scanner); + try { + neptuneActions.checkInstanceStatus(dbInstanceId, "available").join(); + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + logger.error("An unexpected error occurred.", cause); + return; + } + waitForInputToContinue(scanner); + logger.info(DASHES); + + logger.info(DASHES); + logger.info("5.Show Neptune Cluster details"); + waitForInputToContinue(scanner); + try { + neptuneActions.describeDBClustersAsync(clusterName).join(); + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + if (cause instanceof ResourceNotFoundException) { + logger.error("The request failed due to the resource not found: {}", cause.getMessage()); + } else { + logger.error("An unexpected error occurred.", cause); + } + return; + } + waitForInputToContinue(scanner); + logger.info(DASHES); + + logger.info(DASHES); + logger.info("6. Stop the Amazon Neptune cluster"); + logger.info(""" + Once stopped, this step polls the status + until the cluster is in a stopped state. + """); + waitForInputToContinue(scanner); + try { + neptuneActions.stopDBClusterAsync(dbClusterId); + neptuneActions.waitForClusterStatus(dbClusterId, "stopped"); + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + if (cause instanceof ResourceNotFoundException) { + logger.error("The request failed due to the resource not found: {}", cause.getMessage()); + } else { + logger.error("An unexpected error occurred.", cause); + } + return; + } + waitForInputToContinue(scanner); + logger.info(DASHES); + + logger.info(DASHES); + logger.info("7. Start the Amazon Neptune cluster"); + logger.info(""" + Once started, this step polls the clusters + status until it's in an available state. + We will also poll the instance status. + """); + waitForInputToContinue(scanner); + try { + neptuneActions.startDBClusterAsync(dbClusterId); + neptuneActions.waitForClusterStatus(dbClusterId, "available"); + neptuneActions.checkInstanceStatus(dbInstanceId, "available").join(); + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + if (cause instanceof ResourceNotFoundException) { + logger.error("The request failed due to the resource not found: {}", cause.getMessage()); + } else { + logger.error("An unexpected error occurred.", cause); + } + return; + } + logger.info(DASHES); + + logger.info(DASHES); + logger.info("8. Delete the Neptune Assets"); + logger.info("Would you like to delete the Neptune Assets? (y/n)"); + String delAns = scanner.nextLine().trim(); + if (delAns.equalsIgnoreCase("y")) { + logger.info("You selected to delete the Neptune assets."); + try { + neptuneActions.deleteNeptuneResourcesAsync(dbInstanceId, clusterName, subnetGroupName); + } catch (CompletionException ce) { + Throwable cause = ce.getCause(); + if (cause instanceof ResourceNotFoundException) { + logger.error("The request failed due to the resource not found: {}", cause.getMessage()); + } else { + logger.error("An unexpected error occurred.", cause); + } + return; + } + } else { + logger.info("You selected not to delete Neptune assets."); + } + waitForInputToContinue(scanner); + logger.info(DASHES); + + logger.info(DASHES); + logger.info( + """ + Thank you for checking out the Amazon Neptune Service Use demo. We hope you + learned something new, or got some inspiration for your own apps today. + For more AWS code examples, have a look at: + https://docs.aws.amazon.com/code-library/latest/ug/what-is-code-library.html + """); + logger.info(DASHES); + } + + private static void waitForInputToContinue(Scanner scanner) { + while (true) { + logger.info(""); + logger.info("Enter 'c' followed by to continue:"); + String input = scanner.nextLine(); + + if (input.trim().equalsIgnoreCase("c")) { + logger.info("Continuing with the program..."); + logger.info(""); + break; + } else { + logger.info("Invalid input. Please try again."); + } + } + } +} +// snippet-end:[neptune.java2.scenario.main] \ No newline at end of file diff --git a/javav2/example_code/neptune/src/main/resources/log4j2.xml b/javav2/example_code/neptune/src/main/resources/log4j2.xml new file mode 100644 index 00000000000..914470047e7 --- /dev/null +++ b/javav2/example_code/neptune/src/main/resources/log4j2.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/javav2/example_code/neptune/src/test/java/NeptuneTest.java b/javav2/example_code/neptune/src/test/java/NeptuneTest.java new file mode 100644 index 00000000000..15fe4a8a4d7 --- /dev/null +++ b/javav2/example_code/neptune/src/test/java/NeptuneTest.java @@ -0,0 +1,106 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import com.example.neptune.scenerio.NeptuneActions; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestMethodOrder; + +import static org.junit.jupiter.api.Assertions.*; + +@TestInstance(TestInstance.Lifecycle.PER_METHOD) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class NeptuneTest { + private static String subnetGroupName = "neptuneSubnetGroupTest" ; + private static String clusterName = "neptuneClusterTest" ; + private static String dbInstanceId = "neptuneDBTest" ; + private static NeptuneActions neptuneActions = new NeptuneActions(); + private static String dbClusterId = ""; + + @Test + @Tag("IntegrationTest") + @Order(1) + public void testCreateSubnetGroup() { + assertDoesNotThrow(() -> { + neptuneActions.createSubnetGroupAsync(subnetGroupName).join(); + }); + System.out.println("Test 1 passed"); + } + + @Test + @Tag("IntegrationTest") + @Order(2) + public void testCreateCluster() { + assertDoesNotThrow(() -> { + dbClusterId = neptuneActions.createDBClusterAsync(clusterName).join(); + assertFalse(dbClusterId.trim().isEmpty(), "DB Cluster ID should not be empty"); + }); + System.out.println("Test 2 passed"); + } + + @Test + @Tag("IntegrationTest") + @Order(3) + public void testCreateDBInstance() { + assertDoesNotThrow(() -> { + neptuneActions.createDBInstanceAsync(dbInstanceId, dbClusterId).join(); + }); + System.out.println("Test 3 passed"); + } + + @Test + @Tag("IntegrationTest") + @Order(4) + public void testCheckInstance() { + assertDoesNotThrow(() -> { + neptuneActions.checkInstanceStatus(dbInstanceId, "available").join(); + }); + System.out.println("Test 4 passed"); + } + + @Test + @Tag("IntegrationTest") + @Order(5) + public void testDescribeDBCluster() { + assertDoesNotThrow(() -> { + neptuneActions.describeDBClustersAsync(clusterName).join(); + }); + System.out.println("Test 5 passed"); + } + + @Test + @Tag("IntegrationTest") + @Order(6) + public void testStopDBCluster() { + assertDoesNotThrow(() -> { + neptuneActions.stopDBClusterAsync(dbClusterId); + neptuneActions.waitForClusterStatus(dbClusterId,"stopped"); + }); + System.out.println("Test 6 passed"); + } + + @Test + @Tag("IntegrationTest") + @Order(7) + public void testStartDBCluster() { + assertDoesNotThrow(() -> { + neptuneActions.startDBClusterAsync(dbClusterId); + neptuneActions.waitForClusterStatus(dbClusterId,"available"); + neptuneActions.checkInstanceStatus(dbInstanceId, "available").join(); + }); + System.out.println("Test 7 passed"); + } + + @Test + @Tag("IntegrationTest") + @Order(8) + public void testDeleteResources() { + assertDoesNotThrow(() -> { + neptuneActions.deleteNeptuneResourcesAsync(dbInstanceId, clusterName, subnetGroupName); + }); + System.out.println("Test 8 passed"); + } +} diff --git a/javav2/usecases/creating_neptune_lambda/README.md b/javav2/usecases/creating_neptune_lambda/README.md new file mode 100644 index 00000000000..e91bb8e63ae --- /dev/null +++ b/javav2/usecases/creating_neptune_lambda/README.md @@ -0,0 +1,339 @@ +# Accessing Neptune Graph Data from Lambda in a VPC Using the AWS SDK for Java + +## Overview + +| Heading | Description | +| ----------- | ----------- | +| Description | Discusses how to develop an AWS Lambda function that queries Amazon Neptune data within the VPC using the AWS SDK for Java (v2). | +| Audience | Developer (intermediate) | +| Required skills | Java, Maven | + +This guide provides a step-by-step walkthrough for creating and deploying an AWS Lambda function that queries an Amazon Neptune graph database using the Neptune Data API. + +Amazon Neptune is a fully managed graph database service designed to operate within a Virtual Private Cloud (VPC). Because of this, any Lambda function that needs to access Neptune must also run inside the same VPC and be granted appropriate network and IAM permissions. External access is not supported. + +To ensure secure and reliable communication between Lambda and Neptune, you’ll configure key AWS infrastructure components, including VPC subnets, security groups, and IAM roles. This guide covers all necessary setup and configuration tasks to help you successfully connect your Lambda function to Neptune using the Neptune Data API. + +**Note**: Lambda is a compute service that you can use to run code without provisioning or managing servers. You can create Lambda functions in various programming languages. For more information about Lambda, see +[What is AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html). + +#### Topics ++ Prerequisites ++ Set Up the Amazon Neptune Cluster and VPC ++ Create an AWS Identity and Access Management (IAM) role that is used to execute Lambda functions ++ Create an IntelliJ project ++ Add the POM dependencies to your project ++ Create a Lambda function by using the Lambda runtime API ++ Package the project that contains the Lambda function ++ Deploy the Lambda function + +## Prerequisites +To follow along with this tutorial, you need the following: ++ An Amazon Neptune DB instance in a VPC. You can get this by running the Neptune Basics scenario located in AWS Code Library. ++ A security group that allows traffic from Lambda to Neptune (typically on port 8182). ++ An AWS account with proper credentials. ++ AWS CLI configured with permissions for Lambda, IAM, EC2 (VPC), S3, Neptune. For information about setting up AWS CLI, see [Setting up the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) ++ A Java IDE. (For this tutorial, the IntelliJ IDE is used.) ++ Java 21 JDK. ++ Maven 3.6 or higher. + +### Important + ++ The AWS services included in this document are included in the [AWS Free Tier](https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc). ++ This code has not been tested in all AWS Regions. Some AWS services are available only in specific Regions. For more information, see [AWS Regional Services](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services). ++ Running this code might result in charges to your AWS account. ++ Be sure to delete all of the resources that you create during this tutorial so that you won't be charged. + +## Set Up the Amazon Neptune Cluster and VPC + +Amazon Neptune requires a VPC with at least two subnets in different Availability Zones (AZs) to ensure high availability and fault tolerance. + +If you're unsure which VPC or subnets to use, you can easily generate the required resources by running the Amazon Neptune Basics scenario from the AWS Code Library. This setup will provision: + + - A suitable VPC with subnets in multiple AZs + + - A Neptune DB cluster and instance + + - All necessary networking and security configurations + +This is a quick way to get a working Neptune environment that you can immediately use for this use case. + +### Add data to the database + +Once your Amazon Neptune cluster and database are set up, the next step is to load data into it. This data will be accessed by the AWS Lambda function created as part of this guide. + +Amazon Neptune supports multiple data loading methods, including bulk loading from Amazon S3, Gremlin and SPARQL queries, and integration with AWS Database Migration Service. + +To efficiently populate your Neptune database, use the Neptune bulk loader, which imports data stored in Amazon S3 using formats such as CSV, RDF, or Turtle. +For information on how to add data to the Amazon Neptune database, see [Loading Data into a Neptune DB Instance](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-data.html). + +## Create the Lambda Execution IAM Role + +### Create trust policy JSON file + +You need to create the trust polciy used for this IAM role. Name the file **trust-policy-lambda.json**. + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { "Service": "lambda.amazonaws.com" }, + "Action": "sts:AssumeRole" + } + ] +} + +``` + +### Create the lambda-execution-role role + +You can create the **lambda-execution-role** role by using this CLI command. + +```bash +aws iam create-role \ + --role-name lambda-execution-role \ + --assume-role-policy-document file://trust-policy-lambda.json +``` +### Attach the required managed policies + +Run each of the following AWS CLI commands to attach the necessary managed policies to the Lambda execution role: + +```bash +aws iam attach-role-policy \ + --role-name lambda-execution-role \ + --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess + +aws iam attach-role-policy \ + --role-name lambda-execution-role \ + --policy-arn arn:aws:iam::aws:policy/AWSNeptuneFullAccess + +aws iam attach-role-policy \ + --role-name lambda-execution-role \ + --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole + +aws iam attach-role-policy \ + --role-name lambda-execution-role \ + --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess + +``` + + +## Create an IntelliJ project + +1. In the IntelliJ IDE, choose **File**, **New**, **Project**. + +2. In the **New Project** dialog box, choose **Maven**, and then choose **Next**. + +3. For **GroupId**, enter **org.example**. + +4. For **ArtifactId**, enter **NeptuneLambda**. + +5. Choose **Next**. + +6. Choose **Finish**. + +## Add the POM dependencies to your project + +At this point, you have a new project named **NeptuneLambda**. Make sure that your project's **pom.xml** file looks like the POM file in this Github repository. + +## Create a Lambda function by using the Lambda runtime Java API + +Use the Lambda runtime Java API to create the Java class that defines the Lamdba function. In this example, there is one Java class for the Lambda function named **NeptuneLambdaHandler**. + + +### NeptuneLambdaHandler class + +This Java code represents the **NeptuneLambdaHandler** class. The class use the Neptune Data Client API to query data from the Neptune graph database. + +```java +package org.example; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.LambdaLogger; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunedata.NeptunedataClient; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryRequest; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryResponse; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.net.URI; +import java.time.Duration; +import java.util.Map; + +public class NeptuneLambdaHandler implements RequestHandler, String> { + + @Override + public String handleRequest(Map event, Context context) { + LambdaLogger logger = context.getLogger(); + + String NEPTUNE_ENDPOINT = ":8182"; + + NeptunedataClient neptunedataClient = NeptunedataClient.builder() + .region(Region.US_EAST_1) + .endpointOverride(URI.create(NEPTUNE_ENDPOINT)) + .httpClientBuilder(ApacheHttpClient.builder() + .connectionTimeout(Duration.ofSeconds(10)) + .socketTimeout(Duration.ofSeconds(30))) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallAttemptTimeout(Duration.ofSeconds(30)) + .build()) + .build(); + + // Execute Gremlin Query + logger.log("Executing Gremlin PROFILE query...\n"); + + ExecuteGremlinQueryRequest queryRequest = ExecuteGremlinQueryRequest.builder() + .gremlinQuery("g.V().hasLabel('person').values('name')") + .build(); + + ExecuteGremlinQueryResponse response = neptunedataClient.executeGremlinQuery(queryRequest); + + // Log full response as JSON + logger.log("Full Response:\n"); + try { + ObjectMapper mapper = new ObjectMapper(); + String jsonResponse = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(response); + logger.log(jsonResponse + "\n"); + } catch (Exception e) { + logger.log("Failed to serialize response: " + e.getMessage() + "\n"); + } + + // Log result specifically + if (response.result() != null) { + logger.log("Query Result:\n" + response.result().toString() + "\n"); + } else { + logger.log("No result returned from the query.\n"); + } + + return "Done"; + } +} + +``` + +**Note**: Make sure that you assign your **NEPTUNE_ENDPOINT** with the Neptune endpoint. You can get this value by running the Neptune Basics scenario located in the code lib. + +## Package the project that contains the Lambda functions + +Package up the project into a .jar (JAR) file by using the following Maven command. + + mvn clean package shade:shade + +This creates a shaded JAR file that is located in the **target** folder (which is a child folder of the project folder). + +**Note**: The **maven-shade-plugin** is used in the project’s POM file. This plugin is responsible for creating a .jar file that contains the required dependencies. If you attempt to package up the project without this plugin, the required dependences are not included in the .jar file and you will encounter a **ClassNotFoundException**. + +## Deploy the Lambda function + +You can deploy the Lambda function using the AWS CLI. Be sure to specify the correct VPC subnets and security group associated with your Neptune database. These values can be retrieved by running the Neptune Basics Scenario located in the AWS Code Library. + +The following command creates a Lambda function configured to run inside your VPC: + + +```bash +aws lambda create-function \ + --function-name NeptuneLoader \ + --runtime java21 \ + --role arn:aws:iam::123456789012:role/lambda-execution-role \ + --handler org.example.NeptuneLambdaHandler::handleRequest \ + --timeout 900 \ + --memory-size 1024 \ + --zip-file fileb://target/my-lambda-jar-with-dependencies.jar \ + --vpc-config SubnetIds=subnet-abcdxxxx,subnet-xyz9xxxx,SecurityGroupIds=sg-abc1xxxx + +``` +You're not required to explicitly specify the VPC ID in the **create-function** command. Instead, you specify the subnets and security groups, which together imply the VPC. + +Ensure thay you specify the correct values such as the IAM role and the proper Lambda handler. + +### Configure Security Group rules + +To enable communication between your Lambda function and the Neptune database, you must configure the security +group rules properly. You must allow inbound traffic on port 8182 from the Lambda function's security group. +Use the following CLI command. + +``` bash + +aws ec2 authorize-security-group-ingress \ + --group-id \ + --protocol tcp \ + --port 8182 \ + --source-group \ + --description "Allow Lambda SG access to Neptune on port 8182" + +``` +In addition, allow outbound traffic on port 8182 to the Neptune DB (by default, all outbound traffic is allowed — verify if restricted). + +Use the following CLI command. + +``` bash +aws ec2 authorize-security-group-egress \ + --group-id \ + --protocol tcp \ + --port 8182 \ + --destination-group \ + --description "Allow Lambda to send traffic to Neptune on port 8182" +``` + +### Invoke your Lambda function + +You can invoke the Lambda function using this CLI command. + +```bash +aws lambda invoke --function-name NeptuneLoader output. +``` + +You will see the following command line message. +```json + { + "StatusCode": 200, + "ExecutedVersion": "$LATEST" + } +``` + +Check the output.log for immediate output, but your logs will be detailed in CloudWatch. + +### View CloudWatch Logs + +After invoking your Lambda function, you can view the logs generated by the function in Amazon CloudWatch. Use the AWS CLI commands below to inspect the log groups, streams, and log events for your NeptuneLoader function: + +#### Find the Log Group + +```bash +aws logs describe-log-groups | grep NeptuneLoader +``` + +#### List Log Streams in the Log Group + +```bash +aws logs describe-log-streams \ + --log-group-name /aws/lambda/NeptuneLoader \ + --order-by LastEventTime \ + --descending +``` + +This lists the available log streams sorted by the most recent activity. + +#### View Log Events from a Specific Stream + +Once you identify a logStreamName from the previous step, use the following command to fetch log events: + +```bash +aws logs get-log-events \ + --log-group-name /aws/lambda/NeptuneLoader \ + --log-stream-name +``` + +Replace with the actual stream name returned in the previous command. + +### Next steps +Congratulations, you have created a Lambda function that queries Neptune data. As stated at the beginning of this tutorial, be sure to delete all of the resources that you created during this tutorial so that you won't be charged. + +For more AWS multiservice examples, see +[usecases](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/usecases). + + diff --git a/javav2/usecases/creating_neptune_lambda/pom.xml b/javav2/usecases/creating_neptune_lambda/pom.xml new file mode 100644 index 00000000000..580fece6b80 --- /dev/null +++ b/javav2/usecases/creating_neptune_lambda/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + + org.example + NeotuneLambda + 1.0-SNAPSHOT + + + UTF-8 + 21 + 21 + 21 + + + + + software.amazon.awssdk + bom + 2.31.8 + pom + import + + + org.apache.logging.log4j + log4j-bom + 2.23.1 + pom + import + + + + + + org.junit.jupiter + junit-jupiter + 5.11.4 + test + + + software.amazon.awssdk + neptune + + + software.amazon.awssdk + neptunedata + + + software.amazon.awssdk + neptunegraph + + + software.amazon.awssdk + apache-client + 2.25.38 + + + com.google.code.gson + gson + 2.10.1 + + + com.fasterxml.jackson.core + jackson-databind + 2.17.0 + + + software.amazon.awssdk + ssooidc + + + software.amazon.awssdk + sso + + + software.amazon.awssdk + iam-policy-builder + + + software.amazon.awssdk + s3 + + + org.apache.tinkerpop + gremlin-driver + 3.6.4 + + + org.apache.logging.log4j + log4j-core + + + com.amazonaws + aws-lambda-java-core + 1.2.1 + + + org.slf4j + slf4j-api + 2.0.13 + + + org.apache.logging.log4j + log4j-slf4j2-impl + + + org.apache.logging.log4j + log4j-1.2-api + + + diff --git a/javav2/usecases/creating_neptune_lambda/src/main/java/org/example/NeptuneLambdaHandler.java b/javav2/usecases/creating_neptune_lambda/src/main/java/org/example/NeptuneLambdaHandler.java new file mode 100644 index 00000000000..fe861e21ff1 --- /dev/null +++ b/javav2/usecases/creating_neptune_lambda/src/main/java/org/example/NeptuneLambdaHandler.java @@ -0,0 +1,67 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package org.example; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.LambdaLogger; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.neptunedata.NeptunedataClient; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryRequest; +import software.amazon.awssdk.services.neptunedata.model.ExecuteGremlinQueryResponse; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.net.URI; +import java.time.Duration; +import java.util.Map; + +public class NeptuneLambdaHandler implements RequestHandler, String> { + + @Override + public String handleRequest(Map event, Context context) { + LambdaLogger logger = context.getLogger(); + + String NEPTUNE_ENDPOINT = "https://neptunecluster65.cluster-ro-csf1if1wwrox.us-east-1.neptune.amazonaws.com:8182"; + + NeptunedataClient neptunedataClient = NeptunedataClient.builder() + .region(Region.US_EAST_1) + .endpointOverride(URI.create(NEPTUNE_ENDPOINT)) + .httpClientBuilder(ApacheHttpClient.builder() + .connectionTimeout(Duration.ofSeconds(10)) + .socketTimeout(Duration.ofSeconds(30))) + .overrideConfiguration(ClientOverrideConfiguration.builder() + .apiCallAttemptTimeout(Duration.ofSeconds(30)) + .build()) + .build(); + + // Execute Gremlin Query + logger.log("Executing Gremlin PROFILE query...\n"); + + ExecuteGremlinQueryRequest queryRequest = ExecuteGremlinQueryRequest.builder() + .gremlinQuery("g.V().hasLabel('person').values('name')") + .build(); + + ExecuteGremlinQueryResponse response = neptunedataClient.executeGremlinQuery(queryRequest); + + // Log full response as JSON + logger.log("Full Response:\n"); + try { + ObjectMapper mapper = new ObjectMapper(); + String jsonResponse = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(response); + logger.log(jsonResponse + "\n"); + } catch (Exception e) { + logger.log("Failed to serialize response: " + e.getMessage() + "\n"); + } + + // Log result specifically + if (response.result() != null) { + logger.log("Query Result:\n" + response.result().toString() + "\n"); + } else { + logger.log("No result returned from the query.\n"); + } + + return "Done"; + } +} diff --git a/scenarios/basics/neptune/README.md b/scenarios/basics/neptune/README.md new file mode 100644 index 00000000000..35e834aff99 --- /dev/null +++ b/scenarios/basics/neptune/README.md @@ -0,0 +1,36 @@ +## Overview +This Amazon Neptune basic scenario demonstrates how to interact with Amazon Neptune using an AWS SDK. The scenario covers various operations such as creating a cluster, creating an instance, starting and stopping the cluster, and so on. + +## Key Operations + +1. **Create a Neptune DB Subnet Group**: + - Creates a Neptune DB Subnet Group by invoking `createDBSubnetGroup`. + +2. **Create a Neptune Cluster**: + - Description: Creates a Neptune Cluster by invoking `createDBCluster`. + +3. **Create a Neptune DB Instance**: + - Description: Creates a Neptune DB Instance by invoking `createDBInstance`. + +4. **Check the status of the Neptune DB Instance**: + - Description: Check the status of the DB instance by invoking `describeDBInstances`. Poll the instance until it reaches an `availbale`state. + +**Note** See the [Engineering specification](SPECIFICATION.md) for a full listing of operations. + +## Resources + +This Basics scenario does not require any additional AWS resources. + +## Implementations + +This scenario example will be implemented in the following languages: + +- Java +- Python +- Kotlin + +## Additional Reading + +- [Amazon Neptune Documentation](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) + +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 diff --git a/scenarios/basics/neptune/SPECIFICATION.md b/scenarios/basics/neptune/SPECIFICATION.md new file mode 100644 index 00000000000..7575ebc8be1 --- /dev/null +++ b/scenarios/basics/neptune/SPECIFICATION.md @@ -0,0 +1,289 @@ +# Amazon Neptune Service Scenario Specification + +## Overview +This SDK Basics scenario demonstrates how to interact with Amazon Neptune using an AWS SDK. +It demonstrates various tasks such as creating a Neptune DB Subnet Group, creating a Neptune Cluster, creating a Neptune DB Instance, and so on. + +Finally this scenario demonstrates how to clean up resources. Its purpose is to demonstrate how to get up and running with Amazon Neptune and an AWS SDK. + +## Is using NeptuneClient worth while (Amazon Bedrock results) + +Here is more context on when it's a good idea to use the `NeptuneAsyncClient`: + +1. **Dynamic Resource Provisioning**: The `NeptuneAsyncClient` can be particularly useful when you need to dynamically create, update, or delete Neptune resources as part of your application's functionality. This could be useful in use cases such as: + + - **Multi-tenant Applications**: If you're building a SaaS application that needs to provision Neptune instances on-demand, the `NeptuneAsyncClient` can help you automate this process programmatically. + - **Ephemeral Environments**: When you need to spin up and tear down Neptune resources as part of your CI/CD pipeline or within a Lambda environments, the `NeptuneAsyncClient` can streamline this process. + - **Scaling and Elasticity**: If your application needs to scale Neptune resources up or down based on demand, the `NeptuneAsyncClient` can help you manage these changes dynamically. + +2. **Integrations and Workflow Automation**: The `NeptuneAsyncClient` can be beneficial when you need to integrate Neptune provisioning and management into larger, automated workflows. For example: + + - **DevOps Tooling**: You can use the `NeptuneAsyncClient` as part of your infrastructure-as-code (IaC) tooling, such as building custom scripts that can provision Neptune resources on-demand. + - **Serverless Architectures**: When deploying serverless applications that rely on Neptune, the `NeptuneAsyncClient` can help you manage the Neptune components of your serverless stack. + + +3. **Rapid Prototyping and Experimentation**: The programmatic nature of the `NeptuneAsyncClient` can be beneficial when you need to quickly set up and tear down Neptune resources for prototyping, testing, or experimentation purposes. This can be particularly useful for: + + - **Proof-of-Concepts**: When validating ideas or testing new features that require a Neptune database, the `NeptuneAsyncClient` can help you provision the necessary resources with minimal overhead. + - **Performance Testing**: If you need to stress-test your Neptune-powered application, the NeptuneAsyncClient can help you programmatically create and manage the required test environments. + - **Data Migrations**: When migrating data between Neptune instances or across AWS Regions, the NeptuneAsyncClient can streamline the process of provisioning the necessary resources. + +The key advantage of the `NeptuneAsyncClient` is its ability to provide fine-grained, programmatic control over Neptune resources. This can be particularly valuable in dynamic, automated, or rapidly changing environments where the flexibility and programmability of the `NeptuneAsyncClient` can help streamline your application's Neptune-related infrastructure management. + +### Use Case Recommendation + +- Infrastructure as code (IaC): Prefer CDK, CloudFormation, or Terraform +- Dynamic provisioning in app - Use NeptuneAsyncClient +- Internal tooling or automation - Use NeptuneAsyncClient + - Manual ad hoc cluster setup - Use CLI or SDK (sync/async) + +## Resources +This Basics scenario does not require any additional AWS resources. + +## Hello Amazon Neptune +This program is intended for users not familiar with Amazon Neptune to easily get up and running. The program invokes `describeDBClustersPaginator`to iterate through subnet groups. + +## Basics Scenario Program Flow +The Amazon Neptune Basics scenario executes the following operations. + +1. **Create a Neptune DB Subnet Group**: + - Description: Creates a Neptune DB Subnet Group by invoking `createDBSubnetGroup`. + - Exception Handling: Check to see if a `ServiceQuotaExceededException` is thrown. + If so, display the message and end the program. + +2. **Create a Neptune Cluster**: + - Description: Creates a Neptune Cluster by invoking `createDBCluster`. + - Exception Handling: Check to see if a `ServiceQuotaExceededException` is thrown. If it is thrown, if so, display the message and end the program. + +3. **Create a Neptune DB Instance**: + - Description: Creates a Neptune DB Instance by invoking `createDBInstance`. + - Exception Handling: Check to see if an `ServiceQuotaExceededException` is thrown. If so, display the message and end the program. + +4. **Check the status of the Neptune DB Instance**: + - Description: Check the status of the DB instance by invoking `describeDBInstances`. Poll the instance until it reaches an `availbale`state. + - Exception Handling: This operatioin handles a `CompletionException`. If thrown, display the message and end the program. + +5. **Show Neptune Cluster details**: + - Description: Shows the details of the cluster by invoking `describeDBClusters`. + - Exception Handling: Check to see if a `ResourceNotFoundException` is thrown. If so, display the message and end the program. + +6. **Stop the Cluster**: + - Description: Stop the cluster by invoking `stopDBCluster`. Poll the cluster until it reaches a `stopped`state. + - Exception Handling: Check to see if a `ResourceNotFoundException` is thrown. If so, display the message and end the program. + +7. **Start the cluster**: + - Description: Start the cluster by invoking `startBCluster`. Poll the cluster until it reaches an `available`state. + - Exception Handling: Check to see if a `ResourceNotFoundException` is thrown. If so, display the message and end the program. + + +8. **Delete the Neptune Assets**: + - Description: Delete the various resources. + - Exception Handling: Check to see if an `ResourceNotFoundException` is thrown. If so, display the message and end the program. + +### Program execution +The following shows the output of the Amazon Neptune Basics scenario. + +``` + Amazon Neptune is a fully managed graph + database service by AWS, designed specifically + for handling complex relationships and connected + datasets at scale. It supports two popular graph models: + property graphs (via openCypher and Gremlin) and RDF + graphs (via SPARQL). This makes Neptune ideal for + use cases such as knowledge graphs, fraud detection, + social networking, recommendation engines, and + network management, where relationships between + entities are central to the data. + +Being fully managed, Neptune handles database +provisioning, patching, backups, and replication, +while also offering high availability and durability +within AWS's infrastructure. + +For developers, programming with Neptune allows +for building intelligent, relationship-aware +applications that go beyond traditional tabular +databases. Developers can use the AWS SDK for Java +V2 to automate infrastructure operations +(via NeptuneClient). + +Let's get started... + + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +1. Create a Neptune DB Subnet Group +The Neptune DB subnet group is used when launching a Neptune cluster + +Enter 'c' followed by to continue: +c +Continuing with the program... + +Subnet group created: neptunesubnetgroup56 + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +2. Create a Neptune Cluster +A Neptune Cluster allows you to store and query highly connected datasets with low latency. + +Enter 'c' followed by to continue: +c +Continuing with the program... + +DB Cluster created: neptunecluster56 + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +3. Create a Neptune DB Instance +In this step, we add a new database instance to the Neptune cluster + +Enter 'c' followed by to continue: +c +Continuing with the program... + +Created Neptune DB Instance: neptunedb56 + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +4. Check the status of the Neptune DB Instance +In this step, we will wait until the DB instance +becomes available. This may take around 10 minutes. + + +Enter 'c' followed by to continue: +c +Continuing with the program... + + Neptune instance reached desired status 'available' after 10 mins, 29 secs. + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +5.Show Neptune Cluster details + +Enter 'c' followed by to continue: +c +Continuing with the program... + +Cluster Identifier: neptunecluster56 +Status: available +Engine: neptune +Engine Version: 1.4.5.0 +Endpoint: neptunecluster56.cluster-csf1if1wwrox.us-east-1.neptune.amazonaws.com +Reader Endpoint: neptunecluster56.cluster-ro-csf1if1wwrox.us-east-1.neptune.amazonaws.com +Availability Zones: [us-east-1f, us-east-1c, us-east-1a] +Subnet Group: default +VPC Security Groups: + - sg-dd2e43f0 +Storage Encrypted: false +IAM DB Auth Enabled: false +Backup Retention Period: 1 days +Preferred Backup Window: 04:54-05:24 +Preferred Maintenance Window: sat:03:37-sat:04:07 +------ + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +6. Stop the Amazon Neptune cluster +Once stopped, this step polls the status +until the cluster is in a stopped state. + + +Enter 'c' followed by to continue: +c +Continuing with the program... + +DB Cluster Stopped + Waiting for cluster 'neptunecluster56' to reach status 'stopped'... + Neptune cluster reached desired status 'stopped' after 12 mins, 10 secs. + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +7. Start the Amazon Neptune cluster +Once started, this step polls the clusters +status until it's in an available state. +We will also poll the instance status. + + +Enter 'c' followed by to continue: +c +Continuing with the program... + + DB Cluster starting... + Waiting for cluster 'neptunecluster56' to reach status 'available'... + Neptune cluster reached desired status 'available' after 10 mins, 28 secs. + Neptune instance reached desired status 'available' after 0 secs. +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +8. Delete the Neptune Assets +Would you like to delete the Neptune Assets? (y/n) +y +You selected to delete the Neptune assets. + Deleting DB Instance: neptuneDB56 + Instance neptuneDB56 deleted after 750s + Deleting DB Cluster: neptuneCluster56 + Deleting Subnet Group: neptuneSubnetGroup56 + Neptune resources deleted successfully. + +Enter 'c' followed by to continue: +c +Continuing with the program... + +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +Thank you for checking out the Amazon Neptune Service Use demo. We hope you +learned something new, or got some inspiration for your own apps today. +For more AWS code examples, have a look at: +https://docs.aws.amazon.com/code-library/latest/ug/what-is-code-library.html + +-------------------------------------------------------------------------------- +``` + +## SOS Tags + +The following table describes the metadata used in this Basics Scenario. The metadata file is `neptune_metadata.yaml`. + + +| action | metadata key | +|------------------------|------------------------------------- | +|`createDBSubnetGroup` | neptune_CreateDBSubnetGroup | +|`createDBCluster` | neptune_CreateDBCluster | +|`createDBInstance` | neptune_CreateDBInstance | +|`describeDBInstances ` | neptune_DescribeDBInstances | +|`describeDBClusters` | neptune_DescribeDBClusters | +| `stopDBCluster` | neptune_StopDBCluster | +|`startDBCluster ` | neptune_StartDBCluster | +|`deleteDBInstance ` | neptune_DeleteDBInstance | +| `deleteDBCluster` | neptune_DeleteDBCluster | +| `deleteDBSubnetGroup `| neptune_DeleteDBSubnetGroup | +| `scenario` | neptune_Scenario | +| `hello` | neptune_Hello | + + + From 5c2bb589498f031d273d1b225cf1315ab1781244 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 15:32:00 +0000 Subject: [PATCH 26/33] Bump rack from 3.1.14 to 3.1.16 in /ruby (#7471) Bumps [rack](https://github.com/rack/rack) from 3.1.14 to 3.1.16. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/v3.1.14...v3.1.16) --- updated-dependencies: - dependency-name: rack dependency-version: 3.1.16 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- ruby/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/Gemfile.lock b/ruby/Gemfile.lock index a9ecc08dd83..00011d55fc6 100644 --- a/ruby/Gemfile.lock +++ b/ruby/Gemfile.lock @@ -1441,7 +1441,7 @@ GEM prettyprint prettyprint (0.1.1) racc (1.8.1) - rack (3.1.14) + rack (3.1.16) rack-protection (4.1.1) base64 (>= 0.1.0) logger (>= 1.6.0) From dc8d4cf3cd4a95459984322ea4e981ae52cceae1 Mon Sep 17 00:00:00 2001 From: monadierickx <126071495+monadierickx@users.noreply.github.com> Date: Fri, 6 Jun 2025 19:05:17 +0200 Subject: [PATCH 27/33] Swift: code examples for Meta Llama to use Converse and ConverseStream, Amazon Bedrock (#7434) --- .../metadata/bedrock-runtime_metadata.yaml | 16 ++++ swift/example_code/bedrock-runtime/README.md | 5 ++ .../models/meta_llama/Package.swift | 38 ++++++++++ .../meta_llama/Sources/Converse/main.swift | 65 ++++++++++++++++ .../Sources/ConverseStream/main.swift | 75 +++++++++++++++++++ 5 files changed, 199 insertions(+) create mode 100644 swift/example_code/bedrock-runtime/models/meta_llama/Package.swift create mode 100644 swift/example_code/bedrock-runtime/models/meta_llama/Sources/Converse/main.swift create mode 100644 swift/example_code/bedrock-runtime/models/meta_llama/Sources/ConverseStream/main.swift diff --git a/.doc_gen/metadata/bedrock-runtime_metadata.yaml b/.doc_gen/metadata/bedrock-runtime_metadata.yaml index 35234a7eb90..428df053c46 100644 --- a/.doc_gen/metadata/bedrock-runtime_metadata.yaml +++ b/.doc_gen/metadata/bedrock-runtime_metadata.yaml @@ -431,6 +431,14 @@ bedrock-runtime_Converse_MetaLlama: - description: Send a text message to Meta Llama, using Bedrock's Converse API. snippet_tags: - javascript.v3.bedrock-runtime.Converse_MetaLlama + Swift: + versions: + - sdk_version: 1 + github: swift/example_code/bedrock-runtime + excerpts: + - description: Send a text message to Meta Llama, using Bedrock's Converse API. + snippet_tags: + - swift.example_code.bedrock-runtime.Converse_MetaLlama services: bedrock-runtime: {Converse} @@ -716,6 +724,14 @@ bedrock-runtime_ConverseStream_MetaLlama: - description: Send a text message to Meta Llama, using Bedrock's Converse API and process the response stream in real-time. snippet_tags: - javascript.v3.bedrock-runtime.ConverseStream_MetaLlama + Swift: + versions: + - sdk_version: 1 + github: swift/example_code/bedrock-runtime + excerpts: + - description: Send a text message to Meta Llama, using Bedrock's Converse API and process the response stream in real-time. + snippet_tags: + - swift.example_code.bedrock-runtime.ConverseStream_MetaLlama services: bedrock-runtime: {ConverseStream} diff --git a/swift/example_code/bedrock-runtime/README.md b/swift/example_code/bedrock-runtime/README.md index 85fd11088e9..549ce07640a 100644 --- a/swift/example_code/bedrock-runtime/README.md +++ b/swift/example_code/bedrock-runtime/README.md @@ -45,6 +45,11 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `swift - [Converse](models/anthropic_claude/Sources/Converse/main.swift#L4) - [ConverseStream](models/anthropic_claude/Sources/ConverseStream/main.swift#L4) +### Meta Llama + +- [Converse](models/meta_llama/Sources/Converse/main.swift#L4) +- [ConverseStream](models/meta_llama/Sources/ConverseStream/main.swift#L4) + diff --git a/swift/example_code/bedrock-runtime/models/meta_llama/Package.swift b/swift/example_code/bedrock-runtime/models/meta_llama/Package.swift new file mode 100644 index 00000000000..f5f2c9fc018 --- /dev/null +++ b/swift/example_code/bedrock-runtime/models/meta_llama/Package.swift @@ -0,0 +1,38 @@ +// swift-tools-version: 6.1 +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "MetaLlamaConverse", + // Let Xcode know the minimum Apple platforms supported. + platforms: [ + .macOS(.v13), + .iOS(.v15) + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/awslabs/aws-sdk-swift", from: "1.2.61") + ], + targets: [ + // Targets are the basic building blocks of a package, defining a module or a test suite. + // Targets can depend on other targets in this package and products from dependencies. + .executableTarget( + name: "Converse", + dependencies: [ + .product(name: "AWSBedrockRuntime", package: "aws-sdk-swift"), + ], + path: "Sources/Converse" + ), + .executableTarget( + name: "ConverseStream", + dependencies: [ + .product(name: "AWSBedrockRuntime", package: "aws-sdk-swift"), + ], + path: "Sources/ConverseStream" + ) + ] +) diff --git a/swift/example_code/bedrock-runtime/models/meta_llama/Sources/Converse/main.swift b/swift/example_code/bedrock-runtime/models/meta_llama/Sources/Converse/main.swift new file mode 100644 index 00000000000..2528e994dd5 --- /dev/null +++ b/swift/example_code/bedrock-runtime/models/meta_llama/Sources/Converse/main.swift @@ -0,0 +1,65 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// +// snippet-start:[swift.example_code.bedrock-runtime.Converse_MetaLlama] +// An example demonstrating how to use the Conversation API to send +// a text message to Meta Llama. + +import AWSBedrockRuntime + +func converse(_ textPrompt: String) async throws -> String { + + // Create a Bedrock Runtime client in the AWS Region you want to use. + let config = + try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( + region: "us-east-1" + ) + let client = BedrockRuntimeClient(config: config) + + // Set the model ID. + let modelId = "meta.llama3-8b-instruct-v1:0" + + // Start a conversation with the user message. + let message = BedrockRuntimeClientTypes.Message( + content: [.text(textPrompt)], + role: .user + ) + + // Optionally use inference parameters + let inferenceConfig = + BedrockRuntimeClientTypes.InferenceConfiguration( + maxTokens: 512, + stopSequences: ["END"], + temperature: 0.5, + topp: 0.9 + ) + + // Create the ConverseInput to send to the model + let input = ConverseInput( + inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) + + // Send the ConverseInput to the model + let response = try await client.converse(input: input) + + // Extract and return the response text. + if case let .message(msg) = response.output { + if case let .text(textResponse) = msg.content![0] { + return textResponse + } else { + return "No text response found in message content" + } + } else { + return "No message found in converse output" + } +} + +// snippet-end:[swift.example_code.bedrock-runtime.Converse_MetaLlama] + +do { + let reply = try await converse( + "Describe the purpose of a 'hello world' program in one line." + ) + print(reply) +} catch { + print("An error occurred: \(error)") +} diff --git a/swift/example_code/bedrock-runtime/models/meta_llama/Sources/ConverseStream/main.swift b/swift/example_code/bedrock-runtime/models/meta_llama/Sources/ConverseStream/main.swift new file mode 100644 index 00000000000..33c8255d33c --- /dev/null +++ b/swift/example_code/bedrock-runtime/models/meta_llama/Sources/ConverseStream/main.swift @@ -0,0 +1,75 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// +// snippet-start:[swift.example_code.bedrock-runtime.ConverseStream_MetaLlama] +// An example demonstrating how to use the Conversation API to send a text message +// to Meta Llama and print the response stream. + +import AWSBedrockRuntime + +func printConverseStream(_ textPrompt: String) async throws { + + // Create a Bedrock Runtime client in the AWS Region you want to use. + let config = + try await BedrockRuntimeClient.BedrockRuntimeClientConfiguration( + region: "us-east-1" + ) + let client = BedrockRuntimeClient(config: config) + + // Set the model ID. + let modelId = "meta.llama3-8b-instruct-v1:0" + + // Start a conversation with the user message. + let message = BedrockRuntimeClientTypes.Message( + content: [.text(textPrompt)], + role: .user + ) + + // Optionally use inference parameters. + let inferenceConfig = + BedrockRuntimeClientTypes.InferenceConfiguration( + maxTokens: 512, + stopSequences: ["END"], + temperature: 0.5, + topp: 0.9 + ) + + // Create the ConverseStreamInput to send to the model. + let input = ConverseStreamInput( + inferenceConfig: inferenceConfig, messages: [message], modelId: modelId) + + // Send the ConverseStreamInput to the model. + let response = try await client.converseStream(input: input) + + // Extract the streaming response. + guard let stream = response.stream else { + print("No stream available") + return + } + + // Extract and print the streamed response text in real-time. + for try await event in stream { + switch event { + case .messagestart(_): + print("\nMeta Llama:") + + case .contentblockdelta(let deltaEvent): + if case .text(let text) = deltaEvent.delta { + print(text, terminator: "") + } + + default: + break + } + } +} + +// snippet-end:[swift.example_code.bedrock-runtime.ConverseStream_MetaLlama] + +do { + try await printConverseStream( + "Describe the purpose of a 'hello world' program in two paragraphs." + ) +} catch { + print("An error occurred: \(error)") +} From 954864e328d80d2d3e18e7fe9484261c540b6ae6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 12:26:03 +0000 Subject: [PATCH 28/33] Bump com.fasterxml.jackson.core:jackson-core from 2.12.5 to 2.13.0 in /javav2/example_code/lookoutvision (#7475) Bump com.fasterxml.jackson.core:jackson-core Bumps [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) from 2.12.5 to 2.13.0. - [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.12.5...jackson-core-2.13.0) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-core dependency-version: 2.13.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- javav2/example_code/lookoutvision/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javav2/example_code/lookoutvision/pom.xml b/javav2/example_code/lookoutvision/pom.xml index 56a662249f4..faf67f08708 100644 --- a/javav2/example_code/lookoutvision/pom.xml +++ b/javav2/example_code/lookoutvision/pom.xml @@ -56,7 +56,7 @@ com.fasterxml.jackson.core jackson-core - 2.12.5 + 2.13.0 com.fasterxml.jackson.core From d4f8051172830a28163358d536047a9098955a79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 13:03:53 +0000 Subject: [PATCH 29/33] Bump requests from 2.31.0 to 2.32.4 in /python/example_code/bedrock-agent (#7477) Bump requests in /python/example_code/bedrock-agent Bumps [requests](https://github.com/psf/requests) from 2.31.0 to 2.32.4. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.31.0...v2.32.4) --- updated-dependencies: - dependency-name: requests dependency-version: 2.32.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- python/example_code/bedrock-agent/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/example_code/bedrock-agent/requirements.txt b/python/example_code/bedrock-agent/requirements.txt index 83e86f197a7..19c18b6d6a8 100644 --- a/python/example_code/bedrock-agent/requirements.txt +++ b/python/example_code/bedrock-agent/requirements.txt @@ -11,7 +11,7 @@ pluggy==1.3.0 pytest==7.4.3 python-dateutil==2.8.2 PyYAML==6.0.1 -requests==2.31.0 +requests==2.32.4 s3transfer==0.12.0 six==1.16.0 urllib3==2.2.2 From f6b19b2707affc1caa867752d20f860e893bd264 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 15:25:38 +0000 Subject: [PATCH 30/33] Bump requests from 2.32.0 to 2.32.4 in /.tools (#7478) Bumps [requests](https://github.com/psf/requests) from 2.32.0 to 2.32.4. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.32.0...v2.32.4) --- updated-dependencies: - dependency-name: requests dependency-version: 2.32.4 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .tools/base_requirements.txt | 2 +- .tools/readmes/requirements_freeze.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.tools/base_requirements.txt b/.tools/base_requirements.txt index 10cca1d5e3e..6d149030059 100644 --- a/.tools/base_requirements.txt +++ b/.tools/base_requirements.txt @@ -3,7 +3,7 @@ flake8==6.1.0 mypy-extensions==1.0.0 pathspec==0.11.2 PyYAML==6.0.1 -requests==2.32.0 +requests==2.32.4 typer==0.15.2 types-PyYAML==6.0.12.12 yamale==4.0.4 diff --git a/.tools/readmes/requirements_freeze.txt b/.tools/readmes/requirements_freeze.txt index f65fd0c9435..54024453236 100644 --- a/.tools/readmes/requirements_freeze.txt +++ b/.tools/readmes/requirements_freeze.txt @@ -22,7 +22,7 @@ pyflakes==3.1.0 Pygments==2.19.1 pytest==8.0.0 PyYAML==6.0.1 -requests==2.32.0 +requests==2.32.4 rich==13.9.4 shellingham==1.5.4 typer==0.15.1 From 7a37a0569f1b7353c7f3d94d58daf81c5762ec04 Mon Sep 17 00:00:00 2001 From: Scott Macdonald <57190223+scmacdon@users.noreply.github.com> Date: Tue, 10 Jun 2025 11:32:35 -0400 Subject: [PATCH 31/33] Fixed a minor bug by updating a SOS tag in the EC2 Yaml file (#7476) --- .doc_gen/metadata/ec2_metadata.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.doc_gen/metadata/ec2_metadata.yaml b/.doc_gen/metadata/ec2_metadata.yaml index e078dcc250e..d70b24088ac 100644 --- a/.doc_gen/metadata/ec2_metadata.yaml +++ b/.doc_gen/metadata/ec2_metadata.yaml @@ -1494,7 +1494,7 @@ ec2_DescribeInstances: excerpts: - description: snippet_tags: - - ec2.java2.describe_instances.main + - ec2.java2.scenario.describe_instance.main .NET: versions: - sdk_version: 3 From b24b4037dd5f764bba471a234173c2ee13497165 Mon Sep 17 00:00:00 2001 From: Brian Murray <40031786+brmur@users.noreply.github.com> Date: Thu, 12 Jun 2025 14:20:17 +0100 Subject: [PATCH 32/33] Fix description in JS scenario (#7481) --- .doc_gen/metadata/s3_metadata.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.doc_gen/metadata/s3_metadata.yaml b/.doc_gen/metadata/s3_metadata.yaml index 8569428e2cd..b91b63bdc72 100644 --- a/.doc_gen/metadata/s3_metadata.yaml +++ b/.doc_gen/metadata/s3_metadata.yaml @@ -963,7 +963,7 @@ s3_GetObject: - description: Download the object. snippet_tags: - s3.JavaScript.buckets.getobjectV3 - - description: Download the object on condition its ETag does not match the one provided. + - description: Download the object on condition its ETag matches the one provided. snippet_files: - javascriptv3/example_code/s3/actions/get-object-conditional-request-if-match.js - description: Download the object on condition its ETag does not match the one provided. From 6fbc4a45e97ec0db75b05c3c0f59e044ade446c5 Mon Sep 17 00:00:00 2001 From: monadierickx <126071495+monadierickx@users.noreply.github.com> Date: Tue, 17 Jun 2025 10:54:29 +0200 Subject: [PATCH 33/33] naming consistency --- swift/example_code/bedrock-runtime/README.md | 2 +- .../{amazon_nova_reel => amazon-nova-reel}/Package.swift | 0 .../{amazon_nova_reel => amazon-nova-reel}/Sources/main.swift | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename swift/example_code/bedrock-runtime/models/amazon-nova/{amazon_nova_reel => amazon-nova-reel}/Package.swift (100%) rename swift/example_code/bedrock-runtime/models/amazon-nova/{amazon_nova_reel => amazon-nova-reel}/Sources/main.swift (100%) diff --git a/swift/example_code/bedrock-runtime/README.md b/swift/example_code/bedrock-runtime/README.md index 549ce07640a..433be634504 100644 --- a/swift/example_code/bedrock-runtime/README.md +++ b/swift/example_code/bedrock-runtime/README.md @@ -38,7 +38,7 @@ For prerequisites, see the [README](../../README.md#Prerequisites) in the `swift ### Amazon Nova Reel -- [Text-to-video](models/amazon-nova/amazon_nova_reel/Sources/main.swift#L4) +- [Text-to-video](models/amazon-nova/amazon-nova-reel/Sources/main.swift#L4) ### Anthropic Claude diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Package.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-reel/Package.swift similarity index 100% rename from swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Package.swift rename to swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-reel/Package.swift diff --git a/swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift b/swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-reel/Sources/main.swift similarity index 100% rename from swift/example_code/bedrock-runtime/models/amazon-nova/amazon_nova_reel/Sources/main.swift rename to swift/example_code/bedrock-runtime/models/amazon-nova/amazon-nova-reel/Sources/main.swift