From cf8c9f74d40fb59eb4a53cade2accdc5316ed33f Mon Sep 17 00:00:00 2001 From: virtualgill Date: Tue, 20 Jun 2023 11:42:17 +0100 Subject: [PATCH 1/3] Public release 1.5.5.1 --- README.md | 85 +++++++++++++++++++++++++------------------------------ 1 file changed, 38 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index eeeaeb0..3d354c6 100644 --- a/README.md +++ b/README.md @@ -4,64 +4,55 @@ This repository is a collection of code snippets for working with different part We currently have snippets in: -* Python under [python/](python/) -* Java under [java/](java/) -* DotNet (C#) under [dotnet/](dotnet/) -* Javascript under [javascript/](javascript/) -* Go under [go/](go/) -* PowerShell [powershell/](powershell/) -* Tools [tools/](tools/) +* Python under [python/](python) +* Java under [java/](java) +* DotNet (C#) under [dotnet/](dotnet) +* Javascript under [javascript/](javascript) +* Go under [go/](go) +* PowerShell [powershell/](powershell) +* Tools [tools/](tools) Feel free to add more languages. Please follow the requirements in each subdirectory README. ## Snippets -| Name | Description | Links | -| ---- | ----------- | ----- | -| Outbound Dial | Uses the [StartOutboundVoiceContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartOutboundVoiceContact.html) API to call a number. | [Java](java/OutboundExample) [DotNet](dotnet/OutboundExample) [Go](go/StartOutboundVoiceContact) | -| Holiday Check | Can be used to check for holidays in a contact flow | [Python](python/holidaycheck) | -| Sync Instance User Data | Can be used to sync basic user information from one instance to another instance | [Python](python/syncinstances) | -| Lex Default Intent Function | pass the utterance used in Lex on default intent to a contact attribute in connect | [Python](python/LexDefaultIntentUtterance) | -| Get Available Agents | Uses the [GetCurrentMetricData](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetCurrentMetricData.html) API to get all available agents in a queue | [Go](go/GetQueueAvailableAgents) | -| Add Connect User | Add a new user to Amazon Connect | [PowerShell](powershell/New-ConnectUser) | -| Multi Account / Multi Instance Metric Collection | Collect metrics from multiple accounts | [Python](python/multiaccountmetrics/multi_account_metrics.py) | -| Restrict Deskphone in CCP | Enforce deskphone settings with javascript in the CCP | [Javascript](javascript/restrict-deskphone-in-ccp) | -| Remote Control Center | Centrally manage prompts and routing configurations in DynamoDB | [Python](python/remote-control-center) | -| Contact Flow Helper | A single AWS Lambda function which provides a set of basic math and text tools to help manipulate data in contact flows | [Python](python/contactflowhelper)| -| Create Tasks Programmatically | CloudFormation template to enable you to programmatically create an Amazon Connect Task | [Javascript](javascript/programmatically-create-task-example) -| Amazon Connect Reg-Ex Patterns | For use in Cloudformation templates | [Tools](tools/)| -| Amazon Connect Draw.io Objects | Contact flow blocks that can be imported into Draw.io | [Tools](tools/)| -| Check Time Left | This snippet helps make a routing decision whether to add a new contact to the queue or take another action (like terminating the call) based on the queue length and the business hours for that day. | [Python](python/CheckTimeLeft/) | +| Name | Description | Links | +|--------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------| +| Outbound Dial | Uses the [StartOutboundVoiceContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartOutboundVoiceContact.html) API to call a number. | [Java](java/OutboundExample) [DotNet](dotnet/OutboundExample) [Go](go/StartOutboundVoiceContact) | +| Holiday Check | Can be used to check for holidays in a contact flow | [Python](python/holidaycheck) | +| Sync Instance User Data | Can be used to sync basic user information from one instance to another instance | [Python](python/syncinstances) | +| Lex Default Intent Function | pass the utterance used in Lex on default intent to a contact attribute in connect | [Python](python/LexDefaultIntentUtterance) | +| Get Available Agents | Uses the [GetCurrentMetricData](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetCurrentMetricData.html) API to get all available agents in a queue | [Go](go/GetQueueAvailableAgents) | +| Add Connect User | Add a new user to Amazon Connect | [PowerShell](powershell/New-ConnectUser) | +| Multi Account / Multi Instance Metric Collection | Collect metrics from multiple accounts | [Python](python/multiaccountmetrics/multi_account_metrics.py) | +| Restrict Deskphone in CCP | Enforce deskphone settings with javascript in the CCP | [Javascript](javascript/restrict-deskphone-in-ccp) | +| Remote Control Center | Centrally manage prompts and routing configurations in DynamoDB | [Python](python/remote-control-center) | +| Contact Flow Helper | A single AWS Lambda function which provides a set of basic math and text tools to help manipulate data in contact flows | [Python](python/contactflowhelper) | +| Create Tasks Programmatically | CloudFormation template to enable you to programmatically create an Amazon Connect Task | [Javascript](javascript/programmatically-create-task-example) | +| Amazon Connect Reg-Ex Patterns | For use in Cloudformation templates | [Tools](tools) | +| Amazon Connect Draw.io Objects | Contact flow blocks that can be imported into Draw.io | [Tools](tools) | +| Check Time Left | This snippet helps make a routing decision whether to add a new contact to the queue or take another action (like terminating the call) based on the queue length and the business hours for that day. | [Python](python/CheckTimeLeft) | ## Projects -| Name | Description | Links | -| ---- | ----------- | ----- | -| Context Routing | Uses CTR processing, Lambda, and DynamoDB to track IVR task completion and return callers to incomplete tasks | [CloudFormation](projects/ContextRouting) | -| SCV-CrossAccountSMS | Uses Lambda and cross account permissions to allow Salesforce Service Cloud Voice provisioned Amazon Connect instances to utilize SNS to send SMS messages. | [CloudFormation](projects/SCV-CrossAccountSMS) | -| CallerHistory | The caller history project utilizes AWS Lambda and Amazon DynamoDB to record if an individual has contacted previously though a user defined identifier and records time of last contact. | [CloudFormation](projects/CallerHistory) | -| CrossRegionCrossAccount | This project shows how to call an AWS Lambda function that exists in a separate account or a separate region using AWS Lambda permissions. | [CloudFormation](projects/CrossRegionCrossAccount) | -| GetSetDataByID | This project expands on the CallerHistory project by implementing additional functionality to get, put, and update items in Amazon DynamoDB. | [CloudFormation](projects/GetSetDataByID) | -| LastAgentRouting | This project shows how to potentially implement last agent routing for customers using a voice channel.| [CloudFormation](projects/LastAgentRouting) | -| RoutingFeatureRouting | This project shows how to capture a routing feature and use that to dynamically route a caller in a contact flow.| [CloudFormation](projects/RoutingFeatureRouting) | -| LambdaAlias | This project shows how to provide access to an AWS Lambda function Alias from Amazon Connect.| [CloudFormation](projects/LambdaAlias) | -| ContextRouting | This project demonstrates how you can use contact trace record processing, Lambda, and DynamoDB to track a callers progress through an IVR task, such as making a payment, and return them to that task should they be disconnected.| [CloudFormation](projects/ContextRouting) | -| Rate Limiter | The rate limiter project utilizes AWS Lambda and Amazon DynamoDB dynamically to add rate limiting a caller to a Amazon Connect queue based on their phone number and/or IP address.| [CloudFormation](projects/RateLimiter) | -| CCP Log Parser| A visualisation tool to visualise CCP logs to help troubleshoot client side errors | [link](tools/CCPLogParser) | -| Connectivity Test Tool | This tool checks which web browser the agent is running, the network configuration from the client side and whether the microphone has required permissions. | [link](tools/CCPConnectivityTestTools) | -| Dynamic Contact Center | This project demonstrates how you can use persistent session attributes to develop modular, repeatable and dynamic contact flows | [CloudFormation](projects/DynamicContactCenter) -| Connect Cloudwatch Dashboard | This project automates the creation and deployment of a Cloudwatch Dashboard to monitor critical metrics for an Amazon Connect instance | [link](tools/ConnectCloudwatchDashboard/README.md) +| Name | Description | Links | +|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------| +| Context Routing | Uses CTR processing, Lambda, and DynamoDB to track IVR task completion and return callers to incomplete tasks | [CloudFormation](projects/ContextRouting) | +| SCV-CrossAccountSMS | Uses Lambda and cross account permissions to allow Salesforce Service Cloud Voice provisioned Amazon Connect instances to utilize SNS to send SMS messages. | [CloudFormation](projects/SCV-CrossAccountSMS) | +| CallerHistory | The caller history project utilizes AWS Lambda and Amazon DynamoDB to record if an individual has contacted previously though a user defined identifier and records time of last contact. | [CloudFormation](projects/CallerHistory) | +| CrossRegionCrossAccount | This project shows how to call an AWS Lambda function that exists in a separate account or a separate region using AWS Lambda permissions. | [CloudFormation](projects/CrossRegionCrossAccount) | +| GetSetDataByID | This project expands on the CallerHistory project by implementing additional functionality to get, put, and update items in Amazon DynamoDB. | [CloudFormation](projects/GetSetDataByID) | +| LastAgentRouting | This project shows how to potentially implement last agent routing for customers using a voice channel. | [CloudFormation](projects/LastAgentRouting) | +| LambdaAlias | This project shows how to provide access to an AWS Lambda function Alias from Amazon Connect. | [CloudFormation](projects/LambdaAlias) | +| ContextRouting | This project demonstrates how you can use contact trace record processing, Lambda, and DynamoDB to track a callers progress through an IVR task, such as making a payment, and return them to that task should they be disconnected. | [CloudFormation](projects/ContextRouting) | +| Rate Limiter | The rate limiter project utilizes AWS Lambda and Amazon DynamoDB dynamically to add rate limiting a caller to a Amazon Connect queue based on their phone number and/or IP address. | [CloudFormation](projects/RateLimiter) | +| CCP Log Parser | A visualisation tool to visualise CCP logs to help troubleshoot client side errors | [link](tools/CCPLogParser) | +| Dynamic Contact Center | This project demonstrates how you can use persistent session attributes to develop modular, repeatable and dynamic contact flows | [CloudFormation](projects/DynamicContactCenter) | +| Connect Cloudwatch Dashboard | This project automates the creation and deployment of a Cloudwatch Dashboard to monitor critical metrics for an Amazon Connect instance | [link](tools/ConnectCloudwatchDashboard/README.md) | ## Contributions Make sure the `.gitignore` per language is applied. Make sure your snippet has no external dependencies. -Make sure your snippet is self contained. - -### Values for variables - -* `InstanceId` : `c2e9dc6f-3f69-40e2-b0ec-f78d0c62bee6` -* `ContactFlowId`: `ae4e2be3-5541-4c57-9738-217052e61eb3` -* `DestinationPhoneNumber` : `+12065550101` -* `SourcePhoneNumber` : `+12065550100` +Make sure your snippet is self-contained. \ No newline at end of file From 1069d4184e828bde5c5895dd2acec4e5ccc56530 Mon Sep 17 00:00:00 2001 From: virtualgill Date: Tue, 20 Jun 2023 11:47:44 +0100 Subject: [PATCH 2/3] Clean-up --- README.md | 86 ++++++++++++++++++++++++------------------------------- 1 file changed, 38 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index f047b4c..0086426 100644 --- a/README.md +++ b/README.md @@ -4,65 +4,55 @@ This repository is a collection of code snippets for working with different part We currently have snippets in: -* Python under [python/](python/) -* Java under [java/](java/) -* DotNet (C#) under [dotnet/](dotnet/) -* Javascript under [javascript/](javascript/) -* Go under [go/](go/) -* PowerShell [powershell/](powershell/) -* Tools [tools/](tools/) +* Python under [python/](python) +* Java under [java/](java) +* DotNet (C#) under [dotnet/](dotnet) +* Javascript under [javascript/](javascript) +* Go under [go/](go) +* PowerShell [powershell/](powershell) +* Tools [tools/](tools) Feel free to add more languages. Please follow the requirements in each subdirectory README. ## Snippets -| Name | Description | Links | -| ---- | ----------- | ----- | -| Outbound Dial | Uses the [StartOutboundVoiceContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartOutboundVoiceContact.html) API to call a number. | [Java](java/OutboundExample) [DotNet](dotnet/OutboundExample) [Go](go/StartOutboundVoiceContact) | -| Holiday Check | Can be used to check for holidays in a contact flow | [Python](python/holidaycheck) | -| Sync Instance User Data | Can be used to sync basic user information from one instance to another instance | [Python](python/syncinstances) | -| Lex Default Intent Function | pass the utterance used in Lex on default intent to a contact attribute in connect | [Python](python/LexDefaultIntentUtterance) | -| Get Available Agents | Uses the [GetCurrentMetricData](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetCurrentMetricData.html) API to get all available agents in a queue | [Go](go/GetQueueAvailableAgents) | -| Add Connect User | Add a new user to Amazon Connect | [PowerShell](powershell/New-ConnectUser) | -| Multi Account / Multi Instance Metric Collection | Collect metrics from multiple accounts | [Python](python/multiaccountmetrics/multi_account_metrics.py) | -| Restrict Deskphone in CCP | Enforce deskphone settings with javascript in the CCP | [Javascript](javascript/restrict-deskphone-in-ccp) | -| Remote Control Center | Centrally manage prompts and routing configurations in DynamoDB | [Python](python/remote-control-center) | -| Contact Flow Helper | A single AWS Lambda function which provides a set of basic math and text tools to help manipulate data in contact flows | [Python](python/contactflowhelper)| -| Create Tasks Programmatically | CloudFormation template to enable you to programmatically create an Amazon Connect Task | [Javascript](javascript/programmatically-create-task-example) | -| Amazon Connect Reg-Ex Patterns | For use in Cloudformation templates | [Tools](tools/)| -| Amazon Connect Draw.io Objects | Contact flow blocks that can be imported into Draw.io | [Tools](tools/)| -| Check Time Left | This snippet helps make a routing decision whether to add a new contact to the queue or take another action (like terminating the call) based on the queue length and the business hours for that day. | [Python](python/CheckTimeLeft/) | +| Name | Description | Links | +|--------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------| +| Outbound Dial | Uses the [StartOutboundVoiceContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartOutboundVoiceContact.html) API to call a number. | [Java](java/OutboundExample) [DotNet](dotnet/OutboundExample) [Go](go/StartOutboundVoiceContact) | +| Holiday Check | Can be used to check for holidays in a contact flow | [Python](python/holidaycheck) | +| Sync Instance User Data | Can be used to sync basic user information from one instance to another instance | [Python](python/syncinstances) | +| Lex Default Intent Function | pass the utterance used in Lex on default intent to a contact attribute in connect | [Python](python/LexDefaultIntentUtterance) | +| Get Available Agents | Uses the [GetCurrentMetricData](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetCurrentMetricData.html) API to get all available agents in a queue | [Go](go/GetQueueAvailableAgents) | +| Add Connect User | Add a new user to Amazon Connect | [PowerShell](powershell/New-ConnectUser) | +| Multi Account / Multi Instance Metric Collection | Collect metrics from multiple accounts | [Python](python/multiaccountmetrics/multi_account_metrics.py) | +| Restrict Deskphone in CCP | Enforce deskphone settings with javascript in the CCP | [Javascript](javascript/restrict-deskphone-in-ccp) | +| Remote Control Center | Centrally manage prompts and routing configurations in DynamoDB | [Python](python/remote-control-center) | +| Contact Flow Helper | A single AWS Lambda function which provides a set of basic math and text tools to help manipulate data in contact flows | [Python](python/contactflowhelper) | +| Create Tasks Programmatically | CloudFormation template to enable you to programmatically create an Amazon Connect Task | [Javascript](javascript/programmatically-create-task-example) | +| Amazon Connect Reg-Ex Patterns | For use in Cloudformation templates | [Tools](tools) | +| Amazon Connect Draw.io Objects | Contact flow blocks that can be imported into Draw.io | [Tools](tools) | +| Check Time Left | This snippet helps make a routing decision whether to add a new contact to the queue or take another action (like terminating the call) based on the queue length and the business hours for that day. | [Python](python/CheckTimeLeft) | ## Projects -| Name | Description | Links | -|-----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ----- | -| Context Routing | Uses CTR processing, Lambda, and DynamoDB to track IVR task completion and return callers to incomplete tasks | [CloudFormation](projects/ContextRouting) | -| SCV-CrossAccountSMS | Uses Lambda and cross account permissions to allow Salesforce Service Cloud Voice provisioned Amazon Connect instances to utilize SNS to send SMS messages. | [CloudFormation](projects/SCV-CrossAccountSMS) | -| CallerHistory | The caller history project utilizes AWS Lambda and Amazon DynamoDB to record if an individual has contacted previously though a user defined identifier and records time of last contact. | [CloudFormation](projects/CallerHistory) | -| CrossRegionCrossAccount | This project shows how to call an AWS Lambda function that exists in a separate account or a separate region using AWS Lambda permissions. | [CloudFormation](projects/CrossRegionCrossAccount) | -| GetSetDataByID | This project expands on the CallerHistory project by implementing additional functionality to get, put, and update items in Amazon DynamoDB. | [CloudFormation](projects/GetSetDataByID) | -| LastAgentRouting | This project shows how to potentially implement last agent routing for customers using a voice channel. | [CloudFormation](projects/LastAgentRouting) | -| RoutingFeatureRouting | This project shows how to capture a routing feature and use that to dynamically route a caller in a contact flow. | [CloudFormation](projects/RoutingFeatureRouting) | -| LambdaAlias | This project shows how to provide access to an AWS Lambda function Alias from Amazon Connect. | [CloudFormation](projects/LambdaAlias) | -| ContextRouting | This project demonstrates how you can use contact trace record processing, Lambda, and DynamoDB to track a callers progress through an IVR task, such as making a payment, and return them to that task should they be disconnected. | [CloudFormation](projects/ContextRouting) | -| Rate Limiter | The rate limiter project utilizes AWS Lambda and Amazon DynamoDB dynamically to add rate limiting a caller to a Amazon Connect queue based on their phone number and/or IP address. | [CloudFormation](projects/RateLimiter) | -| CCP Log Parser | A visualisation tool to visualise CCP logs to help troubleshoot client side errors | [link](tools/CCPLogParser) | -| Connectivity Test Tool | This tool checks which web browser the agent is running, the network configuration from the client side and whether the microphone has required permissions. | [link](tools/CCPConnectivityTestTools) | -| Dynamic Contact Center | This project demonstrates how you can use persistent session attributes to develop modular, repeatable and dynamic contact flows | [CloudFormation](projects/DynamicContactCenter) | -| Connect Cloudwatch Dashboard | This project automates the creation and deployment of a Cloudwatch Dashboard to monitor critical metrics for an Amazon Connect instance | [link](tools/ConnectCloudwatchDashboard/README.md) | -| Lex v2 Lambda integration example | This folder contains examples of AWS Lambda functions for use with Amazon Lex v2 code hooks. | [link](projects/AmazonLexv2LambdaIntegrationExamples/README.md) | +| Name | Description | Links | +|------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------| +| Context Routing | Uses CTR processing, Lambda, and DynamoDB to track IVR task completion and return callers to incomplete tasks | [CloudFormation](projects/ContextRouting) | +| SCV-CrossAccountSMS | Uses Lambda and cross account permissions to allow Salesforce Service Cloud Voice provisioned Amazon Connect instances to utilize SNS to send SMS messages. | [CloudFormation](projects/SCV-CrossAccountSMS) | +| CallerHistory | The caller history project utilizes AWS Lambda and Amazon DynamoDB to record if an individual has contacted previously though a user defined identifier and records time of last contact. | [CloudFormation](projects/CallerHistory) | +| CrossRegionCrossAccount | This project shows how to call an AWS Lambda function that exists in a separate account or a separate region using AWS Lambda permissions. | [CloudFormation](projects/CrossRegionCrossAccount) | +| GetSetDataByID | This project expands on the CallerHistory project by implementing additional functionality to get, put, and update items in Amazon DynamoDB. | [CloudFormation](projects/GetSetDataByID) | +| LastAgentRouting | This project shows how to potentially implement last agent routing for customers using a voice channel. | [CloudFormation](projects/LastAgentRouting) | +| LambdaAlias | This project shows how to provide access to an AWS Lambda function Alias from Amazon Connect. | [CloudFormation](projects/LambdaAlias) | +| ContextRouting | This project demonstrates how you can use contact trace record processing, Lambda, and DynamoDB to track a callers progress through an IVR task, such as making a payment, and return them to that task should they be disconnected. | [CloudFormation](projects/ContextRouting) | +| Rate Limiter | The rate limiter project utilizes AWS Lambda and Amazon DynamoDB dynamically to add rate limiting a caller to a Amazon Connect queue based on their phone number and/or IP address. | [CloudFormation](projects/RateLimiter) | +| CCP Log Parser | A visualisation tool to visualise CCP logs to help troubleshoot client side errors | [link](tools/CCPLogParser) | +| Dynamic Contact Center | This project demonstrates how you can use persistent session attributes to develop modular, repeatable and dynamic contact flows | [CloudFormation](projects/DynamicContactCenter) | +| Connect Cloudwatch Dashboard | This project automates the creation and deployment of a Cloudwatch Dashboard to monitor critical metrics for an Amazon Connect instance | [link](tools/ConnectCloudwatchDashboard/README.md) | ## Contributions Make sure the `.gitignore` per language is applied. Make sure your snippet has no external dependencies. -Make sure your snippet is self contained. - -### Values for variables - -* `InstanceId` : `c2e9dc6f-3f69-40e2-b0ec-f78d0c62bee6` -* `ContactFlowId`: `ae4e2be3-5541-4c57-9738-217052e61eb3` -* `DestinationPhoneNumber` : `+12065550101` -* `SourcePhoneNumber` : `+12065550100` +Make sure your snippet is self-contained. \ No newline at end of file From e43a193a6c7d6490d0757604fc0087939bb1d1c4 Mon Sep 17 00:00:00 2001 From: virtualgill Date: Tue, 20 Jun 2023 11:49:12 +0100 Subject: [PATCH 3/3] Removing lex integration files --- CHANGELOG.md | 7 +- .../.gitignore | 20 - .../README.md | 67 - .../cdk-lex-v2-lambda-integration-examples.ts | 17 - .../bots/ReminderBotFiles/Manifest.json | 7 - .../ReminderBotFiles/ReminderBot/Bot.json | 10 - .../BotLocales/en_US/BotLocale.json | 11 - .../en_US/Intents/CallIntent/Intent.json | 271 -- .../Intents/CallIntent/Slots/Time/Slot.json | 238 -- .../en_US/Intents/EmailIntent/Intent.json | 255 -- .../EmailIntent/Slots/DaysBefore/Slot.json | 266 -- .../en_US/Intents/FallbackIntent/Intent.json | 318 -- .../cdk.json | 27 - .../basic-passthrough-lambda-stack.ts | 45 - .../cdkStacks/reminder-bot-stack.ts | 147 - .../reminderBotFlow/ReminderBotFlow | 287 -- .../package-lock.json | 3679 ----------------- .../package.json | 36 - .../src/basicPassthroughLexv2Lambda/README.md | 66 - .../basicPassthroughLexv2Lambda.ts | 17 - .../src/reminderBotLex2Lambda/README.md | 49 - .../intentHandlers/callIntentHandler.ts | 229 - .../intentHandlers/constants.ts | 8 - .../intentHandlers/emailIntentHandler.ts | 37 - .../reminderBotLambda.ts | 29 - .../src/sharedLibraries/CommonUtils.ts | 62 - .../src/sharedLibraries/DialogHelpers.ts | 157 - .../sharedLibraries/LexCodeHookInterfaces.ts | 266 -- .../tsconfig.json | 24 - 29 files changed, 6 insertions(+), 6646 deletions(-) delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/.gitignore delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/README.md delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bin/cdk-lex-v2-lambda-integration-examples.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/Manifest.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/Bot.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/BotLocale.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Intent.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Slots/Time/Slot.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Intent.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Slots/DaysBefore/Slot.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/FallbackIntent/Intent.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/cdk.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/basic-passthrough-lambda-stack.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/reminder-bot-stack.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/connectFlows/reminderBotFlow/ReminderBotFlow delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/package-lock.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/package.json delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/README.md delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/basicPassthroughLexv2Lambda.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/README.md delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/callIntentHandler.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/constants.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/emailIntentHandler.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/reminderBotLambda.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/CommonUtils.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/DialogHelpers.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/LexCodeHookInterfaces.ts delete mode 100644 projects/AmazonLexv2LambdaIntegrationExamples/tsconfig.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 4724f2f..b073ac7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.5.5] - 2023-06-20 +### Changed + - [README] General README clean-up + ## [1.5.4] - 2023-03-30 ### Added - [powershell/Search-ContactFlows/] Downloads and searches Amazon Connect contact flows for a specified String @@ -74,4 +79,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.0.0] - 2021-09-09 ### Added - CHANGELOG.md -- Connect Cloudwatch Dashboard +- Connect Cloudwatch Dashboard \ No newline at end of file diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/.gitignore b/projects/AmazonLexv2LambdaIntegrationExamples/.gitignore deleted file mode 100644 index ba59c98..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ - -# dependencies -/node_modules/ - -# build -/cdk.out/ - -# ide -/.vscode -.vscode -/.idea/ - -# ignore files compiled from ts files - this assumes that ALL js files in these dirs were generated from ts -*.d.ts -/src/**/*.js -/cdkStacks/**/*.js -/bin/*.js - -# General -.DS_Store diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/README.md b/projects/AmazonLexv2LambdaIntegrationExamples/README.md deleted file mode 100644 index 7d0be2d..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Amazon Lex V2 Lambda Integration Examples - -## Introduction - -This folder contains examples of AWS Lambda functions for use with Amazon Lex v2 code hooks. - - -## Prerequisites - -- AWS Account -- [AWS IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) with Administrator permissions -- [Node](https://nodejs.org/) (v18) -- [NPM](https://docs.npmjs.com/cli/v9/configuring-npm/install) (v9) -- [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) -- [AWS CDK v2](https://docs.aws.amazon.com/cdk/v2/guide/cli.html) - -## Set-up -```commandline -cd projects/AmazonLexv2LambdaIntegrationExamples -``` -```commandline -npm install -npm run build -``` - -If you have started with a new environment, please bootstrap CDK -```commandline -npm run cdk:bootstrap -``` - - - -## Deploying - -To deploy **all** examples -```commandline -npm run cdk:deploy:all -``` - -To deploy individual examples, use the specific instructions below: - -#### Basic pass-through lambda -If you are just looking to get a basic template, or to do some experimenting and learning, this lambda will give you a place to start. - -See [README](src/basicPassthroughLexv2Lambda/README.md) for detailed information. - -```commandline -npm run cdk:deploy:basiclambda -``` - -#### Reminder Lex bot and Lambda function -This bot shows a simple non-functional example of a Reminder bot showing example Lambda function integrations and conditional flows. -It deploys both the Lex bot and the Lambda function and connects the Lambda function to the bot as part of deploy. - -See [README](src/reminderBotLex2Lambda/README.md) for detailed information. - -```commandline -npm run cdk:deploy:reminderbot -``` - - -### Clean-up -To remove **all** resources created as part of all stacks run the below: -```commandline -npm run cdk:destroy:all -``` -See individual READMEs for specific instructions to just remove individual Stacks. diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bin/cdk-lex-v2-lambda-integration-examples.ts b/projects/AmazonLexv2LambdaIntegrationExamples/bin/cdk-lex-v2-lambda-integration-examples.ts deleted file mode 100644 index 984f233..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bin/cdk-lex-v2-lambda-integration-examples.ts +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env node -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import "source-map-support/register" -import * as cdk from "aws-cdk-lib" -import { AwsSolutionsChecks } from "cdk-nag" -import { Aspects } from "aws-cdk-lib" - -import { BasicPassthroughLambdaCdkStack } from "../cdkStacks/basic-passthrough-lambda-stack" -import { ReminderBotStack } from "../cdkStacks/reminder-bot-stack" - -const app = new cdk.App() -Aspects.of(app).add(new AwsSolutionsChecks({ verbose: true })) - -new BasicPassthroughLambdaCdkStack(app, "BasicLexLambdaIntegration", {}) -new ReminderBotStack(app, "ReminderBot", {}) diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/Manifest.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/Manifest.json deleted file mode 100644 index fdbd69d..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/Manifest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "metaData": { - "fileFormat": "LexJson", - "resourceType": "BOT", - "schemaVersion": "1" - } -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/Bot.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/Bot.json deleted file mode 100644 index 1703550..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/Bot.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "ReminderBot", - "version": "DRAFT", - "description": "Example reminder bot to demonstrate different lambda integration options.", - "identifier": "", - "dataPrivacy": { - "childDirected": false - }, - "idleSessionTTLInSeconds": 300 -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/BotLocale.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/BotLocale.json deleted file mode 100644 index deb1954..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/BotLocale.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "English (US)", - "identifier": "en_US", - "version": null, - "description": null, - "voiceSettings": { - "engine": "neural", - "voiceId": "Ivy" - }, - "nluConfidenceThreshold": 0.4 -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Intent.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Intent.json deleted file mode 100644 index ac83d1c..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Intent.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "name": "CallIntent", - "identifier": "", - "description": "Intent to book a reminder call.", - "parentIntentSignature": null, - "sampleUtterances": [ - { - "utterance": "I would like a call" - }, - { - "utterance": "Please call me" - }, - { - "utterance": "call" - }, - { - "utterance": "Can you make a call to me" - }, - { - "utterance": "I would prefer a call" - }, - { - "utterance": "Call me please" - }, - { - "utterance": "I'd want a call" - }, - { - "utterance": "call me to confirm" - }, - { - "utterance": "Get someone to phone me" - }, - { - "utterance": "Can I get a phone call" - }, - { - "utterance": "Phone me" - }, - { - "utterance": "Please make a phone call" - }, - { - "utterance": "Ring me" - }, - { - "utterance": "I would like you to ring me" - }, - { - "utterance": "I would want to speak to someone" - }, - { - "utterance": "Can you confirm by phone" - }, - { - "utterance": "I would prefer a phone call" - }, - { - "utterance": "Can you contact me on the phone " - }, - { - "utterance": "I'd rather you rang me" - }, - { - "utterance": "call me in {Time}" - }, - { - "utterance": "call me in {Time} before my appointment" - }, - { - "utterance": "call me at {Time}" - }, - { - "utterance": "I’d like a call at {Time}" - }, - { - "utterance": "I would like a call at {Time}" - }, - { - "utterance": "Can you call me at {Time}" - }, - { - "utterance": "I'd prefer a call in the {Time}" - }, - { - "utterance": "Ring me around {Time}" - }, - { - "utterance": "Phone me at {Time}" - }, - { - "utterance": "Phone me in the {Time}" - }, - { - "utterance": "I'd prefer you rang me at {Time}" - } - ], - "intentConfirmationSetting": null, - "intentClosingSetting": null, - "initialResponseSetting": { - "initialResponse": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "We'll call you the day before your appointment." - } - }, - "variations": null - } - ] - }, - "codeHook": { - "isActive": true, - "enableCodeHookInvocation": true, - "invocationLabel": "CallIntent_InitialCodeHook", - "postCodeHookSpecification": { - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "failureConditional": null, - "successNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "ElicitSlot", - "slotToElicit": "Time", - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "successResponse": null, - "successConditional": null, - "timeoutResponse": null, - "timeoutNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "timeoutConditional": null - } - }, - "conditional": null, - "nextStep": { - "sessionAttributes": { - "fallback-count": "0", - "slot-failure": "false" - }, - "dialogAction": { - "type": "InvokeDialogCodeHook", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - } - }, - "inputContexts": null, - "outputContexts": null, - "kendraConfiguration": null, - "dialogCodeHook": { - "enabled": true - }, - "fulfillmentCodeHook": { - "isActive": true, - "fulfillmentUpdatesSpecification": null, - "postFulfillmentStatusSpecification": { - "failureResponse": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "Apologies, we are having a system issue and couldn't book the call in. Please try again later." - } - }, - "variations": null - } - ] - }, - "failureNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "successNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "successResponse": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "Your call has been scheduled for {Time}." - } - }, - "variations": null - } - ] - }, - "timeoutResponse": null, - "timeoutNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - } - }, - "enabled": true - }, - "slotPriorities": [ - { - "priority": 1, - "slotName": "Time" - } - ] -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Slots/Time/Slot.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Slots/Time/Slot.json deleted file mode 100644 index 8733c4c..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/CallIntent/Slots/Time/Slot.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "name": "Time", - "identifier": "", - "description": "Slot to capture the time the user would like the reminder call.", - "slotTypeName": "AMAZON.Time", - "obfuscationSetting": null, - "valueElicitationSetting": { - "slotCaptureSetting": { - "captureResponse": null, - "captureNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "InvokeDialogCodeHook", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "captureConditional": null, - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": { - "slot-failure": "true" - }, - "dialogAction": { - "type": "StartIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": "FallbackIntent", - "slots": {} - } - }, - "failureConditional": null, - "elicitationCodeHook": { - "enableCodeHookInvocation": true, - "invocationLabel": "CallIntent_TimeSlot_PromptCodeHook" - }, - "codeHook": { - "isActive": true, - "enableCodeHookInvocation": true, - "invocationLabel": "CallIntent_TimeSlot_ValidationCodeHook", - "postCodeHookSpecification": { - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "failureConditional": null, - "successNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "FulfillIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "successResponse": null, - "successConditional": null, - "timeoutResponse": null, - "timeoutNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "timeoutConditional": null - } - } - }, - "promptSpecification": { - "messageSelectionStrategy": "Random", - "allowInterrupt": true, - "promptAttemptsSpecification": { - "Retry1": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - }, - "Initial": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - }, - "Retry4": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - }, - "Retry3": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - }, - "Retry2": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - } - }, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "What time would you like the call?" - } - }, - "variations": null - } - ], - "maxRetries": 4 - }, - "slotConstraint": "Required", - "defaultValueSpecification": null, - "sampleUtterances": [ - { - "utterance": "{Time} o'clock" - } - ], - "waitAndContinueSpecification": null - }, - "multipleValuesSetting": null -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Intent.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Intent.json deleted file mode 100644 index 7386896..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Intent.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "name": "EmailIntent", - "identifier": "", - "description": "Intent to book a reminder email.", - "parentIntentSignature": null, - "sampleUtterances": [ - { - "utterance": "email" - }, - { - "utterance": "I would like an email" - }, - { - "utterance": "Please send me an email" - }, - { - "utterance": "just email me" - }, - { - "utterance": "I want an email" - }, - { - "utterance": "remind me on email" - }, - { - "utterance": "send me an email to confirm" - }, - { - "utterance": "mail me the info" - }, - { - "utterance": "i want to get an email" - }, - { - "utterance": "email is fine" - }, - { - "utterance": "I would prefer an email" - }, - { - "utterance": "I would rather have an email" - }, - { - "utterance": "I'd like to get an email" - }, - { - "utterance": "An email would be best" - }, - { - "utterance": "Send me an email {DaysBefore} days my appointment" - }, - { - "utterance": "I want an email {DaysBefore} days before" - }, - { - "utterance": "I" - } - ], - "intentConfirmationSetting": null, - "intentClosingSetting": null, - "initialResponseSetting": { - "initialResponse": null, - "codeHook": { - "isActive": true, - "enableCodeHookInvocation": true, - "invocationLabel": "EmailIntent_InitialCodeHook", - "postCodeHookSpecification": { - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "failureConditional": null, - "successNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "ElicitSlot", - "slotToElicit": "DaysBefore", - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "successResponse": null, - "successConditional": null, - "timeoutResponse": null, - "timeoutNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "timeoutConditional": null - } - }, - "conditional": { - "isActive": true, - "conditionalBranches": [ - { - "name": "DaysBeforeSet", - "response": null, - "condition": { - "expressionString": "fn.IS_SET({DaysBefore})" - }, - "nextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "InvokeDialogCodeHook", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - } - } - ], - "defaultBranch": { - "response": { - "allowInterrupt": false, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "We will email you on the day you choose up to a week before your appointment." - } - }, - "variations": null - } - ] - }, - "nextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "InvokeDialogCodeHook", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - } - } - }, - "nextStep": { - "sessionAttributes": { - "fallback-count": "0", - "slot-failure": "false" - }, - "dialogAction": { - "type": "EvaluateConditional", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - } - }, - "inputContexts": null, - "outputContexts": null, - "kendraConfiguration": null, - "dialogCodeHook": { - "enabled": true - }, - "fulfillmentCodeHook": { - "isActive": true, - "fulfillmentUpdatesSpecification": null, - "postFulfillmentStatusSpecification": { - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "successNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "successResponse": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "No problem! Your email reminder has been set up for {DaysBefore} days before your appointment." - } - }, - "variations": null - } - ] - }, - "timeoutResponse": null, - "timeoutNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - } - }, - "enabled": true - }, - "slotPriorities": [ - { - "priority": 0, - "slotName": "DaysBefore" - } - ] -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Slots/DaysBefore/Slot.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Slots/DaysBefore/Slot.json deleted file mode 100644 index c1ed801..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/EmailIntent/Slots/DaysBefore/Slot.json +++ /dev/null @@ -1,266 +0,0 @@ -{ - "name": "DaysBefore", - "identifier": "", - "description": "Slot to capture the number of days before an appointment that the user would like a reminder email", - "slotTypeName": "AMAZON.Number", - "obfuscationSetting": null, - "valueElicitationSetting": { - "slotCaptureSetting": { - "captureResponse": null, - "captureNextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EvaluateConditional", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - }, - "captureConditional": { - "isActive": true, - "conditionalBranches": [ - { - "name": "DaysGreaterThan7", - "response": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "We can't email more than a week before your appointment. Please choose a number between 1 and 7." - } - }, - "variations": null - } - ] - }, - "condition": { - "expressionString": "{DaysBefore} > 7" - }, - "nextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "ElicitSlot", - "slotToElicit": "DaysBefore", - "suppressNextMessage": true - }, - "intent": { - "name": "EmailIntent", - "slots": { - "DaysBefore": { - "value": { - "interpretedValue": null - }, - "values": null, - "shape": null - } - } - } - } - }, - { - "name": "DaysLessThan1", - "response": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "The last day we can email you is the day before your appointment. Please choose a number between 1 and 7." - } - }, - "variations": null - } - ] - }, - "condition": { - "expressionString": "{DaysBefore} < 1" - }, - "nextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "ElicitSlot", - "slotToElicit": "DaysBefore", - "suppressNextMessage": true - }, - "intent": { - "name": "EmailIntent", - "slots": { - "DaysBefore": { - "value": { - "interpretedValue": null - }, - "values": null, - "shape": null - } - } - } - } - } - ], - "defaultBranch": { - "response": null, - "nextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "FulfillIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": {} - } - } - } - }, - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": { - "slot-failure": "true" - }, - "dialogAction": { - "type": "StartIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": "FallbackIntent", - "slots": {} - } - }, - "failureConditional": null, - "elicitationCodeHook": { - "enableCodeHookInvocation": false, - "invocationLabel": "EmailIntent_DaysBeforeSlot_PromptCodeHook" - }, - "codeHook": null - }, - "promptSpecification": { - "messageSelectionStrategy": "Random", - "allowInterrupt": true, - "promptAttemptsSpecification": { - "Retry1": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - }, - "Initial": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - }, - "Retry3": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - }, - "Retry2": { - "allowedInputTypes": { - "allowAudioInput": true, - "allowDTMFInput": true - }, - "audioAndDTMFInputSpecification": { - "dtmfSpecification": { - "maxLength": 513, - "deletionCharacter": "*", - "endCharacter": "#", - "endTimeoutMs": 5000 - }, - "audioSpecification": { - "maxLengthMs": 15000, - "endTimeoutMs": 640 - }, - "startTimeoutMs": 4000 - }, - "allowInterrupt": true, - "textInputSpecification": { - "startTimeoutMs": 30000 - } - } - }, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "How many days before your appointment would you like us to email you?" - } - }, - "variations": null - } - ], - "maxRetries": 3 - }, - "slotConstraint": "Required", - "defaultValueSpecification": null, - "sampleUtterances": null, - "waitAndContinueSpecification": null - }, - "multipleValuesSetting": null -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/FallbackIntent/Intent.json b/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/FallbackIntent/Intent.json deleted file mode 100644 index 40e968f..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/bots/ReminderBotFiles/ReminderBot/BotLocales/en_US/Intents/FallbackIntent/Intent.json +++ /dev/null @@ -1,318 +0,0 @@ -{ - "name": "FallbackIntent", - "identifier": "FALLBCKINT", - "description": "Default intent when no other intent matches", - "parentIntentSignature": "AMAZON.FallbackIntent", - "sampleUtterances": null, - "intentConfirmationSetting": null, - "intentClosingSetting": { - "isActive": false, - "closingResponse": null, - "nextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - }, - "initialResponseSetting": { - "initialResponse": null, - "codeHook": { - "isActive": true, - "enableCodeHookInvocation": true, - "invocationLabel": "FallbackIntent_InitialCodeHook", - "postCodeHookSpecification": { - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - }, - "failureConditional": null, - "successNextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "FulfillIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - }, - "successResponse": null, - "successConditional": null, - "timeoutResponse": null, - "timeoutNextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - }, - "timeoutConditional": null - } - }, - "conditional": { - "isActive": true, - "conditionalBranches": [ - { - "name": "Initial", - "response": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "Sorry, I didn't understand, can you rephrase? I am only able to set up reminders." - } - }, - "variations": null - } - ] - }, - "condition": { - "expressionString": "(!fn.IS_SET([fallback-count]) OR [fallback-count] = \"\" OR [fallback-count] = \"0\") AND (!fn.IS_SET([slot-failure] OR [slot-failure] != \"true\")" - }, - "nextStep": { - "sessionAttributes": { - "fallback-count": "1" - }, - "dialogAction": { - "type": "ElicitIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - }, - { - "name": "Retry1", - "response": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "Sorry, I didn't understand, can you rephrase? I can set up a reminder by call or email. Which would you prefer?" - } - }, - "variations": null - } - ] - }, - "condition": { - "expressionString": "[fallback-count] = \"1\" AND (!fn.IS_SET([slot-failure] OR [slot-failure] != \"true\")" - }, - "nextStep": { - "sessionAttributes": { - "fallback-count": "2" - }, - "dialogAction": { - "type": "ElicitIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - }, - { - "name": "Retry2", - "response": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "Sorry, I didn't understand. You can say things like 'I would like an email reminder' or 'I would like a phone call'" - } - }, - "variations": null - } - ] - }, - "condition": { - "expressionString": "[fallback-count] = \"2\" AND (!fn.IS_SET([slot-failure] OR [slot-failure] != \"true\")" - }, - "nextStep": { - "sessionAttributes": { - "fallback-count": "3" - }, - "dialogAction": { - "type": "ElicitIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - }, - { - "name": "SlotFallback", - "response": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "Apologies, I wasn't able to understand your response." - } - }, - "variations": null - } - ] - }, - "condition": { - "expressionString": "[slot-failure] = \"true\" " - }, - "nextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "FulfillIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - } - ], - "defaultBranch": { - "response": null, - "nextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "FulfillIntent", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - } - }, - "nextStep": { - "sessionAttributes": {}, - "dialogAction": { - "type": "EvaluateConditional", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - }, - "inputContexts": null, - "outputContexts": null, - "kendraConfiguration": null, - "dialogCodeHook": { - "enabled": true - }, - "fulfillmentCodeHook": { - "isActive": true, - "fulfillmentUpdatesSpecification": null, - "postFulfillmentStatusSpecification": { - "failureResponse": null, - "failureNextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - }, - "successNextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - }, - "successResponse": { - "allowInterrupt": true, - "messageGroupsList": [ - { - "message": { - "imageResponseCard": null, - "ssmlMessage": null, - "customPayload": null, - "plainTextMessage": { - "value": "One of our customer service agents will be in touch shortly to help with your request." - } - }, - "variations": null - } - ] - }, - "timeoutResponse": null, - "timeoutNextStep": { - "sessionAttributes": null, - "dialogAction": { - "type": "EndConversation", - "slotToElicit": null, - "suppressNextMessage": null - }, - "intent": { - "name": null, - "slots": null - } - } - }, - "enabled": true - }, - "slotPriorities": [] -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/cdk.json b/projects/AmazonLexv2LambdaIntegrationExamples/cdk.json deleted file mode 100644 index c7104c3..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/cdk.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "app": "npx ts-node --prefer-ts-exts bin/cdk-lex-v2-lambda-integration-examples.ts", - "watch": { - "include": ["**"], - "exclude": [ - "README.md", - "cdk*.json", - "**/*.d.ts", - "**/*.js", - "tsconfig.json", - "package*.json", - "yarn.lock", - "node_modules", - "test" - ] - }, - "context": { - "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true, - "@aws-cdk/core:stackRelativeExports": true, - "@aws-cdk/aws-rds:lowercaseDbIdentifier": true, - "@aws-cdk/aws-lambda:recognizeVersionProps": true, - "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": true, - "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true, - "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true, - "@aws-cdk/core:target-partitions": ["aws", "aws-cn"] - } -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/basic-passthrough-lambda-stack.ts b/projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/basic-passthrough-lambda-stack.ts deleted file mode 100644 index f2137c9..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/basic-passthrough-lambda-stack.ts +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import { App, CfnOutput, Duration, Stack, StackProps } from "aws-cdk-lib" -import { NagSuppressions } from "cdk-nag" -import * as path from "path" -import * as nodejs from "aws-cdk-lib/aws-lambda-nodejs" -import * as lambda from "aws-cdk-lib/aws-lambda" - -export class BasicPassthroughLambdaCdkStack extends Stack { - constructor(scope: App, id: string, props?: StackProps) { - super(scope, id, props) - - const basicPassthroughLexv2Lambda = new nodejs.NodejsFunction(this, "BasicPassthroughLexv2Lambda", { - memorySize: 1024, - timeout: Duration.seconds(30), - runtime: lambda.Runtime.NODEJS_18_X, - handler: "handler", - environment: { - DEBUG_LOGGING_ENABLED: "true", - }, - entry: path.join(__dirname, `/../src/basicPassthroughLexv2Lambda/basicPassthroughLexv2Lambda.ts`), - }) - - NagSuppressions.addResourceSuppressions( - basicPassthroughLexv2Lambda, - [ - { - id: "AwsSolutions-IAM4", - reason: "This is the default Lambda Execution Policy which just grants writes to CloudWatch.", - }, - ], - true - ) - - new CfnOutput(this, "basicPassthroughLexv2LambdaArn", { - value: basicPassthroughLexv2Lambda.functionArn, - }) - new CfnOutput(this, "basicPassthroughLexv2LambdaLink", { - value: `https://${Stack.of(this).region}.console.aws.amazon.com/lambda/home?region=${ - Stack.of(this).region - }#/functions/${basicPassthroughLexv2Lambda.functionName}`, - }) - } -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/reminder-bot-stack.ts b/projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/reminder-bot-stack.ts deleted file mode 100644 index bb9f110..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/cdkStacks/reminder-bot-stack.ts +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import { App, CfnOutput, Duration, Stack, StackProps } from "aws-cdk-lib" -import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs" -import { Runtime } from "aws-cdk-lib/aws-lambda" -import { CfnBot, CfnBotAlias, CfnBotVersion } from "aws-cdk-lib/aws-lex" -import { Asset } from "aws-cdk-lib/aws-s3-assets" -import { PolicyDocument, PolicyStatement, Role, ServicePrincipal } from "aws-cdk-lib/aws-iam" - -import { NagSuppressions } from "cdk-nag" -import * as path from "path" - -export class ReminderBotStack extends Stack { - constructor(scope: App, id: string, props?: StackProps) { - super(scope, id, props) - - const lexFulfillmentLambda = new NodejsFunction(this, "LexFulfillmentLambda", { - memorySize: 1024, - timeout: Duration.seconds(30), - runtime: Runtime.NODEJS_18_X, - handler: "handler", - environment: { - DEBUG_LOGGING_ENABLED: "true", - }, - entry: path.join(__dirname, "../src/reminderBotLex2Lambda/reminderBotLambda.ts"), - }) - - NagSuppressions.addResourceSuppressions( - lexFulfillmentLambda, - [ - { - id: "AwsSolutions-IAM4", - reason: "This is the default Lambda Execution Policy which just grants writes to CloudWatch.", - }, - ], - true - ) - - const lexBotRole = new Role(this, "LexBotRole", { - assumedBy: new ServicePrincipal("lexv2.amazonaws.com"), - inlinePolicies: { - ["LexRuntimeRolePolicy"]: new PolicyDocument({ - statements: [ - new PolicyStatement({ - resources: ["*"], - actions: ["polly:SynthesizeSpeech", "comprehend:DetectSentiment"], - }), - ], - }), - }, - }) - - NagSuppressions.addResourceSuppressions( - lexBotRole, - [ - { - id: "AwsSolutions-IAM5", - reason: "This is the standard pattern for a service-linked role for Amazon Lex V2.", - }, - ], - true - ) - - const lexAssetS3Bucket = new Asset(this, "lexAssetS3Bucket", { - path: path.join(__dirname, "../bots/ReminderBotFiles"), - }) - - const reminderBot = new CfnBot(this, "ReminderBot", { - dataPrivacy: { ChildDirected: false }, - idleSessionTtlInSeconds: 300, - name: "ReminderBot", - roleArn: lexBotRole.roleArn, - autoBuildBotLocales: true, - botFileS3Location: { - s3Bucket: lexAssetS3Bucket.s3BucketName, - s3ObjectKey: lexAssetS3Bucket.s3ObjectKey, - }, - testBotAliasSettings: { - botAliasLocaleSettings: [ - { - localeId: "en_US", - botAliasLocaleSetting: { - enabled: true, - codeHookSpecification: { - lambdaCodeHook: { - codeHookInterfaceVersion: "1.0", - lambdaArn: lexFulfillmentLambda.functionArn, - }, - }, - }, - }, - ], - }, - }) - - const botVersion = new CfnBotVersion(this, "BotVersion", { - botId: reminderBot.ref, - botVersionLocaleSpecification: [ - { - botVersionLocaleDetails: { - sourceBotVersion: "DRAFT", - }, - localeId: "en_US", - }, - ], - }) - - const prodBotAlias = new CfnBotAlias(this, "prodBotAlias", { - botAliasName: "Prod", - botId: reminderBot.ref, - botAliasLocaleSettings: [ - { - botAliasLocaleSetting: { - enabled: true, - codeHookSpecification: { - lambdaCodeHook: { - codeHookInterfaceVersion: "1.0", - lambdaArn: lexFulfillmentLambda.functionArn, - }, - }, - }, - localeId: "en_US", - }, - ], - botVersion: botVersion.getAtt("BotVersion").toString(), - sentimentAnalysisSettings: { DetectSentiment: true }, - }) - - lexFulfillmentLambda.addPermission("Lex Invocation", { - principal: new ServicePrincipal("lexv2.amazonaws.com"), - sourceArn: `arn:aws:lex:${Stack.of(this).region}:${Stack.of(this).account}:bot-alias/${reminderBot.attrId}/*`, - }) - - new CfnOutput(this, "reminderBotLambdaLink", { - value: `https://${Stack.of(this).region}.console.aws.amazon.com/lambda/home?region=${ - Stack.of(this).region - }#/functions/${lexFulfillmentLambda.functionName}`, - }) - - new CfnOutput(this, "reminderBotLink", { - value: `https://${Stack.of(this).region}.console.aws.amazon.com/lexv2/home?region=${Stack.of(this).region}#/bot/${ - reminderBot.attrId - }`, - }) - } -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/connectFlows/reminderBotFlow/ReminderBotFlow b/projects/AmazonLexv2LambdaIntegrationExamples/connectFlows/reminderBotFlow/ReminderBotFlow deleted file mode 100644 index 081c966..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/connectFlows/reminderBotFlow/ReminderBotFlow +++ /dev/null @@ -1,287 +0,0 @@ -{ - "Version": "2019-10-30", - "StartAction": "2f9a965a-f07a-43e9-8909-4899efe5d3bf", - "Metadata": { - "entryPointPosition": { - "x": 40, - "y": 40 - }, - "ActionMetadata": { - "2f9a965a-f07a-43e9-8909-4899efe5d3bf": { - "position": { - "x": 241.6, - "y": 117.6 - } - }, - "2f08ce68-8a36-4d56-aea1-02909807458b": { - "position": { - "x": 204.8, - "y": 403.2 - }, - "overrideConsoleVoice": true - }, - "07b13e07-39d4-4e63-bda8-bce7fe9abc2e": { - "position": { - "x": 1052.8, - "y": 390.4 - } - }, - "11143221-8170-45d9-b5e7-933716eecdea": { - "position": { - "x": 839.2, - "y": 14.4 - } - }, - "a91aefae-1cd6-4c48-a058-217a35380d03": { - "position": { - "x": 1110.4, - "y": 152.8 - } - }, - "73dbc0b9-3f89-4638-9774-042f44984cd7": { - "position": { - "x": 1442.4, - "y": 344 - } - }, - "ea48a6b5-f192-488e-b19b-db31b9af3d81": { - "position": { - "x": 1832, - "y": 337.6 - } - }, - "8f73f57f-dc98-4450-9b02-bc64ea0dffd2": { - "position": { - "x": 761.6, - "y": 671.2 - } - }, - "8aa6727f-83a4-4ab9-b2f0-7717fca0577a": { - "position": { - "x": 513.6, - "y": 188 - }, - "parameters": { - "LexV2Bot": { - "AliasArn": { - "displayName": "TestBotAlias", - "useLexBotDropdown": true, - "lexV2BotName": "ReminderBot" - } - }, - "LexTimeoutSeconds": { - "Text": { - "unit": 60 - } - } - }, - "useLexBotDropdown": true, - "lexV2BotName": "ReminderBot", - "lexV2BotAliasName": "TestBotAlias", - "conditionMetadata": [ - { - "id": "dd1d4111-aee5-4622-a978-e2024fdb6665", - "operator": { - "name": "Equals", - "value": "Equals", - "shortDisplay": "=" - }, - "value": "FallbackIntent" - }, - { - "id": "d8dad234-3655-4467-8f81-1c36dbbb6498", - "operator": { - "name": "Equals", - "value": "Equals", - "shortDisplay": "=" - }, - "value": "CallIntent" - }, - { - "id": "899eebed-376c-4b89-ae26-c860176c02b4", - "operator": { - "name": "Equals", - "value": "Equals", - "shortDisplay": "=" - }, - "value": "EmailIntent" - } - ] - } - }, - "name": "ReminderBotFlow", - "description": "", - "type": "contactFlow", - "status": "published", - "hash": {} - }, - "Actions": [ - { - "Parameters": { - "FlowLoggingBehavior": "Enabled" - }, - "Identifier": "2f9a965a-f07a-43e9-8909-4899efe5d3bf", - "Type": "UpdateFlowLoggingBehavior", - "Transitions": { - "NextAction": "2f08ce68-8a36-4d56-aea1-02909807458b" - } - }, - { - "Parameters": { - "TextToSpeechVoice": "Joanna", - "TextToSpeechEngine": "Neural", - "TextToSpeechStyle": "Conversational" - }, - "Identifier": "2f08ce68-8a36-4d56-aea1-02909807458b", - "Type": "UpdateContactTextToSpeechVoice", - "Transitions": { - "NextAction": "8aa6727f-83a4-4ab9-b2f0-7717fca0577a" - } - }, - { - "Parameters": { - "Text": "Exited bot because there was a timeout waiting for the customer to respond" - }, - "Identifier": "07b13e07-39d4-4e63-bda8-bce7fe9abc2e", - "Type": "MessageParticipant", - "Transitions": { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "Errors": [ - { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "ErrorType": "NoMatchingError" - } - ] - } - }, - { - "Parameters": { - "Text": "Exited bot from Fallback Intent\n" - }, - "Identifier": "11143221-8170-45d9-b5e7-933716eecdea", - "Type": "MessageParticipant", - "Transitions": { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "Errors": [ - { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "ErrorType": "NoMatchingError" - } - ] - } - }, - { - "Parameters": { - "Text": "Exited bot from Call Intent\n" - }, - "Identifier": "a91aefae-1cd6-4c48-a058-217a35380d03", - "Type": "MessageParticipant", - "Transitions": { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "Errors": [ - { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "ErrorType": "NoMatchingError" - } - ] - } - }, - { - "Parameters": { - "Text": "Exited bot from Email Intent" - }, - "Identifier": "73dbc0b9-3f89-4638-9774-042f44984cd7", - "Type": "MessageParticipant", - "Transitions": { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "Errors": [ - { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "ErrorType": "NoMatchingError" - } - ] - } - }, - { - "Parameters": {}, - "Identifier": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "Type": "DisconnectParticipant", - "Transitions": {} - }, - { - "Parameters": { - "Text": "Exited bot because of an error\n" - }, - "Identifier": "8f73f57f-dc98-4450-9b02-bc64ea0dffd2", - "Type": "MessageParticipant", - "Transitions": { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "Errors": [ - { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "ErrorType": "NoMatchingError" - } - ] - } - }, - { - "Parameters": { - "Text": "Hi there! I can help you set up a reminder for your appointment. Would you prefer us to call you, or to get an email?", - "LexV2Bot": { - "AliasArn": "BOT_ALIAS_ARN_HERE" - }, - "LexTimeoutSeconds": { - "Text": "120" - } - }, - "Identifier": "8aa6727f-83a4-4ab9-b2f0-7717fca0577a", - "Type": "ConnectParticipantWithLexBot", - "Transitions": { - "NextAction": "8f73f57f-dc98-4450-9b02-bc64ea0dffd2", - "Conditions": [ - { - "NextAction": "11143221-8170-45d9-b5e7-933716eecdea", - "Condition": { - "Operator": "Equals", - "Operands": [ - "FallbackIntent" - ] - } - }, - { - "NextAction": "a91aefae-1cd6-4c48-a058-217a35380d03", - "Condition": { - "Operator": "Equals", - "Operands": [ - "CallIntent" - ] - } - }, - { - "NextAction": "73dbc0b9-3f89-4638-9774-042f44984cd7", - "Condition": { - "Operator": "Equals", - "Operands": [ - "EmailIntent" - ] - } - } - ], - "Errors": [ - { - "NextAction": "07b13e07-39d4-4e63-bda8-bce7fe9abc2e", - "ErrorType": "InputTimeLimitExceeded" - }, - { - "NextAction": "ea48a6b5-f192-488e-b19b-db31b9af3d81", - "ErrorType": "NoMatchingCondition" - }, - { - "NextAction": "8f73f57f-dc98-4450-9b02-bc64ea0dffd2", - "ErrorType": "NoMatchingError" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/package-lock.json b/projects/AmazonLexv2LambdaIntegrationExamples/package-lock.json deleted file mode 100644 index 472adbc..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/package-lock.json +++ /dev/null @@ -1,3679 +0,0 @@ -{ - "name": "amazon-lex-v2-lambda-integration-examples", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "amazon-lex-v2-lambda-integration-examples", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "moment": "^2.29.4" - }, - "devDependencies": { - "@aws-sdk/client-kendra": "^3.316.0", - "@aws-sdk/client-lex-runtime-v2": "^3.316.0", - "@types/node": "^18.15.12", - "aws-cdk-lib": "^2.76.0", - "cdk-nag": "^2.26.12", - "esbuild": "^0.17.17", - "typescript": "^4.9.5" - } - }, - "node_modules/@aws-cdk/asset-awscli-v1": { - "version": "2.2.145", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.145.tgz", - "integrity": "sha512-hcKds6DWRm+xcrI4u5bUBvM7aupF5aGCBPAAuATJpp+w0Zp63TkANDPOCKB4bA79QLzvoQ3YYWnGCysmdaW57Q==", - "dev": true - }, - "node_modules/@aws-cdk/asset-kubectl-v20": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.1.tgz", - "integrity": "sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==", - "dev": true - }, - "node_modules/@aws-cdk/asset-node-proxy-agent-v5": { - "version": "2.0.120", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.120.tgz", - "integrity": "sha512-b8KA43ltvgoj6ybQuuTs6VSoP0edq6ZHDQsBbxw0wsNFMC/5VpmnbnfBrhjMLXbcJH6nwZJhMtBCWFswpPKDAw==", - "dev": true - }, - "node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", - "dev": true, - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/crc32/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, - "dependencies": { - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, - "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, - "dependencies": { - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/util/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@aws-sdk/abort-controller": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", - "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-kendra": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-kendra/-/client-kendra-3.316.0.tgz", - "integrity": "sha512-prXImj5XS+m4OalE+KU7hd47DWh6Gr0oSe/8xtRH2UrHlczwsnpZb7JZhx4Wydy+v+YwN3ujCbzUwhOO0ELkFQ==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.316.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.316.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-lex-runtime-v2": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lex-runtime-v2/-/client-lex-runtime-v2-3.316.0.tgz", - "integrity": "sha512-csaMmn/h6Z6QpDwKOnZpwEE7d2XXV50C5UZyGLSWcp2Sn7LmBHJsS7A+jSFC1MoKcAcK6waLXyDsFud7P9WZIA==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.316.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.316.0", - "@aws-sdk/eventstream-handler-node": "3.310.0", - "@aws-sdk/eventstream-serde-browser": "3.310.0", - "@aws-sdk/eventstream-serde-config-resolver": "3.310.0", - "@aws-sdk/eventstream-serde-node": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-eventstream": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-stream-browser": "3.310.0", - "@aws-sdk/util-stream-node": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.316.0.tgz", - "integrity": "sha512-wGXfIhR0lJGB8QTT0fwSwwklHePHxd2GW3IQt3trXnEYe0frmJ7vYRnVL5CSRKsikLDmaU7ll3SdsshMzQzo3w==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.316.0.tgz", - "integrity": "sha512-e2fvC7o42YV+LcZYfXCcvBn4L7NM9oNccnZ7T+pS6SFpHZlaqkw4uuQMRE6iUAof+Id7Mt7xDrz1x2yGlP+8GA==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.316.0.tgz", - "integrity": "sha512-5SD59+DRVy1mKckGs/5J8OwWpRS3E5v4BX19XaX/s9JJ5Rw9aZd9DP4SZVpeNXztIPjkQSEzHgrUVlZFB1QJgg==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.316.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-sdk-sts": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/config-resolver": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", - "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-config-provider": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", - "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", - "dev": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", - "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", - "dev": true, - "dependencies": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.316.0.tgz", - "integrity": "sha512-ZADkpdEjFCAXyzEpYbCRENlZ/AQEwevWdPd2yshjNo7xvOcepv4pPIBpYd8h9LvRafSLGA7zlWDz84hkIt+HKA==", - "dev": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.316.0", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.316.0.tgz", - "integrity": "sha512-oE1LTXP8XZp4bT8LhBeolMRiz0RwnmHDC2XpUmWO8LTmbDNrQO0mVzxEvXDLeKaN5BIFIJqNFlMgjWUMa9Kwcw==", - "dev": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-ini": "3.316.0", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.316.0", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", - "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", - "dev": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.316.0.tgz", - "integrity": "sha512-8/O2twlsoV1bDkZ9jd7JCMWsftfyoTyRT1UYscsKZGUDEgZRAxRkzS3GLYuLXEWNuxb1OB9rYk/cEJoxwy7T9g==", - "dev": true, - "dependencies": { - "@aws-sdk/client-sso": "3.316.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/token-providers": "3.316.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", - "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", - "dev": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/eventstream-codec": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-codec/-/eventstream-codec-3.310.0.tgz", - "integrity": "sha512-clIeSgWbZbxwtsxZ/yoedNM0/kJFSIjjHPikuDGhxhqc+vP6TN3oYyVMFrYwFaTFhk2+S5wZcWYMw8Op1pWo+A==", - "dev": true, - "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/eventstream-handler-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.310.0.tgz", - "integrity": "sha512-mNwskuY4T+jdmVJNxrTyqw8XEeqHi2vFbzQ9DT9TwrjMBrIYZRuVyTGEyXu3aCofMxMhXxPEAH2wdTM+wBvxvg==", - "dev": true, - "dependencies": { - "@aws-sdk/eventstream-codec": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/eventstream-serde-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.310.0.tgz", - "integrity": "sha512-3S6ziuQVALgEyz0TANGtYDVeG8ArK4Y05mcgrs8qUTmsvlDIXX37cR/DvmVbNB76M4IrsZeSAIajL9644CywkA==", - "dev": true, - "dependencies": { - "@aws-sdk/eventstream-serde-universal": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/eventstream-serde-config-resolver": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.310.0.tgz", - "integrity": "sha512-8s1Qdn9STj+sV75nUp9yt0W6fHS4BZ2jTm4Z/1Pcbvh2Gqs0WjH5n2StS+pDW5Y9J/HSGBl0ogmUr5lC5bXFHg==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/eventstream-serde-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.310.0.tgz", - "integrity": "sha512-kSnRomCgW43K9TmQYuwN9+AoYPnhyOKroanUMyZEzJk7rpCPMj4OzaUpXfDYOvznFNYn7NLaH6nHLJAr0VPlJA==", - "dev": true, - "dependencies": { - "@aws-sdk/eventstream-serde-universal": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/eventstream-serde-universal": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.310.0.tgz", - "integrity": "sha512-Qyjt5k/waV5cDukpgT824ISZAz5U0pwzLz5ztR409u85AGNkF/9n7MS+LSyBUBSb0WJ5pUeSD47WBk+nLq9Nhw==", - "dev": true, - "dependencies": { - "@aws-sdk/eventstream-codec": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", - "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/hash-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", - "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", - "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/is-array-buffer": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", - "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz", - "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz", - "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==", - "dev": true, - "dependencies": { - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-eventstream": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.310.0.tgz", - "integrity": "sha512-ukUoZSKDrZlZh/6qjcrZcFfg5qckuifuLepgIRTC14BCbswLSYuareceRPooOxnB+gVmApHtLZ9gvm8Nz74Ilw==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz", - "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz", - "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz", - "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz", - "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/service-error-classification": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz", - "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==", - "dev": true, - "dependencies": { - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-serde": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz", - "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-signing": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz", - "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==", - "dev": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/signature-v4": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-stack": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz", - "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.310.0.tgz", - "integrity": "sha512-x3IOwSwSbwKidlxRk3CNVHVUb06SRuaELxggCaR++QVI8NU6qD/l4VHXKVRvbTHiC/cYxXE/GaBDgQVpDR7V/g==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-endpoints": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", - "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", - "dev": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.310.0.tgz", - "integrity": "sha512-irv9mbcM9xC2xYjArQF5SYmHBMu4ciMWtGsoHII1nRuFOl9FoT4ffTvEPuLlfC6pznzvKt9zvnm6xXj7gDChKg==", - "dev": true, - "dependencies": { - "@aws-sdk/abort-controller": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/property-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", - "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/protocol-http": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", - "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/querystring-builder": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", - "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/querystring-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", - "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/service-error-classification": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", - "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", - "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", - "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", - "dev": true, - "dependencies": { - "@aws-sdk/is-array-buffer": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/smithy-client": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz", - "integrity": "sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw==", - "dev": true, - "dependencies": { - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.316.0.tgz", - "integrity": "sha512-foJ2YmB8A/mtp52riO2zdmBgzA3IpASNgUhY9FZg1BKpGcjqLQDGYP+BY3BA0H7CFsMa4PCf13M5wWwn1onyBA==", - "dev": true, - "dependencies": { - "@aws-sdk/client-sso-oidc": "3.316.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/types": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", - "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/url-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", - "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", - "dev": true, - "dependencies": { - "@aws-sdk/querystring-parser": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-base64": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", - "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", - "dev": true, - "dependencies": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", - "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-body-length-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", - "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-buffer-from": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", - "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", - "dev": true, - "dependencies": { - "@aws-sdk/is-array-buffer": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", - "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz", - "integrity": "sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w==", - "dev": true, - "dependencies": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz", - "integrity": "sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ==", - "dev": true, - "dependencies": { - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.310.0.tgz", - "integrity": "sha512-zG+/d/O5KPmAaeOMPd6bW1abifdT0H03f42keLjYEoRZzYtHPC5DuPE0UayiWGckI6BCDgy0sRKXCYS49UNFaQ==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", - "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-middleware": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", - "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", - "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", - "dev": true, - "dependencies": { - "@aws-sdk/service-error-classification": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aws-sdk/util-stream-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.310.0.tgz", - "integrity": "sha512-bysXZHwFwvbqOTCScCdCnoLk1K3GCo0HRIYEZuL7O7MHrQmfaYRXcaft/p22+GUv9VeFXS/eJJZ5r4u32az94w==", - "dev": true, - "dependencies": { - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-stream-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.310.0.tgz", - "integrity": "sha512-hueAXFK0GVvnfYFgqbF7587xZfMZff5jlIFZOHqx7XVU7bl7qrRUCnphHk8H6yZ7RoQbDPcfmHJgtEoAJg1T1Q==", - "dev": true, - "dependencies": { - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-uri-escape": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", - "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", - "dev": true, - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", - "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", - "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", - "dev": true, - "dependencies": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/util-utf8": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", - "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", - "dev": true, - "dependencies": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, - "dependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.17.tgz", - "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.17.tgz", - "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.17.tgz", - "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.17.tgz", - "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.17.tgz", - "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.17.tgz", - "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.17.tgz", - "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.17.tgz", - "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.17.tgz", - "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.17.tgz", - "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.17.tgz", - "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.17.tgz", - "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.17.tgz", - "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.17.tgz", - "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.17.tgz", - "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.17.tgz", - "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.17.tgz", - "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.17.tgz", - "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.17.tgz", - "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.17.tgz", - "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.17.tgz", - "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.17.tgz", - "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@types/node": { - "version": "18.15.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.12.tgz", - "integrity": "sha512-Wha1UwsB3CYdqUm2PPzh/1gujGCNtWVUYF0mB00fJFoR4gTyWTDPjSm+zBF787Ahw8vSGgBja90MkgFwvB86Dg==", - "dev": true - }, - "node_modules/aws-cdk-lib": { - "version": "2.76.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.76.0.tgz", - "integrity": "sha512-EYWdHh/qJA7v+jD6SeW+BOEChI7oe6IYPHHap+SoJMUrKBVSDKnIGJ8wTP5eV6F27aYaUQiA7rWTKcCWoda8ag==", - "bundleDependencies": [ - "@balena/dockerignore", - "case", - "fs-extra", - "ignore", - "jsonschema", - "minimatch", - "punycode", - "semver", - "table", - "yaml" - ], - "dev": true, - "dependencies": { - "@aws-cdk/asset-awscli-v1": "^2.2.97", - "@aws-cdk/asset-kubectl-v20": "^2.1.1", - "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.77", - "@balena/dockerignore": "^1.0.2", - "case": "1.6.3", - "fs-extra": "^9.1.0", - "ignore": "^5.2.4", - "jsonschema": "^1.4.1", - "minimatch": "^3.1.2", - "punycode": "^2.3.0", - "semver": "^7.3.8", - "table": "^6.8.1", - "yaml": "1.10.2" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "constructs": "^10.0.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/@balena/dockerignore": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/aws-cdk-lib/node_modules/ajv": { - "version": "8.12.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/aws-cdk-lib/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/aws-cdk-lib/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/aws-cdk-lib/node_modules/astral-regex": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/aws-cdk-lib/node_modules/at-least-node": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/aws-cdk-lib/node_modules/case": { - "version": "1.6.3", - "dev": true, - "inBundle": true, - "license": "(MIT OR GPL-3.0-or-later)", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/fs-extra": { - "version": "9.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aws-cdk-lib/node_modules/graceful-fs": { - "version": "4.2.10", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/aws-cdk-lib/node_modules/ignore": { - "version": "5.2.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/aws-cdk-lib/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/aws-cdk-lib/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/jsonfile": { - "version": "6.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/aws-cdk-lib/node_modules/jsonschema": { - "version": "1.4.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/aws-cdk-lib/node_modules/lodash.truncate": { - "version": "4.4.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/aws-cdk-lib/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aws-cdk-lib/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/aws-cdk-lib/node_modules/punycode": { - "version": "2.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/aws-cdk-lib/node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/semver": { - "version": "7.3.8", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aws-cdk-lib/node_modules/slice-ansi": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "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" - } - }, - "node_modules/aws-cdk-lib/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/aws-cdk-lib/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/aws-cdk-lib/node_modules/table": { - "version": "6.8.1", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "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": ">=10.0.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/universalify": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/aws-cdk-lib/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/aws-cdk-lib/node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true - }, - "node_modules/cdk-nag": { - "version": "2.26.12", - "resolved": "https://registry.npmjs.org/cdk-nag/-/cdk-nag-2.26.12.tgz", - "integrity": "sha512-SGThrCn3I5fSTt7plN/V/obgMLIzDGWgmp0Bb+v+dAHXLifW32+7WZHYPWzan7lXu20yZKCfwHg6c10XBTWO7w==", - "dev": true, - "peerDependencies": { - "aws-cdk-lib": "^2.45.0", - "constructs": "^10.0.5" - } - }, - "node_modules/constructs": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.1.tgz", - "integrity": "sha512-XJSrPWg3iXHe7a7bk1+Ty+yd4G2xQQP1dKEcOdoaBcCWEHIZMJ8D/J/ogptgJwp0hbJzlZueSab79osa29z5ug==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 14.17.0" - } - }, - "node_modules/esbuild": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.17.tgz", - "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.17", - "@esbuild/android-arm64": "0.17.17", - "@esbuild/android-x64": "0.17.17", - "@esbuild/darwin-arm64": "0.17.17", - "@esbuild/darwin-x64": "0.17.17", - "@esbuild/freebsd-arm64": "0.17.17", - "@esbuild/freebsd-x64": "0.17.17", - "@esbuild/linux-arm": "0.17.17", - "@esbuild/linux-arm64": "0.17.17", - "@esbuild/linux-ia32": "0.17.17", - "@esbuild/linux-loong64": "0.17.17", - "@esbuild/linux-mips64el": "0.17.17", - "@esbuild/linux-ppc64": "0.17.17", - "@esbuild/linux-riscv64": "0.17.17", - "@esbuild/linux-s390x": "0.17.17", - "@esbuild/linux-x64": "0.17.17", - "@esbuild/netbsd-x64": "0.17.17", - "@esbuild/openbsd-x64": "0.17.17", - "@esbuild/sunos-x64": "0.17.17", - "@esbuild/win32-arm64": "0.17.17", - "@esbuild/win32-ia32": "0.17.17", - "@esbuild/win32-x64": "0.17.17" - } - }, - "node_modules/fast-xml-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", - "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - } - }, - "dependencies": { - "@aws-cdk/asset-awscli-v1": { - "version": "2.2.145", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.145.tgz", - "integrity": "sha512-hcKds6DWRm+xcrI4u5bUBvM7aupF5aGCBPAAuATJpp+w0Zp63TkANDPOCKB4bA79QLzvoQ3YYWnGCysmdaW57Q==", - "dev": true - }, - "@aws-cdk/asset-kubectl-v20": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.1.tgz", - "integrity": "sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==", - "dev": true - }, - "@aws-cdk/asset-node-proxy-agent-v5": { - "version": "2.0.120", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-node-proxy-agent-v5/-/asset-node-proxy-agent-v5-2.0.120.tgz", - "integrity": "sha512-b8KA43ltvgoj6ybQuuTs6VSoP0edq6ZHDQsBbxw0wsNFMC/5VpmnbnfBrhjMLXbcJH6nwZJhMtBCWFswpPKDAw==", - "dev": true - }, - "@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", - "dev": true, - "requires": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, - "requires": { - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, - "requires": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, - "requires": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, - "requires": { - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@aws-sdk/abort-controller": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", - "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-kendra": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-kendra/-/client-kendra-3.316.0.tgz", - "integrity": "sha512-prXImj5XS+m4OalE+KU7hd47DWh6Gr0oSe/8xtRH2UrHlczwsnpZb7JZhx4Wydy+v+YwN3ujCbzUwhOO0ELkFQ==", - "dev": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.316.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.316.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - } - }, - "@aws-sdk/client-lex-runtime-v2": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lex-runtime-v2/-/client-lex-runtime-v2-3.316.0.tgz", - "integrity": "sha512-csaMmn/h6Z6QpDwKOnZpwEE7d2XXV50C5UZyGLSWcp2Sn7LmBHJsS7A+jSFC1MoKcAcK6waLXyDsFud7P9WZIA==", - "dev": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.316.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.316.0", - "@aws-sdk/eventstream-handler-node": "3.310.0", - "@aws-sdk/eventstream-serde-browser": "3.310.0", - "@aws-sdk/eventstream-serde-config-resolver": "3.310.0", - "@aws-sdk/eventstream-serde-node": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-eventstream": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-stream-browser": "3.310.0", - "@aws-sdk/util-stream-node": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-sso": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.316.0.tgz", - "integrity": "sha512-wGXfIhR0lJGB8QTT0fwSwwklHePHxd2GW3IQt3trXnEYe0frmJ7vYRnVL5CSRKsikLDmaU7ll3SdsshMzQzo3w==", - "dev": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-sso-oidc": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.316.0.tgz", - "integrity": "sha512-e2fvC7o42YV+LcZYfXCcvBn4L7NM9oNccnZ7T+pS6SFpHZlaqkw4uuQMRE6iUAof+Id7Mt7xDrz1x2yGlP+8GA==", - "dev": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/client-sts": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.316.0.tgz", - "integrity": "sha512-5SD59+DRVy1mKckGs/5J8OwWpRS3E5v4BX19XaX/s9JJ5Rw9aZd9DP4SZVpeNXztIPjkQSEzHgrUVlZFB1QJgg==", - "dev": true, - "requires": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-node": "3.316.0", - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/hash-node": "3.310.0", - "@aws-sdk/invalid-dependency": "3.310.0", - "@aws-sdk/middleware-content-length": "3.310.0", - "@aws-sdk/middleware-endpoint": "3.310.0", - "@aws-sdk/middleware-host-header": "3.310.0", - "@aws-sdk/middleware-logger": "3.310.0", - "@aws-sdk/middleware-recursion-detection": "3.310.0", - "@aws-sdk/middleware-retry": "3.310.0", - "@aws-sdk/middleware-sdk-sts": "3.310.0", - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/middleware-user-agent": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/smithy-client": "3.316.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.316.0", - "@aws-sdk/util-defaults-mode-node": "3.316.0", - "@aws-sdk/util-endpoints": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "@aws-sdk/util-user-agent-browser": "3.310.0", - "@aws-sdk/util-user-agent-node": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/config-resolver": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", - "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-config-provider": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-env": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", - "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", - "dev": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-imds": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", - "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", - "dev": true, - "requires": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-ini": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.316.0.tgz", - "integrity": "sha512-ZADkpdEjFCAXyzEpYbCRENlZ/AQEwevWdPd2yshjNo7xvOcepv4pPIBpYd8h9LvRafSLGA7zlWDz84hkIt+HKA==", - "dev": true, - "requires": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.316.0", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-node": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.316.0.tgz", - "integrity": "sha512-oE1LTXP8XZp4bT8LhBeolMRiz0RwnmHDC2XpUmWO8LTmbDNrQO0mVzxEvXDLeKaN5BIFIJqNFlMgjWUMa9Kwcw==", - "dev": true, - "requires": { - "@aws-sdk/credential-provider-env": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/credential-provider-ini": "3.316.0", - "@aws-sdk/credential-provider-process": "3.310.0", - "@aws-sdk/credential-provider-sso": "3.316.0", - "@aws-sdk/credential-provider-web-identity": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-process": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", - "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", - "dev": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-sso": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.316.0.tgz", - "integrity": "sha512-8/O2twlsoV1bDkZ9jd7JCMWsftfyoTyRT1UYscsKZGUDEgZRAxRkzS3GLYuLXEWNuxb1OB9rYk/cEJoxwy7T9g==", - "dev": true, - "requires": { - "@aws-sdk/client-sso": "3.316.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/token-providers": "3.316.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-web-identity": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", - "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", - "dev": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/eventstream-codec": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-codec/-/eventstream-codec-3.310.0.tgz", - "integrity": "sha512-clIeSgWbZbxwtsxZ/yoedNM0/kJFSIjjHPikuDGhxhqc+vP6TN3oYyVMFrYwFaTFhk2+S5wZcWYMw8Op1pWo+A==", - "dev": true, - "requires": { - "@aws-crypto/crc32": "3.0.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/eventstream-handler-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.310.0.tgz", - "integrity": "sha512-mNwskuY4T+jdmVJNxrTyqw8XEeqHi2vFbzQ9DT9TwrjMBrIYZRuVyTGEyXu3aCofMxMhXxPEAH2wdTM+wBvxvg==", - "dev": true, - "requires": { - "@aws-sdk/eventstream-codec": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/eventstream-serde-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.310.0.tgz", - "integrity": "sha512-3S6ziuQVALgEyz0TANGtYDVeG8ArK4Y05mcgrs8qUTmsvlDIXX37cR/DvmVbNB76M4IrsZeSAIajL9644CywkA==", - "dev": true, - "requires": { - "@aws-sdk/eventstream-serde-universal": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/eventstream-serde-config-resolver": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.310.0.tgz", - "integrity": "sha512-8s1Qdn9STj+sV75nUp9yt0W6fHS4BZ2jTm4Z/1Pcbvh2Gqs0WjH5n2StS+pDW5Y9J/HSGBl0ogmUr5lC5bXFHg==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/eventstream-serde-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.310.0.tgz", - "integrity": "sha512-kSnRomCgW43K9TmQYuwN9+AoYPnhyOKroanUMyZEzJk7rpCPMj4OzaUpXfDYOvznFNYn7NLaH6nHLJAr0VPlJA==", - "dev": true, - "requires": { - "@aws-sdk/eventstream-serde-universal": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/eventstream-serde-universal": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.310.0.tgz", - "integrity": "sha512-Qyjt5k/waV5cDukpgT824ISZAz5U0pwzLz5ztR409u85AGNkF/9n7MS+LSyBUBSb0WJ5pUeSD47WBk+nLq9Nhw==", - "dev": true, - "requires": { - "@aws-sdk/eventstream-codec": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/fetch-http-handler": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", - "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", - "dev": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/hash-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", - "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/invalid-dependency": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", - "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/is-array-buffer": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", - "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-content-length": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz", - "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==", - "dev": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-endpoint": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz", - "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==", - "dev": true, - "requires": { - "@aws-sdk/middleware-serde": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/url-parser": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-eventstream": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.310.0.tgz", - "integrity": "sha512-ukUoZSKDrZlZh/6qjcrZcFfg5qckuifuLepgIRTC14BCbswLSYuareceRPooOxnB+gVmApHtLZ9gvm8Nz74Ilw==", - "dev": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-host-header": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz", - "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==", - "dev": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-logger": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz", - "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-recursion-detection": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz", - "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==", - "dev": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz", - "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==", - "dev": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/service-error-classification": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-retry": "3.310.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - } - }, - "@aws-sdk/middleware-sdk-sts": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz", - "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==", - "dev": true, - "requires": { - "@aws-sdk/middleware-signing": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-serde": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz", - "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-signing": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz", - "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==", - "dev": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/signature-v4": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-stack": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz", - "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-user-agent": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.310.0.tgz", - "integrity": "sha512-x3IOwSwSbwKidlxRk3CNVHVUb06SRuaELxggCaR++QVI8NU6qD/l4VHXKVRvbTHiC/cYxXE/GaBDgQVpDR7V/g==", - "dev": true, - "requires": { - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-endpoints": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/node-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", - "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", - "dev": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/node-http-handler": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.310.0.tgz", - "integrity": "sha512-irv9mbcM9xC2xYjArQF5SYmHBMu4ciMWtGsoHII1nRuFOl9FoT4ffTvEPuLlfC6pznzvKt9zvnm6xXj7gDChKg==", - "dev": true, - "requires": { - "@aws-sdk/abort-controller": "3.310.0", - "@aws-sdk/protocol-http": "3.310.0", - "@aws-sdk/querystring-builder": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/property-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", - "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/protocol-http": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", - "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/querystring-builder": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", - "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/querystring-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", - "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/service-error-classification": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", - "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==", - "dev": true - }, - "@aws-sdk/shared-ini-file-loader": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", - "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/signature-v4": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", - "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", - "dev": true, - "requires": { - "@aws-sdk/is-array-buffer": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-middleware": "3.310.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/smithy-client": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.316.0.tgz", - "integrity": "sha512-6YXOKbRnXeS8r8RWzuL6JMBolDYM5Wa4fD/VY6x/wK78i2xErHOvqzHgyyeLI1MMw4uqyd4wRNJNWC9TMPduXw==", - "dev": true, - "requires": { - "@aws-sdk/middleware-stack": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/token-providers": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.316.0.tgz", - "integrity": "sha512-foJ2YmB8A/mtp52riO2zdmBgzA3IpASNgUhY9FZg1BKpGcjqLQDGYP+BY3BA0H7CFsMa4PCf13M5wWwn1onyBA==", - "dev": true, - "requires": { - "@aws-sdk/client-sso-oidc": "3.316.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/shared-ini-file-loader": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/types": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", - "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/url-parser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", - "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", - "dev": true, - "requires": { - "@aws-sdk/querystring-parser": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-base64": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", - "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", - "dev": true, - "requires": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-body-length-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", - "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-body-length-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", - "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-buffer-from": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", - "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", - "dev": true, - "requires": { - "@aws-sdk/is-array-buffer": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", - "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-defaults-mode-browser": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.316.0.tgz", - "integrity": "sha512-6FSqLhYmaihtH2n1s4b2rlLW0ABU8N6VZIfzLfe2ING4PF0MzfaMMhnTFUHVXfKCVGoR8yP6iyFTRCyHGVEL1w==", - "dev": true, - "requires": { - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-defaults-mode-node": { - "version": "3.316.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.316.0.tgz", - "integrity": "sha512-dkYy10hdjPSScXXvnjGpZpnJxllkb6ICHgLMwZ4JczLHhPM12T/4PQ758YN8HS+muiYDGX1Bl2z1jd/bMcewBQ==", - "dev": true, - "requires": { - "@aws-sdk/config-resolver": "3.310.0", - "@aws-sdk/credential-provider-imds": "3.310.0", - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/property-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-endpoints": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.310.0.tgz", - "integrity": "sha512-zG+/d/O5KPmAaeOMPd6bW1abifdT0H03f42keLjYEoRZzYtHPC5DuPE0UayiWGckI6BCDgy0sRKXCYS49UNFaQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-hex-encoding": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", - "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-locate-window": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", - "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-middleware": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", - "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-retry": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", - "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", - "dev": true, - "requires": { - "@aws-sdk/service-error-classification": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-stream-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.310.0.tgz", - "integrity": "sha512-bysXZHwFwvbqOTCScCdCnoLk1K3GCo0HRIYEZuL7O7MHrQmfaYRXcaft/p22+GUv9VeFXS/eJJZ5r4u32az94w==", - "dev": true, - "requires": { - "@aws-sdk/fetch-http-handler": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-stream-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.310.0.tgz", - "integrity": "sha512-hueAXFK0GVvnfYFgqbF7587xZfMZff5jlIFZOHqx7XVU7bl7qrRUCnphHk8H6yZ7RoQbDPcfmHJgtEoAJg1T1Q==", - "dev": true, - "requires": { - "@aws-sdk/node-http-handler": "3.310.0", - "@aws-sdk/types": "3.310.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-uri-escape": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", - "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", - "dev": true, - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-user-agent-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", - "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", - "dev": true, - "requires": { - "@aws-sdk/types": "3.310.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-user-agent-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", - "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", - "dev": true, - "requires": { - "@aws-sdk/node-config-provider": "3.310.0", - "@aws-sdk/types": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-utf8": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", - "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", - "dev": true, - "requires": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, - "requires": { - "tslib": "^2.3.1" - } - }, - "@esbuild/android-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.17.tgz", - "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.17.tgz", - "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.17.tgz", - "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.17.tgz", - "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.17.tgz", - "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.17.tgz", - "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.17.tgz", - "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.17.tgz", - "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.17.tgz", - "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.17.tgz", - "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.17.tgz", - "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.17.tgz", - "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.17.tgz", - "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.17.tgz", - "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.17.tgz", - "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.17.tgz", - "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.17.tgz", - "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.17.tgz", - "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.17.tgz", - "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.17.tgz", - "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.17.tgz", - "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.17.tgz", - "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==", - "dev": true, - "optional": true - }, - "@types/node": { - "version": "18.15.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.12.tgz", - "integrity": "sha512-Wha1UwsB3CYdqUm2PPzh/1gujGCNtWVUYF0mB00fJFoR4gTyWTDPjSm+zBF787Ahw8vSGgBja90MkgFwvB86Dg==", - "dev": true - }, - "aws-cdk-lib": { - "version": "2.76.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.76.0.tgz", - "integrity": "sha512-EYWdHh/qJA7v+jD6SeW+BOEChI7oe6IYPHHap+SoJMUrKBVSDKnIGJ8wTP5eV6F27aYaUQiA7rWTKcCWoda8ag==", - "dev": true, - "requires": { - "@aws-cdk/asset-awscli-v1": "^2.2.97", - "@aws-cdk/asset-kubectl-v20": "^2.1.1", - "@aws-cdk/asset-node-proxy-agent-v5": "^2.0.77", - "@balena/dockerignore": "^1.0.2", - "case": "1.6.3", - "fs-extra": "^9.1.0", - "ignore": "^5.2.4", - "jsonschema": "^1.4.1", - "minimatch": "^3.1.2", - "punycode": "^2.3.0", - "semver": "^7.3.8", - "table": "^6.8.1", - "yaml": "1.10.2" - }, - "dependencies": { - "@balena/dockerignore": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "ajv": { - "version": "8.12.0", - "bundled": true, - "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.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "astral-regex": { - "version": "2.0.0", - "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" - } - }, - "case": { - "version": "1.6.3", - "bundled": true, - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true, - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "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 - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonschema": { - "version": "1.4.1", - "bundled": true, - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "punycode": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "bundled": true, - "dev": true - }, - "semver": { - "version": "7.3.8", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "slice-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "table": { - "version": "6.8.1", - "bundled": true, - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, - "universalify": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "yaml": { - "version": "1.10.2", - "bundled": true, - "dev": true - } - } - }, - "bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true - }, - "cdk-nag": { - "version": "2.26.12", - "resolved": "https://registry.npmjs.org/cdk-nag/-/cdk-nag-2.26.12.tgz", - "integrity": "sha512-SGThrCn3I5fSTt7plN/V/obgMLIzDGWgmp0Bb+v+dAHXLifW32+7WZHYPWzan7lXu20yZKCfwHg6c10XBTWO7w==", - "dev": true, - "requires": {} - }, - "constructs": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.1.tgz", - "integrity": "sha512-XJSrPWg3iXHe7a7bk1+Ty+yd4G2xQQP1dKEcOdoaBcCWEHIZMJ8D/J/ogptgJwp0hbJzlZueSab79osa29z5ug==", - "dev": true, - "peer": true - }, - "esbuild": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.17.tgz", - "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.17.17", - "@esbuild/android-arm64": "0.17.17", - "@esbuild/android-x64": "0.17.17", - "@esbuild/darwin-arm64": "0.17.17", - "@esbuild/darwin-x64": "0.17.17", - "@esbuild/freebsd-arm64": "0.17.17", - "@esbuild/freebsd-x64": "0.17.17", - "@esbuild/linux-arm": "0.17.17", - "@esbuild/linux-arm64": "0.17.17", - "@esbuild/linux-ia32": "0.17.17", - "@esbuild/linux-loong64": "0.17.17", - "@esbuild/linux-mips64el": "0.17.17", - "@esbuild/linux-ppc64": "0.17.17", - "@esbuild/linux-riscv64": "0.17.17", - "@esbuild/linux-s390x": "0.17.17", - "@esbuild/linux-x64": "0.17.17", - "@esbuild/netbsd-x64": "0.17.17", - "@esbuild/openbsd-x64": "0.17.17", - "@esbuild/sunos-x64": "0.17.17", - "@esbuild/win32-arm64": "0.17.17", - "@esbuild/win32-ia32": "0.17.17", - "@esbuild/win32-x64": "0.17.17" - } - }, - "fast-xml-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", - "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", - "dev": true, - "requires": { - "strnum": "^1.0.5" - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/package.json b/projects/AmazonLexv2LambdaIntegrationExamples/package.json deleted file mode 100644 index 1ae1c69..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "amazon-lex-v2-lambda-integration-examples", - "version": "1.0.0", - "description": "", - "main": "index.js", - "directories": { - "lib": "cdkStacks" - }, - "scripts": { - "build": "tsc", - "watch": "tsc -w", - "cdk": "cdk", - "cdk:nag": "cdk synth --all", - "cdk:bootstrap": "cdk bootstrap --all", - "cdk:deploy:all": "cdk deploy --all", - "cdk:destroy:all": "cdk destroy --all", - "cdk:deploy:basiclambda": "cdk deploy BasicLexLambdaIntegration", - "cdk:destroy:basiclambda": "cdk destroy BasicLexLambdaIntegration", - "cdk:deploy:reminderbot": "cdk deploy ReminderBot", - "cdk:destroy:reminderbot": "cdk destroy ReminderBot" - }, - "devDependencies": { - "@aws-sdk/client-kendra": "^3.316.0", - "@aws-sdk/client-lex-runtime-v2": "^3.316.0", - "@types/node": "^18.15.12", - "aws-cdk-lib": "^2.76.0", - "cdk-nag": "^2.26.12", - "esbuild": "^0.17.17", - "typescript": "^4.9.5" - }, - "author": "", - "license": "ISC", - "dependencies": { - "moment": "^2.29.4" - } -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/README.md b/projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/README.md deleted file mode 100644 index f668501..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Basic Lambda function with no dialog handling - -## Introduction - -The [basicPassthroughLexv2Lambda](./basicPassthroughLexv2Lambda.ts) does not do any dialog handing, but simply logs out information. It can be attached to any code hook in Lex v2 bots created after August 17, 2022. - -The deployed name will start with _BasicLexLambdaIntegration-BasicPassthroughLexv2Lambda_ - - -### Basic Lambda function description -The Lambda function logs out the full input event and response, but also logs out a list of some of the key information. - -Here is an example of what that might look like for a call to the [Reminder bot](../../bots/ReminderBotFiles) from Amazon Connect. -``` -Lambda invoked with type DialogCodeHook and label CallIntent_InitialCodeHook for ReminderBot version DRAFT and locale en_US - -Calling system sent Speech and expects text/plain; charset=utf-8 to be returned - -Request Attributes are: -- x-amz-lex:accept-content-types passed with value PlainText,SSML -- x-amz-lex:channels:platform passed with value Connect - -User said "can you call me" -Possible alternate transcriptions are: -- "can you call me" with confidence 0.91 -- "can you tell me" with confidence 0.8 -- "can ya call me" with confidence 0.71 - -Current Intent is CallIntent with a state of InProgress -Possible interpretations are: -- CallIntent with NLU confidence 0.62 -- EmailIntent with NLU confidence 0.1 -- FallbackIntent with NLU confidence undefined - -Proposed next action is ElicitSlot - ``` - - -## Prerequisites and Set-up -See overall [README](../../README.md) - -## Deploying - -``` -npm run cdk:deploy:basiclambda -``` - -## Connecting the Lambda function -Follow the instructions here to attach the Lambda function to your bot once deployed: https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html - -There are 3 different types of code hooks you can use -- Fulfillment code hook (inside fulfillment step) -- Standard dialog code hook (between any conversation steps up to fulfillment) -- Elicitation dialog code hook (inside slot capture or confirmation step) - -This Lambda function can be attached to any type of code hook, but will take no action apart from logging out details of the input and output. - - -## Clean-up -To remove all resources created as part of this stack run the below: - -``` -npm run cdk:destroy:basiclambda -``` - -NOTE: You will need to update any bot this was connected to, since they will now be pointing to a Lambda function that has been deleted. diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/basicPassthroughLexv2Lambda.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/basicPassthroughLexv2Lambda.ts deleted file mode 100644 index 090d6d7..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/basicPassthroughLexv2Lambda/basicPassthroughLexv2Lambda.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import { LexCodeHookInputEvent, LexCodeHookResponse } from "../sharedLibraries/LexCodeHookInterfaces" -const DialogHelpers = require("../sharedLibraries/DialogHelpers") -const CommonUtils = require("../sharedLibraries/CommonUtils") - -exports.handler = async (event: LexCodeHookInputEvent) => { - console.debug("event", JSON.stringify(event, null, 2)) - - CommonUtils.logEventDetails(event) - - const response: LexCodeHookResponse = DialogHelpers.passThrough(event) - - console.debug("response", JSON.stringify(response, null, 2)) - return response -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/README.md b/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/README.md deleted file mode 100644 index e0be5e2..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# Reminder Lex bot and code hook Lambda function - -## Introduction -This bot shows a simple example of a Reminder bot showing example Lambda function integrations and conditional flows. -It lets the user set up either a reminder call or a reminder email. -It consists of three intents: -- CallIntent -- EmailIntent -- FallbackIntent - -The en-us language in both _TestBotAlias_ and _Prod_ **aliases** are hooked to a Lambda function that when deployed will have a named starting with _ReminderBot-LexFulfillmentLambda_ - -It is non-functional, and simply designed to show how the integration works and let you explore the input and output. - -### CallIntent description -The CallIntent intent consists of the following: -- **Initial response** enabled, with a message and dialog cook hook enabled (_CallIntent_InitialCodeHook_) -- A single **slot** (of type AMAZON.Time), with both elicitation (_CallIntent_TimeSlot_PromptCodeHook_) and validation (_CallIntent_TimeSlot_ValidationCodeHook_) dialog code hooks enabled -- A **fulfillment step** with fulfillment code hook enabled - -### EmailIntent description -The EmailIntent intent consists of the following: -- **Initial response** enabled, with message and dialog cook hook enabled (_CallIntent_InitialCodeHook_) -- A single **slot** (of type AMAZON.Number), with **conditional flows** for validation -- A **fulfillment step** with fulfillment code hook enabled - -### FallbackIntent description -The FallbackIntent consists of the following: -- **Initial response** enabled, with no message and **conditional flow** -- A **fulfillment step** with fulfillment code hook enabled - -### ReminderBot-LexFulfillmentLambda function description -The Lambda function shows how to detect and direct different parts of the conversation. -It does some validation and message adjustment. Most of the functionality simply delegates back to Lex. - -## Prerequisites and Set-up -See overall [README](../../README.md) - -## Deploying - -``` -npm run cdk:deploy:reminderbot -``` - -## Clean-up - -``` -npm run cdk:destroy:reminderBotLambda -``` diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/callIntentHandler.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/callIntentHandler.ts deleted file mode 100644 index 194c9f4..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/callIntentHandler.ts +++ /dev/null @@ -1,229 +0,0 @@ -import { InvocationSource, LexCodeHookInputEvent } from "../../sharedLibraries/LexCodeHookInterfaces" -import { MessageContentType, Value } from "@aws-sdk/client-lex-runtime-v2" -import { IntentNames } from "./constants" - -import moment from "moment" - -const DialogHelpers = require("../../sharedLibraries/DialogHelpers") -const CommonUtils = require("../../sharedLibraries/CommonUtils") - -const TIME_SLOT = "Time" - -const TIME_PERIOD_VALUES = ["AM", "PM", "MO", "AF", "EV", "NI"] -const TIME_PERIOD_SESSION_ATTR = "timeperiod" - -const INITIAL_CODE_HOOK_LABEL = "CallIntent_InitialCodeHook" -const TIME_SLOT_PROMPT_CODE_HOOK_LABEL = "CallIntent_TimeSlot_PromptCodeHook" -const TIME_SLOT_VALIDATION_CODE_HOOK_LABEL = "CallIntent_TimeSlot_ValidationCodeHook" - -export function handler(event: LexCodeHookInputEvent) { - let response = DialogHelpers.passThrough(event) - const intent = event.sessionState.intent - - // @ts-ignore intent will never be undefined in the Intent Handler - if (intent.name !== IntentNames.CALL_INTENT) { - console.error(`Wrong handler for intent called, current intent is ${intent}`) - // Decide how you would like to handle this with the least disruption to your user - return response - } - - /** - * Determine the correct logic to run based on what code hook the request has come from - */ - if (event.invocationSource === InvocationSource.DIALOG_CODE_HOOK) { - if (event.invocationLabel === INITIAL_CODE_HOOK_LABEL) { - // Check if we already captured an ambiguous Time Slot value at this point, - // so we can adjust the prompt if needed - response = checkForAmbiguousTimeSlotValue(event) - } else if (event.invocationLabel === TIME_SLOT_PROMPT_CODE_HOOK_LABEL) { - // Check the user input, so we can adjust the prompt for ambiguous or time period values - response = checkUserInput(event) - } else if (event.invocationLabel === TIME_SLOT_VALIDATION_CODE_HOOK_LABEL) { - // final validation on slot - response = validateTimeSlot(event) - } - } else if (event.invocationSource === InvocationSource.FULFILLMENT_CODE_HOOK) { - // book the call - response = fulfillIntent(event) - } - - return response -} - -/** - * For Fulfillment, we will take action on book the call and then send a - * response with State of Fulfilled and a DialogAction of CLOSE - */ -const fulfillIntent = (event: LexCodeHookInputEvent) => { - //clear the time period session attribute - event.sessionState.sessionAttributes[TIME_PERIOD_SESSION_ATTR] = "" - - // **************************** - // ADD LOGIC HERE TO ACTUALLY BOOK THE CALL .... - // - // IN THE REAL WORLD WE WOULD BE REACHING OUT TO EXTERNAL SYSTEMS HERE - // FOR NOW WE'RE JUST GOING TO RESPOND AS IF WE DID BOOK THE CALL - // ***************************** - - const humanFriendlyTime = moment(CommonUtils.getSessionStateSlotValue(event, TIME_SLOT).interpretedValue, [ - "HH:mm", - ]).format("h:mm A") - - return DialogHelpers.fulfillIntent(event.sessionState, event.requestAttributes || {}, [ - { - contentType: MessageContentType.PLAIN_TEXT, - content: `Your call has been scheduled for ${humanFriendlyTime}`, - }, - ]) -} - -/** - * After we collect the slot value we want to - * - check it has been filled with a time and not a time period (in which case we would return to ElicitSlot) - * - if it is a valid time we return control to Lex to move to the next step - * @param event - */ -const validateTimeSlot = (event: LexCodeHookInputEvent) => { - const timeSlotValue = CommonUtils.getSessionStateSlotValue(event, TIME_SLOT) - - // Validate that the interpretedValue isn't a time period - // (if value was collected at ElicitIntent the CallIntent_TimeSlot_PromptCodeHook will have been skipped) - if (isTimePeriod(timeSlotValue.interpretedValue)) { - return askForSpecificTimeWithinTimePeriod(timeSlotValue.interpretedValue, event) - } else { - // **************************** - // LOGIC COULD BE ADDED HERE TO CHECK THIS TIME IS AVAILABLE BY REACHING OUT TO OUR BOOKING SYSTEM - // THIS WOULD ALLOW US TO RE-PROMPT THE USER FOR A NEW TIME IF NEEDED - // **************************** - - //If we have a valid time, pass through to next step - return DialogHelpers.passThrough(event) - } -} -/** - * On each elicitation within the Time Slot we will do the following: - * - If the slot is filled (has interpretedValue) we will check it is a valid time value - * - If not we will ask the user to clarify - * - Else we will just delegate back to Lex - * - If the slot is NOT filled we will check if there is more than one resolved value - * - If there is more than one, we will use those to ask the user to clarify with one - * - Else we will just delegate back to Lex - */ -const checkUserInput = (event: LexCodeHookInputEvent) => { - const timeSlotValue = CommonUtils.getSessionStateSlotValue(event, TIME_SLOT) - - // check it isn't a time period rather than a specific time - if (isTimePeriod(timeSlotValue.interpretedValue)) { - // if it is, ask for clarification - return askForSpecificTimeWithinTimePeriod(timeSlotValue.interpretedValue, event) - } - // otherwise check if there are potential values listed - else { - return checkForAmbiguousTimeSlotValue(event) - } -} - -const isAmbiguousSlotValue = (slot: Value) => { - return slot && slot.resolvedValues && slot.resolvedValues.length > 1 -} - -const checkForAmbiguousTimeSlotValue = (event: LexCodeHookInputEvent) => { - const timeSlotValue = CommonUtils.getSessionStateSlotValue(event, TIME_SLOT) - if (isAmbiguousSlotValue(timeSlotValue)) { - return disambiguateValues(event, timeSlotValue.resolvedValues) - } else { - return DialogHelpers.passThrough(event) - } -} - -const isTimePeriod = (interpretedValue: string) => { - return interpretedValue && interpretedValue !== "" && TIME_PERIOD_VALUES.includes(interpretedValue) -} - -const disambiguateValues = (event: LexCodeHookInputEvent, resolvedValues: string[]) => { - let disambiguatedValue = resolveTimeFromTimePeriod(event, resolvedValues) - if (disambiguatedValue !== "") { - // If we resolved a value, set the slot to the matched value before we pass back to Lex to handle the next step - // @ts-ignore - to have reached this point this will have to exist so not adding null checks - event.sessionState.intent.slots[TIME_SLOT].value.interpretedValue = disambiguatedValue - return DialogHelpers.passThrough(event) - } else { - // If we haven't resolved a value, ask the user for clarification - return askForTimeClarification(resolvedValues, event) - } -} - -const resolveTimeFromTimePeriod = (event: LexCodeHookInputEvent, resolvedValues: string[]) => { - let disambiguatedTime = "" - - // check if the user already indicated a time period, if they haven't, we can return an empty string - const timePeriod = event.sessionState.sessionAttributes[TIME_PERIOD_SESSION_ATTR] - if (timePeriod && timePeriod != "") { - // Try to match a resolved time with the time period the user has given - resolvedValues.forEach((resolvedValue) => { - if (["MO", "AM"].includes(timePeriod) && resolvedValue >= "00:00" && resolvedValue <= "12:00") { - disambiguatedTime = resolvedValue - } else if (["AF", "PM"].includes(timePeriod) && resolvedValue >= "12:00" && resolvedValue <= "18:00") { - disambiguatedTime = resolvedValue - } else if (["EV", "NI", "PM"].includes(timePeriod) && resolvedValue >= "18:00" && resolvedValue <= "23:59") { - disambiguatedTime = resolvedValue - } - }) - } - return disambiguatedTime -} - -const askForTimeClarification = (resolvedValues: string[], event: LexCodeHookInputEvent) => { - // map in a human friendly version of the times - resolvedValues = resolvedValues.map((value) => moment(value, ["HH:mm"]).format("h:mm A")) - - // concatenate the resolved values with 'or' between them - const resolvedValuesString = resolvedValues.join(" or ") - - // set the next step to a re-prompt for the slot - return DialogHelpers.promptForSlot( - event.sessionState, - event.requestAttributes || {}, - TIME_SLOT, - event.sessionState.intent, - [ - { - contentType: MessageContentType.PLAIN_TEXT, - content: `Would you like ${resolvedValuesString}?`, - }, - ] - ) -} - -const askForSpecificTimeWithinTimePeriod = (value: string, event: LexCodeHookInputEvent) => { - // map of values to human-friendly ones - const timePeriodMapping: { [index: string]: string } = { - AM: "morning", - PM: "evening", - MO: "morning", - AF: "afternoon", - EV: "evening", - NI: "evening", - } - - // add value to session, so we can use it for future disambiguation if needed - event.sessionState.sessionAttributes[TIME_PERIOD_SESSION_ATTR] = CommonUtils.getSessionStateSlotValue( - event, - TIME_SLOT - ).interpretedValue - - // add human-friendly value into message, or default to day if the value can't be mapped - const message = { - contentType: MessageContentType.PLAIN_TEXT, - content: `What time in the ${timePeriodMapping[value] || "day"} would you like?`, - } - - // set the next step to a re-prompt for the slot - return DialogHelpers.promptForSlot( - event.sessionState, - event.requestAttributes || {}, - TIME_SLOT, - event.sessionState.intent, - [message] - ) -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/constants.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/constants.ts deleted file mode 100644 index d9b3550..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/constants.ts +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -export const enum IntentNames { - CALL_INTENT = "CallIntent", - EMAIL_INTENT = "EmailIntent", - FALLBACK_INTENT = "FallbackIntent", -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/emailIntentHandler.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/emailIntentHandler.ts deleted file mode 100644 index f067204..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/intentHandlers/emailIntentHandler.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { LexCodeHookInputEvent, InvocationSource } from "../../sharedLibraries/LexCodeHookInterfaces" -import { IntentNames } from "./constants" -const DialogHelpers = require("../../sharedLibraries/DialogHelpers") - -const DAYS_BEFORE_SLOT = "DaysBefore" - -const INITIAL_CODE_HOOK_LABEL = "EmailIntent_InitialCodeHook" -const DAYS_BEFORE_SLOT_PROMPT_CODE_HOOK_LABEL = "EmailIntent_DaysBeforeSlot_PromptCodeHook" -const DAYS_BEFORE_VALIDATION_CODE_HOOK_LABEL = "EmailIntent_DaysBeforeSlot_ValidationCodeHook" - -export function handler(event: LexCodeHookInputEvent) { - let response = DialogHelpers.passThrough(event) - const intent = event.sessionState.intent - - // @ts-ignore intent will never be undefined in the Intent Handler - if (intent.name !== IntentNames.EMAIL_INTENT) { - console.error(`Wrong handler for intent called, current intent is ${intent}`) - // Decide how you would like to handle this with the least disruption to your user - return response - } - - if (event.invocationSource === InvocationSource.DIALOG_CODE_HOOK) { - if (event.invocationLabel == INITIAL_CODE_HOOK_LABEL) { - response = DialogHelpers.passThrough(event) - } else if (event.invocationLabel == DAYS_BEFORE_SLOT_PROMPT_CODE_HOOK_LABEL) { - response = DialogHelpers.passThrough(event) - } else if (event.invocationLabel == DAYS_BEFORE_VALIDATION_CODE_HOOK_LABEL) { - response = DialogHelpers.passThrough(event) - } else { - response = DialogHelpers.passThrough(event) - } - } else if (event.invocationSource === InvocationSource.FULFILLMENT_CODE_HOOK) { - response = DialogHelpers.passThrough(event) - } - - return response -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/reminderBotLambda.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/reminderBotLambda.ts deleted file mode 100644 index 9781564..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/reminderBotLex2Lambda/reminderBotLambda.ts +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import { LexCodeHookInputEvent } from "../sharedLibraries/LexCodeHookInterfaces" -import { IntentNames } from "./intentHandlers/constants" -const DialogHelpers = require("../sharedLibraries/DialogHelpers") -const CommonUtils = require("../sharedLibraries/CommonUtils") -import * as emailIntentHandler from "./intentHandlers/emailIntentHandler" -import * as callIntentHandler from "./intentHandlers/callIntentHandler" - -exports.handler = async (event: LexCodeHookInputEvent) => { - console.debug("event", JSON.stringify(event, null, 2)) - - CommonUtils.logEventDetails(event) - - let response = DialogHelpers.passThrough(event) - const sessionStateIntentName = event.sessionState.intent?.name || "" - - if (sessionStateIntentName === IntentNames.CALL_INTENT) { - console.debug("Handling call intent") - response = callIntentHandler.handler(event) - } else if (sessionStateIntentName === IntentNames.EMAIL_INTENT) { - console.debug("Handling email intent") - response = emailIntentHandler.handler(event) - } - - console.debug("response", JSON.stringify(response, null, 2)) - return response -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/CommonUtils.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/CommonUtils.ts deleted file mode 100644 index 59c7e30..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/CommonUtils.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import { InvocationSource, LexCodeHookInputEvent } from "./LexCodeHookInterfaces" -import { Value } from "@aws-sdk/client-lex-runtime-v2" - -const logEventDetails = (event: LexCodeHookInputEvent) => { - console.log( - `Lambda invoked with type ${event.invocationSource} and label ${event.invocationLabel} for ${event.bot.name} version ${event.bot.version} and locale ${event.bot.localeId}` - ) - console.log(`Calling system sent ${event.inputMode} and expects ${event.responseContentType} to be returned`) - - if (event.requestAttributes) { - console.log("Request Attributes are:") - for (const key in event.requestAttributes) { - console.log(`- ${key} passed with value ${event.requestAttributes[key]}`) - } - } else { - console.log("No Request Attributes passed") - } - - console.log(`User said "${event.inputTranscript}"`) - if (event.transcriptions) { - console.log("Possible alternate transcriptions are:") - for (const transcription of event.transcriptions || []) { - console.log(`- "${transcription.transcription}" with confidence ${transcription.transcriptionConfidence}`) - } - } else { - console.log("No other alternate transcriptions are listed") - } - - const currentIntent = event.sessionState.intent - console.log(`Current Intent is ${currentIntent?.name} with a state of ${currentIntent?.state}`) - - console.log("Possible interpretations are:") - for (const interpretation of event.interpretations) { - console.log(`- ${interpretation.intent?.name} with NLU confidence ${interpretation.nluConfidence}`) - } - - if (event.invocationSource === InvocationSource.DIALOG_CODE_HOOK) { - const { proposedNextState } = event - console.log(`Proposed next action is ${proposedNextState?.dialogAction.type}`) - } -} - -const getSessionStateSlotValue = (event: LexCodeHookInputEvent, slotName: string): Value => { - const emptySlotValue: Value = { - originalValue: "", - resolvedValues: [], - interpretedValue: "", - } - let slotValue = emptySlotValue - if (event.sessionState.intent?.slots && event.sessionState.intent.slots?.[slotName]) { - slotValue = event.sessionState.intent.slots?.[slotName].value || emptySlotValue - } - return slotValue -} - -module.exports = { - logEventDetails, - getSessionStateSlotValue, -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/DialogHelpers.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/DialogHelpers.ts deleted file mode 100644 index 6836db6..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/DialogHelpers.ts +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import { - LexCodeHookInputEvent, - LexCodeHookResponse, - LambdaCodeHookSessionState, - Attributes, - LambdaCodeHookSessionStateIntent, -} from "./LexCodeHookInterfaces" -import { DialogActionType, Message, IntentState } from "@aws-sdk/client-lex-runtime-v2" - -const delegate = (sessionState: LambdaCodeHookSessionState, requestAttributes?: Attributes, messages?: Message[]) => { - // Ensure session state dialog action is set to Delegate, pass everything else in as-is - sessionState.dialogAction = { - type: DialogActionType.DELEGATE, - } - const response: LexCodeHookResponse = { - sessionState: sessionState, - requestAttributes: requestAttributes, - messages: messages, - } - - return response -} - -const passThrough = (event: LexCodeHookInputEvent) => { - return delegate(event.sessionState, event.requestAttributes) -} - -const fulfillIntent = ( - sessionState: LambdaCodeHookSessionState, - requestAttributes: Attributes, - messages?: Message[] -) => { - //Note that Delegate doesn't take the passed in message and will just use the one set in the configuration - let fulfilledSessionState = updateSessionState(sessionState, IntentState.FULFILLED, DialogActionType.CLOSE) - - const response: LexCodeHookResponse = { - sessionState: fulfilledSessionState, - messages: messages, - requestAttributes: requestAttributes, - } - - return response -} - -const endConversation = (event: LexCodeHookInputEvent, messages?: Message[]) => { - // This indicates a successful completion of the conversation, - // if this is not the case the state should be set to "Failed" - let sessionState = updateSessionState(event.sessionState, IntentState.FULFILLED, DialogActionType.CLOSE) - - const response: LexCodeHookResponse = { - sessionState: sessionState, - messages: messages, - requestAttributes: event.requestAttributes, - } - - return response -} - -const promptForNewIntent = (event: LexCodeHookInputEvent, messages?: Message[]) => { - let sessionState = event.sessionState - delete sessionState.intent - - const response: LexCodeHookResponse = { - sessionState: sessionState, - messages: messages, - requestAttributes: event.requestAttributes, - } - response.sessionState.dialogAction = { - type: DialogActionType.ELICIT_INTENT, - } - - return response -} - -const promptForConfirmationOfIntent = ( - sessionState: LambdaCodeHookSessionState, - requestAttributes: Attributes, - intent: LambdaCodeHookSessionStateIntent, - messages: Message[] -) => { - const response = { - sessionState: sessionState, - messages: messages, - requestAttributes: requestAttributes, - } as LexCodeHookResponse - - response.sessionState.dialogAction = { - type: DialogActionType.CONFIRM_INTENT, - } - - intent.state = IntentState.IN_PROGRESS - response.sessionState.intent = intent - - return response -} - -const promptForSlot = ( - sessionState: LambdaCodeHookSessionState, - requestAttributes: Attributes, - slotToElicit: string, - intent: LambdaCodeHookSessionStateIntent, - messages: Message[] -) => { - const response = { - sessionState: sessionState, - messages: messages, - requestAttributes: requestAttributes, - } as LexCodeHookResponse - - response.sessionState.dialogAction = { - type: DialogActionType.ELICIT_SLOT, - slotToElicit: slotToElicit, - } - - intent.state = IntentState.IN_PROGRESS - response.sessionState.intent = intent - - return response -} - -const updateSessionState = ( - currentState: LambdaCodeHookSessionState, - newIntentState: IntentState, - newDialogActionType: DialogActionType -) => { - let sessionState = currentState - sessionState.intent - ? (sessionState.intent.state = newIntentState) - : (sessionState.intent = { - name: "", - state: newIntentState, - }) - - sessionState.dialogAction = { - type: newDialogActionType, - } - - return sessionState -} - -module.exports = { - confirmIntent: promptForConfirmationOfIntent, - delegate, - endConversation, - elicitIntent: promptForNewIntent, - elicitSlot: promptForSlot, - fulfillIntent, - funRun: passThrough, - passThrough, - promptForConfirmationOfIntent, - promptForNewIntent, - promptForSlot, - waitForUserInput: promptForNewIntent, -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/LexCodeHookInterfaces.ts b/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/LexCodeHookInterfaces.ts deleted file mode 100644 index 87c4960..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/src/sharedLibraries/LexCodeHookInterfaces.ts +++ /dev/null @@ -1,266 +0,0 @@ -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: MIT-0 - -import { DialogAction, Intent, Message, SessionState, Slot, SentimentResponse } from "@aws-sdk/client-lex-runtime-v2" -import { QueryResult } from "@aws-sdk/client-kendra" - -export interface LexCodeHookResponse { - /** - * The current state of the conversation with the user. - * - * The actual contents of the structure depends on the type of dialog action. - */ - sessionState: LambdaCodeHookSessionState - - /** - * One or more messages that Amazon Lex V2 shows to the customer to perform the next turn of the conversation. - * If you don't supply messages, Amazon Lex V2 uses the appropriate message defined when the bot was created - * - * Required if dialogAction.type is ElicitIntent. - */ - messages?: Message[] - - /** - * Request-specific attributes - */ - requestAttributes?: Attributes -} - -/** - * Note that per the docs https://docs.aws.amazon.com/lexv2/latest/dg/lambda.html the input format may change - * without a corresponding change to the messageVersion - * - * If this happens this interface will need updated, it is designed as a guide to allow you more easily understand - * and create code that can use this event and not as official documentation. - */ -export interface LexCodeHookInputEvent { - /** - * The version of the message that identifies the format of the event data going into the Lambda function - * and the expected format of the response from a Lambda function. - * In the current implementation, only message version 1.0 is supported. - * - * You configure this value when you define an intent, in the Console this defaulted to 1.0 and doesn't show onscreen. - */ - messageVersion: "1.0" | string - - /** - * Session identifier used for the conversation. - */ - sessionId: string - - /** - * The action that called the Lambda function. - * - * When the source is DialogCodeHook, the Lambda function was called after input from the user. - * - * When the source is FulfillmentCodeHook the Lambda function was called after all required slots have been - * filled and the intent is ready for fulfillment. - */ - invocationSource: InvocationSource - - /** - * A value that indicates the specific Dialog code hook that invoked the Lambda function - * within the initial response, slots, or confirmation response. These labels are set when creating the Intent and are optional. - * - * Maximum 100 characters. Valid characters: A-Z, a-z, 0-9, -, _ - */ - invocationLabel?: string - - /** - * The mode of the user utterance (text, speech, DTMF) - */ - inputMode: InputMode - - /** - * The mode the bot will use for the response (text or speech) - * If the value is text/plain;charset=utf-8, Amazon Lex V2 returns text in the response. - * If the value begins with audio/, Amazon Lex V2 returns speech in the response. - * Amazon Lex V2 uses Amazon Polly to generate the speech using the configuration that you specified in the responseContentType parameter. - * The following are the accepted values: audio/mpeg, audio/ogg, audio/pcm (16 KHz), audio/* (defaults to mpeg), text/plain; charset=utf-8 - */ - responseContentType: string - - /** - * The text that was used to process the input from the user. - * - * For text or DTMF input, this is the text that the user typed. - * For speech input, this is the text that was recognized from the speech. - */ - inputTranscript: string - rawInputTranscript?: string - - /** - * One or more transcriptions that Amazon Lex V2 considers possible matches to the user's audio utterance. - * - * Alternate transcriptions are only supported for 8 kHz audio input, and this object will not appear on other - * forms of audio, though will appear on text inputs and show a single transcription with a confidence of 1. - * - * See https://docs.aws.amazon.com/lexv2/latest/dg/using-transcript-confidence-scores.html - */ - transcriptions?: Transcription[] - - /** - * Information about the bot that processed the request - */ - bot: Bot - - /** - * One or more intents that Amazon Lex V2 considers possible matches to the user's utterance ordered by confidence. - * - * The Interpretation object differs from the API_runtime_Interpretation because of the format of the nluConfidence property. - */ - interpretations: LambdaCodeHookInterpretation[] - - /** - * The next state of the dialog between the user and the bot if the Lambda function sets the dialogAction of the sessionState to Delegate. - * - * If you override the dialog behavior in sessionState the next state depends on the settings that you return from your Lambda function and not - * the state proposed - * - * This structure is only present when the invocationSource field is DialogCodeHook and when the proposed dialog action is ElicitSlot, - * and can be used to add in Runtime Hints at the right point in the conversation. - */ - proposedNextState?: ProposedNextState - - /** - * Request-specific attributes that the client sends in the request. - * - * Request attributes should be used to pass information that doesn't need to persist for the entire session. - */ - requestAttributes?: Attributes - - /** - * The current state of the conversation between the user and your Amazon Lex V2 bot - */ - sessionState: LambdaCodeHookSessionState -} - -/** - * Map of key/value pairs - */ -export type Attributes = Record - -/** - * The Lambda function event Session state differs from the API_runtime_SessionState - * because of the format of the Intent - */ -export interface LambdaCodeHookSessionState extends SessionState { - sessionAttributes: Attributes - intent?: LambdaCodeHookSessionStateIntent -} - -/** - * The Lambda function event Intent state differs from the API_runtime_Intent - * because it can optionally include the kendraResponse when the intent is KendraSearchIntent - */ -export interface LambdaCodeHookSessionStateIntent extends Intent { - kendraResponse?: QueryResult -} - -export interface Transcription { - transcription: string - transcriptionConfidence: number - resolvedContext: { - intent: string - } - resolvedSlots: Record -} - -/** - * The predicted next state of the dialog between the user and the bot if the Lambda function sets the dialogAction of the sessionState to Delegate. - * - * If you override the dialog behavior in sessionState, the next state depends on the settings that you return from your Lambda function. - * - * You can use the information to modify your Lambda function's behavior based on what Amazon Lex V2 proposes as the next action. - */ -export interface ProposedNextState { - dialogAction: DialogAction - intent: Intent - - /** - * Indicates the number of times this slot has been prompted for in this session - * - * You can set the maximum number of consecutive retries when creating the Slot (up to 5). - */ - prompt: { - attempt?: PromptAttempt | string - } -} - -/** - * The Interpretation object differs from the API_runtime_Interpretation only because of the format of the nluConfidence property. - */ -export interface LambdaCodeHookInterpretation { - /** - * A score that indicates the confidence that Amazon Lex V2 has that an intent is the one that satisfies the user's intent. - * - * This differs from the nluConfidence in the API_runtime_Interpretation because this just returns a number and not an API_runtime_ConfidenceScore object - */ - nluConfidence?: number - - /** - * Provides information about the sentiment expressed in a user's response in a conversation. Sentiments are determined using Amazon Comprehend. - * - * Sentiments are only returned if they are enabled for the bot. - */ - sentimentResponse?: SentimentResponse - - /** - * List of intents that might satisfy the user's utterance. The intents are ordered by the confidence score. - */ - intent?: Intent -} - -export interface Bot { - /** - * The identifier assigned to the bot when you created it. - * You can see the bot ID in the Amazon Lex V2 console on the bot Settings page. - */ - id: string - - /** - * The name that you gave the bot when you created it. - */ - name: string - - /** - * The identifier assigned to the bot alias when you created it. You can see the bot alias ID in the Amazon Lex V2 console on the Aliases page. - * If you can't see the alias ID in the list, choose the gear icon on the upper right and turn on Alias ID. - */ - aliasId: string - - /** - * The name you gave the bot alias when you created it. - */ - aliasName: string - - /** - * The identifier of the locale that you used for your bot. For a list of locales, see Languages and locales supported by Amazon Lex V2.* - */ - localeId: string - - /** - * The version of the bot that processed the request. - */ - version: string -} - -export const enum PromptAttempt { - INITIAL = "Initial", - RETRY_1 = "Retry1", - RETRY_2 = "Retry2", - RETRY_3 = "Retry3", - RETRY_4 = "Retry4", - RETRY_5 = "Retry5", -} - -export const enum InvocationSource { - DIALOG_CODE_HOOK = "DialogCodeHook", - FULFILLMENT_CODE_HOOK = "FulfillmentCodeHook", -} - -export const enum InputMode { - DTMF = "DTMF", - SPEECH = "Speech", - TEXT = "Text", -} diff --git a/projects/AmazonLexv2LambdaIntegrationExamples/tsconfig.json b/projects/AmazonLexv2LambdaIntegrationExamples/tsconfig.json deleted file mode 100644 index 2100124..0000000 --- a/projects/AmazonLexv2LambdaIntegrationExamples/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "es2020", - "module": "commonjs", - "lib": ["es2020", "dom"], - "declaration": true, - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, - "inlineSourceMap": true, - "inlineSources": true, - "experimentalDecorators": true, - "strictPropertyInitialization": false, - "esModuleInterop": true, - "typeRoots": ["./node_modules/@types"] - }, - "exclude": ["node_modules", "cdk.out"] -}