diff --git a/.github/branch-name-validation.sh b/.github/branch-name-validation.sh index e071a65ae..20cd856f5 100755 --- a/.github/branch-name-validation.sh +++ b/.github/branch-name-validation.sh @@ -3,6 +3,7 @@ set -e local_branch=${1} +[ -z "${1}" ] && local_branch=$(git rev-parse --abbrev-ref HEAD) valid_branch='^[a-z][a-z0-9-]*$' @@ -15,7 +16,7 @@ join_by() { local IFS='|'; echo "$*"; } #creates glob match to check for reserved words used in branch names which would trigger failures glob=$(join_by $(for i in ${reserved_words[@]}; do echo "^$i-|-$i$|-$i-|^$i$"; done;)) -if [[ ! $local_branch =~ $valid_branch ]] || [[ $local_branch =~ $glob ]] || [[ ${#local_branch} -gt 64 ]]; then +if [[ ! $local_branch =~ $valid_branch ]] || [[ $local_branch =~ $glob ]] || [[ ${#local_branch} -gt 20 ]]; then echo """ ------------------------------------------------------------------------------------------------------------------------------ ERROR: Please read below @@ -28,7 +29,7 @@ if [[ ! $local_branch =~ $valid_branch ]] || [[ $local_branch =~ $glob ]] || [[ Therefore, the branch name must be a valid service name. Branch name must be all lower case with no spaces and no underscores. From Serverless: - A service name should only contain alphanumeric (case sensitive) and hyphens. It should start with an alphabetic character and shouldnt exceed 128 characters. + A service name should only contain alphanumeric (case sensitive) and hyphens. It should start with an alphabetic character and shouldnt exceed 20 characters. For Github Actions support, please push your code to a new branch with a name that meets Serverless' service name requirements. So, make a new branch with a name that begins with a letter and is made up of only letters, numbers, and hyphens... then delete this branch. ------------------------------------------------------------------------------------------------------------------------------ diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 37ba909e0..11fd87459 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -9,7 +9,10 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: "3.10" + - name: Configure pre-commit to skip branch name validation + run: | + echo "SKIP=branch-name-validation" >> $GITHUB_ENV - uses: pre-commit/action@v3.0.1 - uses: actions/setup-node@v4 with: diff --git a/.gitignore b/.gitignore index 77a7db596..9c56beeeb 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ services/database/local_buckets /playwright-report/ /blob-report/ /playwright/.cache/ +playwright/.auth diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 126382d30..bed55f249 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -38,8 +38,6 @@ repos: args: - --exclude-files - .*test\.json - - --exclude-files - - .*\.postman_collection\.json - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. rev: v0.0.272 @@ -49,3 +47,10 @@ repos: rev: v8.12.0 hooks: - id: gitleaks + - repo: local + hooks: + - id: branch-name-validation + name: branch-name-validation + entry: .github/branch-name-validation.sh + language: script + pass_filenames: false diff --git a/README.md b/README.md index 8fb7fdfe2..078b5a7a1 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,12 @@ MFP is the CMCS MDCT application for collecting state data related to the [Money The MFP demonstration supports state efforts for rebalancing their long-term services and supports system so that individuals have a choice of where they live and receive services. From the start of the program in 2008 through the end of 2020, states have transitioned over 107,000 people to community living under MFP. +Project Goals: +- Increase the use of home and community-based services (HCBS) in the Medicaid program +- Eliminate barriers or mechanisms that prevent or restrict the flexible use of Medicaid funds to enable Medicaid-eligible individuals to receive support for appropriate and necessary long-term services and supports in the settings of their choice +- Increase the ability of state Medicaid programs to assure continued provision of HCBS to eligible individuals who choose to transition from an institutional to a community setting +- Ensure that procedures are in place to provide quality assurance for eligible individuals receiving Medicaid HCBS and to provide for continuous quality improvement in such services + ## Table of Contents - [Quick Start](#quick-start) @@ -90,8 +96,6 @@ Local dev is built around the Serverless plugin [serverless-offline](https://git Local authorization bypasses Cognito. The frontend mimics login in local storage with a mock user and sends an id in the `cognito-identity-id` header on every request. `serverless-offline` expects that and sets it as the cognitoId in the requestContext for your lambdas, just like Cognito would in AWS. -The [postman folder](./postman/) contains a full API collection and environment for this application. See the [README](./postman/README.md) for more information. - ## Testing ### Unit Testing diff --git a/package.json b/package.json index 0b71e9921..57778327b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@axe-core/playwright": "^4.10.0", "@faker-js/faker": "^8.4.1", - "@playwright/test": "^1.44.0", + "@playwright/test": "^1.48.0", "@serverless/compose": "^1.3.0", "@stratiformdigital/serverless-stage-destroyer": "^2.0.0", "@types/dotenv": "^8.2.0", diff --git a/playwright.config.ts b/playwright.config.ts index 7675f651d..1b02e7512 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -37,9 +37,15 @@ export default defineConfig({ /* Configure projects for major browsers */ projects: [ + { + name: "setup", + use: { ...devices["Desktop Chrome"] }, + testMatch: /.*\.setup\.ts/, + }, { name: "chromium", use: { ...devices["Desktop Chrome"] }, + dependencies: ["setup"], }, ], diff --git a/postman/MFP.postman_collection.json b/postman/MFP.postman_collection.json deleted file mode 100644 index b5ac8e63d..000000000 --- a/postman/MFP.postman_collection.json +++ /dev/null @@ -1,667 +0,0 @@ -{ - "info": { - "_postman_id": "79a36b36-fb62-4847-96de-b29746a77218", - "name": "MFP", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "28634549" - }, - "item": [ - { - "name": "Banners", - "item": [ - { - "name": "Get Banner", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "javascript" - } - } - }, - "url": { - "raw": "localhost:3030/local/banners/{{admin-banner-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "banners", - "{{admin-banner-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Create Banner", - "request": { - "method": "POST", - "header": [ - { - "key": "x-api-key", - "value": "{{admin-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"key\": \"admin-banner-id\",\n \"title\": \"title\",\n \"description\": \"description\",\n \"startDate\": 1641013200000,\n \"endDate\": 1962782399000\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/banners/{{admin-banner-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "banners", - "{{admin-banner-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Delete Banner", - "request": { - "method": "DELETE", - "header": [ - { - "key": "x-api-key", - "value": "{{admin-x-api-key}}", - "type": "default" - } - ], - "url": { - "raw": "localhost:3030/local/banners/{{admin-banner-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "banners", - "{{admin-banner-id}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "WP", - "item": [ - { - "name": "Get WP Report", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "javascript" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/WP/{{state}}/{{wp-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "WP", - "{{state}}", - "{{wp-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Get WP Reports by state", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "javascript" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/WP/{{state}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "WP", - "{{state}}" - ] - } - }, - "response": [] - }, - { - "name": "Create WP", - "request": { - "method": "POST", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"metadata\": {\n \"submissionName\": \"Work Plan\",\n \"lastAlteredBy\": \"User Name\",\n \"locked\": false,\n \"previousRevisions\": [],\n \"reportType\": \"WP\",\n \"status\": \"Not started\",\n \"isComplete\": false\n },\n \"fieldData\": {\n \"submissionName\": \"Work Plan\",\n \"targetPopulations\": [\n {\n \"id\": \"2Vd02CVUtKgBETwqzDXpSIhi\",\n \"transitionBenchmarks_targetPopulationName\": \"Older adults\",\n \"isRequired\": true\n },\n {\n \"id\": \"2Vd02HAezQkxNu2ShmlQONHa\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with physical disabilities (PD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"PD\",\n \"isRequired\": true\n },\n {\n \"id\": \"2Vd02IvLwE59ebYAjfiU7H66\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with intellectual and developmental disabilities (I/DD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"I/DD\",\n \"isRequired\": true\n },\n {\n \"id\": \"2Vd02J1FHl3Ka1DbtU5FMSDh\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with mental health and substance use disorders (MH/SUD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"MH/SUD\",\n \"isRequired\": true\n }\n ],\n \"stateName\": \"{{stateName}}\",\n \"submissionCount\": 0\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/WP/{{state}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "WP", - "{{state}}" - ] - } - }, - "response": [] - }, - { - "name": "Fill out WP Report", - "request": { - "method": "PUT", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"metadata\": {\n \"status\": \"In progress\",\n \"lastAlteredBy\": \"User Name\"\n },\n \"fieldData\": {\n \"targetPopulations\": [\n {\n \"id\": \"2Vd02CVUtKgBETwqzDXpSIhi\",\n \"transitionBenchmarks_targetPopulationName\": \"Older adults\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIuHjl15upf6tLcgcWd\",\n \"value\": \"Yes\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"10\",\n \"quarterlyProjections2024Q2\": \"11\",\n \"quarterlyProjections2024Q3\": \"12\",\n \"quarterlyProjections2024Q4\": \"13\",\n \"quarterlyProjections2025Q1\": \"14\",\n \"quarterlyProjections2025Q2\": \"15\",\n \"quarterlyProjections2025Q3\": \"16\",\n \"quarterlyProjections2025Q4\": \"17\",\n \"quarterlyProjections2026Q1\": \"18\",\n \"quarterlyProjections2026Q2\": \"19\",\n \"quarterlyProjections2026Q3\": \"20\",\n \"quarterlyProjections2026Q4\": \"21\"\n },\n {\n \"id\": \"2Vd02HAezQkxNu2ShmlQONHa\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with physical disabilities (PD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"PD\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIwERkSKEGVUU1g8E1v\",\n \"value\": \"No\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n },\n {\n \"id\": \"2Vd02IvLwE59ebYAjfiU7H66\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with intellectual and developmental disabilities (I/DD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"I/DD\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIuHjl15upf6tLcgcWd\",\n \"value\": \"Yes\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"20\",\n \"quarterlyProjections2024Q2\": \"22\",\n \"quarterlyProjections2024Q3\": \"24\",\n \"quarterlyProjections2024Q4\": \"26\",\n \"quarterlyProjections2025Q1\": \"28\",\n \"quarterlyProjections2025Q2\": \"30\",\n \"quarterlyProjections2025Q3\": \"32\",\n \"quarterlyProjections2025Q4\": \"34\",\n \"quarterlyProjections2026Q1\": \"36\",\n \"quarterlyProjections2026Q2\": \"38\",\n \"quarterlyProjections2026Q3\": \"40\",\n \"quarterlyProjections2026Q4\": \"42\"\n },\n {\n \"id\": \"2Vd02J1FHl3Ka1DbtU5FMSDh\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with mental health and substance use disorders (MH/SUD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"MH/SUD\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIwERkSKEGVUU1g8E1v\",\n \"value\": \"No\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"strategy_explaination\": \"test\",\n \"strategy_additionalDetails\": \"test\",\n \"instructions_selfDirectedInitiatives\": [\n {\n \"key\": \"instructions_selfDirectedInitiatives-3DGAqqnOBE2kwKVFMxUt3A\",\n \"value\": \"No\"\n }\n ],\n \"instructions_tribalInitiatives\": [\n {\n \"key\": \"instructions_tribalInitiatives-3DGAqqnOBE2kwKVFMxUt3A\",\n \"value\": \"No\"\n }\n ],\n \"initiative\": [\n {\n \"id\": \"0233117-8310-812-e28a-6e1d33e3d1e1\",\n \"type\": \"initiative\",\n \"initiative_name\": \"test transitions and tcs\",\n \"initiative_wpTopic\": [\n {\n \"key\": \"initiative_wpTopic-VjQ0OFqior9Dxu5RRNiZ5u\",\n \"value\": \"Transitions and transition coordination services \"\n }\n ],\n \"initiative_wp_otherTopic\": \"\",\n \"isOtherEntity\": true,\n \"defineInitiative_describeInitiative\": \"initiative name\",\n \"defineInitiative_targetPopulations\": [\n {\n \"key\": \"targetPopulations-2Vd02CVUtKgBETwqzDXpSIhi\",\n \"value\": \"Older adults\"\n },\n {\n \"key\": \"targetPopulations-2Vd02IvLwE59ebYAjfiU7H66\",\n \"value\": \"Individuals with intellectual and developmental disabilities (I/DD)\"\n },\n {\n \"key\": \"targetPopulations-3Nc13O5GHA6Hc4KheO5FMSD2\",\n \"value\": \"HCBS infrastructure/system-level development\"\n }\n ],\n \"defineInitiative_projectedStartDate\": \"02/02/2022\",\n \"defineInitiative_projectedEndDate\": [\n {\n \"key\": \"defineInitiative_projectedEndDate-TR6HoXF3Unf2QX0zzDg2Kp\",\n \"value\": \"No\"\n }\n ],\n \"defineInitiative_projectedEndDate_value\": \"\",\n \"evaluationPlan\": [\n {\n \"id\": \"fc50c3-d41a-131a-ac5a-b73ab8361e\",\n \"evaluationPlan_objectiveName\": \"objective\",\n \"evaluationPlan_description\": \"description\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"details\",\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"fundingSources\": [\n {\n \"id\": \"17f1df3-4a0-a48f-8354-db0223b43b8c\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZCNtbcjRPq3evd1NI6\",\n \"value\": \"MFP cooperative agreement funds for administrative activities\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"12.00\",\n \"fundingSources_quarters2024Q2\": \"13.00\",\n \"fundingSources_quarters2024Q3\": \"14.00\",\n \"fundingSources_quarters2024Q4\": \"15.00\",\n \"fundingSources_quarters2025Q1\": \"16.00\",\n \"fundingSources_quarters2025Q2\": \"17.00\",\n \"fundingSources_quarters2025Q3\": \"18.00\",\n \"fundingSources_quarters2025Q4\": \"19.00\",\n \"fundingSources_quarters2026Q1\": \"20.00\",\n \"fundingSources_quarters2026Q2\": \"21.00\",\n \"fundingSources_quarters2026Q3\": \"22.00\",\n \"fundingSources_quarters2026Q4\": \"23.00\",\n \"initiative_wp_otherTopic\": \"\"\n }\n ]\n },\n {\n \"id\": \"717e8d5-88c-1dbf-cb06-15a755e5e468\",\n \"type\": \"initiative\",\n \"initiative_name\": \"test housing-related supports\",\n \"initiative_wpTopic\": [\n {\n \"key\": \"initiative_wpTopic-wbUsMMqVP7q1n10szK5h5S\",\n \"value\": \"Housing-related supports \"\n }\n ],\n \"initiative_wp_otherTopic\": \"\",\n \"isOtherEntity\": true,\n \"defineInitiative_describeInitiative\": \"key activities\",\n \"defineInitiative_targetPopulations\": [\n {\n \"key\": \"targetPopulations-2Vd02CVUtKgBETwqzDXpSIhi\",\n \"value\": \"Older adults\"\n },\n {\n \"key\": \"targetPopulations-3Nc13O5GHA6Hc4KheO5FMSD2\",\n \"value\": \"HCBS infrastructure/system-level development\"\n },\n {\n \"key\": \"targetPopulations-2Vd02IvLwE59ebYAjfiU7H66\",\n \"value\": \"Individuals with intellectual and developmental disabilities (I/DD)\"\n }\n ],\n \"defineInitiative_projectedStartDate\": \"02/02/2022\",\n \"defineInitiative_projectedEndDate\": [\n {\n \"key\": \"defineInitiative_projectedEndDate-WNsSaAHeDvRD2Pjkz6DcOE\",\n \"value\": \"Yes\"\n }\n ],\n \"defineInitiative_projectedEndDate_value\": \"02/02/2029\",\n \"evaluationPlan\": [\n {\n \"id\": \"d1f1dd1-0501-c46f-4a8c-6d28c5c4ddb\",\n \"evaluationPlan_objectiveName\": \"objective\",\n \"evaluationPlan_description\": \"description\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-7FP4jcg4jK7Ssqp3cCW5vQ\",\n \"value\": \"Yes\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"additional detail\",\n \"quarterlyProjections2024Q1\": \"99\",\n \"quarterlyProjections2024Q2\": \"99\",\n \"quarterlyProjections2024Q3\": \"99\",\n \"quarterlyProjections2024Q4\": \"99\",\n \"quarterlyProjections2025Q1\": \"99\",\n \"quarterlyProjections2025Q2\": \"99\",\n \"quarterlyProjections2025Q3\": \"99\",\n \"quarterlyProjections2025Q4\": \"99\",\n \"quarterlyProjections2026Q1\": \"99\",\n \"quarterlyProjections2026Q2\": \"99\",\n \"quarterlyProjections2026Q3\": \"99\",\n \"quarterlyProjections2026Q4\": \"99\"\n },\n {\n \"id\": \"0bafc3b-366c-181d-f1ee-a6026e606e5e\",\n \"evaluationPlan_objectiveName\": \"second obj\",\n \"evaluationPlan_description\": \"more measures\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"details\",\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"fundingSources\": [\n {\n \"id\": \"0d56d1-7bc-00c5-7841-a162068427e\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZ9A92OivbZhKvY8pE4hB65c\",\n \"value\": \"MFP cooperative agreement funds for qualified HCBS and demonstration services\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"100.00\",\n \"fundingSources_quarters2024Q2\": \"200.00\",\n \"fundingSources_quarters2024Q3\": \"100.00\",\n \"fundingSources_quarters2024Q4\": \"200.00\",\n \"fundingSources_quarters2025Q1\": \"200.00\",\n \"fundingSources_quarters2025Q2\": \"300.00\",\n \"fundingSources_quarters2025Q3\": \"200.00\",\n \"fundingSources_quarters2025Q4\": \"300.00\",\n \"fundingSources_quarters2026Q1\": \"300.00\",\n \"fundingSources_quarters2026Q2\": \"400.00\",\n \"fundingSources_quarters2026Q3\": \"300.00\",\n \"fundingSources_quarters2026Q4\": \"400.00\",\n \"initiative_wp_otherTopic\": \"\"\n },\n {\n \"id\": \"d7de16a-cc3d-26cc-8888-f8efa6dfb6fa\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZCRWieGr1Z49QX5Aqc\",\n \"value\": \"State or territory equivalent funds attributable to the MFP-enhanced match\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"80.00\",\n \"fundingSources_quarters2024Q2\": \"90.00\",\n \"fundingSources_quarters2024Q3\": \"100.00\",\n \"fundingSources_quarters2024Q4\": \"200.00\",\n \"fundingSources_quarters2025Q1\": \"120.00\",\n \"fundingSources_quarters2025Q2\": \"240.00\",\n \"fundingSources_quarters2025Q3\": \"201.00\",\n \"fundingSources_quarters2025Q4\": \"100.00\",\n \"fundingSources_quarters2026Q1\": \"200.00\",\n \"fundingSources_quarters2026Q2\": \"100.00\",\n \"fundingSources_quarters2026Q3\": \"89.00\",\n \"fundingSources_quarters2026Q4\": \"900.00\",\n \"initiative_wp_otherTopic\": \"\"\n }\n ]\n },\n {\n \"id\": \"a3c64a8-52ea-b5c1-afce-46302c4aa7c\",\n \"type\": \"initiative\",\n \"initiative_name\": \"test qmai\",\n \"initiative_wpTopic\": [\n {\n \"key\": \"initiative_wpTopic-SdaFlF3DJyzKcHCCu3Zylm\",\n \"value\": \"Quality measurement and improvement \"\n }\n ],\n \"initiative_wp_otherTopic\": \"\",\n \"isOtherEntity\": true,\n \"defineInitiative_describeInitiative\": \"init\",\n \"defineInitiative_targetPopulations\": [\n {\n \"key\": \"targetPopulations-2Vd02CVUtKgBETwqzDXpSIhi\",\n \"value\": \"Older adults\"\n },\n {\n \"key\": \"targetPopulations-2Vd02IvLwE59ebYAjfiU7H66\",\n \"value\": \"Individuals with intellectual and developmental disabilities (I/DD)\"\n },\n {\n \"key\": \"targetPopulations-3Nc13O5GHA6Hc4KheO5FMSD2\",\n \"value\": \"HCBS infrastructure/system-level development\"\n }\n ],\n \"defineInitiative_projectedStartDate\": \"02/02/2022\",\n \"defineInitiative_projectedEndDate\": [\n {\n \"key\": \"defineInitiative_projectedEndDate-TR6HoXF3Unf2QX0zzDg2Kp\",\n \"value\": \"No\"\n }\n ],\n \"defineInitiative_projectedEndDate_value\": \"\",\n \"evaluationPlan\": [\n {\n \"id\": \"6245730-f1a7-846f-32b4-fbfe7040c6e0\",\n \"evaluationPlan_objectiveName\": \"obj\",\n \"evaluationPlan_description\": \"performance measures\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"test\",\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"fundingSources\": [\n {\n \"id\": \"c73235e-8fec-37-2062-b502384bac6\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZDJ9qaKKOk78ztBdiB\",\n \"value\": \"MFP cooperative agreement funds for capacity-building initiatives\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"100.00\",\n \"fundingSources_quarters2024Q2\": \"100.00\",\n \"fundingSources_quarters2024Q3\": \"100.00\",\n \"fundingSources_quarters2024Q4\": \"100.00\",\n \"fundingSources_quarters2025Q1\": \"100.00\",\n \"fundingSources_quarters2025Q2\": \"100.00\",\n \"fundingSources_quarters2025Q3\": \"100.00\",\n \"fundingSources_quarters2025Q4\": \"200.00\",\n \"fundingSources_quarters2026Q1\": \"200.00\",\n \"fundingSources_quarters2026Q2\": \"200.00\",\n \"fundingSources_quarters2026Q3\": \"200.00\",\n \"fundingSources_quarters2026Q4\": \"200.00\",\n \"initiative_wp_otherTopic\": \"\"\n }\n ]\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/WP/{{state}}/{{wp-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "WP", - "{{state}}", - "{{wp-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Submit WP Report", - "request": { - "method": "POST", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/submit/WP/{{state}}/{{wp-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "submit", - "WP", - "{{state}}", - "{{wp-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Approve WP Report", - "request": { - "method": "PUT", - "header": [ - { - "key": "x-api-key", - "value": "{{admin-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/approve/WP/{{state}}/{{wp-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "approve", - "WP", - "{{state}}", - "{{wp-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Unlock WP Report", - "request": { - "method": "PUT", - "header": [ - { - "key": "x-api-key", - "value": "{{admin-x-api-key}}", - "type": "text" - } - ], - "url": { - "raw": "localhost:3030/local/reports/release/WP/{{state}}/{{wp-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "release", - "WP", - "{{state}}", - "{{wp-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Toggle archive WP", - "request": { - "method": "PUT", - "header": [ - { - "key": "x-api-key", - "value": "{{admin-x-api-key}}", - "type": "text" - } - ], - "url": { - "raw": "localhost:3030/local/reports/archive/WP/{{state}}/{{wp-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "archive", - "WP", - "{{state}}", - "{{wp-id}}" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "SAR", - "item": [ - { - "name": "Get SAR Report", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "javascript" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/SAR/{{state}}/{{sar-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "SAR", - "{{state}}", - "{{sar-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Get SAR Reports by state", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "javascript" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/SAR/{{state}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "SAR", - "{{state}}" - ] - } - }, - "response": [] - }, - { - "name": "Create SAR", - "request": { - "method": "POST", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"metadata\": {\n \"submissionName\": \"{{stateName}} MFP Work Plan 2024 - Period 1\",\n \"stateOrTerritory\": \"{{state}}\",\n \"reportPeriod\": \"1\",\n \"lastAlteredBy\": \"User Name\",\n \"locked\": false,\n \"previousRevisions\": [],\n \"finalSar\": [\n {\n \"key\": \"finalSar-nrRmirBoVQv0ysWnEejNZD\",\n \"value\": \"Yes\"\n }\n ],\n \"populations\": [\n {\n \"id\": \"targetPopulations-2Vd02CVUtKgBETwqzDXpSIhi\",\n \"label\": \"Older adults\",\n \"name\": \"Older adults\",\n \"value\": \"Older adults\"\n },\n {\n \"id\": \"targetPopulations-2Vd02IvLwE59ebYAjfiU7H66\",\n \"label\": \"Individuals with intellectual and developmental disabilities (I/DD)\",\n \"name\": \"Individuals with intellectual and developmental disabilities (I/DD)\",\n \"value\": \"Individuals with intellectual and developmental disabilities (I/DD)\"\n }\n ],\n \"reportType\": \"SAR\",\n \"status\": \"Not started\",\n \"isComplete\": false\n },\n \"fieldData\": {\n \"submissionName\": \"{{stateName}} MFP Work Plan 2024 - Period 1\",\n \"stateOrTerritory\": \"{{state}}\",\n \"reportPeriod\": \"1\",\n \"stateName\": \"{{stateName}}\",\n \"submissionCount\": 0\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/SAR/{{state}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "SAR", - "{{state}}" - ] - } - }, - "response": [] - }, - { - "name": "Fill out SAR Report", - "request": { - "method": "PUT", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"metadata\": {\n \"status\": \"In progress\",\n \"lastAlteredBy\": \"User Name\"\n },\n \"fieldData\": {\n \"targetPopulations\": [\n {\n \"id\": \"2Vd02CVUtKgBETwqzDXpSIhi\",\n \"transitionBenchmarks_targetPopulationName\": \"Older adults\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIuHjl15upf6tLcgcWd\",\n \"value\": \"Yes\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"10\",\n \"quarterlyProjections2024Q2\": \"11\",\n \"quarterlyProjections2024Q3\": \"12\",\n \"quarterlyProjections2024Q4\": \"13\",\n \"quarterlyProjections2025Q1\": \"14\",\n \"quarterlyProjections2025Q2\": \"15\",\n \"quarterlyProjections2025Q3\": \"16\",\n \"quarterlyProjections2025Q4\": \"17\",\n \"quarterlyProjections2026Q1\": \"18\",\n \"quarterlyProjections2026Q2\": \"19\",\n \"quarterlyProjections2026Q3\": \"20\",\n \"quarterlyProjections2026Q4\": \"21\"\n },\n {\n \"id\": \"2Vd02HAezQkxNu2ShmlQONHa\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with physical disabilities (PD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"PD\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIwERkSKEGVUU1g8E1v\",\n \"value\": \"No\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n },\n {\n \"id\": \"2Vd02IvLwE59ebYAjfiU7H66\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with intellectual and developmental disabilities (I/DD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"I/DD\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIuHjl15upf6tLcgcWd\",\n \"value\": \"Yes\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"20\",\n \"quarterlyProjections2024Q2\": \"22\",\n \"quarterlyProjections2024Q3\": \"24\",\n \"quarterlyProjections2024Q4\": \"26\",\n \"quarterlyProjections2025Q1\": \"28\",\n \"quarterlyProjections2025Q2\": \"30\",\n \"quarterlyProjections2025Q3\": \"32\",\n \"quarterlyProjections2025Q4\": \"34\",\n \"quarterlyProjections2026Q1\": \"36\",\n \"quarterlyProjections2026Q2\": \"38\",\n \"quarterlyProjections2026Q3\": \"40\",\n \"quarterlyProjections2026Q4\": \"42\"\n },\n {\n \"id\": \"2Vd02J1FHl3Ka1DbtU5FMSDh\",\n \"transitionBenchmarks_targetPopulationName\": \"Individuals with mental health and substance use disorders (MH/SUD)\",\n \"transitionBenchmarks_targetPopulationName_short\": \"MH/SUD\",\n \"isRequired\": true,\n \"transitionBenchmarks_applicableToMfpDemonstration\": [\n {\n \"key\": \"transitionBenchmarks_applicableToMfpDemonstration-2UObIwERkSKEGVUU1g8E1v\",\n \"value\": \"No\"\n }\n ],\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"instructions_selfDirectedInitiatives\": [\n {\n \"key\": \"instructions_selfDirectedInitiatives-3DGAqqnOBE2kwKVFMxUt3A\",\n \"value\": \"No\"\n }\n ],\n \"instructions_tribalInitiatives\": [\n {\n \"key\": \"instructions_tribalInitiatives-3DGAqqnOBE2kwKVFMxUt3A\",\n \"value\": \"No\"\n }\n ],\n \"initiative\": [\n {\n \"id\": \"0233117-8310-812-e28a-6e1d33e3d1e1\",\n \"type\": \"initiative\",\n \"initiative_name\": \"test transitions and tcs\",\n \"initiative_wpTopic\": [\n {\n \"key\": \"initiative_wpTopic-VjQ0OFqior9Dxu5RRNiZ5u\",\n \"value\": \"Transitions and transition coordination services \"\n }\n ],\n \"initiative_wp_otherTopic\": \"\",\n \"isOtherEntity\": true,\n \"defineInitiative_describeInitiative\": \"initiative name\",\n \"defineInitiative_targetPopulations\": [\n {\n \"key\": \"targetPopulations-2Vd02CVUtKgBETwqzDXpSIhi\",\n \"value\": \"Older adults\"\n },\n {\n \"key\": \"targetPopulations-2Vd02IvLwE59ebYAjfiU7H66\",\n \"value\": \"Individuals with intellectual and developmental disabilities (I/DD)\"\n },\n {\n \"key\": \"targetPopulations-3Nc13O5GHA6Hc4KheO5FMSD2\",\n \"value\": \"HCBS infrastructure/system-level development\"\n }\n ],\n \"defineInitiative_projectedStartDate\": \"02/02/2022\",\n \"defineInitiative_projectedEndDate\": [\n {\n \"key\": \"defineInitiative_projectedEndDate-TR6HoXF3Unf2QX0zzDg2Kp\",\n \"value\": \"No\"\n }\n ],\n \"defineInitiative_projectedEndDate_value\": \"\",\n \"evaluationPlan\": [\n {\n \"id\": \"fc50c3-d41a-131a-ac5a-b73ab8361e\",\n \"evaluationPlan_objectiveName\": \"objective\",\n \"evaluationPlan_description\": \"description\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"details\",\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"fundingSources\": [\n {\n \"id\": \"17f1df3-4a0-a48f-8354-db0223b43b8c\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZCNtbcjRPq3evd1NI6\",\n \"value\": \"MFP cooperative agreement funds for administrative activities\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"12.00\",\n \"fundingSources_quarters2024Q2\": \"13.00\",\n \"fundingSources_quarters2024Q3\": \"14.00\",\n \"fundingSources_quarters2024Q4\": \"15.00\",\n \"fundingSources_quarters2025Q1\": \"16.00\",\n \"fundingSources_quarters2025Q2\": \"17.00\",\n \"fundingSources_quarters2025Q3\": \"18.00\",\n \"fundingSources_quarters2025Q4\": \"19.00\",\n \"fundingSources_quarters2026Q1\": \"20.00\",\n \"fundingSources_quarters2026Q2\": \"21.00\",\n \"fundingSources_quarters2026Q3\": \"22.00\",\n \"fundingSources_quarters2026Q4\": \"23.00\",\n \"initiative_wp_otherTopic\": \"\"\n }\n ],\n \"fundingSources_projected_2024Q1_17f1df3-4a0-a48f-8354-db0223b43b8c\": \"12.00\",\n \"fundingSources_projected_2024Q2_17f1df3-4a0-a48f-8354-db0223b43b8c\": \"13.00\",\n \"objectiveProgress\": [\n {\n \"id\": \"fc50c3-d41a-131a-ac5a-b73ab8361e\",\n \"objectiveProgress_objectiveName\": \"objective\",\n \"objectiveProgress_description\": \"description\",\n \"objectiveProgress_targets\": \"targets\",\n \"objectiveProgress_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"objectiveProgress_additionalDetails\": \"details\",\n \"objectiveTargets_projections_2024Q1\": \"\",\n \"objectiveTargets_projections_2024Q2\": \"\",\n \"objectivesProgress_performanceMeasuresIndicators\": \"data for measures\",\n \"objectivesProgress_deliverablesMet\": [\n {\n \"key\": \"objectivesProgress_deliverablesMet-2WaO1Jj3pyUN0j9KjeOqR\",\n \"value\": \"Yes\"\n }\n ],\n \"objectivesProgress_deliverablesMet_otherText\": \"\"\n }\n ],\n \"isCopied\": true,\n \"initiativeProgress_describeProgress\": \"progress\",\n \"initiativeProgress_describeIssuesChallenges\": \"issues\",\n \"initiativeProgress_describeCollaborationsWithExternalParties\": \"collaborations\",\n \"fundingSources_actual_2024Q1_17f1df3-4a0-a48f-8354-db0223b43b8c\": \"12.00\",\n \"fundingSources_actual_2024Q2_17f1df3-4a0-a48f-8354-db0223b43b8c\": \"13.00\",\n \"expenditures_onTrackToFullExpendFunds\": [\n {\n \"key\": \"expenditures_onTrackToFullExpendFunds-2WaUKOjwgUvHO6CMAqE8aOC\",\n \"value\": \"Yes\"\n }\n ],\n \"expenditures_onTrackToFullExpendFunds-otherText\": \"\"\n },\n {\n \"id\": \"717e8d5-88c-1dbf-cb06-15a755e5e468\",\n \"type\": \"initiative\",\n \"initiative_name\": \"test housing-related supports\",\n \"initiative_wpTopic\": [\n {\n \"key\": \"initiative_wpTopic-wbUsMMqVP7q1n10szK5h5S\",\n \"value\": \"Housing-related supports \"\n }\n ],\n \"initiative_wp_otherTopic\": \"\",\n \"isOtherEntity\": true,\n \"defineInitiative_describeInitiative\": \"key activities\",\n \"defineInitiative_targetPopulations\": [\n {\n \"key\": \"targetPopulations-2Vd02CVUtKgBETwqzDXpSIhi\",\n \"value\": \"Older adults\"\n },\n {\n \"key\": \"targetPopulations-3Nc13O5GHA6Hc4KheO5FMSD2\",\n \"value\": \"HCBS infrastructure/system-level development\"\n },\n {\n \"key\": \"targetPopulations-2Vd02IvLwE59ebYAjfiU7H66\",\n \"value\": \"Individuals with intellectual and developmental disabilities (I/DD)\"\n }\n ],\n \"defineInitiative_projectedStartDate\": \"02/02/2022\",\n \"defineInitiative_projectedEndDate\": [\n {\n \"key\": \"defineInitiative_projectedEndDate-WNsSaAHeDvRD2Pjkz6DcOE\",\n \"value\": \"Yes\"\n }\n ],\n \"defineInitiative_projectedEndDate_value\": \"02/02/2029\",\n \"evaluationPlan\": [\n {\n \"id\": \"d1f1dd1-0501-c46f-4a8c-6d28c5c4ddb\",\n \"evaluationPlan_objectiveName\": \"objective\",\n \"evaluationPlan_description\": \"description\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-7FP4jcg4jK7Ssqp3cCW5vQ\",\n \"value\": \"Yes\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"additional detail\",\n \"quarterlyProjections2024Q1\": \"99\",\n \"quarterlyProjections2024Q2\": \"99\",\n \"quarterlyProjections2024Q3\": \"99\",\n \"quarterlyProjections2024Q4\": \"99\",\n \"quarterlyProjections2025Q1\": \"99\",\n \"quarterlyProjections2025Q2\": \"99\",\n \"quarterlyProjections2025Q3\": \"99\",\n \"quarterlyProjections2025Q4\": \"99\",\n \"quarterlyProjections2026Q1\": \"99\",\n \"quarterlyProjections2026Q2\": \"99\",\n \"quarterlyProjections2026Q3\": \"99\",\n \"quarterlyProjections2026Q4\": \"99\"\n },\n {\n \"id\": \"0bafc3b-366c-181d-f1ee-a6026e606e5e\",\n \"evaluationPlan_objectiveName\": \"second obj\",\n \"evaluationPlan_description\": \"more measures\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"details\",\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"fundingSources\": [\n {\n \"id\": \"0d56d1-7bc-00c5-7841-a162068427e\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZ9A92OivbZhKvY8pE4hB65c\",\n \"value\": \"MFP cooperative agreement funds for qualified HCBS and demonstration services\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"100.00\",\n \"fundingSources_quarters2024Q2\": \"200.00\",\n \"fundingSources_quarters2024Q3\": \"100.00\",\n \"fundingSources_quarters2024Q4\": \"200.00\",\n \"fundingSources_quarters2025Q1\": \"200.00\",\n \"fundingSources_quarters2025Q2\": \"300.00\",\n \"fundingSources_quarters2025Q3\": \"200.00\",\n \"fundingSources_quarters2025Q4\": \"300.00\",\n \"fundingSources_quarters2026Q1\": \"300.00\",\n \"fundingSources_quarters2026Q2\": \"400.00\",\n \"fundingSources_quarters2026Q3\": \"300.00\",\n \"fundingSources_quarters2026Q4\": \"400.00\",\n \"initiative_wp_otherTopic\": \"\"\n },\n {\n \"id\": \"d7de16a-cc3d-26cc-8888-f8efa6dfb6fa\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZCRWieGr1Z49QX5Aqc\",\n \"value\": \"State or territory equivalent funds attributable to the MFP-enhanced match\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"80.00\",\n \"fundingSources_quarters2024Q2\": \"90.00\",\n \"fundingSources_quarters2024Q3\": \"100.00\",\n \"fundingSources_quarters2024Q4\": \"200.00\",\n \"fundingSources_quarters2025Q1\": \"120.00\",\n \"fundingSources_quarters2025Q2\": \"240.00\",\n \"fundingSources_quarters2025Q3\": \"201.00\",\n \"fundingSources_quarters2025Q4\": \"100.00\",\n \"fundingSources_quarters2026Q1\": \"200.00\",\n \"fundingSources_quarters2026Q2\": \"100.00\",\n \"fundingSources_quarters2026Q3\": \"89.00\",\n \"fundingSources_quarters2026Q4\": \"900.00\",\n \"initiative_wp_otherTopic\": \"\"\n }\n ],\n \"fundingSources_projected_2024Q1_0d56d1-7bc-00c5-7841-a162068427e\": \"100.00\",\n \"fundingSources_projected_2024Q2_0d56d1-7bc-00c5-7841-a162068427e\": \"200.00\",\n \"fundingSources_projected_2024Q1_d7de16a-cc3d-26cc-8888-f8efa6dfb6fa\": \"80.00\",\n \"fundingSources_projected_2024Q2_d7de16a-cc3d-26cc-8888-f8efa6dfb6fa\": \"90.00\",\n \"objectiveProgress\": [\n {\n \"id\": \"d1f1dd1-0501-c46f-4a8c-6d28c5c4ddb\",\n \"objectiveProgress_objectiveName\": \"objective\",\n \"objectiveProgress_description\": \"description\",\n \"objectiveProgress_targets\": \"targets\",\n \"objectiveProgress_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-7FP4jcg4jK7Ssqp3cCW5vQ\",\n \"value\": \"Yes\"\n }\n ],\n \"objectiveProgress_additionalDetails\": \"additional detail\",\n \"objectiveTargets_projections_2024Q1\": \"99\",\n \"objectiveTargets_projections_2024Q2\": \"99\",\n \"objectivesProgress_performanceMeasuresIndicators\": \"data\",\n \"objectiveTargets_actual_2024Q1\": \"99\",\n \"objectiveTargets_actual_2024Q2\": \"99\",\n \"objectivesProgress_deliverablesMet\": [\n {\n \"key\": \"objectivesProgress_deliverablesMet-2WaO1Jj3pyUN0j9KjeOqR\",\n \"value\": \"Yes\"\n }\n ],\n \"objectivesProgress_deliverablesMet_otherText\": \"\"\n },\n {\n \"id\": \"0bafc3b-366c-181d-f1ee-a6026e606e5e\",\n \"objectiveProgress_objectiveName\": \"second obj\",\n \"objectiveProgress_description\": \"more measures\",\n \"objectiveProgress_targets\": \"targets\",\n \"objectiveProgress_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"objectiveProgress_additionalDetails\": \"details\",\n \"objectiveTargets_projections_2024Q1\": \"\",\n \"objectiveTargets_projections_2024Q2\": \"\",\n \"objectivesProgress_performanceMeasuresIndicators\": \"data\",\n \"objectivesProgress_deliverablesMet\": [\n {\n \"key\": \"objectivesProgress_deliverablesMet-2WaO1Jj3pyUN0j9KjeOqR\",\n \"value\": \"Yes\"\n }\n ],\n \"objectivesProgress_deliverablesMet_otherText\": \"\"\n }\n ],\n \"isCopied\": true,\n \"initiativeProgress_describeProgress\": \"progress\",\n \"initiativeProgress_describeIssuesChallenges\": \"issues\",\n \"initiativeProgress_describeCollaborationsWithExternalParties\": \"collaborations\",\n \"fundingSources_actual_2024Q1_0d56d1-7bc-00c5-7841-a162068427e\": \"100.00\",\n \"fundingSources_actual_2024Q2_0d56d1-7bc-00c5-7841-a162068427e\": \"200.00\",\n \"fundingSources_actual_2024Q1_d7de16a-cc3d-26cc-8888-f8efa6dfb6fa\": \"80.00\",\n \"fundingSources_actual_2024Q2_d7de16a-cc3d-26cc-8888-f8efa6dfb6fa\": \"90.00\",\n \"expenditures_onTrackToFullExpendFunds\": [\n {\n \"key\": \"expenditures_onTrackToFullExpendFunds-2WaUKOjwgUvHO6CMAqE8aOC\",\n \"value\": \"Yes\"\n }\n ],\n \"expenditures_onTrackToFullExpendFunds-otherText\": \"\"\n },\n {\n \"id\": \"a3c64a8-52ea-b5c1-afce-46302c4aa7c\",\n \"type\": \"initiative\",\n \"initiative_name\": \"test qmai\",\n \"initiative_wpTopic\": [\n {\n \"key\": \"initiative_wpTopic-SdaFlF3DJyzKcHCCu3Zylm\",\n \"value\": \"Quality measurement and improvement \"\n }\n ],\n \"initiative_wp_otherTopic\": \"\",\n \"isOtherEntity\": true,\n \"defineInitiative_describeInitiative\": \"init\",\n \"defineInitiative_targetPopulations\": [\n {\n \"key\": \"targetPopulations-2Vd02CVUtKgBETwqzDXpSIhi\",\n \"value\": \"Older adults\"\n },\n {\n \"key\": \"targetPopulations-2Vd02IvLwE59ebYAjfiU7H66\",\n \"value\": \"Individuals with intellectual and developmental disabilities (I/DD)\"\n },\n {\n \"key\": \"targetPopulations-3Nc13O5GHA6Hc4KheO5FMSD2\",\n \"value\": \"HCBS infrastructure/system-level development\"\n }\n ],\n \"defineInitiative_projectedStartDate\": \"02/02/2022\",\n \"defineInitiative_projectedEndDate\": [\n {\n \"key\": \"defineInitiative_projectedEndDate-TR6HoXF3Unf2QX0zzDg2Kp\",\n \"value\": \"No\"\n }\n ],\n \"defineInitiative_projectedEndDate_value\": \"\",\n \"evaluationPlan\": [\n {\n \"id\": \"6245730-f1a7-846f-32b4-fbfe7040c6e0\",\n \"evaluationPlan_objectiveName\": \"obj\",\n \"evaluationPlan_description\": \"performance measures\",\n \"evaluationPlan_targets\": \"targets\",\n \"evaluationPlan_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"evaluationPlan_additionalDetails\": \"test\",\n \"quarterlyProjections2024Q1\": \"\",\n \"quarterlyProjections2024Q2\": \"\",\n \"quarterlyProjections2024Q3\": \"\",\n \"quarterlyProjections2024Q4\": \"\",\n \"quarterlyProjections2025Q1\": \"\",\n \"quarterlyProjections2025Q2\": \"\",\n \"quarterlyProjections2025Q3\": \"\",\n \"quarterlyProjections2025Q4\": \"\",\n \"quarterlyProjections2026Q1\": \"\",\n \"quarterlyProjections2026Q2\": \"\",\n \"quarterlyProjections2026Q3\": \"\",\n \"quarterlyProjections2026Q4\": \"\"\n }\n ],\n \"fundingSources\": [\n {\n \"id\": \"c73235e-8fec-37-2062-b502384bac6\",\n \"fundingSources_wpTopic\": [\n {\n \"key\": \"fundingSources_wpTopic-2VLpZDJ9qaKKOk78ztBdiB\",\n \"value\": \"MFP cooperative agreement funds for capacity-building initiatives\"\n }\n ],\n \"fundingSources_quarters2024Q1\": \"100.00\",\n \"fundingSources_quarters2024Q2\": \"100.00\",\n \"fundingSources_quarters2024Q3\": \"100.00\",\n \"fundingSources_quarters2024Q4\": \"100.00\",\n \"fundingSources_quarters2025Q1\": \"100.00\",\n \"fundingSources_quarters2025Q2\": \"100.00\",\n \"fundingSources_quarters2025Q3\": \"100.00\",\n \"fundingSources_quarters2025Q4\": \"200.00\",\n \"fundingSources_quarters2026Q1\": \"200.00\",\n \"fundingSources_quarters2026Q2\": \"200.00\",\n \"fundingSources_quarters2026Q3\": \"200.00\",\n \"fundingSources_quarters2026Q4\": \"200.00\",\n \"initiative_wp_otherTopic\": \"\"\n }\n ],\n \"fundingSources_projected_2024Q1_c73235e-8fec-37-2062-b502384bac6\": \"100.00\",\n \"fundingSources_projected_2024Q2_c73235e-8fec-37-2062-b502384bac6\": \"100.00\",\n \"objectiveProgress\": [\n {\n \"id\": \"6245730-f1a7-846f-32b4-fbfe7040c6e0\",\n \"objectiveProgress_objectiveName\": \"obj\",\n \"objectiveProgress_description\": \"performance measures\",\n \"objectiveProgress_targets\": \"targets\",\n \"objectiveProgress_includesTargets\": [\n {\n \"key\": \"evaluationPlan_includesTargets-UL4dAeyyvCFAXttxZioacR\",\n \"value\": \"No\"\n }\n ],\n \"objectiveProgress_additionalDetails\": \"test\",\n \"objectiveTargets_projections_2024Q1\": \"\",\n \"objectiveTargets_projections_2024Q2\": \"\",\n \"objectivesProgress_performanceMeasuresIndicators\": \"data\",\n \"objectivesProgress_deliverablesMet\": [\n {\n \"key\": \"objectivesProgress_deliverablesMet-2WaO1K5umgZcZV4bAW5sPu\",\n \"value\": \"No\"\n }\n ],\n \"objectivesProgress_deliverablesMet_otherText\": \"progress to target\"\n }\n ],\n \"isCopied\": true,\n \"initiativeProgress_describeProgress\": \"progress\",\n \"initiativeProgress_describeIssuesChallenges\": \"issues\",\n \"initiativeProgress_describeCollaborationsWithExternalParties\": \"collaborations\",\n \"fundingSources_actual_2024Q1_c73235e-8fec-37-2062-b502384bac6\": \"120.00\",\n \"fundingSources_actual_2024Q2_c73235e-8fec-37-2062-b502384bac6\": \"80.00\",\n \"expenditures_onTrackToFullExpendFunds\": [\n {\n \"key\": \"expenditures_onTrackToFullExpendFunds-2WaUKNbCmetqXVFsKnaHqeK\",\n \"value\": \"No\"\n }\n ],\n \"expenditures_onTrackToFullExpendFunds-otherText\": \"description\"\n }\n ],\n \"generalInformation_MfpOperatingOrganizationName\": \"operating org\",\n \"generalInformation_stateTerritoryMedicaidAgency\": \"agency\",\n \"generalInformation_stateTerritoryMedicaidDirector\": \"director\",\n \"generalInformation_mfpProgramPublicName\": \"public name\",\n \"generalInformation_mfpProgramWebsite\": \"http://mfpweb.com\",\n \"generalInformation_aorName\": \"aor name\",\n \"generalInformation_aorTitleAgency\": \"agency\",\n \"generalInformation_aorEmail\": \"email@aor.com\",\n \"generalInformation_hasAorChangedSinceLastReport\": [\n {\n \"key\": \"generalInformation_hasAorChangedSinceLastReport-2VffASWS2XRfAlc3uLzxCVAC\",\n \"value\": \"No\"\n }\n ],\n \"generalInformation_projectDirectorName\": \"director name\",\n \"generalInformation_projectDirectorTitle\": \"title\",\n \"generalInformation_projectDirectorEmail\": \"email@director.com\",\n \"generalInformation_cmsProjectOfficerName\": \"officer name\",\n \"ret_psmicf_target_populations_Period1_Older adults\": \"200\",\n \"ret_psmicf_target_populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret_mtrp_quarter_1_populations_Period1_Older adults\": \"200\",\n \"ret_mtrp_quarter_1_populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret_mtrp_quarter_2_populations_Period1_Older adults\": \"200\",\n \"ret_mtrp_quarter_2_populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqi-1-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqi-1-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqi-2-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqi-2-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqi-3-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqi-3-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqi-4-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqi-4-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqi-5-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqi-5-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqr-1-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqr-1-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqr-2-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqr-2-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqr-3-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqr-3-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mtfqr-4-populations_Period1_Older adults\": \"200\",\n \"ret-mtfqr-4-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-tnamprp-1-populations_Period1_Older adults\": \"200\",\n \"ret-tnamprp-1-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-nmpcprp-1-populations_Period1_Older adults\": \"200\",\n \"ret-nmpcprp-1-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-npremrp-1-populations_Period1_Older adults\": \"200\",\n \"ret-npremrp-1-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mpdprp-1-populations_Period1_Older adults\": \"200\",\n \"ret-mpdprp-1-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mpdprp-2-populations_Period1_Older adults\": \"200\",\n \"ret-mpdprp-2-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret-mpdprp-3-populations_Period1_Older adults\": \"200\",\n \"ret-mpdprp-3-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"200\",\n \"ret_otherReasons\": [\n {\n \"key\": \"ret_otherReasons-2VffASWS2XRfAlc3uLzxCVAC\",\n \"value\": \"Moved out of MFP jurisdiction/state/territory\"\n }\n ],\n \"ret-movedout-populations_Period1_Older adults\": \"50\",\n \"ret-movedout-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"50\",\n \"ret-incarceration-populations_Period1_Older adults\": \"\",\n \"ret-incarceration-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"\",\n \"ret-moved-populations_Period1_Older adults\": \"\",\n \"ret-moved-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"\",\n \"otherReasons-otherText\": \"\",\n \"ret-other-specify-populations_Period1_Older adults\": \"\",\n \"ret-other-specify-populations_Period1_Individuals with intellectual and developmental disabilities (I/DD)\": \"\",\n \"oa_changesOrganizationAdministration\": [\n {\n \"key\": \"oa_changesOrganizationAdministration-2VfuG4GRc4ApcknSSgbMvvHg\",\n \"value\": \"Yes\"\n }\n ],\n \"oa_describeOAChanges\": \"changes\",\n \"oa_projectDirectorEmployment\": [\n {\n \"key\": \"oa_projectDirectorEmployment-2VfuG2OUicDROyaE5RmbtqWM\",\n \"value\": \"No\"\n }\n ],\n \"oa_provideNameOfEmployerAndReportingRelationship\": \"name of employer\",\n \"oa_hiringRetentionChallengesMfpStaff\": [\n {\n \"key\": \"oa_hiringRetentionChallengesMfpStaff-2VfuyVGyPc6ePgAicM69ayDqTpX\",\n \"value\": \"Yes\"\n }\n ],\n \"oa_describeHiringRetentionChallenges\": \"challenges\",\n \"oa_describeTechnicalAssitanceActivities\": \"technical assistance\",\n \"oa_additionalTechnicalResourcesSupports\": [\n {\n \"key\": \"oa_additionalTechnicalResourcesSupports-2VfvDSkVxhYZwQ8AMXqR5QX8\",\n \"value\": \"Yes\"\n }\n ],\n \"oa_describeAdditionalTechnicalResourcesSupports\": \"additional resources\",\n \"aa_notableAchievementsPromisingPractices\": \"notable achievements\",\n \"aa_changesMfpProgramAdministration\": [\n {\n \"key\": \"aa_changesMfpProgramAdministration-2Vfw3X48qEyKOAxXt7HPlMMg\",\n \"value\": \"Yes\"\n }\n ],\n \"oa_describeDevelopmentsChanges\": \"developments\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/SAR/{{state}}/{{sar-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "SAR", - "{{state}}", - "{{sar-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Submit SAR Report", - "request": { - "method": "POST", - "header": [ - { - "key": "x-api-key", - "value": "{{state-x-api-key}}", - "type": "default" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/submit/SAR/{{state}}/{{sar-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "submit", - "SAR", - "{{state}}", - "{{sar-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Unlock SAR Report", - "request": { - "method": "PUT", - "header": [ - { - "key": "x-api-key", - "value": "{{admin-x-api-key}}", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "localhost:3030/local/reports/release/SAR/{{state}}/{{sar-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "release", - "SAR", - "{{state}}", - "{{sar-id}}" - ] - } - }, - "response": [] - }, - { - "name": "Toggle archive SAR", - "request": { - "method": "PUT", - "header": [ - { - "key": "x-api-key", - "value": "{{admin-x-api-key}}", - "type": "text" - } - ], - "url": { - "raw": "localhost:3030/local/reports/archive/SAR/{{state}}/{{sar-id}}", - "host": [ - "localhost" - ], - "port": "3030", - "path": [ - "local", - "reports", - "archive", - "SAR", - "{{state}}", - "{{sar-id}}" - ] - } - }, - "response": [] - } - ] - } - ] -} \ No newline at end of file diff --git a/postman/MFP.postman_environment.json b/postman/MFP.postman_environment.json deleted file mode 100644 index fed3af943..000000000 --- a/postman/MFP.postman_environment.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "id": "f38ba46d-6ff1-4bdc-a56e-dc78115cc0f8", - "name": "MFP", - "values": [ - { - "key": "state-x-api-key", - "value": "", - "type": "default", - "enabled": true - }, - { - "key": "admin-x-api-key", - "value": "", - "type": "default", - "enabled": true - }, - { - "key": "state", - "value": "", - "type": "default", - "enabled": true - }, - { - "key": "stateName", - "value": "", - "type": "default", - "enabled": true - }, - { - "key": "wp-id", - "value": "", - "type": "default", - "enabled": true - }, - { - "key": "sar-id", - "value": "", - "type": "default", - "enabled": true - }, - { - "key": "admin-banner-id", - "value": "admin-banner-id", - "type": "default", - "enabled": true - } - ], - "_postman_variable_scope": "environment", - "_postman_exported_at": "2024-02-27T14:51:30.863Z", - "_postman_exported_using": "Postman/10.23.5" -} \ No newline at end of file diff --git a/postman/README.md b/postman/README.md deleted file mode 100644 index 8f36d181e..000000000 --- a/postman/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# Postman Collection - -This directory contains the Postman collection and environment configuration for MFP. - -## Prerequisites - -- [Postman](https://www.postman.com/downloads/) - -## Setup - -1. Open Postman - > If this is your first time you will need to create an account. If your organization has Google SSO you can use that for ease. -2. Click "Import" in your workspace -3. Select the [MFP.postman_collection.json](./MFP.postman_collection.json) file from this folder and import it -4. Repeat steps 2 and 3 with the [environment](./MFP.postman_environment.json) file -5. Go to the MFP environment page (option in left sidebar) and set the following values: - -- `state` will be the two letter abbreviation of the state associated with the state user you typically use locally. Ex: TX -- `stateName` will be the full name of the associated state. Ex: Texas - -Unfortunately this GitHub repository will not automatically update your collection. If you need to update your local collection with the latest changes, repeat steps 2–4 above. - -## Using the collection - -### Folders - -The collection has three folders: Banners, WP, and SAR. Each folder contains associated API requests. Some requests use state user credentials and some use admin user credentials. You can see which under the "Authorization" tab of any given request. Many requests have a "Body" as well. These are set with a reasonable default for that request. If you find issues with the bodies of requests, or you update the associated APIs, please update this collection. - -### Environment - -Ensure you've set your workspace environment to the MFP environment. The dropdown for this is in the upper right of your workspace view. It will say "No Environment" if you have none selected. Next to this dropdown is a quick access menu that is convenient for updating values without leaving the collections view. Simply hover over a table item and click the pencil icon to update the "Current value". - -### Getting credentials - -1. Start MFP locally -2. In your browser, log in as a state or admin user -3. Open the network tab and select any request that hit your local api (the banner request on the homepage is an easy choice) -4. Scroll to the bottom of the request headers and copy the `x-api-key` value -5. Paste this value in your environment "Current value" cell for that user type -6. Repeat steps 2–5 for the other user type - -These credentials are valid for about 20 minutes. You can reuse the same credentials even after restarting MFP locally. If you change state users, you will need to get new credentials and update the `state` and `stateName` values in the environment. - -### Working with reports - -Requests in the WP and SAR folders interact with the associated reports. If you create a WP or SAR report, either in the browser or in Postman, be sure to copy the report `id` and put that in the MFP environment under `wp-id` or `sar-id` as appropriate. This ensures future requests, like filling out or submitting a report, interact with the expected report. - -## Full example flow - -At any time you can refresh the browser to verify each step - -1. Perform steps 1–6 from [Getting credentials](#getting-credentials) -2. Open the "WP" folder -3. Go to "Create WP" and click "Send" -4. Copy the `id` from the response and put that in the `wp-id` environment variable -5. Select "Fill out WP Report" and click "Send" -6. Select "Submit WP Report" and click "Send" -7. Select "Approve WP Report" and click "Send" - -You've now created, completely filled out, submitted, and approved a Work Plan report. You can repeat this with the SAR to finish the full app flow. diff --git a/services/app-api/db/helpers.ts b/services/app-api/db/helpers.ts index 15b707222..d9d990975 100644 --- a/services/app-api/db/helpers.ts +++ b/services/app-api/db/helpers.ts @@ -1,9 +1,19 @@ /* eslint-disable no-console */ -export const createdLog = (obj: any, type: string): void => { +export const createdLog = (obj: any, action: string, type: string): void => { const { id, submissionName } = obj; - console.log(`${type} created: ${submissionName} (${id})`); + if (id) { + console.log(`${action} ${type} created: ${submissionName} (${id})`); + } else { + console.log(`ℹ️ ${obj}`); + console.log( + `⚠️ Could not create ${action.toLowerCase()} ${type} for reporting period.` + ); + } }; export const expandedLog = (json: any): void => { console.log(JSON.stringify(json, null, 2)); }; + +export const generateReportingPeriod = (year: number, period: number) => + `${year} Period ${period}`; diff --git a/services/app-api/db/options.ts b/services/app-api/db/options.ts index 04527cfc5..34e5d24cd 100644 --- a/services/app-api/db/options.ts +++ b/services/app-api/db/options.ts @@ -2,8 +2,10 @@ import { Choice } from "prompts"; import { getSemiAnnualReportsByState, getWorkPlansByState, + state, } from "../../../tests/seeds/options"; import { SeedReportShape } from "../../../tests/seeds/types"; +import { generateReportingPeriod } from "./helpers"; export const workPlanChoices = async (): Promise => { try { @@ -28,3 +30,54 @@ export const semiAnnualReportChoices = async (): Promise => { process.exit(); } }; + +export const backToMenu = { + title: "Back to Menu", + value: "back", +}; + +export const generateChoices = ( + type: string, + year: number, + period: number +): Choice[] => { + const reportingPeriod = generateReportingPeriod(year, period); + + const choices = [ + { + title: `Create base ${type}: ${reportingPeriod}`, + value: `create${type}`, + }, + { + title: `Create filled ${type}: ${reportingPeriod}`, + value: `createFilled${type}`, + }, + { + title: `Create submitted ${type}: ${reportingPeriod}`, + value: `createSubmitted${type}`, + }, + { + title: `Create locked ${type}: ${reportingPeriod}`, + value: `createLocked${type}`, + }, + { + title: `Create archived ${type}: ${reportingPeriod}`, + value: `createArchived${type}`, + }, + { title: `Get ${type} by id`, value: `get${type}ById` }, + { + title: `Get ${type}s by state: ${state}`, + value: `get${type}sByState`, + }, + backToMenu, + ]; + + if (type === "WP") { + choices.splice(3, 0, { + title: `Create approved ${type}: ${reportingPeriod}`, + value: `createApproved${type}`, + }); + } + + return choices; +}; diff --git a/services/app-api/db/seed.ts b/services/app-api/db/seed.ts index fff6599a7..51e7ecd6d 100644 --- a/services/app-api/db/seed.ts +++ b/services/app-api/db/seed.ts @@ -1,11 +1,17 @@ /* eslint-disable no-console */ -import prompts, { Choice as PromptChoice, PromptObject } from "prompts"; -import { createdLog, expandedLog } from "./helpers"; -import { semiAnnualReportChoices, workPlanChoices } from "./options"; +import prompts, { Choice, PromptObject } from "prompts"; +import { createdLog, expandedLog, generateReportingPeriod } from "./helpers"; +import { + backToMenu, + generateChoices, + semiAnnualReportChoices, + workPlanChoices, +} from "./options"; import { currentYear } from "../../../tests/seeds/helpers"; import { bannerKey, createApprovedWorkPlan, + createArchivedSemiAnnualReport, createArchivedWorkPlan, createBanner, createFilledSemiAnnualReport, @@ -23,70 +29,24 @@ import { getWorkPlanById, getWorkPlansByState, loginSeedUsers, - state, } from "../../../tests/seeds/options"; -const seed = async (): Promise => { +const seed = async ( + chosenYear?: number, + chosenPeriod?: number +): Promise => { await loginSeedUsers(); - const wpIds: PromptChoice[] = await workPlanChoices(); - const sarIds: PromptChoice[] = await semiAnnualReportChoices(); + const wpIds: Choice[] = await workPlanChoices(); + const sarIds: Choice[] = await semiAnnualReportChoices(); - const entityChoices: PromptChoice[] = [ + const entityChoices: Choice[] = [ { title: "Work Plan (WP)", value: "WP" }, { title: "Semi-Annual Report (SAR)", value: "SAR" }, { title: "Banner", value: "banner" }, ]; - let reportYear = currentYear; - let reportPeriod = 1; - - const generateReportingPeriod = (year: number, period: number) => - `${year} Period ${period}`; - - const generateChoices = ( - type: string, - year: number, - period: number - ): PromptChoice[] => { - const reportingPeriod = generateReportingPeriod(year, period); - - const choices = [ - { - title: `Create base ${type}: ${reportingPeriod}`, - value: `create${type}`, - }, - { - title: `Create filled ${type}: ${reportingPeriod}`, - value: `createFilled${type}`, - }, - { - title: `Create submitted ${type}: ${reportingPeriod}`, - value: `createSubmitted${type}`, - }, - { - title: `Create locked ${type}: ${reportingPeriod}`, - value: `createLocked${type}`, - }, - { - title: `Create archived ${type}: ${reportingPeriod}`, - value: `createArchived${type}`, - }, - { title: `Get ${type} by id`, value: `get${type}ById` }, - { - title: `Get ${type}s by state: ${state}`, - value: `get${type}sByState`, - }, - ]; - - if (type === "WP") { - choices.splice(3, 0, { - title: `Create approved ${type}: ${reportingPeriod}`, - value: `createApproved${type}`, - }); - } - - return choices; - }; + let reportYear = chosenYear || currentYear; + let reportPeriod = chosenPeriod || 1; const questions: PromptObject[] = [ { @@ -95,58 +55,47 @@ const seed = async (): Promise => { message: "Type", choices: [ { - title: `Change Reporting Period: ${generateReportingPeriod( + title: `Change Reporting Year: ${reportYear}`, + value: "chooseReportingYear", + }, + { + title: `Change Reporting Period: ${reportPeriod}`, + value: "chooseReportingPeriod", + }, + { + title: `Create approved WP and filled SAR: ${generateReportingPeriod( reportYear, reportPeriod )}`, - value: "chooseReportingPeriod", + value: "createFilledSAR", }, - { title: "Create filled WP and filled SAR", value: "createFilledEach" }, ...entityChoices, ], }, { type: (prev: string) => - prev === "chooseReportingPeriod" ? "select" : null, - name: "reportingPeriod", - message: "Reporting Period", + prev === "chooseReportingYear" ? "select" : null, + name: "reportingYear", + message: "Reporting Year", choices: () => { return [ - { title: `${currentYear} Period 1`, value: "period1" }, - { title: `${currentYear} Period 2`, value: "period2" }, - { title: `${currentYear + 1} Period 1`, value: "period3" }, - { title: `${currentYear + 1} Period 2`, value: "period4" }, + { title: `${currentYear}`, value: `${currentYear}` }, + { title: `${currentYear + 1}`, value: `${currentYear + 1}` }, + { title: `${currentYear + 2}`, value: `${currentYear + 2}` }, + { title: `${currentYear + 3}`, value: `${currentYear + 3}` }, + { title: `${currentYear + 4}`, value: `${currentYear + 4}` }, ]; }, }, { type: (prev: string) => - ["period1", "period2", "period3", "period4"].includes(prev) - ? "select" - : null, - name: "type", - message: "Type", - choices: (prev: string) => { - reportYear = currentYear; - reportPeriod = 1; - - if (["period2", "period4"].includes(prev)) { - reportPeriod = 2; - } - - if (["period3", "period4"].includes(prev)) { - reportYear = currentYear + 1; - } - + prev === "chooseReportingPeriod" ? "select" : null, + name: "reportingPeriod", + message: "Reporting Period", + choices: () => { return [ - { - title: `Create filled WP and filled SAR: ${generateReportingPeriod( - reportYear, - reportPeriod - )}`, - value: "createFilledEach", - }, - ...entityChoices, + { title: "1", value: "1" }, + { title: "2", value: "2" }, ]; }, }, @@ -155,11 +104,7 @@ const seed = async (): Promise => { name: "task", message: "Task", choices: (prev: string) => { - return generateChoices( - prev, - reportYear, - reportPeriod - ) as PromptChoice[]; + return generateChoices(prev, reportYear, reportPeriod) as Choice[]; }, }, { @@ -176,6 +121,7 @@ const seed = async (): Promise => { title: `Delete Banner: ${bannerKey}`, value: "deleteBanner", }, + backToMenu, ], }, { @@ -193,7 +139,10 @@ const seed = async (): Promise => { choices: sarIds, }, { - type: "confirm", + type: (prev: string) => + Number.isInteger(parseInt(prev, 10)) || prev === "back" + ? null + : "confirm", name: "exit", message: "Exit?", }, @@ -204,6 +153,21 @@ const seed = async (): Promise => { answer: string | boolean ): Promise => { switch (prompt.name) { + case "reportingPeriod": + case "reportingYear": { + const answerInt = parseInt(answer as string, 10); + + if ([1, 2].includes(answerInt)) { + reportPeriod = answerInt; + } + + if (answerInt >= currentYear) { + reportYear = answerInt; + } + + seed(reportYear, reportPeriod); + break; + } case "workPlanId": expandedLog(await getWorkPlanById(answer as string)); break; @@ -212,7 +176,7 @@ const seed = async (): Promise => { break; case "exit": { if (answer === false) { - seed(); + seed(reportYear, reportPeriod); } break; } @@ -221,53 +185,54 @@ const seed = async (): Promise => { } switch (answer) { - case "createFilledEach": { + case "back": + seed(reportYear, reportPeriod); + break; + case "createFilledWP": { createdLog( await createFilledWorkPlan(reportYear, reportPeriod), - "Filled WP" - ); - createdLog( - await createFilledSemiAnnualReport(reportYear, reportPeriod), - "Filled SAR" + "Filled", + "WP" ); break; } case "createWP": { - createdLog(await createWorkPlan(reportYear, reportPeriod), "Base WP"); - break; - } - case "createFilledWP": { createdLog( - await createFilledWorkPlan(reportYear, reportPeriod), - "Filled WP" + await createWorkPlan(reportYear, reportPeriod), + "Base", + "WP" ); break; } case "createSubmittedWP": { createdLog( await createSubmittedWorkPlan(reportYear, reportPeriod), - "Submitted WP" + "Submitted", + "WP" ); break; } case "createApprovedWP": { createdLog( await createApprovedWorkPlan(reportYear, reportPeriod), - "Approved WP" + "Approved", + "WP" ); break; } case "createLockedWP": { createdLog( await createLockedWorkPlan(reportYear, reportPeriod), - "Locked WP" + "Locked", + "WP" ); break; } case "createArchivedWP": { createdLog( await createArchivedWorkPlan(reportYear, reportPeriod), - "Archived WP" + "Archived", + "WP" ); break; } @@ -277,28 +242,40 @@ const seed = async (): Promise => { case "createSAR": { createdLog( await createSemiAnnualReport(reportYear, reportPeriod), - "Base SAR" + "Base", + "SAR" ); break; } case "createFilledSAR": { createdLog( await createFilledSemiAnnualReport(reportYear, reportPeriod), - "Filled SAR" + "Filled", + "SAR" ); break; } case "createSubmittedSAR": { createdLog( await createSubmittedSemiAnnualReport(reportYear, reportPeriod), - "Submitted SAR" + "Submitted", + "SAR" ); break; } case "createLockedSAR": { createdLog( await createLockedSemiAnnualReport(reportYear, reportPeriod), - "Locked SAR" + "Locked", + "SAR" + ); + break; + } + case "createArchivedSAR": { + createdLog( + await createArchivedSemiAnnualReport(reportYear, reportPeriod), + "Archived", + "SAR" ); break; } @@ -306,16 +283,16 @@ const seed = async (): Promise => { expandedLog(await getSemiAnnualReportsByState()); break; case "createBanner": { - const { Item } = await createBanner(); - console.log(`Banner created: ${Item?.key}`); + await createBanner(); + console.log("Banner created."); break; } case "getBanner": expandedLog(await getBannerById()); break; case "deleteBanner": { - const { Key } = await deleteBannerById(); - console.log(`Banner deleted: ${Key?.key}`); + await deleteBannerById(); + console.log("Banner deleted."); break; } default: diff --git a/services/app-api/forms/sar.json b/services/app-api/forms/sar.json index 1fc868e9f..b192bc0d2 100644 --- a/services/app-api/forms/sar.json +++ b/services/app-api/forms/sar.json @@ -182,6 +182,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Number of people who signed an MFP informed consent form in the reporting period", + "subsectionTitle": "Number of people who signed an MFP informed consent form in the {{reportingPeriod}}", "info": [ { "type": "text", @@ -220,6 +221,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Number of MFP transitions in the reporting period", + "subsectionTitle": "Number of MFP transitions in the {{reportingPeriod}}", "info": [ { "type": "text", @@ -283,6 +285,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Number of MFP transitions from qualified institutions in the reporting period", + "subsectionTitle": "Number of MFP transitions from qualified institutions in the {{reportingPeriod}}", "info": [ { "type": "text", @@ -400,6 +403,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Number of MFP transitions to qualified residences in the reporting period", + "subsectionTitle": "Number of MFP transitions to qualified residences in the {{reportingPeriod}}", "info": [ { "type": "text", @@ -499,6 +503,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Total number of active MFP participants in the reporting period", + "subsectionTitle": "Total number of active MFP participants in the {{reportingPeriod}}", "info": [ { "type": "text", @@ -537,6 +542,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Number of MFP participants completing the program in the reporting period", + "subsectionTitle": "Number of MFP participants completing the program in the {{reportingPeriod}}", "info": [ { "type": "text", @@ -575,6 +581,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Number of people re-enrolled in MFP during the reporting period", + "subsectionTitle": "Number of people re-enrolled in MFP during the {{reportingPeriod}}", "info": [ { "type": "text", @@ -613,6 +620,7 @@ "intro": { "section": "Recruitment, Enrollment, and Transitions", "subsection": "Number of MFP participants disenrolled from the program during the reporting period", + "subsectionTitle": "Number of MFP participants disenrolled from the program during the {{reportingPeriod}}", "info": [ { "type": "text", diff --git a/services/app-api/handlers/banners/create.test.ts b/services/app-api/handlers/banners/create.test.ts index 07b8ba303..32c25c272 100644 --- a/services/app-api/handlers/banners/create.test.ts +++ b/services/app-api/handlers/banners/create.test.ts @@ -2,16 +2,18 @@ import { createBanner } from "./create"; import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb"; import { mockClient } from "aws-sdk-client-mock"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; // utils import { error } from "../../utils/constants/constants"; import { proxyEvent } from "../../utils/testing/proxyEvent"; +import { StatusCodes } from "../../utils/responses/response-lib"; +import { hasPermissions } from "../../utils/auth/authorization"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), - hasPermissions: jest.fn().mockReturnValueOnce(false).mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), + hasPermissions: jest.fn().mockReturnValue(true), })); const testEvent: APIGatewayProxyEvent = { @@ -21,6 +23,13 @@ const testEvent: APIGatewayProxyEvent = { pathParameters: { bannerId: "testKey" }, }; +const testInvalidEvent: APIGatewayProxyEvent = { + ...proxyEvent, + body: `{"key":"mock-id","title":"test banner","description":"test description","link":"https://www.mocklink.com","startDate":1000}`, + headers: { "cognito-identity-id": "test" }, + pathParameters: { bannerId: "testKey" }, +}; + const consoleSpy: { debug: jest.SpyInstance; error: jest.SpyInstance; @@ -31,9 +40,10 @@ const consoleSpy: { describe("Test createBanner API method", () => { test("Test unauthorized banner creation throws 403 error", async () => { + (hasPermissions as jest.Mock).mockReturnValueOnce(false); const res = await createBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -42,20 +52,24 @@ describe("Test createBanner API method", () => { dynamoClientMock.on(PutCommand).callsFake(mockPut); const res = await createBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(res.body).toContain("test banner"); expect(res.body).toContain("test description"); expect(mockPut).toHaveBeenCalled(); }); + test("Test invalid banner payload returns 400", async () => { + const res = await createBanner(testInvalidEvent, null); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + }); + test("Test bannerKey not provided throws 500 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testEvent, pathParameters: {}, }; const res = await createBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -65,8 +79,7 @@ describe("Test createBanner API method", () => { pathParameters: { bannerId: "" }, }; const res = await createBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/banners/create.ts b/services/app-api/handlers/banners/create.ts index cac466a4b..6e6790e39 100644 --- a/services/app-api/handlers/banners/create.ts +++ b/services/app-api/handlers/banners/create.ts @@ -1,52 +1,62 @@ import handler from "../handler-lib"; +// types +import { UserRoles } from "../../utils/types"; +import { number, object, string } from "yup"; // utils +import { putBanner } from "../../storage/banners"; import { hasPermissions } from "../../utils/auth/authorization"; import { error } from "../../utils/constants/constants"; -// types -import { StatusCodes, UserRoles } from "../../utils/types"; -import { number, object, string } from "yup"; import { validateData } from "../../utils/validation/validation"; -import { putBanner } from "../../storage/banners"; +import { + badRequest, + created, + forbidden, + internalServerError, +} from "../../utils/responses/response-lib"; + +const validationSchema = object().shape({ + key: string().required(), + title: string().required(), + description: string().required(), + link: string().url().notRequired(), + startDate: number().required(), + endDate: number().required(), +}); export const createBanner = handler(async (event, _context) => { if (!hasPermissions(event, [UserRoles.ADMIN])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; - } else if (!event?.pathParameters?.bannerId!) { - throw new Error(error.NO_KEY); - } else { - const unvalidatedPayload = JSON.parse(event!.body!); + return forbidden(error.UNAUTHORIZED); + } + if (!event?.pathParameters?.bannerId!) { + return badRequest(error.NO_KEY); + } + const unvalidatedPayload = JSON.parse(event.body!); - const validationSchema = object().shape({ - key: string().required(), - title: string().required(), - description: string().required(), - link: string().url().notRequired(), - startDate: number().required(), - endDate: number().required(), - }); + let validatedPayload; + try { + validatedPayload = await validateData(validationSchema, unvalidatedPayload); + } catch { + return badRequest(error.INVALID_DATA); + } - const validatedPayload = await validateData( - validationSchema, - unvalidatedPayload - ); + const { title, description, link, startDate, endDate } = validatedPayload; + const currentTime = Date.now(); - if (validatedPayload) { - const newBanner = { - key: event.pathParameters.bannerId, - createdAt: Date.now(), - lastAltered: Date.now(), - lastAlteredBy: event?.headers["cognito-identity-id"], - title: validatedPayload.title, - description: validatedPayload.description, - link: validatedPayload.link, - startDate: validatedPayload.startDate, - endDate: validatedPayload.endDate, - }; - await putBanner(newBanner); - return { status: StatusCodes.CREATED, body: newBanner }; - } + const newBanner = { + key: event.pathParameters.bannerId, + createdAt: currentTime, + lastAltered: currentTime, + lastAlteredBy: event?.headers["cognito-identity-id"], + title, + description, + link, + startDate, + endDate, + }; + try { + await putBanner(newBanner); + } catch { + return internalServerError(error.DYNAMO_CREATION_ERROR); } + return created(newBanner); }); diff --git a/services/app-api/handlers/banners/delete.test.ts b/services/app-api/handlers/banners/delete.test.ts index c82aad559..1659d9112 100644 --- a/services/app-api/handlers/banners/delete.test.ts +++ b/services/app-api/handlers/banners/delete.test.ts @@ -5,12 +5,13 @@ import { mockClient } from "aws-sdk-client-mock"; import { proxyEvent } from "../../utils/testing/proxyEvent"; import { error } from "../../utils/constants/constants"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; const dynamoClientMock = mockClient(DynamoDBDocumentClient); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), hasPermissions: jest.fn().mockReturnValueOnce(false).mockReturnValue(true), })); @@ -33,7 +34,7 @@ describe("Test deleteBanner API method", () => { const res = await deleteBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -43,8 +44,7 @@ describe("Test deleteBanner API method", () => { const res = await deleteBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - expect(res.body).toContain("testKey"); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(mockDelete).toHaveBeenCalled(); }); @@ -55,8 +55,7 @@ describe("Test deleteBanner API method", () => { }; const res = await deleteBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -67,8 +66,7 @@ describe("Test deleteBanner API method", () => { }; const res = await deleteBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/banners/delete.ts b/services/app-api/handlers/banners/delete.ts index 2862a7cc8..178030946 100644 --- a/services/app-api/handlers/banners/delete.ts +++ b/services/app-api/handlers/banners/delete.ts @@ -4,19 +4,17 @@ import { hasPermissions } from "../../utils/auth/authorization"; import { error } from "../../utils/constants/constants"; import { deleteBanner as deleteBannerById } from "../../storage/banners"; // types -import { StatusCodes, UserRoles } from "../../utils/types"; +import { UserRoles } from "../../utils/types"; +import { badRequest, forbidden, ok } from "../../utils/responses/response-lib"; export const deleteBanner = handler(async (event, _context) => { if (!hasPermissions(event, [UserRoles.ADMIN])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; - } else if (!event?.pathParameters?.bannerId!) { - throw new Error(error.NO_KEY); - } else { - const bannerId = event?.pathParameters?.bannerId!; - await deleteBannerById(bannerId); - return { status: StatusCodes.SUCCESS, body: { Key: bannerId } }; + return forbidden(error.UNAUTHORIZED); } + if (!event?.pathParameters?.bannerId!) { + return badRequest(error.NO_KEY); + } + const bannerId = event?.pathParameters?.bannerId!; + await deleteBannerById(bannerId); + return ok(); }); diff --git a/services/app-api/handlers/banners/fetch.test.ts b/services/app-api/handlers/banners/fetch.test.ts index 86180b8ee..e435162c3 100644 --- a/services/app-api/handlers/banners/fetch.test.ts +++ b/services/app-api/handlers/banners/fetch.test.ts @@ -5,10 +5,11 @@ import { error } from "../../utils/constants/constants"; import { mockBannerResponse } from "../../utils/testing/setupJest"; import { getBanner } from "../../storage/banners"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), })); jest.mock("../../storage/banners", () => ({ @@ -41,7 +42,7 @@ describe("Test fetchBanner API method", () => { const res = await fetchBanner(testEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("testDesc"); expect(res.body).toContain("testTitle"); }); @@ -52,7 +53,7 @@ describe("Test fetchBanner API method", () => { expect(consoleSpy.debug).toHaveBeenCalled(); expect(res.body).not.toBeDefined(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.NoContent); }); test("Test bannerKey not provided throws 500 error", async () => { @@ -62,8 +63,7 @@ describe("Test fetchBanner API method", () => { }; const res = await fetchBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -74,8 +74,7 @@ describe("Test fetchBanner API method", () => { }; const res = await fetchBanner(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/banners/fetch.ts b/services/app-api/handlers/banners/fetch.ts index 5ea1ce093..d484563da 100644 --- a/services/app-api/handlers/banners/fetch.ts +++ b/services/app-api/handlers/banners/fetch.ts @@ -1,15 +1,18 @@ import handler from "../handler-lib"; -// types -import { StatusCodes } from "../../utils/types"; // utils import { error } from "../../utils/constants/constants"; import { getBanner } from "../../storage/banners"; +import { badRequest, noContent, ok } from "../../utils/responses/response-lib"; export const fetchBanner = handler(async (event, _context) => { - if (!event?.pathParameters?.bannerId!) { - throw new Error(error.NO_KEY); + const bannerId = event?.pathParameters?.bannerId; + if (!bannerId) { + return badRequest(error.NO_KEY); } - const bannerId = event?.pathParameters?.bannerId!; const banner = await getBanner(bannerId); - return { status: StatusCodes.SUCCESS, body: banner }; + if (banner) { + return ok(banner); + } + // Instead of 404, return 204 for silent error + return noContent(); }); diff --git a/services/app-api/handlers/handler-lib.test.ts b/services/app-api/handlers/handler-lib.test.ts index 8df96f3ac..69895219d 100644 --- a/services/app-api/handlers/handler-lib.test.ts +++ b/services/app-api/handlers/handler-lib.test.ts @@ -1,7 +1,8 @@ import handlerLib from "./handler-lib"; import { proxyEvent } from "../utils/testing/proxyEvent"; -import { isAuthorized } from "../utils/auth/authorization"; +import { isAuthenticated } from "../utils/auth/authorization"; import * as logger from "../utils/debugging/debug-lib"; +import { ok, StatusCodes } from "../utils/responses/response-lib"; jest.mock("../utils/debugging/debug-lib", () => ({ init: jest.fn(), @@ -11,18 +12,18 @@ jest.mock("../utils/debugging/debug-lib", () => ({ })); jest.mock("../utils/auth/authorization", () => ({ - isAuthorized: jest.fn(), + isAuthenticated: jest.fn(), })); describe("Test Lambda Handler Lib", () => { test("Test successful authorized lambda workflow", async () => { - const testFunc = jest.fn().mockReturnValue({ status: 200, body: "test" }); + const testFunc = jest.fn().mockReturnValue(ok("test")); const handler = handlerLib(testFunc); - (isAuthorized as jest.Mock).mockReturnValue(true); + (isAuthenticated as jest.Mock).mockReturnValue(true); const res = await handler(proxyEvent, null); - expect(res.statusCode).toBe(200); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("test"); expect(logger.init).toHaveBeenCalled(); expect(logger.debug).toHaveBeenCalledWith( @@ -41,14 +42,12 @@ describe("Test Lambda Handler Lib", () => { const testFunc = jest.fn(); const handler = handlerLib(testFunc); - (isAuthorized as jest.Mock).mockReturnValue(false); + (isAuthenticated as jest.Mock).mockReturnValue(false); const res = await handler(proxyEvent, null); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Unauthenticated); expect(res.body).toStrictEqual( - JSON.stringify({ - error: "User is not authorized to access this resource.", - }) + '"User is not authorized to access this resource."' ); }); @@ -59,13 +58,13 @@ describe("Test Lambda Handler Lib", () => { }); const handler = handlerLib(testFunc); - (isAuthorized as jest.Mock).mockReturnValue(true); + (isAuthenticated as jest.Mock).mockReturnValue(true); const res = await handler(proxyEvent, null); expect(testFunc).toHaveBeenCalledWith(proxyEvent, null); expect(logger.error).toHaveBeenCalledWith("Error: %O", err); expect(logger.flush).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); expect(res.body).toStrictEqual(JSON.stringify({ error: "Test Error" })); expect(testFunc).toHaveBeenCalledWith(proxyEvent, null); }); diff --git a/services/app-api/handlers/handler-lib.ts b/services/app-api/handlers/handler-lib.ts index 85d06f9d2..7ac5ab6a1 100644 --- a/services/app-api/handlers/handler-lib.ts +++ b/services/app-api/handlers/handler-lib.ts @@ -1,19 +1,20 @@ // utils import * as logger from "../utils/debugging/debug-lib"; -import { isAuthorized } from "../utils/auth/authorization"; +import { isAuthenticated } from "../utils/auth/authorization"; import { + HttpResponse, internalServerError, - buildResponse, + unauthenticated, } from "../utils/responses/response-lib"; import { error } from "../utils/constants/constants"; import { sanitizeObject } from "../utils/sanitize/sanitize"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../utils/types"; +import { APIGatewayProxyEvent } from "../utils/types"; type LambdaFunction = ( event: APIGatewayProxyEvent, // eslint-disable-line no-unused-vars context: any // eslint-disable-line no-unused-vars -) => Promise; +) => Promise; export default function handler(lambda: LambdaFunction) { return async function (event: APIGatewayProxyEvent, context: any) { @@ -24,17 +25,14 @@ export default function handler(lambda: LambdaFunction) { pathParameters: event.pathParameters, queryStringParameters: event.queryStringParameters, }); - if (await isAuthorized(event)) { + if (await isAuthenticated(event)) { try { if (event.body) { const newEventBody = sanitizeObject(JSON.parse(event.body)); event.body = JSON.stringify(newEventBody); } - // Run the Lambda - const { status, body } = await lambda(event, context); - return buildResponse(status, body); + return await lambda(event, context); } catch (error: any) { - // Print debug messages logger.error("Error: %O", error); const body = { error: error.message }; @@ -43,8 +41,7 @@ export default function handler(lambda: LambdaFunction) { logger.flush(); } } else { - const body = { error: error.UNAUTHORIZED }; - return buildResponse(StatusCodes.UNAUTHORIZED, body); + return unauthenticated(error.UNAUTHORIZED); } }; } diff --git a/services/app-api/handlers/reports/approve.test.ts b/services/app-api/handlers/reports/approve.test.ts index c0cbd4fe8..26367d518 100644 --- a/services/app-api/handlers/reports/approve.test.ts +++ b/services/app-api/handlers/reports/approve.test.ts @@ -5,7 +5,8 @@ import { mockWPReport } from "../../utils/testing/setupJest"; import { error } from "../../utils/constants/constants"; import { getReportMetadata, putReportMetadata } from "../../storage/reports"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; jest.mock("../../storage/reports", () => ({ getReportMetadata: jest.fn(), @@ -13,7 +14,7 @@ jest.mock("../../storage/reports", () => ({ })); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), + isAuthenticated: jest.fn().mockResolvedValue(true), hasPermissions: jest.fn(() => {}), })); @@ -51,26 +52,52 @@ describe("Test approveReport method", () => { const res: any = await approveReport(approveEvent, null); const body = JSON.parse(res.body); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.status).toBe("Approved"); expect(putReportMetadata).toHaveBeenCalled(); }); - test("Test approve report with no existing record throws 404", async () => { + test("Test approve report with missing parameters returns 400", async () => { + const event = { + ...approveEvent, + pathParameters: { + ...approveEvent.pathParameters, + state: undefined, + }, + }; + + const res = await approveReport(event, null); + expect(consoleSpy.debug).toHaveBeenCalled(); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.NO_KEY); + }); + + test("Test approve report with no existing record returns 404", async () => { mockAuthUtil.hasPermissions.mockReturnValueOnce(true); (getReportMetadata as jest.Mock).mockResolvedValue(undefined); const res = await approveReport(approveEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.NO_MATCHING_RECORD); }); - test("Test approve report without admin permissions throws 403", async () => { + test("Test approve report without admin permissions returns 403", async () => { mockAuthUtil.hasPermissions.mockReturnValueOnce(false); (getReportMetadata as jest.Mock).mockResolvedValue(undefined); const res = await approveReport(approveEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.UNAUTHORIZED); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); + + test("Test approve report gives dynamo errors nicer messages", async () => { + mockAuthUtil.hasPermissions.mockReturnValueOnce(true); + (getReportMetadata as jest.Mock).mockResolvedValue(mockWPReport); + (putReportMetadata as jest.Mock).mockImplementation(() => { + throw new Error("A scary message about Dynamo internals 👻"); + }); + const res: any = await approveReport(approveEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_UPDATE_ERROR); + }); }); diff --git a/services/app-api/handlers/reports/approve.ts b/services/app-api/handlers/reports/approve.ts index 1cf1b6aa8..597470f3d 100644 --- a/services/app-api/handlers/reports/approve.ts +++ b/services/app-api/handlers/reports/approve.ts @@ -5,33 +5,31 @@ import { hasPermissions } from "../../utils/auth/authorization"; import { parseSpecificReportParameters } from "../../utils/auth/parameters"; import { getReportMetadata, putReportMetadata } from "../../storage/reports"; // types -import { ReportStatus, StatusCodes, UserRoles } from "../../utils/types"; +import { ReportStatus, UserRoles } from "../../utils/types"; +import { + badRequest, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; export const approveReport = handler(async (event) => { const { allParamsValid, reportType, state, id } = parseSpecificReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } // Return a 403 status if the user is not an admin. if (!hasPermissions(event, [UserRoles.ADMIN, UserRoles.APPROVER])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const currentReport = await getReportMetadata(reportType, state, id); if (!currentReport) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const updatedReport = { @@ -44,14 +42,8 @@ export const approveReport = handler(async (event) => { try { await putReportMetadata(updatedReport); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; + return internalServerError(error.DYNAMO_UPDATE_ERROR); } - return { - status: StatusCodes.SUCCESS, - body: updatedReport, - }; + return ok(updatedReport); }); diff --git a/services/app-api/handlers/reports/archive.test.ts b/services/app-api/handlers/reports/archive.test.ts index 7a17fedb1..d0efbb796 100644 --- a/services/app-api/handlers/reports/archive.test.ts +++ b/services/app-api/handlers/reports/archive.test.ts @@ -8,7 +8,8 @@ import { import { error } from "../../utils/constants/constants"; import { getReportMetadata, putReportMetadata } from "../../storage/reports"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; jest.mock("../../storage/reports", () => ({ getReportMetadata: jest.fn(), @@ -16,7 +17,7 @@ jest.mock("../../storage/reports", () => ({ })); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), + isAuthenticated: jest.fn().mockResolvedValue(true), hasPermissions: jest.fn(() => {}), })); @@ -55,16 +56,30 @@ describe("Test archiveReport method", () => { const body = JSON.parse(res.body); expect(consoleSpy.debug).toHaveBeenCalled(); expect(putReportMetadata).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.archived).toBe(true); }); + test("Test archive report with missing parameters returns 400", async () => { + const event = { + ...archiveEvent, + pathParameters: { + ...archiveEvent.pathParameters, + state: undefined, + }, + }; + const res = await archiveReport(event, null); + expect(consoleSpy.debug).toHaveBeenCalled(); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.NO_KEY); + }); + test("Test archive report with no existing record throws 404", async () => { mockAuthUtil.hasPermissions.mockReturnValueOnce(true); (getReportMetadata as jest.Mock).mockResolvedValue(undefined); const res = await archiveReport(archiveEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.NO_MATCHING_RECORD); }); @@ -73,7 +88,7 @@ describe("Test archiveReport method", () => { (getReportMetadata as jest.Mock).mockResolvedValue(undefined); const res = await archiveReport(archiveEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.UNAUTHORIZED); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -84,7 +99,18 @@ describe("Test archiveReport method", () => { ); const res = await archiveReport(archiveEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.INVALID_DATA); }); + + test("Test approve report gives dynamo errors nicer messages", async () => { + mockAuthUtil.hasPermissions.mockReturnValueOnce(true); + (getReportMetadata as jest.Mock).mockResolvedValue(mockWPReport); + (putReportMetadata as jest.Mock).mockImplementation(() => { + throw new Error("A scary message about Dynamo internals 👻"); + }); + const res: any = await archiveReport(archiveEvent, null); + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_UPDATE_ERROR); + }); }); diff --git a/services/app-api/handlers/reports/archive.ts b/services/app-api/handlers/reports/archive.ts index 0cfc993a0..abcb352d5 100644 --- a/services/app-api/handlers/reports/archive.ts +++ b/services/app-api/handlers/reports/archive.ts @@ -5,24 +5,25 @@ import { hasPermissions } from "../../utils/auth/authorization"; import { parseSpecificReportParameters } from "../../utils/auth/parameters"; import { getReportMetadata, putReportMetadata } from "../../storage/reports"; // types -import { ReportType, StatusCodes, UserRoles } from "../../utils/types"; +import { ReportType, UserRoles } from "../../utils/types"; +import { + badRequest, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; export const archiveReport = handler(async (event) => { const { allParamsValid, reportType, state, id } = parseSpecificReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } // Return a 403 status if the user is not an admin. if (!hasPermissions(event, [UserRoles.ADMIN, UserRoles.APPROVER])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const currentReport = await getReportMetadata(reportType, state, id); @@ -30,17 +31,11 @@ export const archiveReport = handler(async (event) => { // WP with associated SAR cannot be archived if (reportType !== ReportType.WP || hasAssociatedSar) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + return badRequest(error.INVALID_DATA); } if (!currentReport) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const updatedReport = { @@ -51,14 +46,8 @@ export const archiveReport = handler(async (event) => { try { await putReportMetadata(updatedReport); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; + return internalServerError(error.DYNAMO_UPDATE_ERROR); } - return { - status: StatusCodes.SUCCESS, - body: updatedReport, - }; + return ok(updatedReport); }); diff --git a/services/app-api/handlers/reports/create.test.ts b/services/app-api/handlers/reports/create.test.ts index e07bc5a55..88b2d62b5 100644 --- a/services/app-api/handlers/reports/create.test.ts +++ b/services/app-api/handlers/reports/create.test.ts @@ -18,9 +18,10 @@ import { putReportFieldData, } from "../../storage/reports"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; import { copyFieldDataFromSource } from "../../utils/other/copy"; import { getOrCreateFormTemplate } from "../../utils/formTemplates/formTemplates"; +import { StatusCodes } from "../../utils/responses/response-lib"; jest.mock("../../storage/reports", () => ({ queryReportMetadatasForState: jest.fn(), @@ -47,7 +48,7 @@ jest.mock("../../utils/formTemplates/formTemplates", () => ({ jest.mock("../../utils/auth/authorization", () => ({ hasPermissions: jest.fn().mockReturnValue(true), - isAuthorized: jest.fn().mockResolvedValue(true), + isAuthenticated: jest.fn().mockResolvedValue(true), isAuthorizedToFetchState: jest.fn().mockReturnValue(true), })); @@ -158,10 +159,10 @@ describe("Test createReport API method", () => { consoleSpy.warn = jest.spyOn(console, "warn").mockImplementation(); }); - test("Test unauthorized report creation throws 403 error", async () => { - jest.spyOn(authFunctions, "isAuthorized").mockResolvedValueOnce(false); + test("Test unauthorized report creation throws 401 error", async () => { + jest.spyOn(authFunctions, "isAuthenticated").mockResolvedValueOnce(false); const res = await createReport(wpCreationEvent, null); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Unauthenticated); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -169,7 +170,7 @@ describe("Test createReport API method", () => { jest.spyOn(authFunctions, "hasPermissions").mockReturnValueOnce(false); const res = await createReport(wpCreationEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -181,7 +182,7 @@ describe("Test createReport API method", () => { const res = await createReport(badStateEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); }); test("Test report creation throws a 400 when given a bad ReportType", async () => { @@ -192,14 +193,14 @@ describe("Test createReport API method", () => { const res = await createReport(badReportEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); }); - test("Test report creation throws a 403 when copying a report of the same period", async () => { + test("Test report creation throws a 400 when copying a report of the same period", async () => { jest.useFakeTimers().setSystemTime(new Date(2021, 11, 1)); const res = await createReport(wpCopyCreationEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(403); + expect(res.statusCode).toBe(StatusCodes.BadRequest); }); test("Test successful run of work plan report creation, not copied", async () => { @@ -207,9 +208,9 @@ describe("Test createReport API method", () => { { reportYear: 2020, reportPeriod: 1, archived: true }, ]); const res = await createReport(wpCreationEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(body.status).toContain("Not started"); expect(body.fieldDataId).toBeDefined; expect(body.formTemplateId).toBeDefined; @@ -227,7 +228,7 @@ describe("Test createReport API method", () => { { reportYear: 2020, reportPeriod: 1, archived: undefined }, ]); const res = await createReport(wpCreationEvent, null); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); }); test("Test successful run of work plan report creation, copied", async () => { @@ -239,9 +240,9 @@ describe("Test createReport API method", () => { ); jest.useFakeTimers().setSystemTime(new Date(2022, 11, 1)); const res = await createReport(wpCopyCreationEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(body.status).toContain("Not started"); expect(body.fieldDataId).toBeDefined; expect(body.formTemplateId).toBeDefined; @@ -256,7 +257,7 @@ describe("Test createReport API method", () => { (getEligibleWorkPlan as jest.Mock).mockResolvedValue({}); const res = await createReport(sarCreationEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test successful run of sar report creation, not copied", async () => { @@ -268,9 +269,9 @@ describe("Test createReport API method", () => { { reportYear: 2020, reportPeriod: 1, archived: true }, ]); const res = await createReport(sarCreationEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.CREATED); + expect(res.statusCode).toBe(StatusCodes.Created); expect(body.status).toContain("Not started"); expect(body.fieldDataId).toBeDefined; expect(body.formTemplateId).toBeDefined; @@ -280,14 +281,14 @@ describe("Test createReport API method", () => { test("Test attempted report creation with invalid data fails", async () => { const res = await createReport(creationEventWithInvalidData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.INVALID_DATA); }); test("Test attempted report creation without field data throws 400 error", async () => { const res = await createReport(creationEventWithNoFieldData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.MISSING_DATA); }); @@ -299,7 +300,7 @@ describe("Test createReport API method", () => { const res = await createReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -311,7 +312,7 @@ describe("Test createReport API method", () => { const res = await createReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/reports/create.ts b/services/app-api/handlers/reports/create.ts index 10b99152d..223f8b6d7 100644 --- a/services/app-api/handlers/reports/create.ts +++ b/services/app-api/handlers/reports/create.ts @@ -36,26 +36,26 @@ import { APIGatewayProxyEvent, ReportMetadataShape, ReportType, - StatusCodes, UserRoles, } from "../../utils/types"; +import { + badRequest, + created, + forbidden, + internalServerError, + notFound, +} from "../../utils/responses/response-lib"; export const createReport = handler( async (event: APIGatewayProxyEvent, _context) => { const { allParamsValid, reportType, state } = parseStateReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } if (!hasPermissions(event, [UserRoles.STATE_USER], state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const reportTypeExpanded = reportNames[reportType]; @@ -75,15 +75,12 @@ export const createReport = handler( ? await getEligibleWorkPlan(state) : { workPlanMetadata: undefined, workPlanFieldData: undefined }; - // If we recieved no work plan information and we're trying to create a SAR, return NO_WORKPLANS_FOUND + // If we received no work plan information and we're trying to create a SAR, return NO_WORKPLANS_FOUND if ( reportType === ReportType.SAR && (!workPlanMetadata || !workPlanFieldData) ) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_WORKPLANS_FOUND, - }; + return notFound(error.NO_WORKPLANS_FOUND); } // Check the payload that was sent with the request and setup validation @@ -131,17 +128,19 @@ export const createReport = handler( // Return MISSING_DATA error if missing unvalidated data or validators. if (!unvalidatedFieldData || !formTemplate.validationJson) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return badRequest(error.MISSING_DATA); } // Setup validation for what we expect to see in the payload - let validatedFieldData = await validateFieldData( - creationFieldDataValidationJson, - unvalidatedFieldData - ); + let validatedFieldData; + try { + validatedFieldData = await validateFieldData( + creationFieldDataValidationJson, + unvalidatedFieldData + ); + } catch { + return badRequest(error.INVALID_DATA); + } // If we are creating a SAR and found a Work Plan to copy from, grab its field data and add it to our SAR if (workPlanFieldData) { @@ -153,12 +152,9 @@ export const createReport = handler( extractWorkPlanData(validatedFieldData!, reportYear, reportPeriod); } - // Return INVALID_DATA error if field data is not valid. - if (!validatedFieldData || Object.keys(validatedFieldData).length === 0) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.INVALID_DATA, - }; + // Return INVALID_DATA error field data has no valid entries + if (validatedFieldData && Object.keys(validatedFieldData).length === 0) { + return badRequest(error.INVALID_DATA); } // End Section - Check the payload that was sent with the request and validate it @@ -178,10 +174,7 @@ export const createReport = handler( //do not allow user to create a copy if it's the same period if (isCurrentPeriod && !overrideCopyOver) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNABLE_TO_COPY, - }; + return badRequest(error.UNABLE_TO_COPY); } newFieldData = await copyFieldDataFromSource( @@ -201,16 +194,14 @@ export const createReport = handler( */ // Validate the metadata for the submission - const validatedMetadata = await validateData(metadataValidationSchema, { - ...unvalidatedMetadata, - }); - - // Return INVALID_DATA error if metadata is not valid. - if (!validatedMetadata) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + let validatedMetadata; + try { + validatedMetadata = await validateData(metadataValidationSchema, { + ...unvalidatedMetadata, + }); + } catch { + // Return INVALID_DATA error if metadata is not valid. + return badRequest(error.INVALID_DATA); } const existingReports: ReportMetadataShape[] = @@ -227,10 +218,7 @@ export const createReport = handler( existingReportYear === reportYear && existingReportPeriod === reportPeriod ) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + return badRequest(error.INVALID_DATA); } } const reportId: string = KSUID.randomSync().string; @@ -243,10 +231,7 @@ export const createReport = handler( newFieldData ); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_CREATION_ERROR, - }; + return internalServerError(error.S3_OBJECT_CREATION_ERROR); } // Begin Section - Create DyanmoDB record @@ -277,10 +262,7 @@ export const createReport = handler( try { await putReportMetadata(createdReportMetadata); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_CREATION_ERROR, - }; + return internalServerError(error.DYNAMO_CREATION_ERROR); } // End Section - Create DynamoDB record. @@ -294,23 +276,17 @@ export const createReport = handler( try { await putReportMetadata(workPlanWithSarConnection); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_CREATION_ERROR, - }; + return internalServerError(error.DYNAMO_CREATION_ERROR); } } // End Section - Let the Workplan know that its been tied to a SAR that was just created // Return successful creation response! - return { - status: StatusCodes.CREATED, - body: { - ...createdReportMetadata, - fieldData: validatedFieldData, - formTemplate, - formTemplateVersion: formTemplateVersion?.versionNumber, - }, - }; + return created({ + ...createdReportMetadata, + fieldData: validatedFieldData, + formTemplate, + formTemplateVersion: formTemplateVersion?.versionNumber, + }); } ); diff --git a/services/app-api/handlers/reports/fetch.test.ts b/services/app-api/handlers/reports/fetch.test.ts index 5bf5a5e38..12bfed358 100644 --- a/services/app-api/handlers/reports/fetch.test.ts +++ b/services/app-api/handlers/reports/fetch.test.ts @@ -15,7 +15,9 @@ import { queryReportMetadatasForState, } from "../../storage/reports"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; +import { isAuthorizedToFetchState } from "../../utils/auth/authorization"; jest.mock("../../storage/reports", () => ({ getReportFieldData: jest.fn(), @@ -26,12 +28,10 @@ jest.mock("../../storage/reports", () => ({ jest.mock("../../utils/auth/authorization", () => ({ hasPermissions: jest.fn(() => {}), - isAuthorized: jest.fn().mockReturnValue(true), - isAuthorizedToFetchState: jest.fn(() => {}), + isAuthenticated: jest.fn().mockReturnValue(true), + isAuthorizedToFetchState: jest.fn().mockReturnValue(true), })); -const mockAuthUtil = require("../../utils/auth/authorization"); - const testReadEvent: APIGatewayProxyEvent = { ...proxyEvent, headers: { "cognito-identity-id": "test" }, @@ -58,8 +58,7 @@ let consoleSpy: { describe("handlers/reports/fetch", () => { beforeEach(() => { - jest.restoreAllMocks(); - mockAuthUtil.isAuthorizedToFetchState.mockReturnValueOnce(true); + jest.clearAllMocks(); consoleSpy.debug = jest.spyOn(console, "debug").mockImplementation(); consoleSpy.warn = jest.spyOn(console, "warn").mockImplementation(); }); @@ -69,7 +68,7 @@ describe("handlers/reports/fetch", () => { (getReportMetadata as jest.Mock).mockResolvedValue(undefined); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Report Form not found in S3", async () => { @@ -78,7 +77,7 @@ describe("handlers/reports/fetch", () => { (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Field Data not found in S3", async () => { @@ -87,7 +86,7 @@ describe("handlers/reports/fetch", () => { (getReportFieldData as jest.Mock).mockResolvedValue(undefined); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Successful Report Fetch w/ Incomplete Report", async () => { @@ -96,8 +95,8 @@ describe("handlers/reports/fetch", () => { (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.submissionName).toContain("testProgram"); expect(body.completionStatus).toMatchObject( @@ -116,8 +115,8 @@ describe("handlers/reports/fetch", () => { (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); const res = await fetchReport(testReadEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.submissionName).toContain("testProgram"); expect(body.completionStatus).toMatchObject({ @@ -128,6 +127,26 @@ describe("handlers/reports/fetch", () => { expect(body.formTemplate).toStrictEqual(mockReportJson); }); + test("Test Successful Report Fetch, creating completionStatus", async () => { + const metadataWithNoCompletionStatus = { + ...mockDynamoDataWPCompleted, + completionStatus: undefined, + }; + (getReportMetadata as jest.Mock).mockResolvedValue( + metadataWithNoCompletionStatus + ); + (getReportFormTemplate as jest.Mock).mockResolvedValue(mockReportJson); + (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); + const res = await fetchReport(testReadEvent, null); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); + expect(body.completionStatus).toEqual({ + "/mock/mock-route-1": false, + "/mock/mock-route-2": {}, + }); + expect(body.isComplete).toEqual(false); + }); + test("Test reportKeys not provided throws 400 error", async () => { const noKeyEvent: APIGatewayProxyEvent = { ...testReadEvent, @@ -135,7 +154,7 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -146,9 +165,16 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); + + test("Test unauthorized returns 403", async () => { + (isAuthorizedToFetchState as jest.Mock).mockReturnValueOnce(false); + const res = await fetchReport(testReadEvent, null); + expect(res.statusCode).toBe(StatusCodes.Forbidden); + expect(res.body).toContain(error.UNAUTHORIZED); + }); }); describe("Test fetchReportsByState API method", () => { @@ -158,8 +184,8 @@ describe("handlers/reports/fetch", () => { ]); const res = await fetchReportsByState(testReadEventByState, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); - const body = JSON.parse(res.body); + expect(res.statusCode).toBe(StatusCodes.Ok); + const body = JSON.parse(res.body!); expect(body[0].lastAlteredBy).toContain("Thelonious States"); expect(body[0].submissionName).toContain("testProgram"); }); @@ -171,7 +197,7 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReportsByState(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -182,8 +208,15 @@ describe("handlers/reports/fetch", () => { }; const res = await fetchReportsByState(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); + + test("Test unauthorized returns 403", async () => { + (isAuthorizedToFetchState as jest.Mock).mockReturnValueOnce(false); + const res = await fetchReportsByState(testReadEventByState, null); + expect(res.statusCode).toBe(StatusCodes.Forbidden); + expect(res.body).toContain(error.UNAUTHORIZED); + }); }); }); diff --git a/services/app-api/handlers/reports/fetch.ts b/services/app-api/handlers/reports/fetch.ts index cad59db68..f83ce2d82 100644 --- a/services/app-api/handlers/reports/fetch.ts +++ b/services/app-api/handlers/reports/fetch.ts @@ -11,53 +11,43 @@ import { parseStateReportParameters, } from "../../utils/auth/parameters"; // types -import { StatusCodes } from "../../utils/types"; import { getReportFieldData, getReportFormTemplate, getReportMetadata, queryReportMetadatasForState, } from "../../storage/reports"; +import { + badRequest, + forbidden, + notFound, + ok, +} from "../../utils/responses/response-lib"; export const fetchReport = handler(async (event, _context) => { const { allParamsValid, reportType, state, id } = parseSpecificReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } if (!isAuthorizedToFetchState(event, state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const reportMetadata = await getReportMetadata(reportType, state, id); if (!reportMetadata) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const fieldData = await getReportFieldData(reportMetadata); if (!fieldData) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const formTemplate = await getReportFormTemplate(reportMetadata); if (!formTemplate) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } if (!reportMetadata.completionStatus) { @@ -68,37 +58,25 @@ export const fetchReport = handler(async (event, _context) => { reportMetadata.isComplete = isComplete(reportMetadata.completionStatus); } - return { - status: StatusCodes.SUCCESS, - body: { - ...reportMetadata, - formTemplate, - fieldData, - }, - }; + return ok({ + ...reportMetadata, + formTemplate, + fieldData, + }); }); export const fetchReportsByState = handler(async (event, _context) => { const { allParamsValid, reportType, state } = parseStateReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } if (!isAuthorizedToFetchState(event, state!)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const reportsByState = await queryReportMetadatasForState(reportType, state); - return { - status: StatusCodes.SUCCESS, - body: reportsByState, - }; + return ok(reportsByState); }); diff --git a/services/app-api/handlers/reports/release.test.ts b/services/app-api/handlers/reports/release.test.ts index 3c0987a1b..2d057f6a2 100644 --- a/services/app-api/handlers/reports/release.test.ts +++ b/services/app-api/handlers/reports/release.test.ts @@ -17,7 +17,8 @@ import { putReportFieldData, } from "../../storage/reports"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; jest.mock("../../storage/reports", () => ({ getReportMetadata: jest.fn(), @@ -26,10 +27,13 @@ jest.mock("../../storage/reports", () => ({ putReportFieldData: jest.fn(), putReportMetadata: jest.fn(), })); +(getReportMetadata as jest.Mock).mockResolvedValue(mockDynamoDataWPLocked); +(getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); +(getReportFormTemplate as jest.Mock).mockResolvedValue(mockReportJson); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), - hasPermissions: jest.fn(() => {}), + isAuthenticated: jest.fn().mockResolvedValue(true), + hasPermissions: jest.fn().mockReturnValue(true), })); const mockAuthUtil = require("../../utils/auth/authorization"); @@ -58,16 +62,11 @@ describe("Test releaseReport method", () => { }); test("Test release report passes with valid data", async () => { - mockAuthUtil.hasPermissions.mockReturnValueOnce(true); - (getReportMetadata as jest.Mock).mockResolvedValue(mockDynamoDataWPLocked); - (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); - (getReportFormTemplate as jest.Mock).mockResolvedValue(mockReportJson); - const res = await releaseReport(releaseEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.locked).toBe(false); expect(body.previousRevisions).toEqual([ mockDynamoDataWPLocked.fieldDataId, @@ -80,21 +79,18 @@ describe("Test releaseReport method", () => { }); test("Test release report passes with valid data, but it has been more than the first submission", async () => { - mockAuthUtil.hasPermissions.mockReturnValueOnce(true); const newPreviousId = KSUID.randomSync().string; - (getReportMetadata as jest.Mock).mockResolvedValue({ + (getReportMetadata as jest.Mock).mockResolvedValueOnce({ ...mockDynamoDataWPLocked, previousRevisions: [newPreviousId], submissionCount: 1, }); - (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); - (getReportFormTemplate as jest.Mock).mockResolvedValue(mockReportJson); const res = await releaseReport(releaseEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.locked).toBe(false); expect(body.submissionCount).toBe(1); expect(body.previousRevisions.length).toBe(2); @@ -105,12 +101,65 @@ describe("Test releaseReport method", () => { expect(body.fieldDataId).not.toBe(mockDynamoDataWPLocked.fieldDataId); }); + test("Test release report on already-released report", async () => { + const unlockedReport = { + ...mockDynamoDataWPLocked, + locked: false, + }; + (getReportMetadata as jest.Mock).mockResolvedValueOnce(unlockedReport); + + const res = await releaseReport(releaseEvent, null); + const body = JSON.parse(res.body!); + + expect(res.statusCode).toBe(StatusCodes.Ok); + expect(body.locked).toBe(false); + }); + + test("Test release report on archived report", async () => { + const unlockedReport = { + ...mockDynamoDataWPLocked, + archived: true, + }; + (getReportMetadata as jest.Mock).mockResolvedValueOnce(unlockedReport); + + const res = await releaseReport(releaseEvent, null); + + expect(res.statusCode).toBe(StatusCodes.Conflict); + expect(res.body).toContain(error.ALREADY_ARCHIVED); + }); + + test("Test release report with no parameters returns 400", async () => { + const event = { + ...releaseEvent, + pathParameters: { + ...releaseEvent.pathParameters, + state: undefined, + }, + }; + const res = await releaseReport(event, null); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.NO_KEY); + }); + test("Test release report with no existing record throws 404", async () => { - mockAuthUtil.hasPermissions.mockReturnValueOnce(true); - (getReportMetadata as jest.Mock).mockResolvedValue(undefined); + (getReportMetadata as jest.Mock).mockResolvedValueOnce(undefined); const res = await releaseReport(releaseEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); + expect(res.body).toContain(error.NO_MATCHING_RECORD); + }); + + test("Test release report with no field data returns 404", async () => { + (getReportFieldData as jest.Mock).mockResolvedValueOnce(undefined); + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.NotFound); + expect(res.body).toContain(error.NO_MATCHING_RECORD); + }); + + test("Test release report with no form template returns 404", async () => { + (getReportFormTemplate as jest.Mock).mockResolvedValueOnce(undefined); + const res = await releaseReport(releaseEvent, null); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.NO_MATCHING_RECORD); }); @@ -118,7 +167,30 @@ describe("Test releaseReport method", () => { mockAuthUtil.hasPermissions.mockReturnValueOnce(false); const res = await releaseReport(releaseEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.UNAUTHORIZED); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); + + test("Test release report gives dynamo errors nicer messages", async () => { + (putReportMetadata as jest.Mock).mockImplementationOnce(() => { + throw new Error("A scary message about Dynamo internals 👻"); + }); + + const res = await releaseReport(releaseEvent, null); + + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.DYNAMO_UPDATE_ERROR); + }); + + test("Test release report gives s3 errors nicer messages", async () => { + mockAuthUtil.hasPermissions.mockReturnValueOnce(true); + (putReportFieldData as jest.Mock).mockImplementationOnce(() => { + throw new Error("A scary message about S3 internals 👻"); + }); + + const res = await releaseReport(releaseEvent, null); + + expect(res.statusCode).toBe(StatusCodes.InternalServerError); + expect(res.body).toContain(error.S3_OBJECT_CREATION_ERROR); + }); }); diff --git a/services/app-api/handlers/reports/release.ts b/services/app-api/handlers/reports/release.ts index cfc5ee84b..aecf62776 100644 --- a/services/app-api/handlers/reports/release.ts +++ b/services/app-api/handlers/reports/release.ts @@ -16,9 +16,16 @@ import { import { ReportMetadataShape, ReportStatus, - StatusCodes, UserRoles, } from "../../utils/types"; +import { + badRequest, + conflict, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; /** * Locked reports can be released by admins. @@ -35,47 +42,30 @@ export const releaseReport = handler(async (event) => { const { allParamsValid, reportType, state, id } = parseSpecificReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } // Return a 403 status if the user is not an admin. if (!hasPermissions(event, [UserRoles.ADMIN, UserRoles.APPROVER])) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const metadata = await getReportMetadata(reportType, state, id); if (!metadata) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const isLocked = metadata.locked; // Report is not locked. if (!isLocked) { - return { - status: StatusCodes.SUCCESS, - body: { - ...metadata, - }, - }; + return ok(metadata); } const isArchived = metadata.archived; if (isArchived) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.ALREADY_ARCHIVED, - }; + return conflict(error.ALREADY_ARCHIVED); } const newFieldDataId = KSUID.randomSync().string; @@ -86,18 +76,12 @@ export const releaseReport = handler(async (event) => { const fieldData = await getReportFieldData(metadata); if (!fieldData) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const formTemplate = await getReportFormTemplate(metadata); if (!formTemplate) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } const updatedFieldData = { @@ -120,23 +104,14 @@ export const releaseReport = handler(async (event) => { try { await putReportMetadata(newReportMetadata); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; + return internalServerError(error.DYNAMO_UPDATE_ERROR); } // Copy the original field data to a new location. try { await putReportFieldData(newReportMetadata, updatedFieldData); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_CREATION_ERROR, - }; + return internalServerError(error.S3_OBJECT_CREATION_ERROR); } - return { - status: StatusCodes.SUCCESS, - body: newReportMetadata, - }; + return ok(newReportMetadata); }); diff --git a/services/app-api/handlers/reports/submit.test.ts b/services/app-api/handlers/reports/submit.test.ts index 18dcc7f9a..4360973bf 100644 --- a/services/app-api/handlers/reports/submit.test.ts +++ b/services/app-api/handlers/reports/submit.test.ts @@ -19,7 +19,8 @@ import { putReportMetadata, } from "../../storage/reports"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; mockClient(DynamoDBDocumentClient); @@ -32,7 +33,7 @@ jest.mock("../../storage/reports", () => ({ })); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), hasPermissions: jest.fn().mockReturnValue(true), })); @@ -65,7 +66,7 @@ describe("Test submitReport API method", () => { (getReportMetadata as jest.Mock).mockResolvedValue(undefined); const res = await submitReport(testSubmitEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); }); test("Test Successful Report Submittal", async () => { @@ -76,10 +77,10 @@ describe("Test submitReport API method", () => { (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); const res = await submitReport(testSubmitEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.submissionName).toContain("testProgram"); expect(body.isComplete).toStrictEqual(true); @@ -99,10 +100,10 @@ describe("Test submitReport API method", () => { (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); const res = await submitReport(testSubmitEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(body.lastAlteredBy).toContain("Thelonious States"); expect(body.submissionName).toContain("testProgram"); expect(body.isComplete).toStrictEqual(true); @@ -117,10 +118,10 @@ describe("Test submitReport API method", () => { (getReportMetadata as jest.Mock).mockResolvedValue(mockDynamoData); const res = await submitReport(testSubmitEvent, null); - const body = JSON.parse(res.body); + const body = JSON.parse(res.body!); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(res.statusCode).toBe(StatusCodes.Conflict); expect(body).toStrictEqual(error.REPORT_INCOMPLETE); }); @@ -131,7 +132,7 @@ describe("Test submitReport API method", () => { }; const res = await submitReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -142,7 +143,7 @@ describe("Test submitReport API method", () => { }; const res = await submitReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); }); diff --git a/services/app-api/handlers/reports/submit.ts b/services/app-api/handlers/reports/submit.ts index 0978c4f09..bdc5fb10b 100644 --- a/services/app-api/handlers/reports/submit.ts +++ b/services/app-api/handlers/reports/submit.ts @@ -7,7 +7,7 @@ import { parseSpecificReportParameters } from "../../utils/auth/parameters"; import { error } from "../../utils/constants/constants"; import { convertDateUtcToEt } from "../../utils/time/time"; // types -import { ReportStatus, StatusCodes, UserRoles } from "../../utils/types"; +import { ReportStatus, UserRoles } from "../../utils/types"; import { getReportFieldData, getReportFormTemplate, @@ -15,125 +15,94 @@ import { putReportFieldData, putReportMetadata, } from "../../storage/reports"; +import { + badRequest, + conflict, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; export const submitReport = handler(async (event, _context) => { const { allParamsValid, reportType, state, id } = parseSpecificReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } if (!hasPermissions(event, [UserRoles.STATE_USER], state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } - try { - const reportMetadata = await getReportMetadata(reportType, state, id); - if (!reportMetadata) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NOT_IN_DATABASE, - }; - } - - const { status, isComplete } = reportMetadata; + const reportMetadata = await getReportMetadata(reportType, state, id); + if (!reportMetadata) { + return notFound(error.NOT_IN_DATABASE); + } - if (status === "Submitted") { - return { - status: StatusCodes.SUCCESS, - body: { - ...reportMetadata, - }, - }; - } + const { status, isComplete } = reportMetadata; - if (!isComplete) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.REPORT_INCOMPLETE, - }; - } + if (status === "Submitted") { + return ok(reportMetadata); + } - const jwt = jwtDecode(event.headers["x-api-key"]!) as Record< - string, - string | bool - >; + if (!isComplete) { + return conflict(error.REPORT_INCOMPLETE); + } - const date = Date.now(); - const fullName = `${jwt.given_name} ${jwt.family_name}`; - const submissionCount = reportMetadata.submissionCount - ? reportMetadata.submissionCount + 1 - : 1; - const submittedReportMetadata = { - ...reportMetadata, - submittedBy: fullName, - submittedOnDate: date, - status: ReportStatus.SUBMITTED, - locked: true, - submissionCount: submissionCount, - }; + const jwt = jwtDecode(event.headers["x-api-key"]!) as Record< + string, + string | bool + >; - try { - await putReportMetadata(submittedReportMetadata); - } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; - } + const date = Date.now(); + const fullName = `${jwt.given_name} ${jwt.family_name}`; + const submissionCount = reportMetadata.submissionCount + ? reportMetadata.submissionCount + 1 + : 1; + const submittedReportMetadata = { + ...reportMetadata, + submittedBy: fullName, + submittedOnDate: date, + status: ReportStatus.SUBMITTED, + locked: true, + submissionCount: submissionCount, + }; - const existingFieldData = await getReportFieldData(reportMetadata); - if (!existingFieldData) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.NOT_IN_DATABASE, - }; - } + try { + await putReportMetadata(submittedReportMetadata); + } catch { + return internalServerError(error.DYNAMO_UPDATE_ERROR); + } - const fieldData = { - ...existingFieldData, - submitterName: fullName, - submitterEmailAddress: jwt.email, - reportSubmissionDate: convertDateUtcToEt(date), - }; + const existingFieldData = await getReportFieldData(reportMetadata); + if (!existingFieldData) { + return internalServerError(error.NOT_IN_DATABASE); + } - const formTemplate = await getReportFormTemplate(reportMetadata); - if (!formTemplate) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.NOT_IN_DATABASE, - }; - } + const fieldData = { + ...existingFieldData, + submitterName: fullName, + submitterEmailAddress: jwt.email, + reportSubmissionDate: convertDateUtcToEt(date), + }; - try { - await putReportFieldData(reportMetadata, fieldData); - } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_UPDATE_ERROR, - }; - } + const formTemplate = await getReportFormTemplate(reportMetadata); + if (!formTemplate) { + return internalServerError(error.NOT_IN_DATABASE); + } - return { - status: StatusCodes.SUCCESS, - body: { - ...submittedReportMetadata, - fieldData: { ...fieldData }, - formTemplate: { - ...formTemplate, - }, - }, - }; + try { + await putReportFieldData(reportMetadata, fieldData); } catch { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return internalServerError(error.S3_OBJECT_UPDATE_ERROR); } + + return ok({ + ...submittedReportMetadata, + fieldData: { ...fieldData }, + formTemplate: { + ...formTemplate, + }, + }); }); diff --git a/services/app-api/handlers/reports/update.test.ts b/services/app-api/handlers/reports/update.test.ts index 7f7f2c8ec..3edcbdd52 100644 --- a/services/app-api/handlers/reports/update.test.ts +++ b/services/app-api/handlers/reports/update.test.ts @@ -16,7 +16,9 @@ import { putReportMetadata, } from "../../storage/reports"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; +import { hasPermissions } from "../../utils/auth/authorization"; jest.mock("../../storage/reports", () => ({ getReportFieldData: jest.fn(), @@ -27,7 +29,7 @@ jest.mock("../../storage/reports", () => ({ })); jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockResolvedValue(true), + isAuthenticated: jest.fn().mockResolvedValue(true), hasPermissions: jest.fn(() => {}), })); const mockAuthUtil = require("../../utils/auth/authorization"); @@ -113,12 +115,12 @@ describe("Test updateReport API method", () => { (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); const response = await updateReport(submissionEvent, null); - const body = JSON.parse(response.body); + const body = JSON.parse(response.body!); expect(body.status).toContain("submitted"); expect(body.fieldData["mock-number-field"]).toBe("2"); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(response.statusCode).toBe(StatusCodes.SUCCESS); + expect(response.statusCode).toBe(StatusCodes.Ok); expect(putReportFieldData).toHaveBeenCalled(); expect(putReportMetadata).toHaveBeenCalled(); }); @@ -130,26 +132,62 @@ describe("Test updateReport API method", () => { const response = await updateReport(invalidFieldDataSubmissionEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(response.statusCode).toBe(StatusCodes.SERVER_ERROR); + expect(response.statusCode).toBe(StatusCodes.BadRequest); expect(response.body).toContain(error.INVALID_DATA); expect(putReportFieldData).not.toHaveBeenCalled(); expect(putReportMetadata).not.toHaveBeenCalled(); }); + test("Test attempted report update with no data returns 400", async () => { + const noBodyEvent = { + ...submissionEvent, + body: null, + }; + const res = await updateReport(noBodyEvent, null); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.MISSING_DATA); + }); + test("Test attempted report update with invalid data throws 400", async () => { (getReportMetadata as jest.Mock).mockResolvedValue(mockWPReport); const res = await updateReport(updateEventWithInvalidData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.BAD_REQUEST); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.MISSING_DATA); }); + test("Test attempted report update with disallowed metadata properties returns 400", async () => { + const eventWritingToReadonlyMetadataFields = { + ...submissionEvent, + body: `{"metadata":{"locked":true}}`, + }; + const res = await updateReport(eventWritingToReadonlyMetadataFields, null); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.INVALID_DATA); + }); + + test("Test attempted report update with disallowed fieldData properties returns 400", async () => { + const eventWritingToReadonlyFieldDataFields = { + ...submissionEvent, + body: `{"fieldData":{"submitterName":"Abaraham Lincoln"}}`, + }; + const res = await updateReport(eventWritingToReadonlyFieldDataFields, null); + expect(res.statusCode).toBe(StatusCodes.BadRequest); + expect(res.body).toContain(error.INVALID_DATA); + }); + + test("Test attempted report update without permissions returns 403", async () => { + (hasPermissions as jest.Mock).mockReturnValueOnce(false); + const res = await updateReport(submissionEvent, null); + expect(res.statusCode).toBe(StatusCodes.Forbidden); + expect(res.body).toContain(error.UNAUTHORIZED); + }); + test("Test attempted report update with no existing record throws 404", async () => { (getReportMetadata as jest.Mock).mockResolvedValue(undefined); const res = await updateReport(updateEventWithInvalidData, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.NOT_FOUND); + expect(res.statusCode).toBe(StatusCodes.NotFound); expect(res.body).toContain(error.NO_MATCHING_RECORD); }); @@ -162,7 +200,7 @@ describe("Test updateReport API method", () => { const res = await updateReport(updateEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.UNAUTHORIZED); + expect(res.statusCode).toBe(StatusCodes.Forbidden); expect(res.body).toContain(error.UNAUTHORIZED); }); @@ -174,7 +212,7 @@ describe("Test updateReport API method", () => { const res = await updateReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); @@ -186,7 +224,47 @@ describe("Test updateReport API method", () => { const res = await updateReport(noKeyEvent, null); expect(consoleSpy.warn).toHaveBeenCalled(); - expect(res.statusCode).toBe(400); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_KEY); }); + + test("Test missing form template returns 404", async () => { + (getReportMetadata as jest.Mock).mockResolvedValue(mockDynamoData); + (getReportFormTemplate as jest.Mock).mockResolvedValue(undefined); + (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); + + const response = await updateReport(submissionEvent, null); + + expect(response.statusCode).toBe(StatusCodes.NotFound); + expect(response.body).toContain(error.MISSING_DATA); + }); + + test("Test missing field data returns 404", async () => { + (getReportMetadata as jest.Mock).mockResolvedValue(mockDynamoData); + (getReportFormTemplate as jest.Mock).mockResolvedValue(mockReportJson); + (getReportFieldData as jest.Mock).mockResolvedValue(undefined); + + const response = await updateReport(submissionEvent, null); + + expect(response.statusCode).toBe(StatusCodes.NotFound); + expect(response.body).toContain(error.MISSING_DATA); + }); + + test("Test attempted report update when form template missing validationJson throws 500", async () => { + const formTemplateWithNoValidation = { + ...mockReportJson, + validationJson: undefined, + }; + + (getReportMetadata as jest.Mock).mockResolvedValue(mockDynamoData); + (getReportFormTemplate as jest.Mock).mockResolvedValue( + formTemplateWithNoValidation + ); + (getReportFieldData as jest.Mock).mockResolvedValue(mockReportFieldData); + + const response = await updateReport(submissionEvent, null); + + expect(response.statusCode).toBe(StatusCodes.InternalServerError); + expect(response.body).toContain(error.MISSING_FORM_TEMPLATE); + }); }); diff --git a/services/app-api/handlers/reports/update.ts b/services/app-api/handlers/reports/update.ts index 5b7b6134d..58f332c97 100644 --- a/services/app-api/handlers/reports/update.ts +++ b/services/app-api/handlers/reports/update.ts @@ -13,7 +13,7 @@ import { isComplete, } from "../../utils/validation/completionStatus"; // types -import { StatusCodes, UserRoles } from "../../utils/types"; +import { UserRoles } from "../../utils/types"; import { removeNotApplicablePopsFromInitiatives } from "../../utils/data/data"; import { getReportFieldData, @@ -22,23 +22,24 @@ import { putReportFieldData, putReportMetadata, } from "../../storage/reports"; +import { + badRequest, + forbidden, + internalServerError, + notFound, + ok, +} from "../../utils/responses/response-lib"; export const updateReport = handler(async (event) => { const { allParamsValid, reportType, state, id } = parseSpecificReportParameters(event); if (!allParamsValid) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.NO_KEY, - }; + return badRequest(error.NO_KEY); } // If request body is missing, return a 400 error. if (!event?.body) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return badRequest(error.MISSING_DATA); } // Blocklisted keys @@ -54,67 +55,43 @@ export const updateReport = handler(async (event) => { "reportSubmissionDate", ]; - try { - const eventBody = JSON.parse(event.body); - if ( - (eventBody.metadata && - Object.keys(eventBody.metadata).some((_) => - metadataBlocklist.includes(_) - )) || - (eventBody.fieldData && - Object.keys(eventBody.fieldData).some((_) => - fieldDataBlocklist.includes(_) - )) - ) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; - } - } catch { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + // This parse is guaranteed to succeed, because handler-lib already did it. + const eventBody = JSON.parse(event.body); + if ( + (eventBody.metadata && + Object.keys(eventBody.metadata).some((_) => + metadataBlocklist.includes(_) + )) || + (eventBody.fieldData && + Object.keys(eventBody.fieldData).some((_) => + fieldDataBlocklist.includes(_) + )) + ) { + return badRequest(error.INVALID_DATA); } // Ensure user has correct permissions to update a report. if (!hasPermissions(event, [UserRoles.STATE_USER], state)) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const currentReport = await getReportMetadata(reportType, state, id); if (!currentReport) { - return { - status: StatusCodes.NOT_FOUND, - body: error.NO_MATCHING_RECORD, - }; + return notFound(error.NO_MATCHING_RECORD); } if (currentReport.archived || currentReport.locked) { - return { - status: StatusCodes.UNAUTHORIZED, - body: error.UNAUTHORIZED, - }; + return forbidden(error.UNAUTHORIZED); } const formTemplate = await getReportFormTemplate(currentReport); if (!formTemplate) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return notFound(error.MISSING_DATA); } const existingFieldData = await getReportFieldData(currentReport); if (!existingFieldData) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return notFound(error.MISSING_DATA); } // Parse the passed payload. @@ -124,31 +101,23 @@ export const updateReport = handler(async (event) => { unvalidatedPayload; if (!unvalidatedFieldData) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_DATA, - }; + return badRequest(error.MISSING_DATA); } // Validation JSON should be there—if it's not, there's an issue. if (!formTemplate.validationJson) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.MISSING_FORM_TEMPLATE, - }; + return internalServerError(error.MISSING_FORM_TEMPLATE); } // Validate passed field data - const validatedFieldData = await validateFieldData( - formTemplate.validationJson, - unvalidatedFieldData - ); - - if (!validatedFieldData) { - return { - status: StatusCodes.SERVER_ERROR, - body: error.INVALID_DATA, - }; + let validatedFieldData; + try { + validatedFieldData = await validateFieldData( + formTemplate.validationJson, + unvalidatedFieldData + ); + } catch { + return badRequest(error.INVALID_DATA); } // Finalize fieldData to be sent to s3 @@ -161,10 +130,7 @@ export const updateReport = handler(async (event) => { try { await putReportFieldData(currentReport, cleanedFieldData); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.S3_OBJECT_UPDATE_ERROR, - }; + return internalServerError(error.S3_OBJECT_UPDATE_ERROR); } const completionStatus = await calculateCompletionStatus( @@ -173,17 +139,15 @@ export const updateReport = handler(async (event) => { ); // validate report metadata - const validatedMetadata = await validateData(metadataValidationSchema, { - ...unvalidatedMetadata, - completionStatus, - }); - - // If metadata fails validation, return 400 - if (!validatedMetadata) { - return { - status: StatusCodes.BAD_REQUEST, - body: error.INVALID_DATA, - }; + let validatedMetadata; + try { + validatedMetadata = await validateData(metadataValidationSchema, { + ...unvalidatedMetadata, + completionStatus, + }); + } catch { + // If metadata fails validation, return 400 + return badRequest(error.INVALID_DATA); } // Update record in report metadata table @@ -197,18 +161,12 @@ export const updateReport = handler(async (event) => { try { await putReportMetadata(updatedMetadata); } catch { - return { - status: StatusCodes.SERVER_ERROR, - body: error.DYNAMO_UPDATE_ERROR, - }; + return internalServerError(error.DYNAMO_UPDATE_ERROR); } - return { - status: StatusCodes.SUCCESS, - body: { - ...updatedMetadata, - fieldData, - formTemplate, - }, - }; + return ok({ + ...updatedMetadata, + fieldData, + formTemplate, + }); }); diff --git a/services/app-api/handlers/templates/fetch.test.ts b/services/app-api/handlers/templates/fetch.test.ts index 73815473f..55f285f70 100644 --- a/services/app-api/handlers/templates/fetch.test.ts +++ b/services/app-api/handlers/templates/fetch.test.ts @@ -3,10 +3,11 @@ import { fetchTemplate } from "./fetch"; import { proxyEvent } from "../../utils/testing/proxyEvent"; import { error } from "../../utils/constants/constants"; // types -import { APIGatewayProxyEvent, StatusCodes } from "../../utils/types"; +import { APIGatewayProxyEvent } from "../../utils/types"; +import { StatusCodes } from "../../utils/responses/response-lib"; jest.mock("../../utils/auth/authorization", () => ({ - isAuthorized: jest.fn().mockReturnValue(true), + isAuthenticated: jest.fn().mockReturnValue(true), })); jest.mock("../../storage/templates", () => ({ @@ -37,7 +38,7 @@ describe("Test fetchTemplate API method", () => { const res = await fetchTemplate(wpEvent, null); expect(consoleSpy.debug).toHaveBeenCalled(); - expect(res.statusCode).toBe(StatusCodes.SUCCESS); + expect(res.statusCode).toBe(StatusCodes.Ok); expect(res.body).toContain("s3://fakeurl.bucket.here"); }); @@ -48,8 +49,7 @@ describe("Test fetchTemplate API method", () => { }; const res = await fetchTemplate(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.NO_TEMPLATE_NAME); }); @@ -60,8 +60,7 @@ describe("Test fetchTemplate API method", () => { }; const res = await fetchTemplate(noKeyEvent, null); - expect(consoleSpy.error).toHaveBeenCalled(); - expect(res.statusCode).toBe(500); + expect(res.statusCode).toBe(StatusCodes.BadRequest); expect(res.body).toContain(error.INVALID_TEMPLATE_NAME); }); }); diff --git a/services/app-api/handlers/templates/fetch.ts b/services/app-api/handlers/templates/fetch.ts index 7f76596b4..c9d10bdde 100644 --- a/services/app-api/handlers/templates/fetch.ts +++ b/services/app-api/handlers/templates/fetch.ts @@ -3,7 +3,8 @@ import handler from "../handler-lib"; import { error } from "../../utils/constants/constants"; import { getTemplateDownloadUrl } from "../../storage/templates"; // types -import { StatusCodes, TemplateKeys } from "../../utils/types"; +import { TemplateKeys } from "../../utils/types"; +import { badRequest, ok } from "../../utils/responses/response-lib"; /* * NOTE: This handler is not concerned with _form_ templates, like wp.json! @@ -14,14 +15,14 @@ import { StatusCodes, TemplateKeys } from "../../utils/types"; export const fetchTemplate = handler(async (event, _context) => { if (!event?.pathParameters?.templateName!) { - throw new Error(error.NO_TEMPLATE_NAME); + return badRequest(error.NO_TEMPLATE_NAME); } let key: TemplateKeys | undefined; if (event.pathParameters.templateName === "WP") { key = TemplateKeys.WP; } else { - throw new Error(error.INVALID_TEMPLATE_NAME); + return badRequest(error.INVALID_TEMPLATE_NAME); } const url = await getTemplateDownloadUrl(key); - return { status: StatusCodes.SUCCESS, body: url }; + return ok(url); }); diff --git a/services/app-api/package.json b/services/app-api/package.json index 2a9da2cf1..42fb52e8f 100644 --- a/services/app-api/package.json +++ b/services/app-api/package.json @@ -38,14 +38,14 @@ "typescript": "^4.5.4" }, "dependencies": { - "@aws-sdk/client-dynamodb": "^3.621.0", - "@aws-sdk/client-s3": "^3.621.0", - "@aws-sdk/client-ssm": "^3.621.0", - "@aws-sdk/lib-dynamodb": "^3.621.0", - "@aws-sdk/s3-request-presigner": "^3.621.0", + "@aws-sdk/client-dynamodb": "^3.662.0", + "@aws-sdk/client-s3": "^3.662.0", + "@aws-sdk/client-ssm": "^3.662.0", + "@aws-sdk/lib-dynamodb": "^3.662.0", + "@aws-sdk/s3-request-presigner": "^3.662.0", "aws-jwt-verify": "^3.1.0", - "dompurify": "^2.5.5", - "jsdom": "^24.1.0", + "dompurify": "^2.5.7", + "jsdom": "^24.1.3", "jwt-decode": "^3.1.2", "jwt-encode": "^1.0.1", "kafkajs": "^2.2.3", diff --git a/services/app-api/storage/dynamodb-lib.ts b/services/app-api/storage/dynamodb-lib.ts index 7d7aea0e5..0236c6e23 100644 --- a/services/app-api/storage/dynamodb-lib.ts +++ b/services/app-api/storage/dynamodb-lib.ts @@ -35,7 +35,7 @@ export const collectPageItems = async < >( paginator: Paginator ) => { - let items: Record = []; + let items: Record[] = []; for await (let page of paginator) { items = items.concat(page.Items ?? []); } diff --git a/services/app-api/utils/auth/authorization.test.ts b/services/app-api/utils/auth/authorization.test.ts index 4f40550a1..0a888e4ab 100644 --- a/services/app-api/utils/auth/authorization.test.ts +++ b/services/app-api/utils/auth/authorization.test.ts @@ -3,7 +3,7 @@ import { mockClient } from "aws-sdk-client-mock"; import { proxyEvent } from "../testing/proxyEvent"; import { hasPermissions, - isAuthorized, + isAuthenticated, isAuthorizedToFetchState, } from "./authorization"; import { UserRoles } from "../types"; @@ -45,20 +45,22 @@ describe("Test authorization with api key and environment variables", () => { jest.clearAllMocks(); }); test("is not authorized when no api key is passed", async () => { - mockVerifier.mockReturnValue(true); - const authStatus = await isAuthorized(noApiKeyEvent); + mockVerifier.mockImplementation(() => { + throw new Error("no key provided"); + }); + const authStatus = await isAuthenticated(noApiKeyEvent); expect(authStatus).toBeFalsy(); }); test("is not authorized when token is invalid", async () => { mockVerifier.mockImplementation(() => { throw new Error("could not verify"); }); - const authStatus = await isAuthorized(apiKeyEvent); + const authStatus = await isAuthenticated(apiKeyEvent); expect(authStatus).toBeFalsy(); }); test("is authorized when api key is passed and environment variables are set", async () => { mockVerifier.mockReturnValue(true); - const authStatus = await isAuthorized(apiKeyEvent); + const authStatus = await isAuthenticated(apiKeyEvent); expect(authStatus).toBeTruthy(); }); }); @@ -75,14 +77,16 @@ describe("Test authorization with api key and ssm parameters", () => { throw new Error("failed in test"); }); ssmClientMock.on(GetParameterCommand).callsFake(mockGetSsmParameter); - await expect(isAuthorized(apiKeyEvent)).rejects.toThrow("failed in test"); + await expect(isAuthenticated(apiKeyEvent)).rejects.toThrow( + "failed in test" + ); }); test("is authorized when api key is passed and ssm parameters exist", async () => { const mockGetSsmParameter = jest .fn() .mockResolvedValue({ Parameter: { Value: "VALUE" } }); ssmClientMock.on(GetParameterCommand).callsFake(mockGetSsmParameter); - const authStatus = await isAuthorized(apiKeyEvent); + const authStatus = await isAuthenticated(apiKeyEvent); expect(authStatus).toBeTruthy(); }); @@ -92,7 +96,7 @@ describe("Test authorization with api key and ssm parameters", () => { const mockGetSsmParameter = jest.fn().mockResolvedValue(mockSsmResponse); ssmClientMock.on(GetParameterCommand).callsFake(mockGetSsmParameter); - await isAuthorized(apiKeyEvent); + await isAuthenticated(apiKeyEvent); expect(mockGetSsmParameter).toHaveBeenCalled(); }); @@ -101,7 +105,7 @@ describe("Test authorization with api key and ssm parameters", () => { delete process.env["COGNITO_USER_POOL_CLIENT_ID"]; ssmClientMock.on(GetParameterCommand).resolves({}); - await expect(isAuthorized(apiKeyEvent)).rejects.toThrow(Error); + await expect(isAuthenticated(apiKeyEvent)).rejects.toThrow(Error); }); }); diff --git a/services/app-api/utils/auth/authorization.ts b/services/app-api/utils/auth/authorization.ts index 2202f616c..fb574cb3a 100644 --- a/services/app-api/utils/auth/authorization.ts +++ b/services/app-api/utils/auth/authorization.ts @@ -41,7 +41,7 @@ const loadCognitoValues = async () => { } }; -export const isAuthorized = async (event: APIGatewayProxyEvent) => { +export const isAuthenticated = async (event: APIGatewayProxyEvent) => { const cognitoValues = await loadCognitoValues(); // Verifier that expects valid access tokens: @@ -51,17 +51,12 @@ export const isAuthorized = async (event: APIGatewayProxyEvent) => { clientId: cognitoValues.userPoolClientId, }); - let isAuthorized; - if (event?.headers?.["x-api-key"]) { - try { - isAuthorized = await verifier.verify(event.headers["x-api-key"]); - } catch { - // verification failed - unauthorized - isAuthorized = false; - } + try { + await verifier.verify(event?.headers?.["x-api-key"]!); + return true; + } catch { + return false; } - - return !!isAuthorized; }; export const hasPermissions = ( diff --git a/services/app-api/utils/constants/constants.ts b/services/app-api/utils/constants/constants.ts index 4915a4cd6..15886c3be 100644 --- a/services/app-api/utils/constants/constants.ts +++ b/services/app-api/utils/constants/constants.ts @@ -28,7 +28,7 @@ export const error = { ALREADY_ARCHIVED: "Cannot update archived report.", ALREADY_LOCKED: "Cannot update locked report.", REPORT_INCOMPLETE: "Cannot submit incomplete form.", -}; +} as const; export const buckets = { FORM_TEMPLATE: "formTemplates", diff --git a/services/app-api/utils/responses/response-lib.test.ts b/services/app-api/utils/responses/response-lib.test.ts index 6cae5e812..4b09e0e94 100644 --- a/services/app-api/utils/responses/response-lib.test.ts +++ b/services/app-api/utils/responses/response-lib.test.ts @@ -1,25 +1,41 @@ -import { buildResponse, internalServerError } from "./response-lib"; +import { + ok, + created, + noContent, + badRequest, + unauthenticated, + forbidden, + notFound, + conflict, + internalServerError, +} from "./response-lib"; -test("Internal Server Error should give a 500 status", () => { - const res = internalServerError("internal error"); - expect(res.body).toBe(JSON.stringify("internal error")); - expect(res.statusCode).toBe(500); - expect(res.headers["Access-Control-Allow-Origin"]).toBe("*"); - expect(res.headers["Access-Control-Allow-Credentials"]).toBe(true); -}); +describe("HTTP Response helper functions", () => { + test("Responses should have correct status codes", () => { + expect(ok({}).statusCode).toBe(200); + expect(created({}).statusCode).toBe(201); + expect(noContent({}).statusCode).toBe(204); + expect(badRequest({}).statusCode).toBe(400); + expect(unauthenticated({}).statusCode).toBe(401); + expect(forbidden({}).statusCode).toBe(403); + expect(notFound({}).statusCode).toBe(404); + expect(conflict({}).statusCode).toBe(409); + expect(internalServerError({}).statusCode).toBe(500); + }); -test("Build Response should create an object with a status code 420 and message", () => { - const res = buildResponse(400, "status is 400"); - expect(res.body).toBe(JSON.stringify("status is 400")); - expect(res.statusCode).toBe(400); - expect(res.headers["Access-Control-Allow-Origin"]).toBe("*"); - expect(res.headers["Access-Control-Allow-Credentials"]).toBe(true); -}); + test("Responses should exclude a body if not provided", () => { + const response = badRequest(); + expect(response.body).toBeUndefined(); + }); + + test("Responses should include a body if provided", () => { + const res = badRequest("try again"); + expect(res.body).toBe('"try again"'); + }); -test("Build Response should create an object with a status code 403 and message", () => { - const res = buildResponse(403, "Unauthorized"); - expect(res.body).toBe(JSON.stringify("Unauthorized")); - expect(res.statusCode).toBe(403); - expect(res.headers["Access-Control-Allow-Origin"]).toBe("*"); - expect(res.headers["Access-Control-Allow-Credentials"]).toBe(true); + test("Responses should have the correct headers", () => { + const response = ok({}); + expect(response.headers["Access-Control-Allow-Origin"]).toBe("*"); + expect(response.headers["Access-Control-Allow-Credentials"]).toBe(true); + }); }); diff --git a/services/app-api/utils/responses/response-lib.ts b/services/app-api/utils/responses/response-lib.ts index 76dc7e0c0..29dcce13d 100644 --- a/services/app-api/utils/responses/response-lib.ts +++ b/services/app-api/utils/responses/response-lib.ts @@ -1,14 +1,102 @@ -export function internalServerError(body: any) { - return buildResponse(500, body); +/** + * The response for a successful request. + * Should include a body for GET, PUT, or POST. + * Need not include a body for DELETE + */ +export const ok = (body?: Object) => new HttpResponse(StatusCodes.Ok, body); + +/** + * The response for a successful POST or PUT request, + * which resulted in the creation of a new resource. + */ +export const created = (body: Object) => + new HttpResponse(StatusCodes.Created, body); + +/** + * The response for a successful request which returns no content. + */ +export const noContent = (body?: Object) => + new HttpResponse(StatusCodes.NoContent, body); + +/** + * The response for a failed request, due to client-side issues. + * Typically indicates a missing parameter or malformed body. + */ +export const badRequest = (body?: Object) => + new HttpResponse(StatusCodes.BadRequest, body); + +/** + * The response for a client without any authorization. + * Typically indicates an issue with the request's headers or token. + * + * Note: The usual name for HTTP 401 is "Unauthorized", but that's misleading. + * Authentication is for identity; authorization is for permissions. + */ +export const unauthenticated = (body?: Object) => + new HttpResponse(StatusCodes.Unauthenticated, body); + +/** + * The response for a client without sufficient permissions. + * This is specific to the requested operation. + * For example, a regular user requesting an admin-only endpoint. + */ +export const forbidden = (body?: Object) => + new HttpResponse(StatusCodes.Forbidden, body); + +/** + * The response for a request that assumes the existence of a missing resource. + * For example, attempting to submit a report that isn't in the database. + */ +export const notFound = (body?: Object) => + new HttpResponse(StatusCodes.NotFound, body); + +/** + * The response for a request that assumes the server is in a different state. + * For example, attempting to submit a report that's already submitted. + */ +export const conflict = (body?: Object) => + new HttpResponse(StatusCodes.Conflict, body); + +/** + * The response for a request that errored out on the server side. + * Typically indicates there is nothing the client can do to resolve the issue. + */ +export const internalServerError = (body?: Object) => + new HttpResponse(StatusCodes.InternalServerError, body); + +/** + * Note: Production code shouldn't need to reference this directly. + * Use a helper method instead. + * + * This enum is listed mainly for the purpose of unit testing. + */ +export enum StatusCodes { + Ok = 200, + Created = 201, + NoContent = 204, + BadRequest = 400, + Unauthenticated = 401, + Forbidden = 403, + NotFound = 404, + Conflict = 409, + InternalServerError = 500, } -export function buildResponse(statusCode: number, body: any) { - return { - statusCode: statusCode, - headers: { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Credentials": true, - }, - body: JSON.stringify(body), +/** + * Note: Production code shouldn't need to reference this directly. + * Use a helper method instead. + */ +export class HttpResponse { + readonly statusCode: number; + readonly body: string | undefined; + readonly headers = { + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Credentials": true, }; + constructor(statusCode: number, body?: Object | undefined) { + this.statusCode = statusCode; + if (body !== undefined) { + this.body = JSON.stringify(body); + } + } } diff --git a/services/app-api/utils/types/other.ts b/services/app-api/utils/types/other.ts index 1587f523e..53b2ff99d 100644 --- a/services/app-api/utils/types/other.ts +++ b/services/app-api/utils/types/other.ts @@ -4,15 +4,6 @@ export interface AnyObject { [key: string]: any; } -export const enum StatusCodes { - SUCCESS = 200, - CREATED = 201, - BAD_REQUEST = 400, - UNAUTHORIZED = 403, - NOT_FOUND = 404, - SERVER_ERROR = 500, -} - export interface CompletionData { [key: string]: boolean | CompletionData; } diff --git a/services/app-api/yarn.lock b/services/app-api/yarn.lock index 5e252f0eb..480f117d4 100644 --- a/services/app-api/yarn.lock +++ b/services/app-api/yarn.lock @@ -78,411 +78,412 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.621.0.tgz#de0a23830a742f42ed031abb745d3787b0d4e759" - integrity sha512-aczOoVyufYwBCc/zZKJOP/xwbnojKQJ6Y8O7ZAZnxMPRyZXKXpoAxmlxLfOU6GUzXqzXdvj+Ir3VBd7MWB4KuQ== +"@aws-sdk/client-dynamodb@^3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.662.0.tgz#462c8155eb2cc38f894a87c4f06d2371d4bf6b1b" + integrity sha512-d5t6hDQkVYqRvp6Cf6WygbseY8gln7Ca/tI4+1B6JXSl2UzffX5ovx2SOjNEPlyGGtZYIiOfqOnKnFlaj0+Gxg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-endpoint-discovery" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.662.0" + "@aws-sdk/client-sts" "3.662.0" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-endpoint-discovery" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.6" tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-s3@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.621.0.tgz#86a0e77913cd1e82308299835431887fe306c3a0" - integrity sha512-YhGkd2HQTM4HCYJIAVWvfbUMpOF7XUr1W/e2LN3CFP0WTF4zcCJKesJ2iNHrExqC0Ek1+qarMxiXBK95itfjYQ== +"@aws-sdk/client-s3@^3.662.0": + version "3.663.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.663.0.tgz#02ee62efd49a11aaae66e805dd446f3f2ea43fab" + integrity sha512-XWoy6wglrxFngdswGbccR7cwmafe3ycx2/vIRDuVnIeSYdj/PgYACBt5JEM5NEzW26kFtlJpeN9hUH1i6tyfuQ== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-bucket-endpoint" "3.620.0" - "@aws-sdk/middleware-expect-continue" "3.620.0" - "@aws-sdk/middleware-flexible-checksums" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-location-constraint" "3.609.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/middleware-signing" "3.620.0" - "@aws-sdk/middleware-ssec" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/signature-v4-multi-region" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/eventstream-serde-browser" "^3.0.5" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.4" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-blob-browser" "^3.1.2" - "@smithy/hash-node" "^3.0.3" - "@smithy/hash-stream-node" "^3.1.2" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/md5-js" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.662.0" + "@aws-sdk/client-sts" "3.662.0" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-bucket-endpoint" "3.662.0" + "@aws-sdk/middleware-expect-continue" "3.662.0" + "@aws-sdk/middleware-flexible-checksums" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-location-constraint" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-sdk-s3" "3.662.0" + "@aws-sdk/middleware-ssec" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/signature-v4-multi-region" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@aws-sdk/xml-builder" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/eventstream-serde-browser" "^3.0.10" + "@smithy/eventstream-serde-config-resolver" "^3.0.7" + "@smithy/eventstream-serde-node" "^3.0.9" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-blob-browser" "^3.1.6" + "@smithy/hash-node" "^3.0.7" + "@smithy/hash-stream-node" "^3.1.6" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/md5-js" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + "@smithy/util-stream" "^3.1.9" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.6" tslib "^2.6.2" -"@aws-sdk/client-ssm@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.621.0.tgz#d5928d86c65c2cb072f8d3bdaa739d3ff06cd1e5" - integrity sha512-E4OM7HH9qU2TZGDrX2MlBlBr9gVgDm573Qa1CTFih58dUZyaPEOiZSYLUNOyw4nMyVLyDMR/5zQ4wAorNwKVPw== +"@aws-sdk/client-ssm@^3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.662.0.tgz#fa15013e4485a5e2a5dd726e45afd7eb08f60feb" + integrity sha512-69rDJozJRBuUjvejZceoG1Xdm0L7elsH7OIPVoNyHwN7CyPzIY1j0fm7+G+3GK9N4VdPC4m0xge5mNVfEeV7hQ== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.662.0" + "@aws-sdk/client-sts" "3.662.0" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.6" tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-sso-oidc@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b" - integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg== +"@aws-sdk/client-sso-oidc@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.662.0.tgz#f2816f674b4125ff900435cc8b7fadc227455c81" + integrity sha512-YZrH0sftdmjvEIY8u0LCrfEhyaMVpN0+K0K9WsUrFRMZ7DK6nB9YD1f5EaKUN5UjNw5S7gbjSdI8neSCoELjhw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825" - integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA== +"@aws-sdk/client-sso@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.662.0.tgz#43c9238799a2271e3652089bcddf105752fdacea" + integrity sha512-4j3+eNSnNblcIYCJrsRRdyXFjAWGpGa7s7pdIyDMLwtYA7AKNlnlyQV14jtezhMrN2j6qZ7zZmnwEyFGipgfWA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952" - integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA== +"@aws-sdk/client-sts@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.662.0.tgz#8d35b7d25c813e3b2ba0d8efd42d9e61823e088f" + integrity sha512-RjiXvfW3a36ybHuzYuZ6ZgddYiENiXLDGC3tlZMsKWuoVQNeoh2grx1wxUA6e4ajAIqJLXs5dAYTSXzGaAqHTA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.662.0" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3" - integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ== - dependencies: - "@smithy/core" "^2.3.1" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@aws-sdk/core@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.662.0.tgz#93764660c9fabbc10e77ddcde283f088e22bebc3" + integrity sha512-w64Fa4dsgM8vN7Z+QPR3n+aAl5GXThQRH8deT/iF1rLrzfq7V8xxACJ/CLVaxrZMZUPUUgG7DUAo95nXFWmGjA== + dependencies: + "@smithy/core" "^2.4.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== +"@aws-sdk/credential-provider-env@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.662.0.tgz#fe58b29abefd0fa968f79c7e7d15381009945a75" + integrity sha512-Dgwb0c/FH4xT5QZZFdLTFmCkdG3woXIAgLx5HCoH9Ty5G7T8keHOU9Jm4Vpe2ZJXL7JJHlLakGS65+bgXTuLSQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627" - integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" +"@aws-sdk/credential-provider-http@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.662.0.tgz#02e3e97e28ec1bb99bdd91ddc9df5d48e1a31b42" + integrity sha512-Wnle/uJI4Ku9ABJHof9sio28VlaSbF3jVQKTSVCJftvbKELlFOlY5aXSjtu0wwcJqDS5r78N5KM7aARUJES+DA== + dependencies: + "@aws-sdk/types" "3.662.0" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222" - integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-ini@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.662.0.tgz#505e37298cc6e2909020c25d555bf6b6d3f4cbdc" + integrity sha512-jk+A5B0NRYG4KrjJ8ef1+r9bFjhpwUm/A9grJmp3JOwcHKXvI2Gy9BXNqfqqVgrK0Gns+WyhJZy6rsRaC+v1oQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.662.0" + "@aws-sdk/credential-provider-http" "3.662.0" + "@aws-sdk/credential-provider-process" "3.662.0" + "@aws-sdk/credential-provider-sso" "3.662.0" + "@aws-sdk/credential-provider-web-identity" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47" - integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw== - dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-ini" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-node@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.662.0.tgz#086aa57b4fbca4701566f9ac88d59aa67658a5f8" + integrity sha512-2O9wjxdLcU1b+bWVkp3YYbPHo15SU3pW4KfWTca5bB/C01i1eqiHnwsOFz/WKPYYKNj0FhXtJJjeDQLtNFYI8A== + dependencies: + "@aws-sdk/credential-provider-env" "3.662.0" + "@aws-sdk/credential-provider-http" "3.662.0" + "@aws-sdk/credential-provider-ini" "3.662.0" + "@aws-sdk/credential-provider-process" "3.662.0" + "@aws-sdk/credential-provider-sso" "3.662.0" + "@aws-sdk/credential-provider-web-identity" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== +"@aws-sdk/credential-provider-process@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.662.0.tgz#2c9fef18cffc827c26b599fb2a9dfb812ca1409e" + integrity sha512-1QUdtr/JiuvRjVgA8enpgCwjq7Eud8eVUT0i/vpWuFp5TV2FFq/8BD3GBkesTdy4Ylms6QVGf7J6INdfUWQEmw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3" - integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw== - dependencies: - "@aws-sdk/client-sso" "3.621.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" +"@aws-sdk/credential-provider-sso@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.662.0.tgz#6d0c9f5f819da6b473d39d0cf4cd42cbbca3a524" + integrity sha512-zxze6pDPgwBwl7S3h4JDALCCz93pTAfulbCY8FqMEd7GvnAiofHpL9svyt4+gytXwwUSsQ6KxCMVLbi+8k8YIg== + dependencies: + "@aws-sdk/client-sso" "3.662.0" + "@aws-sdk/token-providers" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== +"@aws-sdk/credential-provider-web-identity@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.662.0.tgz#18246e29d5f8b242a0717ff7110680cc5816d163" + integrity sha512-GhPwxmHSFtwCckuT+34JG+U99qKfDWVYPLJOPI6b35+aLhfVqW5CHPmVjtM4WZqbxzsA0a3KAYA/U1ZaluI4SA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@aws-sdk/endpoint-cache@3.572.0": @@ -493,208 +494,201 @@ mnemonist "0.38.3" tslib "^2.6.2" -"@aws-sdk/lib-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.621.0.tgz#f8c320af1b286f2827d3be97aaffc571fa4bbfeb" - integrity sha512-RJJwaR15BLSTtegf2kgJjlJofvxeR+0Jm0rnEbJmRZ/HZhjow1LawrMbCR0YxfcWKUMsDw9tp8BDkLlrH1+RJQ== +"@aws-sdk/lib-dynamodb@^3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.662.0.tgz#425073c71c284cff3636faf8daa07e692c8b0504" + integrity sha512-DCmhc9hccIsMbYl8xINLtxYmsUlSVCUKcDA19Z+7901Jlu8OwzidwMBy4ZK8wAmy6/aG4agH67FY4i0Hee3z9g== dependencies: - "@aws-sdk/util-dynamodb" "3.621.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@aws-sdk/util-dynamodb" "3.662.0" + "@smithy/core" "^2.4.7" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" - integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== +"@aws-sdk/middleware-bucket-endpoint@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.662.0.tgz#49c223b868a72a5d49deadfa799136b7c638381d" + integrity sha512-qBdQ7zqdanCPep7puYw1s6lH8lQ2uWP6+klp35cAYjCMbGiItclteXRQOuldkd9Oc7dtoYlTJBDKeAybJZShlw== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.662.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-endpoint-discovery@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz#45acd6cf2a77ceaf736f2758274c383838c8584a" - integrity sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ== +"@aws-sdk/middleware-endpoint-discovery@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.662.0.tgz#ad1e99eeb5b13282d26f3032822ec41840eaa03c" + integrity sha512-os/gBtal8DDOZHUVQNymy8K/8JNC1tPqznsUoEkjoYaQoerT9PR3PPrc/oWTB9h1VLXZOwJ8HcCtsEbXUAddTg== dependencies: "@aws-sdk/endpoint-cache" "3.572.0" - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" - integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== +"@aws-sdk/middleware-expect-continue@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.662.0.tgz#04f3df778ec20a7e508f4576c89cea489bfd53b4" + integrity sha512-kSSeblAz0bdE8golejbEp9tLoP1EcYGWqrAjv5kDwbo56J9vbBh12shxDULpDBNXXLBoK4DktHgJl3RqwXlK5g== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" - integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== +"@aws-sdk/middleware-flexible-checksums@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.662.0.tgz#18b04ce5ea0a354560019961c1d28ecf5b150695" + integrity sha512-aZEA0a0hYfOL2ah+ZlFAVr2HMWetNooyrDFq+iP04CmE674WCJBp71DdQrRvNQsW+PBkq7iHsgfYEQumYMqz9Q== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/types" "3.662.0" "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== +"@aws-sdk/middleware-host-header@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.662.0.tgz#f3d647d294b19da17ef5845b87dc5c0788196a1e" + integrity sha512-Gkb0J1LTvD8LOS8uwoRI5weFXvvJwP1jfnYwzQrFgLymRFHJm5JtORQZtmw34dtdou+IBTUsH1mgI8b3QVVH3w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" - integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== +"@aws-sdk/middleware-location-constraint@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.662.0.tgz#7abc6484bd517142f4a8e711480382e28bf2bbd9" + integrity sha512-+OAm1hKXGy+F/KJFAc8RKX/z74ZOPEqVzg70kzy/mdSNGzJwvEOfT+KwDVncZ01jk9jso1Q8DXGmxfWzZ/n4aw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" - integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== +"@aws-sdk/middleware-logger@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.662.0.tgz#8c2ff7d543fe691a06020be853eeb9481409614d" + integrity sha512-aSpwVHtfMlqzpmnmmUgRNCaIcxXdRrGqGWG+VWXuYR1F6jJARDDCxGkSuKiPEOLX0h0BroUo4gqbM8ILXQ8rVw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== +"@aws-sdk/middleware-recursion-detection@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.662.0.tgz#5af684014a604d474e6bd763a5d2a3fbfff84d36" + integrity sha512-V/MYE+LOFIQDLnpWMHLxnKu+ELhD3pLOrWXVhKpVit6YcHxaOz6nvB40CPamSPDXenA11FGXKAGNHZ0loTpDQg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.621.0.tgz#da9cc709fffa4d269bb472e8ca42f2a4d80a842b" - integrity sha512-CJrQrtKylcqvyPkRR16JmPZkHroCkWwLErQrg30ZcBPNNok8xbfX6cYqG16XDTnu4lSYzv2Yqc4w4oOBv8xerQ== +"@aws-sdk/middleware-sdk-s3@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.662.0.tgz#f4980918bc2295c9432cbe3940dfe4ab986bc86d" + integrity sha512-Ur5UGuS/bP5ftBxepOYJmTYES4Crh9TwIbBMUqsaal/XcdvQ7uYXK/PvlYg9P/bLpStmDBb1bxmnmjdsQBwSgw== dependencies: - "@aws-sdk/types" "3.609.0" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/types" "3.662.0" "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/core" "^2.4.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-stream" "^3.1.9" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-signing@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz#8aface959d610732b0a5ede6f2c48119b33c4f3f" - integrity sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - tslib "^2.6.2" - -"@aws-sdk/middleware-ssec@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" - integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== +"@aws-sdk/middleware-ssec@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.662.0.tgz#e70ebcf2cf3ec9ac9f0e222b8d60467c6fccded0" + integrity sha512-7dxSUCeSLYFlMEr6BwNoYiF+4X7/JyIAyjOOI/hh9hyK8D8f3/xenACb67rPb59wUs6WgWZVg+hvWBC55a5KGg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" - integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== +"@aws-sdk/middleware-user-agent@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.662.0.tgz#a428403ced5d6684f29d45dd0f39c6c4ef10ab7b" + integrity sha512-NT940BLSSys/A8W3zO3g2Kj+zpeydqGbSQgN6qz84jTskQjnrlamoq+Zl9Rrp8Cn8sC10UQ09kGg97lvjVOlmg== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" - integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== +"@aws-sdk/region-config-resolver@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.662.0.tgz#1dcb6850059baa54dcb6e4556ece7ec1a4ee9d1b" + integrity sha512-MDiWl4wZSVnnTELLb+jFSe0nj9HwxJPX2JnghXKkOXmbKEiE2/21DCQwU9mr9VUq2ZOQqaSnMFPr94iRu0AVTQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@aws-sdk/s3-request-presigner@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.621.0.tgz#0c6d033dd3b3ae17061407766466ce66362c6d92" - integrity sha512-7XCH5wy1guywSa4PHKrSiAqm/mYpuKURQWD9nGN9tl2DWec6OK7z+TTTCOml8lBX8Mg5Hx2GUdO3V8uRVYnEmw== - dependencies: - "@aws-sdk/signature-v4-multi-region" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-format-url" "3.609.0" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" +"@aws-sdk/s3-request-presigner@^3.662.0": + version "3.663.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.663.0.tgz#472920fc8deea330672a83f11e2da02c954c8f7d" + integrity sha512-Z29C20dDEFo8e+j8zrk826cguY/n1WMzGSGhv8/m49zqLCgrrkYkv2/peTv+jl46lLOhFigsToYn+G+46YBOdw== + dependencies: + "@aws-sdk/signature-v4-multi-region" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-format-url" "3.662.0" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.621.0.tgz#d8bd2e8bab970acaecfaca3de85c6924b43f07ff" - integrity sha512-u+ulCaHFveqHaTxgiYrEAyfBVP6GRKjnmDut67CtjhjslshPWYpo/ndtlCW1zc0RDne3uUeK13Pqp7dp7p1d6g== +"@aws-sdk/signature-v4-multi-region@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.662.0.tgz#5bdcafb93fbceb8787d5c2ccc15ef9eb22f8f82e" + integrity sha512-nXjFNs/VCT4jh8JyfCDTzUKfnhQU4JTwc0fi6mpQIig88fScKSBNxN4zm1zyg196xf6CBKlQc9UVnMsJYtWYDA== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/middleware-sdk-s3" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/token-providers@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" - integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== +"@aws-sdk/token-providers@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.662.0.tgz#89c60983e13036cebc0e0310ae226e2254f5a741" + integrity sha512-OqtBPutNC9Am10P1W5IwqRvzCVQAHRxWxZnfDBh1FQjNmoboGWYSriKxbrCRYLFffusNuzo8KnOFOmg1sRlhJQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/types@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" - integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== +"@aws-sdk/types@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.662.0.tgz#323de11059df4fd7169a381c166a8aae03abe757" + integrity sha512-Ff9/KRmIm8iEzodxzISLj4/pB/0hX2nVw1RFeOBC65OuM6nHrAdWHHog/CVx25hS5JPU0uE3h6NlWRaBJ7AV5w== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@aws-sdk/types@^3.222.0": @@ -712,31 +706,31 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-dynamodb@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.621.0.tgz#a0d6501e5ab9aca695dc794963adf46a475ee5f3" - integrity sha512-/3qEmZ52FdP4+3AUsUX0/wKcCF3jvAG+avVKuSCUYIdKgSIYKSeYfH8F3/r6DE3czaFevBwHRiuKHEihCMApGw== +"@aws-sdk/util-dynamodb@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.662.0.tgz#47b1747f14300384af66b6a07fb4ba7a01318194" + integrity sha512-V079cMhwUTu086eS1grS/F7WeOrfqAW2a2KSFKR/zxLwZPYIoMiCUeoqCgK0PL5DEqdO0EVDPuWe/glEiO52dw== dependencies: tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" - integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== +"@aws-sdk/util-endpoints@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.662.0.tgz#a124838077ae230bba605310a73e43493e58e3d1" + integrity sha512-RQ/78yNUxZZZULFg7VxT7oObGOR/FBc0ojiFoCAKC20ycY8VvVX5Eof4gyxoVpwOP7EoZO3UlWSIqtaEV/X70w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - "@smithy/util-endpoints" "^2.0.5" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" + "@smithy/util-endpoints" "^2.1.3" tslib "^2.6.2" -"@aws-sdk/util-format-url@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.609.0.tgz#f53907193bb636b52b61c81bbe6d7bd5ddc76c68" - integrity sha512-fuk29BI/oLQlJ7pfm6iJ4gkEpHdavffAALZwXh9eaY1vQ0ip0aKfRTiNudPoJjyyahnz5yJ1HkmlcDitlzsOrQ== +"@aws-sdk/util-format-url@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-format-url/-/util-format-url-3.662.0.tgz#dbf45c6ace10b4e9d949f68ef1cf0932732ce9fc" + integrity sha512-McyEyXsZMzuk/nqrVEbjCSmsKykJ7UI4lTDMdaqFdL0l5K/6VWgbFc3xOZcxEGBIvNucHiusQhqJXYHCAG65Dg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": @@ -746,32 +740,32 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-user-agent-browser@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" - integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== +"@aws-sdk/util-user-agent-browser@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.662.0.tgz#b17b847b38ffa88944939534069bf78a277723ed" + integrity sha512-5wQd+HbNTY1r1Gndxf93dAEFtKz1DqcalI4Ym40To+RIonSsYQNRomFoizYNgJ1P+Mkfsr4P1dy/MNTlkqTZuQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" - integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== +"@aws-sdk/util-user-agent-node@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.662.0.tgz#7199eef53edb1c175e455c94596294541a5aaef4" + integrity sha512-vBRbZ9Hr1OGmdJPWj36X0fR8/VdI2JiwK6+oJRa6qfJ6AnhqCYZbCyeA6JIDeEu3M9iu1OLjenU8NdXhTz8c2w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/xml-builder@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" - integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== +"@aws-sdk/xml-builder@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.662.0.tgz#6cbe5aea6205fd2280ec043189985240628d1cb2" + integrity sha512-ikLkXn0igUpnJu2mCZjklvmcDGWT9OaLRv3JyC/cRkTaaSrblPjPM7KKsltxdMTLQ+v7fjCN0TsJpxphMfaOPA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": @@ -1459,12 +1453,12 @@ resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@smithy/abort-controller@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16" - integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== +"@smithy/abort-controller@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.5.tgz#ca7a86a3c6b20fabe59667143f58d9e198616d14" + integrity sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/chunked-blob-reader-native@^3.0.0": @@ -1482,133 +1476,135 @@ dependencies: tslib "^2.6.2" -"@smithy/config-resolver@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd" - integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== +"@smithy/config-resolver@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.9.tgz#dcf4b7747ca481866f9bfac21469ebe2031a599e" + integrity sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@smithy/core@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.1.tgz#99cb8eda23009fd7df736c82072dafcf4eb4ff5d" - integrity sha512-BC7VMXx/1BCmRPCVzzn4HGWAtsrb7/0758EtwOGFJQrlSwJBEjCcDLNZLFoL/68JexYa2s+KmgL/UfmXdG6v1w== - dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@smithy/core@^2.4.7": + version "2.4.7" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.7.tgz#c4dc9ab3ba5f4b36addf967ca5fce036ce3b767d" + integrity sha512-goqMjX+IoVEnHZjYuzu8xwoZjoteMiLXsPHuXPBkWsGwu0o9c3nTjqkUlP1Ez/V8E501aOU7CJ3INk8mQcW2gw== + dependencies: + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/credential-provider-imds@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" - integrity sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== +"@smithy/credential-provider-imds@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz#e1a2bfc8a0066f673756ad8735247cf284b9735c" + integrity sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" tslib "^2.6.2" -"@smithy/eventstream-codec@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c" - integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== +"@smithy/eventstream-codec@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.6.tgz#70ca95aad82d5140522eb883fbc140f1f22dcb27" + integrity sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-hex-encoding" "^3.0.0" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz#3e971afd2b8a02a098af8decc4b9e3f35296d6a2" - integrity sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ== +"@smithy/eventstream-serde-browser@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.10.tgz#ffca366a4edee5097be5a710f87627a5b2da5dec" + integrity sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.9" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a" - integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== +"@smithy/eventstream-serde-config-resolver@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.7.tgz#1f352f384665f322e024a1396a7a2cca52fce9e3" + integrity sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz#6301752ca51b3ebabcd2dec112f1dacd990de4c1" - integrity sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg== +"@smithy/eventstream-serde-node@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.9.tgz#e985340093c2ca6587ae2fdd0663e6845fbe9463" + integrity sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.9" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz#6754de5b94bdc286d8ef1d6bcf22d80f6ab68f30" - integrity sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A== +"@smithy/eventstream-serde-universal@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.9.tgz#1832b190a3018204e33487ba1f7f0f6e2fb0da34" + integrity sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw== dependencies: - "@smithy/eventstream-codec" "^3.1.2" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-codec" "^3.1.6" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz#c754de7e0ff2541b73ac9ba7cc955940114b3d62" - integrity sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== +"@smithy/fetch-http-handler@^3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" + integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-blob-browser@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz#90281c1f183d93686fb4f26107f1819644d68829" - integrity sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg== +"@smithy/hash-blob-browser@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.6.tgz#d61de344aa3cef0bc83e3ab8166558256262dfcd" + integrity sha512-BKNcMIaeZ9lB67sgo88iCF4YB35KT8X2dNJ8DqrtZNTgN6tUDYBKThzfGtos/mnZkGkW91AYHisESHmSiYQmKw== dependencies: "@smithy/chunked-blob-reader" "^3.0.0" "@smithy/chunked-blob-reader-native" "^3.0.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/hash-node@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24" - integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== +"@smithy/hash-node@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.7.tgz#03b5a382fb588b8c2bac11b4fe7300aaf1661c88" + integrity sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-stream-node@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz#89f0290ae44b113863878e75b10c484ff48af71c" - integrity sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g== +"@smithy/hash-stream-node@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.6.tgz#854ad354a865a1334baa2abc2f2247f2723de688" + integrity sha512-sFSSt7cmCpFWZPfVx7k80Bgb1K2VJ27VmMxH8X+dDhp7Wv8IBgID4K2VK5ehMJROF8hQgcj4WywnkHIwX/xlwQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/invalid-dependency@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528" - integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== +"@smithy/invalid-dependency@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.7.tgz#b36f258d94498f3c72ab6020091a66fc7cc16eda" + integrity sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -1625,161 +1621,161 @@ dependencies: tslib "^2.6.2" -"@smithy/md5-js@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.3.tgz#55ee40aa24075b096c39f7910590c18ff7660c98" - integrity sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q== +"@smithy/md5-js@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.7.tgz#0a645dd9c139254353fd6e6a6b65154baeab7d2e" + integrity sha512-+wco9IN9uOW4tNGkZIqTR6IXyfO7Z8A+IOq82QCRn/f/xcmt7H1fXwmQVbfDSvbeFwfNnhv7s+u0G9PzPG6o2w== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" - integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== +"@smithy/middleware-content-length@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.9.tgz#fb613d1a6b8c91e828d11c0d7a0a8576dba89b8b" + integrity sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/middleware-endpoint@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" - integrity sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== - dependencies: - "@smithy/middleware-serde" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-middleware" "^3.0.3" +"@smithy/middleware-endpoint@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.4.tgz#222c9fa49c8af6ebf8bea8ab220d92d9b8c90d3d" + integrity sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ== + dependencies: + "@smithy/middleware-serde" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@smithy/middleware-retry@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.13.tgz#3bdd662aff01f360fcbaa166500bbc575dc9d1d0" - integrity sha512-zvCLfaRYCaUmjbF2yxShGZdolSHft7NNCTA28HVN9hKcEbOH+g5irr1X9s+in8EpambclGnevZY4A3lYpvDCFw== - dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/service-error-classification" "^3.0.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" +"@smithy/middleware-retry@^3.0.22": + version "3.0.22" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.22.tgz#578ceafd72fd655cde35c35b462a8aad26fd07e2" + integrity sha512-svEN7O2Tf7BoaBkPzX/8AE2Bv7p16d9/ulFAD1Gmn5g19iMqNk1WIkMxAY7SpB9/tVtUwKx0NaIsBRl88gumZA== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" - integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== +"@smithy/middleware-serde@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.7.tgz#03f0dda75edffc4cc90ea422349cbfb82368efa7" + integrity sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/middleware-stack@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" - integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== +"@smithy/middleware-stack@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.7.tgz#813fa7b47895ce0d085eac89c056d21b1e46e771" + integrity sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/node-config-provider@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" - integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== +"@smithy/node-config-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz#2c1092040b4062eae0f7c9e121cc00ac6a77efee" + integrity sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/node-http-handler@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" - integrity sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== +"@smithy/node-http-handler@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.4.tgz#3c57c40d082c3bacac1e49955bd1240e8ccc40b2" + integrity sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.5" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/property-provider@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" - integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== +"@smithy/property-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.7.tgz#8a304a4b9110a067a93c784e4c11e175f82da379" + integrity sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/protocol-http@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" - integrity sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== +"@smithy/protocol-http@^4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.4.tgz#6940d652b1825bda2422163ec9baab552669a338" + integrity sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/querystring-builder@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" - integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== +"@smithy/querystring-builder@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.7.tgz#8c443c65f4249ff1637088db1166d18411d41555" + integrity sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" -"@smithy/querystring-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" - integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== +"@smithy/querystring-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz#936206d1e6da9d862384dae730b4bad042d6a948" + integrity sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/service-error-classification@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" - integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== +"@smithy/service-error-classification@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.7.tgz#5bab4ad802d30bd3fa52b8134f6c171582358226" + integrity sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" -"@smithy/shared-ini-file-loader@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" - integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== +"@smithy/shared-ini-file-loader@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz#7a0bf5f20cfe8e0c4a36d8dcab8194d0d2ee958e" + integrity sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/signature-v4@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" - integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== +"@smithy/signature-v4@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.0.tgz#291f5a0e756cc251377e1e8af2a1f494e6173029" + integrity sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.7" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^3.1.11": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.11.tgz#f12a7a0acaa7db3ead488ddf12ef4681daec11a7" - integrity sha512-l0BpyYkciNyMaS+PnFFz4aO5sBcXvGLoJd7mX9xrMBIm2nIQBVvYgp2ZpPDMzwjKCavsXu06iuCm0F6ZJZc6yQ== +"@smithy/smithy-client@^3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.3.6.tgz#882fcc4b5db35c284c7a7c6116b27be324c41202" + integrity sha512-qdH+mvDHgq1ss6mocyIl2/VjlWXew7pGwZQydwYJczEc22HZyX3k8yVPV9aZsbYbssHPvMDRA5rfBDrjQUbIIw== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" tslib "^2.6.2" "@smithy/types@^2.12.0": @@ -1789,20 +1785,20 @@ dependencies: tslib "^2.6.2" -"@smithy/types@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" - integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== +"@smithy/types@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" + integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" - integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== +"@smithy/url-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.7.tgz#9d7d7e4e38514bf75ade6e8a30d2300f3db17d1b" + integrity sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA== dependencies: - "@smithy/querystring-parser" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/querystring-parser" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/util-base64@^3.0.0": @@ -1851,37 +1847,37 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.13.tgz#f574bbb89d60f5dcc443f106087d317b370634d0" - integrity sha512-ZIRSUsnnMRStOP6OKtW+gCSiVFkwnfQF2xtf32QKAbHR6ACjhbAybDvry+3L5qQYdh3H6+7yD/AiUE45n8mTTw== +"@smithy/util-defaults-mode-browser@^3.0.22": + version "3.0.22" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.22.tgz#e9141ed58109d572337a621d96131526aaf4f42f" + integrity sha512-WKzUxNsOun5ETwEOrvooXeI1mZ8tjDTOcN4oruELWHhEYDgQYWwxZupURVyovcv+h5DyQT/DzK5nm4ZoR/Tw5Q== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.13.tgz#cdd3a08bb5af4d17c2b0a951af9936ce7f3bae93" - integrity sha512-voUa8TFJGfD+U12tlNNLCDlXibt9vRdNzRX45Onk/WxZe7TS+hTOZouEZRa7oARGicdgeXvt1A0W45qLGYdy+g== - dependencies: - "@smithy/config-resolver" "^3.0.5" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" +"@smithy/util-defaults-mode-node@^3.0.22": + version "3.0.22" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.22.tgz#fc51f37aaa5ec03edec0da890a1ca1e3e3cdc70b" + integrity sha512-hUsciOmAq8fsGwqg4+pJfNRmrhfqMH4Y9UeGcgeUl88kPAoYANFATJqCND+O4nUvwp5TzsYwGpqpcBKyA8LUUg== + dependencies: + "@smithy/config-resolver" "^3.0.9" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-endpoints@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" - integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== +"@smithy/util-endpoints@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.3.tgz#7498151e9dc714bdd0c6339314dd2350fa4d250a" + integrity sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/util-hex-encoding@^3.0.0": @@ -1891,31 +1887,31 @@ dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e" - integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== +"@smithy/util-middleware@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.7.tgz#770d09749b6d170a1641384a2e961487447446fa" + integrity sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-retry@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" - integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== +"@smithy/util-retry@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.7.tgz#694e0667574ffe9772f620b35d3c7286aced35e9" + integrity sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug== dependencies: - "@smithy/service-error-classification" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-stream@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" - integrity sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== +"@smithy/util-stream@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.9.tgz#d39656eae27696bdc5a3ec7c2f6b89c32dccd1ca" + integrity sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ== dependencies: - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/types" "^3.5.0" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" @@ -1945,13 +1941,13 @@ "@smithy/util-buffer-from" "^3.0.0" tslib "^2.6.2" -"@smithy/util-waiter@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.2.tgz#2d40c3312f3537feee763459a19acafab4c75cf3" - integrity sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw== +"@smithy/util-waiter@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.6.tgz#c65870d0c802e33b96112fac5c4471b3bf2eeecb" + integrity sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.5" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@tootallnate/once@1": @@ -2723,10 +2719,10 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -dompurify@^2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.5.tgz#0540a05b8020d4691ee9c6083fb23b2c919276fc" - integrity sha512-FgbqnEPiv5Vdtwt6Mxl7XSylttCC03cqP5ldNT2z+Kj0nLxPHJH4+1Cyf5Jasxhw93Rl4Oo11qRoUV72fmya2Q== +dompurify@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.7.tgz#6e0d36b9177db5a99f18ade1f28579db5ab839d7" + integrity sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q== dotenv@^16.4.5: version "16.4.5" @@ -3133,7 +3129,7 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^7.0.4: +https-proxy-agent@^7.0.5: version "7.0.5" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== @@ -3790,10 +3786,10 @@ jsdom@^16.6.0: ws "^7.4.6" xml-name-validator "^3.0.0" -jsdom@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-24.1.0.tgz#0cffdabd42c506788bfecd160e8ac22d4387f971" - integrity sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA== +jsdom@^24.1.3: + version "24.1.3" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-24.1.3.tgz#88e4a07cb9dd21067514a619e9f17b090a394a9f" + integrity sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ== dependencies: cssstyle "^4.0.1" data-urls "^5.0.0" @@ -3801,11 +3797,11 @@ jsdom@^24.1.0: form-data "^4.0.0" html-encoding-sniffer "^4.0.0" http-proxy-agent "^7.0.2" - https-proxy-agent "^7.0.4" + https-proxy-agent "^7.0.5" is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.10" + nwsapi "^2.2.12" parse5 "^7.1.2" - rrweb-cssom "^0.7.0" + rrweb-cssom "^0.7.1" saxes "^6.0.0" symbol-tree "^3.2.4" tough-cookie "^4.1.4" @@ -3814,7 +3810,7 @@ jsdom@^24.1.0: whatwg-encoding "^3.1.1" whatwg-mimetype "^4.0.0" whatwg-url "^14.0.0" - ws "^8.17.0" + ws "^8.18.0" xml-name-validator "^5.0.0" jsesc@^2.5.1: @@ -4048,7 +4044,7 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -nwsapi@^2.2.0, nwsapi@^2.2.10, nwsapi@^2.2.5: +nwsapi@^2.2.0, nwsapi@^2.2.12, nwsapi@^2.2.5: version "2.2.10" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== @@ -4307,7 +4303,7 @@ rrweb-cssom@^0.6.0: resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== -rrweb-cssom@^0.7.0: +rrweb-cssom@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz#c73451a484b86dd7cfb1e0b2898df4b703183e4b" integrity sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg== @@ -4898,7 +4894,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.4.6, ws@^8.17.0, ws@^8.18.0: +ws@^7.4.6, ws@^8.18.0: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== diff --git a/services/database/package.json b/services/database/package.json index e8e1d5b04..29e51497e 100644 --- a/services/database/package.json +++ b/services/database/package.json @@ -14,8 +14,8 @@ "serverless-dynamodb": "^0.2.53" }, "dependencies": { - "@aws-sdk/client-dynamodb": "^3.621.0", - "@aws-sdk/client-s3": "^3.621.0", - "@aws-sdk/lib-dynamodb": "^3.621.0" + "@aws-sdk/client-dynamodb": "^3.667.0", + "@aws-sdk/client-s3": "^3.667.0", + "@aws-sdk/lib-dynamodb": "^3.667.0" } } diff --git a/services/database/yarn.lock b/services/database/yarn.lock index 90f23d599..ecc7de6f0 100644 --- a/services/database/yarn.lock +++ b/services/database/yarn.lock @@ -120,118 +120,119 @@ tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.621.0.tgz#de0a23830a742f42ed031abb745d3787b0d4e759" - integrity sha512-aczOoVyufYwBCc/zZKJOP/xwbnojKQJ6Y8O7ZAZnxMPRyZXKXpoAxmlxLfOU6GUzXqzXdvj+Ir3VBd7MWB4KuQ== +"@aws-sdk/client-dynamodb@^3.667.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.686.0.tgz#8070b6905e951c4c5eba64d87057aeb5dc31d93f" + integrity sha512-h5re3MsCcKFRvUg+oFJgr5ZjvbLwn6CQguMFh6j3KOggHgsXnrWYNBGXb6+EfvuIH8QHt8XrBIGspvKyb/k0jA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-endpoint-discovery" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.686.0" + "@aws-sdk/client-sts" "3.686.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/credential-provider-node" "3.686.0" + "@aws-sdk/middleware-endpoint-discovery" "3.686.0" + "@aws-sdk/middleware-host-header" "3.686.0" + "@aws-sdk/middleware-logger" "3.686.0" + "@aws-sdk/middleware-recursion-detection" "3.686.0" + "@aws-sdk/middleware-user-agent" "3.686.0" + "@aws-sdk/region-config-resolver" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-endpoints" "3.686.0" + "@aws-sdk/util-user-agent-browser" "3.686.0" + "@aws-sdk/util-user-agent-node" "3.686.0" + "@smithy/config-resolver" "^3.0.10" + "@smithy/core" "^2.5.1" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/hash-node" "^3.0.8" + "@smithy/invalid-dependency" "^3.0.8" + "@smithy/middleware-content-length" "^3.0.10" + "@smithy/middleware-endpoint" "^3.2.1" + "@smithy/middleware-retry" "^3.0.25" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/middleware-stack" "^3.0.8" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/protocol-http" "^4.1.5" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.25" + "@smithy/util-defaults-mode-node" "^3.0.25" + "@smithy/util-endpoints" "^2.1.4" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-retry" "^3.0.8" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.7" + "@types/uuid" "^9.0.1" tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-s3@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.621.0.tgz#86a0e77913cd1e82308299835431887fe306c3a0" - integrity sha512-YhGkd2HQTM4HCYJIAVWvfbUMpOF7XUr1W/e2LN3CFP0WTF4zcCJKesJ2iNHrExqC0Ek1+qarMxiXBK95itfjYQ== +"@aws-sdk/client-s3@^3.667.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.686.0.tgz#4079406b60856445bdfb2f5544b433d6c7813a09" + integrity sha512-FE/xDZ529Xr+pOyLk8Ilc6sabb2b/K+QgSqS7ZsKcRuuHcKm6/h9tU1/U/F908IFiLmi3pI9i7Jl9Uoj7XlPmw== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-bucket-endpoint" "3.620.0" - "@aws-sdk/middleware-expect-continue" "3.620.0" - "@aws-sdk/middleware-flexible-checksums" "3.620.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-location-constraint" "3.609.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/middleware-signing" "3.620.0" - "@aws-sdk/middleware-ssec" "3.609.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/signature-v4-multi-region" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@aws-sdk/xml-builder" "3.609.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/eventstream-serde-browser" "^3.0.5" - "@smithy/eventstream-serde-config-resolver" "^3.0.3" - "@smithy/eventstream-serde-node" "^3.0.4" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-blob-browser" "^3.1.2" - "@smithy/hash-node" "^3.0.3" - "@smithy/hash-stream-node" "^3.1.2" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/md5-js" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.686.0" + "@aws-sdk/client-sts" "3.686.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/credential-provider-node" "3.686.0" + "@aws-sdk/middleware-bucket-endpoint" "3.686.0" + "@aws-sdk/middleware-expect-continue" "3.686.0" + "@aws-sdk/middleware-flexible-checksums" "3.686.0" + "@aws-sdk/middleware-host-header" "3.686.0" + "@aws-sdk/middleware-location-constraint" "3.686.0" + "@aws-sdk/middleware-logger" "3.686.0" + "@aws-sdk/middleware-recursion-detection" "3.686.0" + "@aws-sdk/middleware-sdk-s3" "3.686.0" + "@aws-sdk/middleware-ssec" "3.686.0" + "@aws-sdk/middleware-user-agent" "3.686.0" + "@aws-sdk/region-config-resolver" "3.686.0" + "@aws-sdk/signature-v4-multi-region" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-endpoints" "3.686.0" + "@aws-sdk/util-user-agent-browser" "3.686.0" + "@aws-sdk/util-user-agent-node" "3.686.0" + "@aws-sdk/xml-builder" "3.686.0" + "@smithy/config-resolver" "^3.0.10" + "@smithy/core" "^2.5.1" + "@smithy/eventstream-serde-browser" "^3.0.11" + "@smithy/eventstream-serde-config-resolver" "^3.0.8" + "@smithy/eventstream-serde-node" "^3.0.10" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/hash-blob-browser" "^3.1.7" + "@smithy/hash-node" "^3.0.8" + "@smithy/hash-stream-node" "^3.1.7" + "@smithy/invalid-dependency" "^3.0.8" + "@smithy/md5-js" "^3.0.8" + "@smithy/middleware-content-length" "^3.0.10" + "@smithy/middleware-endpoint" "^3.2.1" + "@smithy/middleware-retry" "^3.0.25" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/middleware-stack" "^3.0.8" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/protocol-http" "^4.1.5" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-retry" "^3.0.3" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-defaults-mode-browser" "^3.0.25" + "@smithy/util-defaults-mode-node" "^3.0.25" + "@smithy/util-endpoints" "^2.1.4" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-retry" "^3.0.8" + "@smithy/util-stream" "^3.2.1" "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.2" + "@smithy/util-waiter" "^3.1.7" tslib "^2.6.2" "@aws-sdk/client-sso-oidc@3.616.0": @@ -279,48 +280,48 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso-oidc@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b" - integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg== +"@aws-sdk/client-sso-oidc@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.686.0.tgz#9cba2e47d80b0e73ab201eee6e98c3a00dc164b0" + integrity sha512-bV8yw1tpEj9WOVEnIJTcHPmTqikGccvh9RCg9ohc5DVKLajt/pUF4b+8dDyqNrEijUqlpDDwpSnh1GFhfe298A== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/credential-provider-node" "3.686.0" + "@aws-sdk/middleware-host-header" "3.686.0" + "@aws-sdk/middleware-logger" "3.686.0" + "@aws-sdk/middleware-recursion-detection" "3.686.0" + "@aws-sdk/middleware-user-agent" "3.686.0" + "@aws-sdk/region-config-resolver" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-endpoints" "3.686.0" + "@aws-sdk/util-user-agent-browser" "3.686.0" + "@aws-sdk/util-user-agent-node" "3.686.0" + "@smithy/config-resolver" "^3.0.10" + "@smithy/core" "^2.5.1" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/hash-node" "^3.0.8" + "@smithy/invalid-dependency" "^3.0.8" + "@smithy/middleware-content-length" "^3.0.10" + "@smithy/middleware-endpoint" "^3.2.1" + "@smithy/middleware-retry" "^3.0.25" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/middleware-stack" "^3.0.8" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/protocol-http" "^4.1.5" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.25" + "@smithy/util-defaults-mode-node" "^3.0.25" + "@smithy/util-endpoints" "^2.1.4" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-retry" "^3.0.8" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -368,47 +369,47 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825" - integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA== +"@aws-sdk/client-sso@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.686.0.tgz#837e9c7af186d2f3f1970f639445463f2ebcfa9e" + integrity sha512-D8huL2BSHNP9QdQrqPcx4DCJXcG/vrPimNbymgCBgnYyS1HNs11Hu27ZPrbWCZFC8n/bvfXGXOhm8WAHOi4Vtw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/middleware-host-header" "3.686.0" + "@aws-sdk/middleware-logger" "3.686.0" + "@aws-sdk/middleware-recursion-detection" "3.686.0" + "@aws-sdk/middleware-user-agent" "3.686.0" + "@aws-sdk/region-config-resolver" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-endpoints" "3.686.0" + "@aws-sdk/util-user-agent-browser" "3.686.0" + "@aws-sdk/util-user-agent-node" "3.686.0" + "@smithy/config-resolver" "^3.0.10" + "@smithy/core" "^2.5.1" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/hash-node" "^3.0.8" + "@smithy/invalid-dependency" "^3.0.8" + "@smithy/middleware-content-length" "^3.0.10" + "@smithy/middleware-endpoint" "^3.2.1" + "@smithy/middleware-retry" "^3.0.25" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/middleware-stack" "^3.0.8" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/protocol-http" "^4.1.5" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.25" + "@smithy/util-defaults-mode-node" "^3.0.25" + "@smithy/util-endpoints" "^2.1.4" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-retry" "^3.0.8" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -458,49 +459,49 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952" - integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA== +"@aws-sdk/client-sts@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.686.0.tgz#9ef94c56ec3379d2bb23e717cfb9b2095de65e1a" + integrity sha512-WVyOYdK3w7RhK6UrA2MY8KPIbcZ88BGIoKmRhcOXdIUC8CLL1UIECgdRthFXOU+MBqDPFS+VeF+COk0CpRhE8Q== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.686.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/credential-provider-node" "3.686.0" + "@aws-sdk/middleware-host-header" "3.686.0" + "@aws-sdk/middleware-logger" "3.686.0" + "@aws-sdk/middleware-recursion-detection" "3.686.0" + "@aws-sdk/middleware-user-agent" "3.686.0" + "@aws-sdk/region-config-resolver" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-endpoints" "3.686.0" + "@aws-sdk/util-user-agent-browser" "3.686.0" + "@aws-sdk/util-user-agent-node" "3.686.0" + "@smithy/config-resolver" "^3.0.10" + "@smithy/core" "^2.5.1" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/hash-node" "^3.0.8" + "@smithy/invalid-dependency" "^3.0.8" + "@smithy/middleware-content-length" "^3.0.10" + "@smithy/middleware-endpoint" "^3.2.1" + "@smithy/middleware-retry" "^3.0.25" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/middleware-stack" "^3.0.8" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/protocol-http" "^4.1.5" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.25" + "@smithy/util-defaults-mode-node" "^3.0.25" + "@smithy/util-endpoints" "^2.1.4" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-retry" "^3.0.8" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -517,18 +518,20 @@ fast-xml-parser "4.2.5" tslib "^2.6.2" -"@aws-sdk/core@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3" - integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ== - dependencies: - "@smithy/core" "^2.3.1" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" +"@aws-sdk/core@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.686.0.tgz#106a3733c250094db15ba765386db4643f5613b6" + integrity sha512-Xt3DV4DnAT3v2WURwzTxWQK34Ew+iiLzoUoguvLaZrVMFOqMMrwVjP+sizqIaHp1j7rGmFcN5I8saXnsDLuQLA== + dependencies: + "@aws-sdk/types" "3.686.0" + "@smithy/core" "^2.5.1" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.5" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/util-middleware" "^3.0.8" fast-xml-parser "4.4.1" tslib "^2.6.2" @@ -542,14 +545,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== +"@aws-sdk/credential-provider-env@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.686.0.tgz#71ce2df0be065dacddd873d1be7426bc8c6038ec" + integrity sha512-osD7lPO8OREkgxPiTWmA1i6XEmOth1uW9HWWj/+A2YGCj1G/t2sHu931w4Qj9NWHYZtbTTXQYVRg+TErALV7nQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/credential-provider-http@3.616.0": @@ -567,19 +571,20 @@ "@smithy/util-stream" "^3.1.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627" - integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg== +"@aws-sdk/credential-provider-http@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.686.0.tgz#fe84ea67fea6bb61effc0f10b99a0c3e9378d6c3" + integrity sha512-xyGAD/f3vR/wssUiZrNFWQWXZvI4zRm2wpHhoHA1cC2fbRMNFYtFn365yw6dU7l00ZLcdFB1H119AYIUZS7xbw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.5" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/util-stream" "^3.2.1" tslib "^2.6.2" "@aws-sdk/credential-provider-ini@3.616.0": @@ -599,21 +604,22 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222" - integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA== +"@aws-sdk/credential-provider-ini@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.686.0.tgz#41679c5845a26a003ffaeaaf4e2f557e7431ee41" + integrity sha512-90yr47QsduNiuVizMaJ2GctXZfp/z6s9eSk8ryMxMEJ2zJtaQHmJXIxaNnXj5Kh7V+HhCK7rYu58eyhZvz2Seg== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/credential-provider-env" "3.686.0" + "@aws-sdk/credential-provider-http" "3.686.0" + "@aws-sdk/credential-provider-process" "3.686.0" + "@aws-sdk/credential-provider-sso" "3.686.0" + "@aws-sdk/credential-provider-web-identity" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/credential-provider-node@3.616.0": @@ -634,22 +640,22 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47" - integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw== +"@aws-sdk/credential-provider-node@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.686.0.tgz#118c10e5fde68d02fb4acaa5bfc75d3620b95ed2" + integrity sha512-d5etJJD5rE3ALxrZag80EuFYI+tmJrS4E4dvFNRCosVFKvIC89VVpVY0W+OaA0J+D4FD3OzBwxan31BQAW3IyA== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-ini" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/credential-provider-env" "3.686.0" + "@aws-sdk/credential-provider-http" "3.686.0" + "@aws-sdk/credential-provider-ini" "3.686.0" + "@aws-sdk/credential-provider-process" "3.686.0" + "@aws-sdk/credential-provider-sso" "3.686.0" + "@aws-sdk/credential-provider-web-identity" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/credential-provider-process@3.614.0": @@ -663,15 +669,16 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== +"@aws-sdk/credential-provider-process@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.686.0.tgz#7b02591d9b81fb16288618ce23d3244496c1b538" + integrity sha512-sXqaAgyzMOc+dm4CnzAR5Q6S9OWVHyZjLfW6IQkmGjqeQXmZl24c4E82+w64C+CTkJrFLzH1VNOYp1Hy5gE6Qw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/credential-provider-sso@3.616.0": @@ -687,17 +694,18 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3" - integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw== +"@aws-sdk/credential-provider-sso@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.686.0.tgz#4575296bb6dc090d0ca7c983ac7f9665486208ae" + integrity sha512-bGDFRcqpGUe2YBL5gmRZTLcxGwbtFd916JsdqmNgJwhhlOXPF6nqjGil5ZYruS3AMPy0BMntnG0Mvn/ZbusT/A== dependencies: - "@aws-sdk/client-sso" "3.621.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/client-sso" "3.686.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/token-providers" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/credential-provider-web-identity@3.609.0": @@ -710,14 +718,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== +"@aws-sdk/credential-provider-web-identity@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.686.0.tgz#228be45b2f840ebf227d96ee5e326c1efa3c25a9" + integrity sha512-40UqCpPxyHCXDP7CGd9JIOZDgDZf+u1OyLaGBpjQJlz1HYuEsIWnnbTe29Yg3Ah/Zc3g4NBWcUdlGVotlnpnDg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/endpoint-cache@3.572.0": @@ -728,6 +737,14 @@ mnemonist "0.38.3" tslib "^2.6.2" +"@aws-sdk/endpoint-cache@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/endpoint-cache/-/endpoint-cache-3.679.0.tgz#0d53148d770fe0d37f1fd3d734c59808a776430f" + integrity sha512-6+DMgt91IkyO1gXqANH0lOZr/Em7CpzRQOD7Mku1icXDVfpVFnW4DZyUP+6EYeZlHgi2KwVYh5Hp7++oKcYWiw== + dependencies: + mnemonist "0.38.3" + tslib "^2.6.2" + "@aws-sdk/lib-dynamodb@^3.428.0": version "3.619.0" resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.619.0.tgz#23ce8f6a623bfb7d3f4c5450916bebc10db4225d" @@ -738,26 +755,28 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/lib-dynamodb@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.621.0.tgz#f8c320af1b286f2827d3be97aaffc571fa4bbfeb" - integrity sha512-RJJwaR15BLSTtegf2kgJjlJofvxeR+0Jm0rnEbJmRZ/HZhjow1LawrMbCR0YxfcWKUMsDw9tp8BDkLlrH1+RJQ== +"@aws-sdk/lib-dynamodb@^3.667.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.686.0.tgz#b5150df01724e2304606891cb8ee0d378b714587" + integrity sha512-FHb30V7gsoCKfDahc7NoN6kdHw+N+8TqNeuCkg5MqbeCTJ6wAr/slsqlLn+GJ/mhlxaA/tNgqInipL905dQPpw== dependencies: - "@aws-sdk/util-dynamodb" "3.621.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/util-dynamodb" "3.686.0" + "@smithy/core" "^2.5.1" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@aws-sdk/middleware-bucket-endpoint@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz#c5dc0e98b6209a91479cad6c2c74fbc5a3429fab" - integrity sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg== +"@aws-sdk/middleware-bucket-endpoint@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.686.0.tgz#12772aa4ce5448995b108f636e15d76cea95a7d9" + integrity sha512-6qCoWI73/HDzQE745MHQUYz46cAQxHCgy1You8MZQX9vHAQwqBnkcsb2hGp7S6fnQY5bNsiZkMWVQ/LVd2MNjg== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-arn-parser" "3.679.0" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" "@smithy/util-config-provider" "^3.0.0" tslib "^2.6.2" @@ -773,39 +792,42 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/middleware-endpoint-discovery@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz#45acd6cf2a77ceaf736f2758274c383838c8584a" - integrity sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ== +"@aws-sdk/middleware-endpoint-discovery@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.686.0.tgz#2851c0e260049fef86a09de9209856378a7b3e3a" + integrity sha512-4A+VmWf3vUirzncM0reyG/J3m82mDv2UbmCBz+RcYQ6S41JCC2WxN/MD2oIN/Qkd1N+4OW2U+T62VmqFQgeBKg== dependencies: - "@aws-sdk/endpoint-cache" "3.572.0" - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/endpoint-cache" "3.679.0" + "@aws-sdk/types" "3.686.0" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@aws-sdk/middleware-expect-continue@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz#6a362c0f0696dc6749108a33de9998e0fa6b50ec" - integrity sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A== +"@aws-sdk/middleware-expect-continue@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.686.0.tgz#4446a7f06098a8c6bc5f06717a8d65986383c81f" + integrity sha512-5yYqIbyhLhH29vn4sHiTj7sU6GttvLMk3XwCmBXjo2k2j3zHqFUwh9RyFGF9VY6Z392Drf/E/cl+qOGypwULpg== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.686.0" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@aws-sdk/middleware-flexible-checksums@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz#42cd48cdc0ad9639545be000bf537969210ce8c5" - integrity sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA== +"@aws-sdk/middleware-flexible-checksums@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.686.0.tgz#201bdc479c4ac5627f2d333b42ad1a93fa09aa47" + integrity sha512-S3bRlsu6p1yRBNqfFTJ4qOM0ybkBAggG0ZCxF+thzFFlyDCjfb46sA6SczwHimKBpMVXJr/XMvbWdfpW0DXsqA== dependencies: "@aws-crypto/crc32" "5.2.0" "@aws-crypto/crc32c" "5.2.0" - "@aws-sdk/types" "3.609.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/types" "3.686.0" "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" + "@smithy/util-middleware" "^3.0.8" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -819,23 +841,23 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== +"@aws-sdk/middleware-host-header@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.686.0.tgz#16f0be33fc738968a4e10ff77cb8a04e2b2c2359" + integrity sha512-+Yc6rO02z+yhFbHmRZGvEw1vmzf/ifS9a4aBjJGeVVU+ZxaUvnk+IUZWrj4YQopUQ+bSujmMUzJLXSkbDq7yuw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.686.0" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@aws-sdk/middleware-location-constraint@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" - integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== +"@aws-sdk/middleware-location-constraint@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.686.0.tgz#bddc9553c2452672ded9830810cb6f08471a3f75" + integrity sha512-pCLeZzt5zUGY3NbW4J/5x3kaHyJEji4yqtoQcUlJmkoEInhSxJ0OE8sTxAfyL3nIOF4yr6L2xdaLCqYgQT8Aog== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.686.0" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/middleware-logger@3.609.0": @@ -847,6 +869,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/middleware-logger@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.686.0.tgz#4e094e42e10bf17d43b9c9afc3fc594f4aa72e02" + integrity sha512-cX43ODfA2+SPdX7VRxu6gXk4t4bdVJ9pkktbfnkE5t27OlwNfvSGGhnHrQL8xTOFeyQ+3T+oowf26gf1OI+vIg== + dependencies: + "@aws-sdk/types" "3.686.0" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@aws-sdk/middleware-recursion-detection@3.616.0": version "3.616.0" resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz#fa87c9d77c6f85d02b9cf8394f52b2d6334a63af" @@ -857,53 +888,43 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== +"@aws-sdk/middleware-recursion-detection@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.686.0.tgz#aba097d2dcc9d3b9d4523d7ae03ac3b387617db1" + integrity sha512-jF9hQ162xLgp9zZ/3w5RUNhmwVnXDBlABEUX8jCgzaFpaa742qR/KKtjjZQ6jMbQnP+8fOCSXFAVNMU+s6v81w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.686.0" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@aws-sdk/middleware-sdk-s3@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.621.0.tgz#da9cc709fffa4d269bb472e8ca42f2a4d80a842b" - integrity sha512-CJrQrtKylcqvyPkRR16JmPZkHroCkWwLErQrg30ZcBPNNok8xbfX6cYqG16XDTnu4lSYzv2Yqc4w4oOBv8xerQ== +"@aws-sdk/middleware-sdk-s3@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.686.0.tgz#88bf3c68a0c820f76ad7118e1b077b76721468c3" + integrity sha512-nQ38oBZD2UJLt+N2hPgeZju8Vz9WvfOYE0ao4cGCSWwcUI72Tx162GxC+VK04V7krYQkmwWtcdtzZD40rMWdgw== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-arn-parser" "3.568.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-arn-parser" "3.679.0" + "@smithy/core" "^2.5.1" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.5" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-stream" "^3.2.1" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/middleware-signing@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.620.0.tgz#8aface959d610732b0a5ede6f2c48119b33c4f3f" - integrity sha512-gxI7rubiaanUXaLfJ4NybERa9MGPNg2Ycl/OqANsozrBnR3Pw8vqy3EuVImQOyn2pJ2IFvl8ZPoSMHf4pX56FQ== +"@aws-sdk/middleware-ssec@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.686.0.tgz#03c231c6a130a0562ccf915245a28c2c8a17fb64" + integrity sha512-zJXml/CpVHFUdlGQqja87vNQ3rPB5SlDbfdwxlj1KBbjnRRwpBtxxmOlWRShg8lnVV6aIMGv95QmpIFy4ayqnQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - tslib "^2.6.2" - -"@aws-sdk/middleware-ssec@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" - integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.686.0" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/middleware-user-agent@3.616.0": @@ -917,15 +938,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" - integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== +"@aws-sdk/middleware-user-agent@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.686.0.tgz#f634a2f767d6f347d9f8d5822a3da00923c9ffee" + integrity sha512-/GRU68H5J66OD2a/RtX5s2ECtXTlMq6NneLlzcx0mIWnZ2VRMS2vFW2j2jrBEPJ5Y5us1/lK/fbun6gNo3qh7Q== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/core" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@aws-sdk/util-endpoints" "3.686.0" + "@smithy/core" "^2.5.1" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/region-config-resolver@3.614.0": @@ -940,16 +963,28 @@ "@smithy/util-middleware" "^3.0.3" tslib "^2.6.2" -"@aws-sdk/signature-v4-multi-region@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.621.0.tgz#d8bd2e8bab970acaecfaca3de85c6924b43f07ff" - integrity sha512-u+ulCaHFveqHaTxgiYrEAyfBVP6GRKjnmDut67CtjhjslshPWYpo/ndtlCW1zc0RDne3uUeK13Pqp7dp7p1d6g== +"@aws-sdk/region-config-resolver@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.686.0.tgz#3ef61e2cd95eb0ae80ecd5eef284744eb0a76d7c" + integrity sha512-6zXD3bSD8tcsMAVVwO1gO7rI1uy2fCD3czgawuPGPopeLiPpo6/3FoUWCQzk2nvEhj7p9Z4BbjwZGSlRkVrXTw== dependencies: - "@aws-sdk/middleware-sdk-s3" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.686.0" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/types" "^3.6.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.8" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.686.0.tgz#c5e0a48193f3e4d0a5420516e6a0ce4cf4abda0a" + integrity sha512-/e6nLBVSBXd2QC9hXLK7ka4pw5V1TlVg0VhoRIRspWxVmWmyQykyymAq0Z1kvg+D3Y6K8UiB2nE0QAsNqowPOA== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/protocol-http" "^4.1.5" + "@smithy/signature-v4" "^4.2.0" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@aws-sdk/token-providers@3.614.0": @@ -963,6 +998,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@aws-sdk/token-providers@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.686.0.tgz#c7733a0a079adc9404bd9d8fc4ff52edef0a123a" + integrity sha512-9oL4kTCSePFmyKPskibeiOXV6qavPZ63/kXM9Wh9V6dTSvBtLeNnMxqGvENGKJcTdIgtoqyqA6ET9u0PJ5IRIg== + dependencies: + "@aws-sdk/types" "3.686.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@aws-sdk/types@3.609.0", "@aws-sdk/types@^3.222.0": version "3.609.0" resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" @@ -971,10 +1017,18 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/util-arn-parser@3.568.0": - version "3.568.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz#6a19a8c6bbaa520b6be1c278b2b8c17875b91527" - integrity sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== +"@aws-sdk/types@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.686.0.tgz#01aa5307c727de9e69969c538f99ae8b53f1074f" + integrity sha512-xFnrb3wxOoJcW2Xrh63ZgFo5buIu9DF7bOHnwoUxHdNpUXicUh0AHw85TjXxyxIAd0d1psY/DU7QHoNI3OswgQ== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@3.679.0": + version "3.679.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.679.0.tgz#1b7793c8ae31305ca6c6f7497066f3e74ad69716" + integrity sha512-CwzEbU8R8rq9bqUFryO50RFBlkfufV9UfMArHPWlo+lmsC+NlSluHQALoj6Jkq3zf5ppn1CN0c1DDLrEqdQUXg== dependencies: tslib "^2.6.2" @@ -985,10 +1039,10 @@ dependencies: tslib "^2.6.2" -"@aws-sdk/util-dynamodb@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.621.0.tgz#a0d6501e5ab9aca695dc794963adf46a475ee5f3" - integrity sha512-/3qEmZ52FdP4+3AUsUX0/wKcCF3jvAG+avVKuSCUYIdKgSIYKSeYfH8F3/r6DE3czaFevBwHRiuKHEihCMApGw== +"@aws-sdk/util-dynamodb@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.686.0.tgz#64f22ca7ea7f4305160d115a5c8b9cb93fd53617" + integrity sha512-kW689EdaeNQXoNGNA7B246G8/B+2Zis+u0X4kImZvn19+trtfb7ymJlwqmxUUvDDGUyW3dsf/6OmJlpzGd9UNw== dependencies: tslib "^2.6.2" @@ -1002,6 +1056,16 @@ "@smithy/util-endpoints" "^2.0.5" tslib "^2.6.2" +"@aws-sdk/util-endpoints@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.686.0.tgz#c9a621961b8efda6d82ab3523d673acb0629d6d0" + integrity sha512-7msZE2oYl+6QYeeRBjlDgxQUhq/XRky3cXE0FqLFs2muLS7XSuQEXkpOXB3R782ygAP6JX0kmBxPTLurRTikZg== + dependencies: + "@aws-sdk/types" "3.686.0" + "@smithy/types" "^3.6.0" + "@smithy/util-endpoints" "^2.1.4" + tslib "^2.6.2" + "@aws-sdk/util-locate-window@^3.0.0": version "3.568.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz#2acc4b2236af0d7494f7e517401ba6b3c4af11ff" @@ -1019,6 +1083,16 @@ bowser "^2.11.0" tslib "^2.6.2" +"@aws-sdk/util-user-agent-browser@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.686.0.tgz#953ef68c1b54e02f9de742310f47c33452f088bc" + integrity sha512-YiQXeGYZegF1b7B2GOR61orhgv79qmI0z7+Agm3NXLO6hGfVV3kFUJbXnjtH1BgWo5hbZYW7HQ2omGb3dnb6Lg== + dependencies: + "@aws-sdk/types" "3.686.0" + "@smithy/types" "^3.6.0" + bowser "^2.11.0" + tslib "^2.6.2" + "@aws-sdk/util-user-agent-node@3.614.0": version "3.614.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" @@ -1029,12 +1103,23 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@aws-sdk/xml-builder@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" - integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== +"@aws-sdk/util-user-agent-node@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.686.0.tgz#73b39d428e259fedbc1442e184bbd401be398ec5" + integrity sha512-XXUhZPeacJt5BmWc0qNXA4/yyQGXPmFcTOFe5aqXuZbhtTCNVJ0fPQHFip37iGSHCg8eAFykiBn9W8hD4swolQ== dependencies: - "@smithy/types" "^3.3.0" + "@aws-sdk/middleware-user-agent" "3.686.0" + "@aws-sdk/types" "3.686.0" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + +"@aws-sdk/xml-builder@3.686.0": + version "3.686.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.686.0.tgz#adcf39a9bcbecb62ae88dd104896b9744222f98e" + integrity sha512-k0z5b5dkYSuOHY0AOZ4iyjcGBeVL9lWsQNF4+c+1oK3OW4fRWl/bNa1soMRMpangsHPzgyn/QkzuDbl7qR4qrw== + dependencies: + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@smithy/abort-controller@^3.1.1": @@ -1045,19 +1130,38 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@smithy/chunked-blob-reader-native@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz#f1104b30030f76f9aadcbd3cdca4377bd1ba2695" - integrity sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg== +"@smithy/abort-controller@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.6.tgz#d9de97b85ca277df6ffb9ee7cd83d5da793ee6de" + integrity sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader-native@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz#39045ed278ee1b6f4c12715c7565678557274c29" + integrity sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ== dependencies: "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/chunked-blob-reader@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz#e5d3b04e9b273ba8b7ede47461e2aa96c8aa49e0" - integrity sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA== +"@smithy/chunked-blob-reader@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz#754099909957fb1986c16eb88afad75919d7129d" + integrity sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/config-resolver@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.10.tgz#d9529d9893e5fae1f14cb1ffd55517feb6d7e50f" + integrity sha512-Uh0Sz9gdUuz538nvkPiyv1DZRX9+D15EKDtnQP5rYVAzM/dnYk3P8cg73jcxyOitPgT3mE3OVj7ky7sibzHWkw== dependencies: + "@smithy/node-config-provider" "^3.1.9" + "@smithy/types" "^3.6.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.8" tslib "^2.6.2" "@smithy/config-resolver@^3.0.5": @@ -1085,18 +1189,18 @@ "@smithy/util-middleware" "^3.0.3" tslib "^2.6.2" -"@smithy/core@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.1.tgz#99cb8eda23009fd7df736c82072dafcf4eb4ff5d" - integrity sha512-BC7VMXx/1BCmRPCVzzn4HGWAtsrb7/0758EtwOGFJQrlSwJBEjCcDLNZLFoL/68JexYa2s+KmgL/UfmXdG6v1w== +"@smithy/core@^2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.5.1.tgz#7f635b76778afca845bcb401d36f22fa37712f15" + integrity sha512-DujtuDA7BGEKExJ05W5OdxCoyekcKT3Rhg1ZGeiUWaz2BJIWXjZmsG/DIP4W48GHno7AQwRsaCb8NcBgH3QZpg== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-stream" "^3.2.1" + "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" "@smithy/credential-provider-imds@^3.1.4", "@smithy/credential-provider-imds@^3.2.0": @@ -1110,49 +1214,71 @@ "@smithy/url-parser" "^3.0.3" tslib "^2.6.2" -"@smithy/eventstream-codec@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c" - integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== +"@smithy/credential-provider-imds@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz#e1a2bfc8a0066f673756ad8735247cf284b9735c" + integrity sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^3.2.5": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.5.tgz#dbfd849a4a7ebd68519cd9fc35f78d091e126d0a" + integrity sha512-4FTQGAsuwqTzVMmiRVTn0RR9GrbRfkP0wfu/tXWVHd2LgNpTY0uglQpIScXK4NaEyXbB3JmZt8gfVqO50lP8wg== + dependencies: + "@smithy/node-config-provider" "^3.1.9" + "@smithy/property-provider" "^3.1.8" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.7.tgz#5bfaffbc83ae374ffd85a755a8200ba3c7aed016" + integrity sha512-kVSXScIiRN7q+s1x7BrQtZ1Aa9hvvP9FeCqCdBxv37GimIHgBCOnZ5Ip80HLt0DhnAKpiobFdGqTFgbaJNrazA== dependencies: "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.6.0" "@smithy/util-hex-encoding" "^3.0.0" tslib "^2.6.2" -"@smithy/eventstream-serde-browser@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz#3e971afd2b8a02a098af8decc4b9e3f35296d6a2" - integrity sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ== +"@smithy/eventstream-serde-browser@^3.0.11": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.11.tgz#019f3d1016d893b65ef6efec8c5e2fa925d0ac3d" + integrity sha512-Pd1Wnq3CQ/v2SxRifDUihvpXzirJYbbtXfEnnLV/z0OGCTx/btVX74P86IgrZkjOydOASBGXdPpupYQI+iO/6A== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.10" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@smithy/eventstream-serde-config-resolver@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a" - integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== +"@smithy/eventstream-serde-config-resolver@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.8.tgz#bba17a358818e61993aaa73e36ea4023c5805556" + integrity sha512-zkFIG2i1BLbfoGQnf1qEeMqX0h5qAznzaZmMVNnvPZz9J5AWBPkOMckZWPedGUPcVITacwIdQXoPcdIQq5FRcg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@smithy/eventstream-serde-node@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz#6301752ca51b3ebabcd2dec112f1dacd990de4c1" - integrity sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg== +"@smithy/eventstream-serde-node@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.10.tgz#da40b872001390bb47807186855faba8172b3b5b" + integrity sha512-hjpU1tIsJ9qpcoZq9zGHBJPBOeBGYt+n8vfhDwnITPhEre6APrvqq/y3XMDEGUT2cWQ4ramNqBPRbx3qn55rhw== dependencies: - "@smithy/eventstream-serde-universal" "^3.0.4" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-serde-universal" "^3.0.10" + "@smithy/types" "^3.6.0" tslib "^2.6.2" -"@smithy/eventstream-serde-universal@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz#6754de5b94bdc286d8ef1d6bcf22d80f6ab68f30" - integrity sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A== +"@smithy/eventstream-serde-universal@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.10.tgz#b24e66fec9ec003eb0a1d6733fa22ded43129281" + integrity sha512-ewG1GHbbqsFZ4asaq40KmxCmXO+AFSM1b+DcO2C03dyJj/ZH71CiTg853FSE/3SHK9q3jiYQIFjlGSwfxQ9kww== dependencies: - "@smithy/eventstream-codec" "^3.1.2" - "@smithy/types" "^3.3.0" + "@smithy/eventstream-codec" "^3.1.7" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@smithy/fetch-http-handler@^3.2.2", "@smithy/fetch-http-handler@^3.2.3": @@ -1166,25 +1292,25 @@ "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz#c754de7e0ff2541b73ac9ba7cc955940114b3d62" - integrity sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== +"@smithy/fetch-http-handler@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-4.0.0.tgz#3763cb5178745ed630ed5bc3beb6328abdc31f36" + integrity sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.5" + "@smithy/querystring-builder" "^3.0.8" + "@smithy/types" "^3.6.0" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-blob-browser@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz#90281c1f183d93686fb4f26107f1819644d68829" - integrity sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg== +"@smithy/hash-blob-browser@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.7.tgz#717a75129f3587e78c3cac74727448257a59dcc3" + integrity sha512-4yNlxVNJifPM5ThaA5HKnHkn7JhctFUHvcaz6YXxHlYOSIrzI6VKQPTN8Gs1iN5nqq9iFcwIR9THqchUCouIfg== dependencies: - "@smithy/chunked-blob-reader" "^3.0.0" - "@smithy/chunked-blob-reader-native" "^3.0.0" - "@smithy/types" "^3.3.0" + "@smithy/chunked-blob-reader" "^4.0.0" + "@smithy/chunked-blob-reader-native" "^3.0.1" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@smithy/hash-node@^3.0.3": @@ -1197,12 +1323,22 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-stream-node@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz#89f0290ae44b113863878e75b10c484ff48af71c" - integrity sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g== +"@smithy/hash-node@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.8.tgz#f451cc342f74830466b0b39bf985dc3022634065" + integrity sha512-tlNQYbfpWXHimHqrvgo14DrMAgUBua/cNoz9fMYcDmYej7MAmUcjav/QKQbFc3NrcPxeJ7QClER4tWZmfwoPng== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.6.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.7.tgz#df5c3b7aa8dbe9c389ff7857ce9145694f550b7e" + integrity sha512-xMAsvJ3hLG63lsBVi1Hl6BBSfhd8/Qnp8fC06kjOpJvyyCEXdwHITa5Kvdsk6gaAXLhbZMhQMIGvgUbfnJDP6Q== + dependencies: + "@smithy/types" "^3.6.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" @@ -1214,6 +1350,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/invalid-dependency@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.8.tgz#4d381a4c24832371ade79e904a72c173c9851e5f" + integrity sha512-7Qynk6NWtTQhnGTTZwks++nJhQ1O54Mzi7fz4PqZOiYXb4Z1Flpb2yRvdALoggTS8xjtohWUM+RygOtB30YL3Q== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/is-array-buffer@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" @@ -1228,16 +1372,25 @@ dependencies: tslib "^2.6.2" -"@smithy/md5-js@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.3.tgz#55ee40aa24075b096c39f7910590c18ff7660c98" - integrity sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q== +"@smithy/md5-js@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.8.tgz#837e54094007e87bf5196e11eca453d1c1e83a26" + integrity sha512-LwApfTK0OJ/tCyNUXqnWCKoE2b4rDSr4BJlDAVCkiWYeHESr+y+d5zlAanuLW6fnitVJRD/7d9/kN/ZM9Su4mA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.6.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.4", "@smithy/middleware-content-length@^3.0.5": +"@smithy/middleware-content-length@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.10.tgz#738266f6d81436d7e3a86bea931bc64e04ae7dbf" + integrity sha512-T4dIdCs1d/+/qMpwhJ1DzOhxCZjZHbHazEPJWdB4GDi2HjIZllVzeBEcdJUN0fomV8DURsgOyrbEUzg3vzTaOg== + dependencies: + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + +"@smithy/middleware-content-length@^3.0.4": version "3.0.5" resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== @@ -1259,6 +1412,20 @@ "@smithy/util-middleware" "^3.0.3" tslib "^2.6.2" +"@smithy/middleware-endpoint@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.1.tgz#b9ee42d29d8f3a266883d293c4d6a586f7b60979" + integrity sha512-wWO3xYmFm6WRW8VsEJ5oU6h7aosFXfszlz3Dj176pTij6o21oZnzkCLzShfmRaaCHDkBXWBdO0c4sQAvLFP6zA== + dependencies: + "@smithy/core" "^2.5.1" + "@smithy/middleware-serde" "^3.0.8" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/shared-ini-file-loader" "^3.1.9" + "@smithy/types" "^3.6.0" + "@smithy/url-parser" "^3.0.8" + "@smithy/util-middleware" "^3.0.8" + tslib "^2.6.2" + "@smithy/middleware-retry@^3.0.10", "@smithy/middleware-retry@^3.0.12": version "3.0.12" resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.12.tgz#e20b0ebeac724f815340a37bd927ae5401a5c94b" @@ -1274,18 +1441,18 @@ tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-retry@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.13.tgz#3bdd662aff01f360fcbaa166500bbc575dc9d1d0" - integrity sha512-zvCLfaRYCaUmjbF2yxShGZdolSHft7NNCTA28HVN9hKcEbOH+g5irr1X9s+in8EpambclGnevZY4A3lYpvDCFw== +"@smithy/middleware-retry@^3.0.25": + version "3.0.25" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.25.tgz#a6b1081fc1a0991ffe1d15e567e76198af01f37c" + integrity sha512-m1F70cPaMBML4HiTgCw5I+jFNtjgz5z5UdGnUbG37vw6kh4UvizFYjqJGHvicfgKMkDL6mXwyPp5mhZg02g5sg== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/service-error-classification" "^3.0.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.5" + "@smithy/service-error-classification" "^3.0.8" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" + "@smithy/util-middleware" "^3.0.8" + "@smithy/util-retry" "^3.0.8" tslib "^2.6.2" uuid "^9.0.1" @@ -1297,6 +1464,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/middleware-serde@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.8.tgz#a46d10dba3c395be0d28610d55c89ff8c07c0cd3" + integrity sha512-Xg2jK9Wc/1g/MBMP/EUn2DLspN8LNt+GMe7cgF+Ty3vl+Zvu+VeZU5nmhveU+H8pxyTsjrAkci8NqY6OuvZnjA== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/middleware-stack@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" @@ -1305,6 +1480,14 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/middleware-stack@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.8.tgz#f1c7d9c7fe8280c6081141c88f4a76875da1fc43" + integrity sha512-d7ZuwvYgp1+3682Nx0MD3D/HtkmZd49N3JUndYWQXfRZrYEnCWYc8BHcNmVsPAp9gKvlurdg/mubE6b/rPS9MA== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/node-config-provider@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" @@ -1315,6 +1498,26 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/node-config-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz#2c1092040b4062eae0f7c9e121cc00ac6a77efee" + integrity sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q== + dependencies: + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/node-config-provider@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.9.tgz#d27ba8e4753f1941c24ed0af824dbc6c492f510a" + integrity sha512-qRHoah49QJ71eemjuS/WhUXB+mpNtwHRWQr77J/m40ewBVVwvo52kYAmb7iuaECgGTTcYxHS4Wmewfwy++ueew== + dependencies: + "@smithy/property-provider" "^3.1.8" + "@smithy/shared-ini-file-loader" "^3.1.9" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/node-http-handler@^3.1.3", "@smithy/node-http-handler@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" @@ -1326,6 +1529,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/node-http-handler@^3.2.5": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.5.tgz#ad9d9ba1528bf0d4a655135e978ecc14b3df26a2" + integrity sha512-PkOwPNeKdvX/jCpn0A8n9/TyoxjGZB8WVoJmm9YzsnAgggTj4CrjpRHlTQw7dlLZ320n1mY1y+nTRUDViKi/3w== + dependencies: + "@smithy/abort-controller" "^3.1.6" + "@smithy/protocol-http" "^4.1.5" + "@smithy/querystring-builder" "^3.0.8" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/property-provider@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" @@ -1334,6 +1548,22 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/property-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.7.tgz#8a304a4b9110a067a93c784e4c11e175f82da379" + integrity sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/property-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.8.tgz#b1c5a3949effbb9772785ad7ddc5b4b235b10fbe" + integrity sha512-ukNUyo6rHmusG64lmkjFeXemwYuKge1BJ8CtpVKmrxQxc6rhUX0vebcptFA9MmrGsnLhwnnqeH83VTU9hwOpjA== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/protocol-http@^4.0.4", "@smithy/protocol-http@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" @@ -1342,6 +1572,22 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/protocol-http@^4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.4.tgz#6940d652b1825bda2422163ec9baab552669a338" + integrity sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/protocol-http@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.5.tgz#a1f397440f299b6a5abeed6866957fecb1bf5013" + integrity sha512-hsjtwpIemmCkm3ZV5fd/T0bPIugW1gJXwZ/hpuVubt2hEUApIoUTrf6qIdh9MAWlw0vjMrA1ztJLAwtNaZogvg== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/querystring-builder@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" @@ -1351,6 +1597,15 @@ "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" +"@smithy/querystring-builder@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.8.tgz#0d845be53aa624771c518d1412881236ce12ed4f" + integrity sha512-btYxGVqFUARbUrN6VhL9c3dnSviIwBYD9Rz1jHuN1hgh28Fpv2xjU1HeCeDJX68xctz7r4l1PBnFhGg1WBBPuA== + dependencies: + "@smithy/types" "^3.6.0" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + "@smithy/querystring-parser@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" @@ -1359,6 +1614,22 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/querystring-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz#936206d1e6da9d862384dae730b4bad042d6a948" + integrity sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.8.tgz#057a8e2d301eea8eac7071923100ba38a824d7df" + integrity sha512-BtEk3FG7Ks64GAbt+JnKqwuobJNX8VmFLBsKIwWr1D60T426fGrV2L3YS5siOcUhhp6/Y6yhBw1PSPxA5p7qGg== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/service-error-classification@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" @@ -1366,6 +1637,13 @@ dependencies: "@smithy/types" "^3.3.0" +"@smithy/service-error-classification@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.8.tgz#265ad2573b972f6c7bdd1ad6c5155a88aeeea1c4" + integrity sha512-uEC/kCCFto83bz5ZzapcrgGqHOh/0r69sZ2ZuHlgoD5kYgXJEThCoTuw/y1Ub3cE7aaKdznb+jD9xRPIfIwD7g== + dependencies: + "@smithy/types" "^3.6.0" + "@smithy/shared-ini-file-loader@^3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" @@ -1374,7 +1652,23 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@smithy/signature-v4@^4.0.0", "@smithy/signature-v4@^4.1.0": +"@smithy/shared-ini-file-loader@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz#7a0bf5f20cfe8e0c4a36d8dcab8194d0d2ee958e" + integrity sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/shared-ini-file-loader@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.9.tgz#1b77852b5bb176445e1d80333fa3f739313a4928" + integrity sha512-/+OsJRNtoRbtsX0UpSgWVxFZLsJHo/4sTr+kBg/J78sr7iC+tHeOvOJrS5hCpVQ6sWBbhWLp1UNiuMyZhE6pmA== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + +"@smithy/signature-v4@^4.0.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== @@ -1388,6 +1682,20 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" +"@smithy/signature-v4@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.0.tgz#291f5a0e756cc251377e1e8af2a1f494e6173029" + integrity sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + "@smithy/smithy-client@^3.1.10", "@smithy/smithy-client@^3.1.8": version "3.1.10" resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.10.tgz#f2eb339006d48cf1c8f797f6e3896ec5af6ab80b" @@ -1400,16 +1708,17 @@ "@smithy/util-stream" "^3.1.2" tslib "^2.6.2" -"@smithy/smithy-client@^3.1.11": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.11.tgz#f12a7a0acaa7db3ead488ddf12ef4681daec11a7" - integrity sha512-l0BpyYkciNyMaS+PnFFz4aO5sBcXvGLoJd7mX9xrMBIm2nIQBVvYgp2ZpPDMzwjKCavsXu06iuCm0F6ZJZc6yQ== +"@smithy/smithy-client@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.4.2.tgz#a6e3ed98330ce170cf482e765bd0c21e0fde8ae4" + integrity sha512-dxw1BDxJiY9/zI3cBqfVrInij6ShjpV4fmGHesGZZUiP9OSE/EVfdwdRz0PgvkEvrZHpsj2htRaHJfftE8giBA== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/core" "^2.5.1" + "@smithy/middleware-endpoint" "^3.2.1" + "@smithy/middleware-stack" "^3.0.8" + "@smithy/protocol-http" "^4.1.5" + "@smithy/types" "^3.6.0" + "@smithy/util-stream" "^3.2.1" tslib "^2.6.2" "@smithy/types@^3.3.0": @@ -1419,6 +1728,20 @@ dependencies: tslib "^2.6.2" +"@smithy/types@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" + integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== + dependencies: + tslib "^2.6.2" + +"@smithy/types@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.6.0.tgz#03a52bfd62ee4b7b2a1842c8ae3ada7a0a5ff3a4" + integrity sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w== + dependencies: + tslib "^2.6.2" + "@smithy/url-parser@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" @@ -1428,6 +1751,24 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/url-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.7.tgz#9d7d7e4e38514bf75ade6e8a30d2300f3db17d1b" + integrity sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA== + dependencies: + "@smithy/querystring-parser" "^3.0.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/url-parser@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.8.tgz#8057d91d55ba8df97d74576e000f927b42da9e18" + integrity sha512-4FdOhwpTW7jtSFWm7SpfLGKIBC9ZaTKG5nBF0wK24aoQKQyDIKUw3+KFWCQ9maMzrgTJIuOvOnsV2lLGW5XjTg== + dependencies: + "@smithy/querystring-parser" "^3.0.8" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/util-base64@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017" @@ -1485,14 +1826,14 @@ bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.13.tgz#f574bbb89d60f5dcc443f106087d317b370634d0" - integrity sha512-ZIRSUsnnMRStOP6OKtW+gCSiVFkwnfQF2xtf32QKAbHR6ACjhbAybDvry+3L5qQYdh3H6+7yD/AiUE45n8mTTw== +"@smithy/util-defaults-mode-browser@^3.0.25": + version "3.0.25" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.25.tgz#ef9b84272d1db23503ff155f9075a4543ab6dab7" + integrity sha512-fRw7zymjIDt6XxIsLwfJfYUfbGoO9CmCJk6rjJ/X5cd20+d2Is7xjU5Kt/AiDt6hX8DAf5dztmfP5O82gR9emA== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.8" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" bowser "^2.11.0" tslib "^2.6.2" @@ -1509,17 +1850,17 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.13.tgz#cdd3a08bb5af4d17c2b0a951af9936ce7f3bae93" - integrity sha512-voUa8TFJGfD+U12tlNNLCDlXibt9vRdNzRX45Onk/WxZe7TS+hTOZouEZRa7oARGicdgeXvt1A0W45qLGYdy+g== +"@smithy/util-defaults-mode-node@^3.0.25": + version "3.0.25" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.25.tgz#c16fe3995c8e90ae318e336178392173aebe1e37" + integrity sha512-H3BSZdBDiVZGzt8TG51Pd2FvFO0PAx/A0mJ0EH8a13KJ6iUCdYnw/Dk/MdC1kTd0eUuUGisDFaxXVXo4HHFL1g== dependencies: - "@smithy/config-resolver" "^3.0.5" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/config-resolver" "^3.0.10" + "@smithy/credential-provider-imds" "^3.2.5" + "@smithy/node-config-provider" "^3.1.9" + "@smithy/property-provider" "^3.1.8" + "@smithy/smithy-client" "^3.4.2" + "@smithy/types" "^3.6.0" tslib "^2.6.2" "@smithy/util-endpoints@^2.0.5": @@ -1531,6 +1872,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-endpoints@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.4.tgz#a29134c2b1982442c5fc3be18d9b22796e8eb964" + integrity sha512-kPt8j4emm7rdMWQyL0F89o92q10gvCUa6sBkBtDJ7nV2+P7wpXczzOfoDJ49CKXe5CCqb8dc1W+ZdLlrKzSAnQ== + dependencies: + "@smithy/node-config-provider" "^3.1.9" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/util-hex-encoding@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6" @@ -1546,6 +1896,22 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-middleware@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.7.tgz#770d09749b6d170a1641384a2e961487447446fa" + integrity sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/util-middleware@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.8.tgz#372bc7a2845408ad69da039d277fc23c2734d0c6" + integrity sha512-p7iYAPaQjoeM+AKABpYWeDdtwQNxasr4aXQEA/OmbOaug9V0odRVDy3Wx4ci8soljE/JXQo+abV0qZpW8NX0yA== + dependencies: + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/util-retry@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" @@ -1555,6 +1921,15 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-retry@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.8.tgz#9c607c175a4d8a87b5d8ebaf308f6b849e4dc4d0" + integrity sha512-TCEhLnY581YJ+g1x0hapPz13JFqzmh/pMWL2KEFASC51qCfw3+Y47MrTmea4bUE5vsdxQ4F6/KFbUeSz22Q1ow== + dependencies: + "@smithy/service-error-classification" "^3.0.8" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + "@smithy/util-stream@^3.1.0", "@smithy/util-stream@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.2.tgz#404e2437eecad13aa89269c1cc2255f253d7843e" @@ -1569,14 +1944,14 @@ "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/util-stream@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" - integrity sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== +"@smithy/util-stream@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.2.1.tgz#f3055dc4c8caba8af4e47191ea7e773d0e5a429d" + integrity sha512-R3ufuzJRxSJbE58K9AEnL/uSZyVdHzud9wLS8tIbXclxKzoe09CRohj2xV8wpx5tj7ZbiJaKYcutMm1eYgz/0A== dependencies: - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/fetch-http-handler" "^4.0.0" + "@smithy/node-http-handler" "^3.2.5" + "@smithy/types" "^3.6.0" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" @@ -1615,6 +1990,20 @@ "@smithy/types" "^3.3.0" tslib "^2.6.2" +"@smithy/util-waiter@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.7.tgz#e94f7b9fb8e3b627d78f8886918c76030cf41815" + integrity sha512-d5yGlQtmN/z5eoTtIYgkvOw27US2Ous4VycnXatyoImIF9tzlcpnKqQ/V7qhvJmb2p6xZne1NopCLakdTnkBBQ== + dependencies: + "@smithy/abort-controller" "^3.1.6" + "@smithy/types" "^3.6.0" + tslib "^2.6.2" + +"@types/uuid@^9.0.1": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== + ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" diff --git a/services/ui-auth/package.json b/services/ui-auth/package.json index 38f0cd96a..7f2a41227 100644 --- a/services/ui-auth/package.json +++ b/services/ui-auth/package.json @@ -10,6 +10,6 @@ "license": "CC0-1.0", "devDependencies": {}, "dependencies": { - "@aws-sdk/client-cognito-identity-provider": "^3.621.0" + "@aws-sdk/client-cognito-identity-provider": "^3.662.0" } } diff --git a/services/ui-auth/yarn.lock b/services/ui-auth/yarn.lock index 253ed8113..27d422ae3 100644 --- a/services/ui-auth/yarn.lock +++ b/services/ui-auth/yarn.lock @@ -40,366 +40,367 @@ "@smithy/util-utf8" "^2.0.0" tslib "^2.6.2" -"@aws-sdk/client-cognito-identity-provider@^3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.621.0.tgz#7e5d85943fff1cfb0379866c2c3b3c91fd3f4ffa" - integrity sha512-Tu2m18zW87gJwme6J74p/ZrfC5eJ3kv4yXpCAkfOz1JBO0vfxdoZIkkZ94G5tuCpiS5kljwS6GXpsKOojpVXcg== +"@aws-sdk/client-cognito-identity-provider@^3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.662.0.tgz#8699f4f37fb23fef07729a86ab934998c19e059d" + integrity sha512-GqKKoVIBwkGqIxFJh5gJY7aMZhijjJkk/hmI1eIuS4vex7LpS941uYH/3CpyuI0u3hq+ABjwul2W6dDNleVq4Q== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/client-sts" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.662.0" + "@aws-sdk/client-sts" "3.662.0" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso-oidc@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b" - integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg== +"@aws-sdk/client-sso-oidc@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.662.0.tgz#f2816f674b4125ff900435cc8b7fadc227455c81" + integrity sha512-YZrH0sftdmjvEIY8u0LCrfEhyaMVpN0+K0K9WsUrFRMZ7DK6nB9YD1f5EaKUN5UjNw5S7gbjSdI8neSCoELjhw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825" - integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA== +"@aws-sdk/client-sso@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.662.0.tgz#43c9238799a2271e3652089bcddf105752fdacea" + integrity sha512-4j3+eNSnNblcIYCJrsRRdyXFjAWGpGa7s7pdIyDMLwtYA7AKNlnlyQV14jtezhMrN2j6qZ7zZmnwEyFGipgfWA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952" - integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA== +"@aws-sdk/client-sts@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.662.0.tgz#8d35b7d25c813e3b2ba0d8efd42d9e61823e088f" + integrity sha512-RjiXvfW3a36ybHuzYuZ6ZgddYiENiXLDGC3tlZMsKWuoVQNeoh2grx1wxUA6e4ajAIqJLXs5dAYTSXzGaAqHTA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.621.0" - "@aws-sdk/core" "3.621.0" - "@aws-sdk/credential-provider-node" "3.621.0" - "@aws-sdk/middleware-host-header" "3.620.0" - "@aws-sdk/middleware-logger" "3.609.0" - "@aws-sdk/middleware-recursion-detection" "3.620.0" - "@aws-sdk/middleware-user-agent" "3.620.0" - "@aws-sdk/region-config-resolver" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@aws-sdk/util-user-agent-browser" "3.609.0" - "@aws-sdk/util-user-agent-node" "3.614.0" - "@smithy/config-resolver" "^3.0.5" - "@smithy/core" "^2.3.1" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/hash-node" "^3.0.3" - "@smithy/invalid-dependency" "^3.0.3" - "@smithy/middleware-content-length" "^3.0.5" - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@aws-sdk/client-sso-oidc" "3.662.0" + "@aws-sdk/core" "3.662.0" + "@aws-sdk/credential-provider-node" "3.662.0" + "@aws-sdk/middleware-host-header" "3.662.0" + "@aws-sdk/middleware-logger" "3.662.0" + "@aws-sdk/middleware-recursion-detection" "3.662.0" + "@aws-sdk/middleware-user-agent" "3.662.0" + "@aws-sdk/region-config-resolver" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@aws-sdk/util-user-agent-browser" "3.662.0" + "@aws-sdk/util-user-agent-node" "3.662.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/core" "^2.4.7" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/hash-node" "^3.0.7" + "@smithy/invalid-dependency" "^3.0.7" + "@smithy/middleware-content-length" "^3.0.9" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" "@smithy/util-base64" "^3.0.0" "@smithy/util-body-length-browser" "^3.0.0" "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.13" - "@smithy/util-defaults-mode-node" "^3.0.13" - "@smithy/util-endpoints" "^2.0.5" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" + "@smithy/util-defaults-mode-browser" "^3.0.22" + "@smithy/util-defaults-mode-node" "^3.0.22" + "@smithy/util-endpoints" "^2.1.3" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@aws-sdk/core@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3" - integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ== +"@aws-sdk/core@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.662.0.tgz#93764660c9fabbc10e77ddcde283f088e22bebc3" + integrity sha512-w64Fa4dsgM8vN7Z+QPR3n+aAl5GXThQRH8deT/iF1rLrzfq7V8xxACJ/CLVaxrZMZUPUUgG7DUAo95nXFWmGjA== dependencies: - "@smithy/core" "^2.3.1" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/signature-v4" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/core" "^2.4.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/signature-v4" "^4.2.0" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" - integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== +"@aws-sdk/credential-provider-env@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.662.0.tgz#fe58b29abefd0fa968f79c7e7d15381009945a75" + integrity sha512-Dgwb0c/FH4xT5QZZFdLTFmCkdG3woXIAgLx5HCoH9Ty5G7T8keHOU9Jm4Vpe2ZJXL7JJHlLakGS65+bgXTuLSQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" - -"@aws-sdk/credential-provider-http@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627" - integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg== + +"@aws-sdk/credential-provider-http@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.662.0.tgz#02e3e97e28ec1bb99bdd91ddc9df5d48e1a31b42" + integrity sha512-Wnle/uJI4Ku9ABJHof9sio28VlaSbF3jVQKTSVCJftvbKELlFOlY5aXSjtu0wwcJqDS5r78N5KM7aARUJES+DA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@aws-sdk/types" "3.662.0" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222" - integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA== +"@aws-sdk/credential-provider-ini@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.662.0.tgz#505e37298cc6e2909020c25d555bf6b6d3f4cbdc" + integrity sha512-jk+A5B0NRYG4KrjJ8ef1+r9bFjhpwUm/A9grJmp3JOwcHKXvI2Gy9BXNqfqqVgrK0Gns+WyhJZy6rsRaC+v1oQ== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/credential-provider-env" "3.662.0" + "@aws-sdk/credential-provider-http" "3.662.0" + "@aws-sdk/credential-provider-process" "3.662.0" + "@aws-sdk/credential-provider-sso" "3.662.0" + "@aws-sdk/credential-provider-web-identity" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47" - integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw== +"@aws-sdk/credential-provider-node@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.662.0.tgz#086aa57b4fbca4701566f9ac88d59aa67658a5f8" + integrity sha512-2O9wjxdLcU1b+bWVkp3YYbPHo15SU3pW4KfWTca5bB/C01i1eqiHnwsOFz/WKPYYKNj0FhXtJJjeDQLtNFYI8A== dependencies: - "@aws-sdk/credential-provider-env" "3.620.1" - "@aws-sdk/credential-provider-http" "3.621.0" - "@aws-sdk/credential-provider-ini" "3.621.0" - "@aws-sdk/credential-provider-process" "3.620.1" - "@aws-sdk/credential-provider-sso" "3.621.0" - "@aws-sdk/credential-provider-web-identity" "3.621.0" - "@aws-sdk/types" "3.609.0" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/credential-provider-env" "3.662.0" + "@aws-sdk/credential-provider-http" "3.662.0" + "@aws-sdk/credential-provider-ini" "3.662.0" + "@aws-sdk/credential-provider-process" "3.662.0" + "@aws-sdk/credential-provider-sso" "3.662.0" + "@aws-sdk/credential-provider-web-identity" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.620.1": - version "3.620.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" - integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== +"@aws-sdk/credential-provider-process@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.662.0.tgz#2c9fef18cffc827c26b599fb2a9dfb812ca1409e" + integrity sha512-1QUdtr/JiuvRjVgA8enpgCwjq7Eud8eVUT0i/vpWuFp5TV2FFq/8BD3GBkesTdy4Ylms6QVGf7J6INdfUWQEmw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3" - integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw== +"@aws-sdk/credential-provider-sso@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.662.0.tgz#6d0c9f5f819da6b473d39d0cf4cd42cbbca3a524" + integrity sha512-zxze6pDPgwBwl7S3h4JDALCCz93pTAfulbCY8FqMEd7GvnAiofHpL9svyt4+gytXwwUSsQ6KxCMVLbi+8k8YIg== dependencies: - "@aws-sdk/client-sso" "3.621.0" - "@aws-sdk/token-providers" "3.614.0" - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/client-sso" "3.662.0" + "@aws-sdk/token-providers" "3.662.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.621.0": - version "3.621.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" - integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== +"@aws-sdk/credential-provider-web-identity@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.662.0.tgz#18246e29d5f8b242a0717ff7110680cc5816d163" + integrity sha512-GhPwxmHSFtwCckuT+34JG+U99qKfDWVYPLJOPI6b35+aLhfVqW5CHPmVjtM4WZqbxzsA0a3KAYA/U1ZaluI4SA== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" - integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== +"@aws-sdk/middleware-host-header@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.662.0.tgz#f3d647d294b19da17ef5845b87dc5c0788196a1e" + integrity sha512-Gkb0J1LTvD8LOS8uwoRI5weFXvvJwP1jfnYwzQrFgLymRFHJm5JtORQZtmw34dtdou+IBTUsH1mgI8b3QVVH3w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" + "@aws-sdk/types" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" - integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== +"@aws-sdk/middleware-logger@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.662.0.tgz#8c2ff7d543fe691a06020be853eeb9481409614d" + integrity sha512-aSpwVHtfMlqzpmnmmUgRNCaIcxXdRrGqGWG+VWXuYR1F6jJARDDCxGkSuKiPEOLX0h0BroUo4gqbM8ILXQ8rVw== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-recursion-detection@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" - integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== - dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.662.0.tgz#5af684014a604d474e6bd763a5d2a3fbfff84d36" + integrity sha512-V/MYE+LOFIQDLnpWMHLxnKu+ELhD3pLOrWXVhKpVit6YcHxaOz6nvB40CPamSPDXenA11FGXKAGNHZ0loTpDQg== + dependencies: + "@aws-sdk/types" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.620.0": - version "3.620.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" - integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== +"@aws-sdk/middleware-user-agent@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.662.0.tgz#a428403ced5d6684f29d45dd0f39c6c4ef10ab7b" + integrity sha512-NT940BLSSys/A8W3zO3g2Kj+zpeydqGbSQgN6qz84jTskQjnrlamoq+Zl9Rrp8Cn8sC10UQ09kGg97lvjVOlmg== dependencies: - "@aws-sdk/types" "3.609.0" - "@aws-sdk/util-endpoints" "3.614.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@aws-sdk/util-endpoints" "3.662.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" - integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== +"@aws-sdk/region-config-resolver@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.662.0.tgz#1dcb6850059baa54dcb6e4556ece7ec1a4ee9d1b" + integrity sha512-MDiWl4wZSVnnTELLb+jFSe0nj9HwxJPX2JnghXKkOXmbKEiE2/21DCQwU9mr9VUq2ZOQqaSnMFPr94iRu0AVTQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@aws-sdk/token-providers@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" - integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== +"@aws-sdk/token-providers@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.662.0.tgz#89c60983e13036cebc0e0310ae226e2254f5a741" + integrity sha512-OqtBPutNC9Am10P1W5IwqRvzCVQAHRxWxZnfDBh1FQjNmoboGWYSriKxbrCRYLFffusNuzo8KnOFOmg1sRlhJQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@aws-sdk/types@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" - integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== +"@aws-sdk/types@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.662.0.tgz#323de11059df4fd7169a381c166a8aae03abe757" + integrity sha512-Ff9/KRmIm8iEzodxzISLj4/pB/0hX2nVw1RFeOBC65OuM6nHrAdWHHog/CVx25hS5JPU0uE3h6NlWRaBJ7AV5w== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@aws-sdk/types@^3.222.0": @@ -409,14 +410,14 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/util-endpoints@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" - integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== +"@aws-sdk/util-endpoints@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.662.0.tgz#a124838077ae230bba605310a73e43493e58e3d1" + integrity sha512-RQ/78yNUxZZZULFg7VxT7oObGOR/FBc0ojiFoCAKC20ycY8VvVX5Eof4gyxoVpwOP7EoZO3UlWSIqtaEV/X70w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" - "@smithy/util-endpoints" "^2.0.5" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" + "@smithy/util-endpoints" "^2.1.3" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": @@ -426,97 +427,99 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/util-user-agent-browser@3.609.0": - version "3.609.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" - integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== +"@aws-sdk/util-user-agent-browser@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.662.0.tgz#b17b847b38ffa88944939534069bf78a277723ed" + integrity sha512-5wQd+HbNTY1r1Gndxf93dAEFtKz1DqcalI4Ym40To+RIonSsYQNRomFoizYNgJ1P+Mkfsr4P1dy/MNTlkqTZuQ== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/types" "^3.5.0" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.614.0": - version "3.614.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" - integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== +"@aws-sdk/util-user-agent-node@3.662.0": + version "3.662.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.662.0.tgz#7199eef53edb1c175e455c94596294541a5aaef4" + integrity sha512-vBRbZ9Hr1OGmdJPWj36X0fR8/VdI2JiwK6+oJRa6qfJ6AnhqCYZbCyeA6JIDeEu3M9iu1OLjenU8NdXhTz8c2w== dependencies: - "@aws-sdk/types" "3.609.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@aws-sdk/types" "3.662.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/abort-controller@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16" - integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== +"@smithy/abort-controller@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.5.tgz#ca7a86a3c6b20fabe59667143f58d9e198616d14" + integrity sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/config-resolver@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd" - integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== +"@smithy/config-resolver@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.9.tgz#dcf4b7747ca481866f9bfac21469ebe2031a599e" + integrity sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.7" tslib "^2.6.2" -"@smithy/core@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.1.tgz#99cb8eda23009fd7df736c82072dafcf4eb4ff5d" - integrity sha512-BC7VMXx/1BCmRPCVzzn4HGWAtsrb7/0758EtwOGFJQrlSwJBEjCcDLNZLFoL/68JexYa2s+KmgL/UfmXdG6v1w== +"@smithy/core@^2.4.7": + version "2.4.7" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.7.tgz#c4dc9ab3ba5f4b36addf967ca5fce036ce3b767d" + integrity sha512-goqMjX+IoVEnHZjYuzu8xwoZjoteMiLXsPHuXPBkWsGwu0o9c3nTjqkUlP1Ez/V8E501aOU7CJ3INk8mQcW2gw== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-retry" "^3.0.13" - "@smithy/middleware-serde" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.22" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/credential-provider-imds@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" - integrity sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== +"@smithy/credential-provider-imds@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz#e1a2bfc8a0066f673756ad8735247cf284b9735c" + integrity sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" tslib "^2.6.2" -"@smithy/fetch-http-handler@^3.2.4": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz#c754de7e0ff2541b73ac9ba7cc955940114b3d62" - integrity sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg== +"@smithy/fetch-http-handler@^3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" + integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" "@smithy/util-base64" "^3.0.0" tslib "^2.6.2" -"@smithy/hash-node@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24" - integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== +"@smithy/hash-node@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.7.tgz#03b5a382fb588b8c2bac11b4fe7300aaf1661c88" + integrity sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/invalid-dependency@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528" - integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== +"@smithy/invalid-dependency@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.7.tgz#b36f258d94498f3c72ab6020091a66fc7cc16eda" + integrity sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/is-array-buffer@^2.2.0": @@ -533,168 +536,168 @@ dependencies: tslib "^2.6.2" -"@smithy/middleware-content-length@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" - integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== - dependencies: - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - tslib "^2.6.2" - -"@smithy/middleware-endpoint@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" - integrity sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== +"@smithy/middleware-content-length@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.9.tgz#fb613d1a6b8c91e828d11c0d7a0a8576dba89b8b" + integrity sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA== dependencies: - "@smithy/middleware-serde" "^3.0.3" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" - "@smithy/url-parser" "^3.0.3" - "@smithy/util-middleware" "^3.0.3" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/middleware-retry@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.13.tgz#3bdd662aff01f360fcbaa166500bbc575dc9d1d0" - integrity sha512-zvCLfaRYCaUmjbF2yxShGZdolSHft7NNCTA28HVN9hKcEbOH+g5irr1X9s+in8EpambclGnevZY4A3lYpvDCFw== - dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/protocol-http" "^4.1.0" - "@smithy/service-error-classification" "^3.0.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" - "@smithy/util-middleware" "^3.0.3" - "@smithy/util-retry" "^3.0.3" +"@smithy/middleware-endpoint@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.4.tgz#222c9fa49c8af6ebf8bea8ab220d92d9b8c90d3d" + integrity sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ== + dependencies: + "@smithy/middleware-serde" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-middleware" "^3.0.7" + tslib "^2.6.2" + +"@smithy/middleware-retry@^3.0.22": + version "3.0.22" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.22.tgz#578ceafd72fd655cde35c35b462a8aad26fd07e2" + integrity sha512-svEN7O2Tf7BoaBkPzX/8AE2Bv7p16d9/ulFAD1Gmn5g19iMqNk1WIkMxAY7SpB9/tVtUwKx0NaIsBRl88gumZA== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" tslib "^2.6.2" uuid "^9.0.1" -"@smithy/middleware-serde@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" - integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== +"@smithy/middleware-serde@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.7.tgz#03f0dda75edffc4cc90ea422349cbfb82368efa7" + integrity sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/middleware-stack@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" - integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== +"@smithy/middleware-stack@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.7.tgz#813fa7b47895ce0d085eac89c056d21b1e46e771" + integrity sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/node-config-provider@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" - integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== +"@smithy/node-config-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz#2c1092040b4062eae0f7c9e121cc00ac6a77efee" + integrity sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/shared-ini-file-loader" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/node-http-handler@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" - integrity sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== +"@smithy/node-http-handler@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.4.tgz#3c57c40d082c3bacac1e49955bd1240e8ccc40b2" + integrity sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ== dependencies: - "@smithy/abort-controller" "^3.1.1" - "@smithy/protocol-http" "^4.1.0" - "@smithy/querystring-builder" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/abort-controller" "^3.1.5" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/property-provider@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" - integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== +"@smithy/property-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.7.tgz#8a304a4b9110a067a93c784e4c11e175f82da379" + integrity sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/protocol-http@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" - integrity sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== +"@smithy/protocol-http@^4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.4.tgz#6940d652b1825bda2422163ec9baab552669a338" + integrity sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/querystring-builder@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" - integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== +"@smithy/querystring-builder@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.7.tgz#8c443c65f4249ff1637088db1166d18411d41555" + integrity sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" "@smithy/util-uri-escape" "^3.0.0" tslib "^2.6.2" -"@smithy/querystring-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" - integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== +"@smithy/querystring-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz#936206d1e6da9d862384dae730b4bad042d6a948" + integrity sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/service-error-classification@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" - integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== +"@smithy/service-error-classification@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.7.tgz#5bab4ad802d30bd3fa52b8134f6c171582358226" + integrity sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" -"@smithy/shared-ini-file-loader@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" - integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== +"@smithy/shared-ini-file-loader@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz#7a0bf5f20cfe8e0c4a36d8dcab8194d0d2ee958e" + integrity sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/signature-v4@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" - integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== +"@smithy/signature-v4@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.0.tgz#291f5a0e756cc251377e1e8af2a1f494e6173029" + integrity sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ== dependencies: "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.3" + "@smithy/util-middleware" "^3.0.7" "@smithy/util-uri-escape" "^3.0.0" "@smithy/util-utf8" "^3.0.0" tslib "^2.6.2" -"@smithy/smithy-client@^3.1.11": - version "3.1.11" - resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.11.tgz#f12a7a0acaa7db3ead488ddf12ef4681daec11a7" - integrity sha512-l0BpyYkciNyMaS+PnFFz4aO5sBcXvGLoJd7mX9xrMBIm2nIQBVvYgp2ZpPDMzwjKCavsXu06iuCm0F6ZJZc6yQ== +"@smithy/smithy-client@^3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.3.6.tgz#882fcc4b5db35c284c7a7c6116b27be324c41202" + integrity sha512-qdH+mvDHgq1ss6mocyIl2/VjlWXew7pGwZQydwYJczEc22HZyX3k8yVPV9aZsbYbssHPvMDRA5rfBDrjQUbIIw== dependencies: - "@smithy/middleware-endpoint" "^3.1.0" - "@smithy/middleware-stack" "^3.0.3" - "@smithy/protocol-http" "^4.1.0" - "@smithy/types" "^3.3.0" - "@smithy/util-stream" "^3.1.3" + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" tslib "^2.6.2" -"@smithy/types@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" - integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== +"@smithy/types@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" + integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== dependencies: tslib "^2.6.2" -"@smithy/url-parser@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" - integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== +"@smithy/url-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.7.tgz#9d7d7e4e38514bf75ade6e8a30d2300f3db17d1b" + integrity sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA== dependencies: - "@smithy/querystring-parser" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/querystring-parser" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/util-base64@^3.0.0": @@ -743,37 +746,37 @@ dependencies: tslib "^2.6.2" -"@smithy/util-defaults-mode-browser@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.13.tgz#f574bbb89d60f5dcc443f106087d317b370634d0" - integrity sha512-ZIRSUsnnMRStOP6OKtW+gCSiVFkwnfQF2xtf32QKAbHR6ACjhbAybDvry+3L5qQYdh3H6+7yD/AiUE45n8mTTw== +"@smithy/util-defaults-mode-browser@^3.0.22": + version "3.0.22" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.22.tgz#e9141ed58109d572337a621d96131526aaf4f42f" + integrity sha512-WKzUxNsOun5ETwEOrvooXeI1mZ8tjDTOcN4oruELWHhEYDgQYWwxZupURVyovcv+h5DyQT/DzK5nm4ZoR/Tw5Q== dependencies: - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" bowser "^2.11.0" tslib "^2.6.2" -"@smithy/util-defaults-mode-node@^3.0.13": - version "3.0.13" - resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.13.tgz#cdd3a08bb5af4d17c2b0a951af9936ce7f3bae93" - integrity sha512-voUa8TFJGfD+U12tlNNLCDlXibt9vRdNzRX45Onk/WxZe7TS+hTOZouEZRa7oARGicdgeXvt1A0W45qLGYdy+g== +"@smithy/util-defaults-mode-node@^3.0.22": + version "3.0.22" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.22.tgz#fc51f37aaa5ec03edec0da890a1ca1e3e3cdc70b" + integrity sha512-hUsciOmAq8fsGwqg4+pJfNRmrhfqMH4Y9UeGcgeUl88kPAoYANFATJqCND+O4nUvwp5TzsYwGpqpcBKyA8LUUg== dependencies: - "@smithy/config-resolver" "^3.0.5" - "@smithy/credential-provider-imds" "^3.2.0" - "@smithy/node-config-provider" "^3.1.4" - "@smithy/property-provider" "^3.1.3" - "@smithy/smithy-client" "^3.1.11" - "@smithy/types" "^3.3.0" + "@smithy/config-resolver" "^3.0.9" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.3.6" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-endpoints@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" - integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== +"@smithy/util-endpoints@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.3.tgz#7498151e9dc714bdd0c6339314dd2350fa4d250a" + integrity sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw== dependencies: - "@smithy/node-config-provider" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" tslib "^2.6.2" "@smithy/util-hex-encoding@^3.0.0": @@ -783,31 +786,31 @@ dependencies: tslib "^2.6.2" -"@smithy/util-middleware@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e" - integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== +"@smithy/util-middleware@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.7.tgz#770d09749b6d170a1641384a2e961487447446fa" + integrity sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA== dependencies: - "@smithy/types" "^3.3.0" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-retry@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" - integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== +"@smithy/util-retry@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.7.tgz#694e0667574ffe9772f620b35d3c7286aced35e9" + integrity sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug== dependencies: - "@smithy/service-error-classification" "^3.0.3" - "@smithy/types" "^3.3.0" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/types" "^3.5.0" tslib "^2.6.2" -"@smithy/util-stream@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.3.tgz#699ee2397cc1d474e46d2034039d5263812dca64" - integrity sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw== +"@smithy/util-stream@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.9.tgz#d39656eae27696bdc5a3ec7c2f6b89c32dccd1ca" + integrity sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ== dependencies: - "@smithy/fetch-http-handler" "^3.2.4" - "@smithy/node-http-handler" "^3.1.4" - "@smithy/types" "^3.3.0" + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/types" "^3.5.0" "@smithy/util-base64" "^3.0.0" "@smithy/util-buffer-from" "^3.0.0" "@smithy/util-hex-encoding" "^3.0.0" diff --git a/services/ui-src/package.json b/services/ui-src/package.json index 559ab7245..97872b8b2 100644 --- a/services/ui-src/package.json +++ b/services/ui-src/package.json @@ -16,14 +16,14 @@ "dependencies": { "@chakra-ui/react": "^1.8.9", "@cmsgov/design-system": "^3.8.0", - "@emotion/react": "^11.11.4", + "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@hookform/resolvers": "^2.9.11", - "@vitejs/plugin-react": "^4.3.0", - "aws-amplify": "^5.3.19", + "@vitejs/plugin-react": "^4.3.2", + "aws-amplify": "^6.6.4", "date-fns": "^2.26.0", "date-fns-tz": "^1.3.8", - "dompurify": "^2.5.3", + "dompurify": "^2.5.7", "framer-motion": "^4", "html-react-parser": "^3.0.16", "jest": "^28.0.0", @@ -32,13 +32,13 @@ "react": "^17.0.1", "react-dom": "^17.0.1", "react-error-boundary": "^3.1.4", - "react-hook-form": "^7.52.1", + "react-hook-form": "^7.53.1", "react-icons": "^4.12.0", - "react-router-dom": "6.25.1", + "react-router-dom": "6.27.0", "react-uuid": "^1.0.3", - "sass": "^1.77.8", - "vite": "^5.3.4", - "vite-tsconfig-paths": "^4.3.2", + "sass": "^1.80.7", + "vite": "^5.4.7", + "vite-tsconfig-paths": "^5.1.2", "yup": "^0.32.11", "zustand": "^4.5.2" }, diff --git a/services/ui-src/src/components/app/AppRoutes.test.tsx b/services/ui-src/src/components/app/AppRoutes.test.tsx index 9b4f760e3..d389aa684 100644 --- a/services/ui-src/src/components/app/AppRoutes.test.tsx +++ b/services/ui-src/src/components/app/AppRoutes.test.tsx @@ -7,7 +7,6 @@ import { AppRoutes } from "components"; import { useStore, UserProvider } from "utils"; import { mockStateUserStore, - mockLDFlags, mockBannerStore, mockReportStore, } from "utils/testing/setupJest"; @@ -20,8 +19,6 @@ mockedUseStore.mockReturnValue({ ...mockReportStore, }); -mockLDFlags.setDefault({ wpReport: true, sarReport: true }); - global.structuredClone = jest.fn((val) => { return val ? JSON.parse(JSON.stringify(val)) : val; }); diff --git a/services/ui-src/src/components/export/ExportedModalOverlayReportSection.test.tsx b/services/ui-src/src/components/export/ExportedModalOverlayReportSection.test.tsx index 22bebffdf..725da4b56 100644 --- a/services/ui-src/src/components/export/ExportedModalOverlayReportSection.test.tsx +++ b/services/ui-src/src/components/export/ExportedModalOverlayReportSection.test.tsx @@ -4,13 +4,16 @@ import { mockReportStore, RouterWrappedComponent, } from "utils/testing/setupJest"; -import { mockSARFullReport, mockWPFullReport } from "utils/testing/mockReport"; +import { + mockSARReportWithOverlays, + mockWPReportWithOtherTypeOverlays, + mockWPReportWithOverlays, +} from "utils/testing/mockReport"; import { EntityDetailsStepTypes, ModalOverlayReportPageVerbiage, OverlayModalPageShape, OverlayModalTypes, - ReportRoute, OverlayModalStepTypes, } from "types"; import { @@ -24,95 +27,6 @@ global.structuredClone = (x: any) => JSON.parse(JSON.stringify(x)); jest.mock("utils/state/useStore"); const mockedUseStore = useStore as jest.MockedFunction; -const mockWPReportWithOverlays = { - ...mockWPFullReport, - fieldData: { - ...mockWPFullReport.fieldData, - [OverlayModalTypes.INITIATIVE]: [ - { - ...mockWPFullReport.fieldData.entityType[0], - type: OverlayModalTypes.INITIATIVE, - id: "mock wip id", // this is both our search filter and our search target in renderFieldRow - initiative_wpTopic: [ - { - value: "mock WP topic", - }, - ], - }, - ], - }, - formTemplate: { - ...mockWPFullReport.formTemplate, - routes: [ - /* - * We need the 3th route to have a child with entityType initiative, - * to avoid a null reference in getInitiativeStatus() - */ - ...mockWPFullReport.formTemplate.routes.slice(0, 3), - { - name: "mock-route-4", - path: "/mock/mock-route-4", - children: [ - { - entityType: OverlayModalTypes.INITIATIVE, - }, - ], - } as ReportRoute, - ...mockWPFullReport.formTemplate.routes.slice(3), - ], - }, -}; - -const mockSARReportWithOverlays = { - ...mockSARFullReport, - fieldData: { - ...mockSARFullReport.fieldData, - [OverlayModalTypes.INITIATIVE]: [ - { - ...mockSARFullReport.fieldData.entityType[0], - type: OverlayModalTypes.INITIATIVE, - id: "mock wip id", // this is both our search filter and our search target in renderFieldRow - initiative_wpTopic: [ - { - value: "mock WP topic", - }, - ], - "mock-expenditure-field-1": "5", - "mock-expenditure-field-2": "10", - "mock-expenditure-field-3": "15", - "mock-expenditure-field-4": "20", - }, - ], - }, - formTemplate: { - ...mockSARFullReport.formTemplate, - routes: [ - /* - * We need the 2th route to have a child with entityType initiative, - * to avoid a null reference in getInitiativeStatus() - */ - ...mockSARFullReport.formTemplate.routes.slice(0, 2), - { - name: "mock-dynamic-route", - path: "/mock/mock-dynamic-route", - initiatives: [ - { - initiatiaveId: "mock-init-id", - name: "mock init name", - entitySteps: [ - { - // TODO what here? - foo: "bar", - }, - ], - }, - ], - } as ReportRoute, - ...mockSARFullReport.formTemplate.routes.slice(2), - ], - }, -}; - const wpMockProps = { section: { entityType: OverlayModalTypes.INITIATIVE, @@ -419,6 +333,15 @@ describe("", () => { ).toBeInTheDocument(); }); + test("should render correct initiative topic", () => { + mockedUseStore.mockReturnValue({ + ...mockReportStore, + report: mockWPReportWithOtherTypeOverlays, + }); + render(testComponent(wpMockProps)); + expect(screen.getByText("Unique initiative type")).toBeInTheDocument(); + }); + test("should render for SAR", () => { mockedUseStore.mockReturnValue({ ...mockReportStore, diff --git a/services/ui-src/src/components/export/ExportedModalOverlayReportSection.tsx b/services/ui-src/src/components/export/ExportedModalOverlayReportSection.tsx index d9f70a9ce..09e071fb7 100644 --- a/services/ui-src/src/components/export/ExportedModalOverlayReportSection.tsx +++ b/services/ui-src/src/components/export/ExportedModalOverlayReportSection.tsx @@ -164,7 +164,8 @@ export function renderModalOverlayTableBody( {`${idx + 1}. ${entity.initiative_name}` ?? "Not entered"} - {entity.initiative_wpTopic[0].value} + {entity.initiative_wp_otherTopic ?? + entity.initiative_wpTopic[0].value} diff --git a/services/ui-src/src/components/export/ExportedReportBanner.tsx b/services/ui-src/src/components/export/ExportedReportBanner.tsx index 9b8e89a81..10c1c88f6 100644 --- a/services/ui-src/src/components/export/ExportedReportBanner.tsx +++ b/services/ui-src/src/components/export/ExportedReportBanner.tsx @@ -23,6 +23,8 @@ export const ExportedReportBanner = () => { const verbiage = verbiageMap[reportType]; const { reportBanner } = verbiage; + + // LaunchDarkly const printExperience = useFlags()?.printExperience; const onClickHandler = () => { diff --git a/services/ui-src/src/components/logins/LoginCognito.test.tsx b/services/ui-src/src/components/logins/LoginCognito.test.tsx index 64db62c61..b1f9c3b2c 100644 --- a/services/ui-src/src/components/logins/LoginCognito.test.tsx +++ b/services/ui-src/src/components/logins/LoginCognito.test.tsx @@ -1,11 +1,23 @@ import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; -// utils -import { RouterWrappedComponent } from "utils/testing/setupJest"; -import { Auth } from "aws-amplify"; //components import { LoginCognito } from "components"; import { testA11y } from "utils/testing/commonTests"; +// utils +import { RouterWrappedComponent } from "utils/testing/setupJest"; + +const mockLoginUser = jest.fn(); + +jest.mock("utils", () => ({ + loginUser: (username: string, password: string) => + mockLoginUser(username, password), +})); + +const mockUseNavigate = jest.fn(); + +jest.mock("react-router-dom", () => ({ + useNavigate: () => mockUseNavigate, +})); const loginCognitoComponent = ( @@ -13,38 +25,17 @@ const loginCognitoComponent = ( ); -jest.mock("aws-amplify", () => ({ - Auth: { - signIn: jest.fn(), - }, -})); - describe("", () => { - describe("Renders", () => { - beforeEach(() => { - render(loginCognitoComponent); - }); - - test("LoginCognito email field is visible", () => { - expect(screen.getByText("Email")).toBeVisible(); - }); - - test("LoginCognito password field is visible", () => { - expect(screen.getByText("Password")).toBeVisible(); - }); - - test("LoginCognito login button is visible", () => { - expect(screen.getByRole("button")).toBeVisible(); - }); - - test("LoginCognito calls Auth.signIn", async () => { - const loginButton = screen.getByText("Log In with Cognito", { - selector: "button", - }); - await userEvent.click(loginButton); - - expect(Auth.signIn).toHaveBeenCalled(); - }); + test("LoginCognito login calls amplify auth login", async () => { + render(loginCognitoComponent); + const emailInput = screen.getByLabelText("Email"); + const passwordInput = screen.getByLabelText("Password"); + const submitButton = screen.getByRole("button"); + await userEvent.type(emailInput, "email@address.com"); + await userEvent.type(passwordInput, "test"); + await userEvent.click(submitButton); + expect(mockLoginUser).toHaveBeenCalledWith("email@address.com", "test"); + expect(mockUseNavigate).toHaveBeenCalledWith("/"); }); testA11y(loginCognitoComponent); diff --git a/services/ui-src/src/components/logins/LoginCognito.tsx b/services/ui-src/src/components/logins/LoginCognito.tsx index 6ae25ed28..26bb441a8 100644 --- a/services/ui-src/src/components/logins/LoginCognito.tsx +++ b/services/ui-src/src/components/logins/LoginCognito.tsx @@ -1,10 +1,10 @@ import { useState } from "react"; import { useNavigate } from "react-router-dom"; -import { Auth } from "aws-amplify"; // components import { Box, Button, Heading, Input, Stack, Text } from "@chakra-ui/react"; import { ErrorAlert } from "components"; import { ErrorVerbiage } from "types"; +import { loginUser } from "utils"; const useFormFields = (initialState: any) => { const [fields, setValues] = useState(initialState); @@ -32,8 +32,8 @@ export const LoginCognito = () => { const handleLogin = async (event: any) => { event.preventDefault(); try { - await Auth.signIn(fields.email, fields.password); - navigate(`/`); + await loginUser(fields.email, fields.password); + navigate("/"); } catch (error: any) { let errorMessage: ErrorVerbiage = { title: "Unable to login", diff --git a/services/ui-src/src/components/modals/CreateWorkPlanModal.tsx b/services/ui-src/src/components/modals/CreateWorkPlanModal.tsx index c1cdf0513..3f3abad5f 100644 --- a/services/ui-src/src/components/modals/CreateWorkPlanModal.tsx +++ b/services/ui-src/src/components/modals/CreateWorkPlanModal.tsx @@ -58,7 +58,7 @@ export const CreateWorkPlanModal = ({ const [showAlert, setShowAlert] = useState(false); const [submitting, setSubmitting] = useState(false); - // temporary flag for testing copyover + // LaunchDarkly - temporary flag for testing copyover const isCopyOverTest = useFlags()?.isCopyOverTest; const form: FormJson = !previousReport diff --git a/services/ui-src/src/components/overlays/EntityDetailsDashboardOverlay.tsx b/services/ui-src/src/components/overlays/EntityDetailsDashboardOverlay.tsx index a4cb6669b..9fe2673d1 100644 --- a/services/ui-src/src/components/overlays/EntityDetailsDashboardOverlay.tsx +++ b/services/ui-src/src/components/overlays/EntityDetailsDashboardOverlay.tsx @@ -45,7 +45,7 @@ export const EntityDetailsDashboardOverlay = ({ }; const tableHeaders = () => { - return { headRow: ["", "", ""] }; + return { headRow: ["", ""] }; }; const reportPageTitle = selectedEntity?.isInitiativeClosed @@ -106,7 +106,7 @@ export const EntityDetailsDashboardOverlay = ({ text={dashboard?.verbiage?.intro} initiativeName={reportPageTitle} /> - +
{entitySteps?.map((step, index) => ( { diff --git a/services/ui-src/src/components/pages/Export/ExportedReportPage.test.tsx b/services/ui-src/src/components/pages/Export/ExportedReportPage.test.tsx index 13099f273..ef43d8cf7 100644 --- a/services/ui-src/src/components/pages/Export/ExportedReportPage.test.tsx +++ b/services/ui-src/src/components/pages/Export/ExportedReportPage.test.tsx @@ -13,6 +13,7 @@ import { import { mockEmptyReportStore, mockForm, + mockLDFlags, mockReportJson, mockReportPeriod, mockReportStore, @@ -39,6 +40,8 @@ const mockedUseStore = useStore as jest.MockedFunction; const mockReport = mockUseStore.report; +mockLDFlags.setDefault({ translateReport: false }); + const createRoutes = (routes: string[], withChildren: boolean) => routes.map((name, index) => ({ name, @@ -51,6 +54,7 @@ const createRoutes = (routes: string[], withChildren: boolean) => info: `${name} - Info`, section: name, subsection: name, + subsectionTitle: `${name} - Translate`, }, dashboardSubtitle: `${name} - Dashboard Subtitle`, }, @@ -64,6 +68,7 @@ const createRoutes = (routes: string[], withChildren: boolean) => intro: { section: "", subsection: `${name} - Child Subsection Intro`, + subsectionTitle: `${name} - Child Subsection Intro Translate`, }, }, }, @@ -117,7 +122,11 @@ describe("", () => { level: 2, name: WP_SAR_STATE_TERRITORY_INITIATIVES, }); - const childHeading = page.getByRole("heading", { + const childHeading1 = page.getByRole("heading", { + level: 3, + name: `${WP_SAR_GENERAL_INFORMATION} - Child Subsection Intro`, + }); + const childHeading2 = page.getByRole("heading", { level: 3, name: `${WP_SAR_STATE_TERRITORY_INITIATIVES} - Child Subsection Intro`, }); @@ -126,10 +135,30 @@ describe("", () => { `${mockStateName} MFP Work Plan for ${mockReportYear} - Period ${mockReportPeriod}` ); expect(sectionHeading).not.toBeInTheDocument(); + expect(childHeading1).toBeVisible(); + expect(childHeading2).toBeVisible(); + }); + + test("loads WP with children with translate()", async () => { + mockLDFlags.set({ translateReport: true }); + + mockWpReportContext.report.formTemplate.routes = createRoutes( + wpRoutes, + true + ); + + const page = render(exportedReportPage(mockReportJson)); + const childHeading = page.getByRole("heading", { + level: 3, + name: `${WP_SAR_GENERAL_INFORMATION} - Child Subsection Intro Translate`, + }); + expect(childHeading).toBeVisible(); }); test("loads WP initiatives with correct heading level", async () => { + mockLDFlags.set({ translateReport: false }); + const initiativeRoute = { name: "WP", path: "/mock/mock-route", @@ -251,7 +280,19 @@ describe("", () => { const reportType = ReportType.WP; const reportPage = { heading: "MFP Work Plan for" }; const report: ReportShape = mockReport!; - const result = reportTitle(reportType, reportPage, report); + const result = reportTitle(reportType, report, reportPage); + + expect(result).toBe( + `${mockStateName} MFP Work Plan for ${mockReportYear} - Period ${mockReportPeriod}` + ); + }); + + test("generates the correct title for WP report type using translate()", () => { + mockLDFlags.set({ translateReport: true }); + + const reportType = ReportType.WP; + const report: ReportShape = mockReport!; + const result = reportTitle(reportType, report); expect(result).toBe( `${mockStateName} MFP Work Plan for ${mockReportYear} - Period ${mockReportPeriod}` @@ -259,10 +300,24 @@ describe("", () => { }); test("generates the correct title for SAR report type", () => { + mockLDFlags.set({ translateReport: false }); + const reportType = ReportType.SAR; const reportPage = { heading: "Semi-Annual Progress Report (SAR) for" }; const report: ReportShape = mockReport!; - const result = reportTitle(reportType, reportPage, report); + const result = reportTitle(reportType, report, reportPage); + + expect(result).toBe( + `${mockStateName} Semi-Annual Progress Report (SAR) for ${mockReportYear} - Period ${mockReportPeriod}` + ); + }); + + test("generates the correct title for SAR report type using translate()", () => { + mockLDFlags.set({ translateReport: true }); + + const reportType = ReportType.SAR; + const report: ReportShape = mockReport!; + const result = reportTitle(reportType, report); expect(result).toBe( `${mockStateName} Semi-Annual Progress Report (SAR) for ${mockReportYear} - Period ${mockReportPeriod}` @@ -273,7 +328,7 @@ describe("", () => { const reportType: any = "unknown report type"; const report: ReportShape = mockReport!; - expect(() => reportTitle(reportType, undefined, report)).toThrowError( + expect(() => reportTitle(reportType, report, undefined)).toThrowError( `The title for report type ${reportType} has not been implemented.` ); }); @@ -281,9 +336,23 @@ describe("", () => { describe("formatSectionHeader()", () => { test("generates the correct header", () => { + mockLDFlags.set({ translateReport: false }); + const header = "Test reporting period"; const report: ReportShape = mockReport!; - const result = formatSectionHeader(report, header); + const result = formatSectionHeader(report, header, false); + + expect(result).toBe( + `Test January 1 to June 30, ${mockReportYear} reporting period` + ); + }); + + test("generates the correct header with translate()", () => { + mockLDFlags.set({ translateReport: true }); + + const header = "Test {{reportingPeriod}}"; + const report: ReportShape = mockReport!; + const result = formatSectionHeader(report, header, true); expect(result).toBe( `Test January 1 to June 30, ${mockReportYear} reporting period` diff --git a/services/ui-src/src/components/pages/Export/ExportedReportPage.tsx b/services/ui-src/src/components/pages/Export/ExportedReportPage.tsx index 84470fa57..ce18c4311 100644 --- a/services/ui-src/src/components/pages/Export/ExportedReportPage.tsx +++ b/services/ui-src/src/components/pages/Export/ExportedReportPage.tsx @@ -22,6 +22,8 @@ import { // verbiage import wpVerbiage from "verbiage/pages/wp/wp-export"; import sarVerbiage from "verbiage/pages/sar/sar-export"; +import { useFlags } from "launchdarkly-react-client-sdk"; +import { translate } from "utils/text/translate"; export const SAR_RET = "Recruitment, Enrollment, and Transitions"; export const WP_SAR_STATE_TERRITORY_INITIATIVES = @@ -52,14 +54,14 @@ export const ExportedReportPage = () => { {/* pdf metadata */} - {reportTitle(reportType, reportPage, report)} + {reportTitle(reportType, report, reportPage)} {/* report heading */} - {reportTitle(reportType, reportPage, report)} + {reportTitle(reportType, report, reportPage)} {/* report metadata tables */} { export const reportTitle = ( reportType: ReportType, - reportPage: any, - report: ReportShape + report: ReportShape, + reportPage?: any ): string => { + // LaunchDarkly + const translateReport = useFlags()?.translateReport; + + const { fieldData, reportYear, reportPeriod } = report; + const { stateName } = fieldData; switch (reportType) { - case ReportType.WP: - case ReportType.SAR: - return `${report.fieldData.stateName} ${reportPage.heading} ${report.reportYear} - Period ${report.reportPeriod}`; + case ReportType.WP: { + if (translateReport) { + return translate(wpVerbiage.reportPage.reportTitle, { + stateName, + reportYear, + reportPeriod, + }); + } + + return `${stateName} ${reportPage.heading} ${reportYear} - Period ${reportPeriod}`; + } + case ReportType.SAR: { + if (translateReport) { + return translate(sarVerbiage.reportPage.reportTitle, { + stateName, + reportYear, + reportPeriod, + }); + } + + return `${stateName} ${reportPage.heading} ${reportYear} - Period ${reportPeriod}`; + } default: assertExhaustive(reportType); throw new Error( @@ -95,12 +121,21 @@ export const reportTitle = ( } }; -export const formatSectionHeader = (report: ReportShape, header: string) => { +export const formatSectionHeader = ( + report: ReportShape, + header: string, + translateReport: boolean +) => { const newPeriod = `${displayLongformPeriod( report.reportPeriod, report.reportYear )}`; - const newHeader = header.replace(" reporting period", newPeriod); + + if (translateReport) { + return translate(header, { reportingPeriod: newPeriod }); + } + + const newHeader = header.replace("reporting period", newPeriod); return newHeader; }; @@ -123,13 +158,25 @@ export const renderReportSections = ( reportRoutes: ReportRoute[], report: ReportShape ) => { + // LaunchDarkly + let translateReport = useFlags()?.translateReport; + const { reportType } = report; // recursively render sections const renderSection = (section: ReportRoute, headingLevel: HeadingLevel) => { //because R,E & T section needs numbers added, switch from shallow copy to deep copy const childSections = structuredClone(section.children) || []; - const heading = section.verbiage?.intro.subsection - ? formatSectionHeader(report, section.verbiage.intro.subsection) + let subsection; + + if (translateReport && section.verbiage?.intro.subsectionTitle) { + subsection = section.verbiage.intro.subsectionTitle; + } else { + subsection = section.verbiage?.intro.subsection; + translateReport = false; + } + + const heading = subsection + ? formatSectionHeader(report, subsection, translateReport) : section.name; const sectionHeading = section.verbiage?.intro.exportSectionHeader || heading; diff --git a/services/ui-src/src/components/pages/Home/HomePage.test.tsx b/services/ui-src/src/components/pages/Home/HomePage.test.tsx index 998813825..ba9394ab2 100644 --- a/services/ui-src/src/components/pages/Home/HomePage.test.tsx +++ b/services/ui-src/src/components/pages/Home/HomePage.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from "@testing-library/react"; // components import { HomePage } from "components"; // utils -import { mockLDFlags, RouterWrappedComponent } from "utils/testing/setupJest"; +import { RouterWrappedComponent } from "utils/testing/setupJest"; import { testA11y } from "utils/testing/commonTests"; const homeView = ( @@ -11,8 +11,6 @@ const homeView = ( ); -mockLDFlags.setDefault({ wpReport: true, sarReport: true }); - describe("", () => { test("Check that HomePage renders", () => { render(homeView); diff --git a/services/ui-src/src/components/pages/ReviewSubmit/AdminReview.test.tsx b/services/ui-src/src/components/pages/ReviewSubmit/AdminReview.test.tsx index 547b46d96..189b82fc9 100644 --- a/services/ui-src/src/components/pages/ReviewSubmit/AdminReview.test.tsx +++ b/services/ui-src/src/components/pages/ReviewSubmit/AdminReview.test.tsx @@ -4,7 +4,6 @@ import { ReportContext } from "components"; // utils import { mockAdminUserStore, - mockLDFlags, mockReportMethods, mockUseStore, RouterWrappedComponent, @@ -19,8 +18,6 @@ import { ReportStatus } from "types"; jest.mock("utils/state/useStore"); const mockedUseStore = useStore as jest.MockedFunction; -mockLDFlags.setDefault({ pdfExport: false }); - const ReviewSubmitPage = (verbiage: any) => { return ( diff --git a/services/ui-src/src/components/pages/ReviewSubmit/ReviewSubmitPage.test.tsx b/services/ui-src/src/components/pages/ReviewSubmit/ReviewSubmitPage.test.tsx index 00a2549ab..c867e4dfd 100644 --- a/services/ui-src/src/components/pages/ReviewSubmit/ReviewSubmitPage.test.tsx +++ b/services/ui-src/src/components/pages/ReviewSubmit/ReviewSubmitPage.test.tsx @@ -7,7 +7,6 @@ import { ReportStatus } from "types"; // utils import { mockAdminUserStore, - mockLDFlags, mockReportMethods, mockUseStore, RouterWrappedComponent, @@ -21,8 +20,6 @@ import { testA11y } from "utils/testing/commonTests"; jest.mock("utils/state/useStore"); const mockedUseStore = useStore as jest.MockedFunction; -mockLDFlags.setDefault({ pdfExport: false }); - const WpReviewSubmitPage = ( diff --git a/services/ui-src/src/components/reports/DynamicModalOverlayReportPage.tsx b/services/ui-src/src/components/reports/DynamicModalOverlayReportPage.tsx index c49165cf1..35ca0acc5 100644 --- a/services/ui-src/src/components/reports/DynamicModalOverlayReportPage.tsx +++ b/services/ui-src/src/components/reports/DynamicModalOverlayReportPage.tsx @@ -68,7 +68,7 @@ export const DynamicModalOverlayReportPage = ({ ); const tableHeaders = () => { if (isTablet || isMobile) return { headRow: ["", ""] }; - return { headRow: ["", verbiage.tableHeader, ""] }; + return { headRow: ["", verbiage.tableHeader] }; }; // Open/Close overlay action methods @@ -194,9 +194,6 @@ const sx = { paddingRight: "0", borderBottom: "1px solid", borderColor: "palette.gray_light", - ".tablet &, .mobile &": { - border: "none", - }, "&:nth-of-type(1)": { width: "2.5rem", }, @@ -204,5 +201,16 @@ const sx = { width: "260px", }, }, + /** + * removes bottom border only for + * State or Territory-Specific Initiatives + */ + tr: { + "&:last-of-type": { + td: { + border: "none", + }, + }, + }, }, }; diff --git a/services/ui-src/src/components/reports/ModalDrawerReportPage.tsx b/services/ui-src/src/components/reports/ModalDrawerReportPage.tsx index b32ef146b..b34818a13 100644 --- a/services/ui-src/src/components/reports/ModalDrawerReportPage.tsx +++ b/services/ui-src/src/components/reports/ModalDrawerReportPage.tsx @@ -184,7 +184,7 @@ export const ModalDrawerReportPage = ({ route, validateOnRender }: Props) => { }; const tableHeaders = { - headRow: ["", "", "", ""], + headRow: ["", ""], }; const defaultsPopsNotSelected = (targetPopulations: AnyObject[]) => { @@ -326,10 +326,7 @@ const sx = { paddingLeft: "1rem", paddingRight: "0", borderBottom: "1px solid", - borderColor: "palette.gray_lighter", - ".tablet &, .mobile &": { - border: "none", - }, + borderColor: "palette.gray_light", "&:nth-of-type(1)": { width: "2.5rem", }, diff --git a/services/ui-src/src/components/reports/ModalOverlayReportPage.tsx b/services/ui-src/src/components/reports/ModalOverlayReportPage.tsx index 46eb77604..ab5fcbac0 100644 --- a/services/ui-src/src/components/reports/ModalOverlayReportPage.tsx +++ b/services/ui-src/src/components/reports/ModalOverlayReportPage.tsx @@ -61,7 +61,7 @@ export const ModalOverlayReportPage = ({ route, setSidebarHidden }: Props) => { const dashSubTitle = (verbiage as AnyObject)?.dashboardSubtitle; const tableHeaders = () => { if (isTablet || isMobile) return { headRow: ["", ""] }; - return { headRow: ["", verbiage.tableHeader, ""] }; + return { headRow: ["", verbiage.tableHeader] }; }; // Add/edit entity modal disclosure and methods @@ -257,6 +257,10 @@ const sx = { width: "260px", }, }, + tr: { + borderBottom: "1px solid", + borderColor: "palette.gray_light", + }, }, addEntityButton: { marginTop: "2rem", diff --git a/services/ui-src/src/components/reports/ReportProvider.tsx b/services/ui-src/src/components/reports/ReportProvider.tsx index df44497f9..ce7f221f5 100644 --- a/services/ui-src/src/components/reports/ReportProvider.tsx +++ b/services/ui-src/src/components/reports/ReportProvider.tsx @@ -93,6 +93,7 @@ export const ReportProvider = ({ children }: Props) => { return result; } catch { setError(reportErrors.GET_REPORT_FAILED); + return; } }; @@ -153,7 +154,12 @@ export const ReportProvider = ({ children }: Props) => { report: ReportShape ) => { try { - const result = await postReport(reportType, state, report); + // TODO: Remove casting + const result = (await postReport( + reportType, + state, + report + )) as ReportShape; hydrateAndSetReport(result); setLastSavedTime(getLocalHourMinuteTime()); setWorkPlanToCopyFrom(undefined); @@ -165,7 +171,8 @@ export const ReportProvider = ({ children }: Props) => { const updateReport = async (reportKeys: ReportKeys, report: ReportShape) => { try { - const result = await putReport(reportKeys, report); + // TODO: Remove casting + const result = (await putReport(reportKeys, report)) as ReportShape; hydrateAndSetReport(result); setLastSavedTime(getLocalHourMinuteTime()); setError(undefined); diff --git a/services/ui-src/src/components/statusing/TableRow.test.tsx b/services/ui-src/src/components/statusing/TableRow.test.tsx index 3cff75591..a03b0d83c 100644 --- a/services/ui-src/src/components/statusing/TableRow.test.tsx +++ b/services/ui-src/src/components/statusing/TableRow.test.tsx @@ -1,4 +1,4 @@ -import { render, screen } from "@testing-library/react"; +import { fireEvent, render, screen } from "@testing-library/react"; //components import { Table, Tbody } from "@chakra-ui/react"; import { TableRow } from "./TableRow"; @@ -18,7 +18,7 @@ const mockedUseStore = useStore as jest.MockedFunction; jest.mock("utils/other/useBreakpoint", () => ({ useBreakpoint: jest.fn(() => ({ - isDesktop: false, + isMobile: false, })), })); @@ -45,6 +45,28 @@ describe("", () => { render(tableRowComponent({ page: mockTableRowPage, rowDepth: 1 })); expect(screen.getByText("Transition Benchmarks")).toBeVisible(); expect(screen.getByAltText("Success notification")).toBeVisible(); + expect( + screen.getByRole("button", { name: "Edit Transition Benchmarks" }) + ).toBeVisible(); + }); + + test("TableRow renders correctly across breakpoints", () => { + mockedUseStore.mockReturnValue(mockUseStore); + render(tableRowComponent({ page: mockTableRowPage, rowDepth: 1 })); + expect(screen.getByText("Transition Benchmarks")).toBeVisible(); + expect(screen.getByAltText("Success notification")).toBeVisible(); + expect( + screen.getByRole("button", { name: "Edit Transition Benchmarks" }) + ).toBeVisible(); + + window.innerWidth = 500; + fireEvent(window, new Event("resize")); + + expect(screen.getByText("Transition Benchmarks")).toBeVisible(); + expect(screen.getByAltText("Success notification")).toBeVisible(); + expect( + screen.getByRole("button", { name: "Edit Transition Benchmarks" }) + ).toBeVisible(); }); testA11y(tableRowComponent({ page: mockTableRowPage, rowDepth: 1 })); diff --git a/services/ui-src/src/components/statusing/TableRow.tsx b/services/ui-src/src/components/statusing/TableRow.tsx index 9bab05276..6a6d671cc 100644 --- a/services/ui-src/src/components/statusing/TableRow.tsx +++ b/services/ui-src/src/components/statusing/TableRow.tsx @@ -6,16 +6,12 @@ import { StatusIcon } from "./StatusIcon"; export const TableRow = ({ page, rowDepth }: RowProps) => { const { isMobile } = useBreakpoint(); - const { name, path, children, status } = page; const { editable } = useStore(); + const { name, path, children, status } = page; const buttonAriaLabel = editable ? `Edit ${name}` : `View ${name}`; - const isMobileAndNotChildEditButton = - isMobile && !children && EditButton({ buttonAriaLabel, path, editable }); - - const notChildEditButton = - !children && - EditButton({ buttonAriaLabel, path, editable, showIcon: true }); + const displayMobileEditButton = isMobile && !children?.length; + const displayDefaultEditButton = !isMobile && !children?.length; let parentPl = "1rem"; let subparentPl = `${1.25 * rowDepth}rem`; @@ -31,24 +27,35 @@ export const TableRow = ({ page, rowDepth }: RowProps) => { return ( - {rowDepth == 1 ? ( - - ) : ( - - )} + - {!isMobile && } + {displayDefaultEditButton && ( + + )} ); }; diff --git a/services/ui-src/src/components/tables/EntityRow.tsx b/services/ui-src/src/components/tables/EntityRow.tsx index 888e30817..1ec2d2944 100644 --- a/services/ui-src/src/components/tables/EntityRow.tsx +++ b/services/ui-src/src/components/tables/EntityRow.tsx @@ -130,7 +130,7 @@ export const EntityRow = ({ > -
- {name} - {isMobileAndNotChildEditButton} - - {name} - {isMobileAndNotChildEditButton} - + {name} + {displayMobileEditButton && ( + + )} + {notChildEditButton} + +
+ { diff --git a/services/ui-src/src/styles/components/button.ts b/services/ui-src/src/styles/components/button.ts index 68af534df..b0bf07ee5 100644 --- a/services/ui-src/src/styles/components/button.ts +++ b/services/ui-src/src/styles/components/button.ts @@ -10,6 +10,7 @@ const baseStyles = { "&:disabled, &:disabled:hover": { color: "palette.gray", backgroundColor: "palette.gray_lighter", + opacity: "1", }, }; @@ -64,7 +65,7 @@ const transparentVariant = { color: "palette.primary", }, "&:disabled, &:disabled:hover": { - color: "palette.gray_lighter", + color: "palette.gray_light", backgroundColor: "transparent", }, }; diff --git a/services/ui-src/src/styles/components/link.ts b/services/ui-src/src/styles/components/link.ts index 576f8d65e..e60329eda 100644 --- a/services/ui-src/src/styles/components/link.ts +++ b/services/ui-src/src/styles/components/link.ts @@ -33,6 +33,7 @@ const unstyledVariant = { textDecoration: "none", ":focus, :focus-visible, :hover, :visited, :visited:hover": { textDecoration: "none", + color: "palette.base", }, }; diff --git a/services/ui-src/src/styles/index.scss b/services/ui-src/src/styles/index.scss index 1e16f43fe..276b2b6cf 100644 --- a/services/ui-src/src/styles/index.scss +++ b/services/ui-src/src/styles/index.scss @@ -1,6 +1,6 @@ // necessary to render the UsaBanner correctly $image-path: "~@cmsgov/design-system/dist/images"; -@import "@cmsgov/design-system/dist/css/index"; +@use "@cmsgov/design-system/dist/css/index"; @mixin tabbed-focus { box-shadow: 0 0 0 3px #fff, @@ -36,13 +36,13 @@ li::marker { a { color: var(--chakra-colors-palette-white); + transition: all 0.3s ease !important; &:hover { color: var(--chakra-colors-palette-gray_light); } &:visited { color: inherit; } - transition: all 0.3s ease !important; } // USA BANNER STYLES diff --git a/services/ui-src/src/types/reports.ts b/services/ui-src/src/types/reports.ts index b9e5d2c16..a3fed43c3 100644 --- a/services/ui-src/src/types/reports.ts +++ b/services/ui-src/src/types/reports.ts @@ -17,6 +17,7 @@ export interface ReportPageVerbiage { intro: { section: string; subsection?: string; + subsectionTitle?: string; hint?: string; info?: string | CustomHtmlElement[]; title?: string; diff --git a/services/ui-src/src/types/users.ts b/services/ui-src/src/types/users.ts index 6067ee591..a55a0be46 100644 --- a/services/ui-src/src/types/users.ts +++ b/services/ui-src/src/types/users.ts @@ -24,7 +24,7 @@ export interface UserContextShape { user?: MFPUser; getExpiration: Function; logout: () => Promise; - loginWithIDM: () => void; + loginWithIDM: () => Promise; showLocalLogins?: boolean; updateTimeout: () => void; } diff --git a/services/ui-src/src/utils/api/apiLib.test.ts b/services/ui-src/src/utils/api/apiLib.test.ts new file mode 100644 index 000000000..0420b1e88 --- /dev/null +++ b/services/ui-src/src/utils/api/apiLib.test.ts @@ -0,0 +1,163 @@ +import { + authenticateWithIDM, + del, + get, + getRequestHeaders, + getTokens, + loginUser, + logoutUser, + post, + put, + refreshSession, +} from "utils"; + +const mockResponse = (method?: string) => ({ + response: { body: { json: () => ({ test: method }) } }, +}); +const mockDelete = jest.fn().mockImplementation(() => ({ response: {} })); +const mockGet = jest.fn().mockImplementation(() => mockResponse("get")); +const mockPost = jest.fn().mockImplementation(() => mockResponse("post")); +const mockPut = jest.fn().mockImplementation(() => mockResponse("put")); +const mockSession = jest.fn(); +const mockSignInWithRedirect = jest.fn(); +const mockSignIn = jest.fn(); +const mockSignOut = jest.fn(); +const mockTimeout = jest.fn(); + +jest.mock("aws-amplify/api", () => ({ + del: () => mockDelete(), + get: () => mockGet(), + post: () => mockPost(), + put: () => mockPut(), +})); + +jest.mock("aws-amplify/auth", () => ({ + fetchAuthSession: () => mockSession(), + signIn: () => mockSignIn(), + signOut: () => mockSignOut(), + signInWithRedirect: () => mockSignInWithRedirect(), +})); + +jest.mock("utils/auth/authLifecycle", () => ({ + updateTimeout: () => mockTimeout(), +})); + +describe("utils/api/apiLib", () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe("getRequestHeaders()", () => { + test("Logs error to console if Auth throws error", async () => { + jest.spyOn(console, "log").mockImplementation(jest.fn()); + const spy = jest.spyOn(console, "log"); + + mockSession.mockImplementation(() => { + throw new Error(); + }); + + await getRequestHeaders(); + + expect(spy).toHaveBeenCalledTimes(1); + }); + + test("Returns token if current idToken exists", async () => { + mockSession.mockResolvedValue({ + tokens: { + idToken: { + toString: () => "stringToken", + }, + }, + }); + + const result = await getRequestHeaders(); + + expect(result).toStrictEqual({ "x-api-key": "stringToken" }); + }); + }); + + test("getTokens()", async () => { + await getTokens(); + expect(mockSession).toHaveBeenCalledTimes(1); + }); + + test("authenticateWithIDM()", async () => { + await authenticateWithIDM(); + expect(mockSignInWithRedirect).toHaveBeenCalledTimes(1); + }); + + test("loginUser()", async () => { + await loginUser("email@address.com", "test"); + expect(mockSignIn).toHaveBeenCalledTimes(1); + }); + + test("logoutUser()", async () => { + await logoutUser(); + expect(mockSignOut).toHaveBeenCalledTimes(1); + }); + + test("refreshSession()", async () => { + await refreshSession(); + expect(mockSession).toHaveBeenCalledTimes(1); + }); + + test("del()", async () => { + const test = async () => await del("/del"); + await expect(test()).resolves.toBeUndefined(); + expect(mockDelete).toHaveBeenCalledTimes(1); + expect(mockTimeout).toHaveBeenCalledTimes(1); + }); + + test("get()", async () => { + const test = async () => await get("/get"); + await expect(test()).resolves.toEqual({ test: "get" }); + expect(mockGet).toHaveBeenCalledTimes(1); + expect(mockTimeout).toHaveBeenCalledTimes(1); + }); + + test("post()", async () => { + const test = async () => await post("/post"); + await expect(test()).resolves.toEqual({ test: "post" }); + expect(mockPost).toHaveBeenCalledTimes(1); + expect(mockTimeout).toHaveBeenCalledTimes(1); + }); + + test("put()", async () => { + const test = async () => await put("/put"); + await expect(test()).resolves.toEqual({ test: "put" }); + expect(mockPut).toHaveBeenCalledTimes(1); + expect(mockTimeout).toHaveBeenCalledTimes(1); + }); + + test("API error throws with response info", async () => { + jest.spyOn(console, "log").mockImplementation(jest.fn()); + const spy = jest.spyOn(console, "log"); + + mockGet.mockImplementationOnce(() => { + throw { + response: { + body: "Error Info", + }, + }; + }); + + await expect(get("/get")).rejects.toThrow( + "Request Failed - /get - Error Info" + ); + expect(spy).toHaveBeenCalledTimes(2); + }); + + test("API error throws without response info", async () => { + jest.spyOn(console, "log").mockImplementation(jest.fn()); + const spy = jest.spyOn(console, "log"); + + mockPost.mockImplementationOnce(() => { + throw "String Error"; + }); + + await expect(post("/post")).rejects.toThrow( + "Request Failed - /post - undefined" + ); + expect(spy).toHaveBeenCalledTimes(2); + }); +}); diff --git a/services/ui-src/src/utils/api/apiLib.ts b/services/ui-src/src/utils/api/apiLib.ts new file mode 100644 index 000000000..23505ebf7 --- /dev/null +++ b/services/ui-src/src/utils/api/apiLib.ts @@ -0,0 +1,116 @@ +/* eslint-disable no-console */ + +import { + del as ampDel, + get as ampGet, + post as ampPost, + put as ampPut, +} from "aws-amplify/api"; +import { + AuthTokens, + fetchAuthSession, + signIn, + signInWithRedirect, + signOut, +} from "aws-amplify/auth"; +import { updateTimeout } from "utils"; + +const apiName = "mfp"; + +interface RequestHeaders { + "x-api-key": string | undefined; +} + +export interface RequestOptions { + body: any; +} + +export async function getRequestHeaders(): Promise { + try { + const tokens = await getTokens(); + const headers = { + "x-api-key": tokens?.idToken?.toString(), + }; + + return headers; + } catch (error) { + console.log(error); + return; + } +} + +export async function getTokens(): Promise { + return (await fetchAuthSession()).tokens; +} + +export async function authenticateWithIDM(): Promise { + await signInWithRedirect({ provider: { custom: "Okta" } }); +} + +export async function loginUser( + username: string, + password: string +): Promise { + await signIn({ username, password }); +} + +export async function logoutUser(): Promise { + await signOut(); +} + +export async function refreshSession(): Promise { + await fetchAuthSession({ forceRefresh: true }); +} + +export async function apiRequest( + request: any, + path: string, + opts?: RequestOptions, + customApiName?: string, + hasResponseBody?: Boolean +): Promise { + const requestHeaders = await getRequestHeaders(); + const options = { + headers: { ...requestHeaders }, + ...opts, + }; + const name = customApiName || apiName; + + try { + await updateTimeout(); + + const { body, statusCode } = await request({ apiName: name, path, options }) + .response; + + if (hasResponseBody === false || statusCode === 204) { + return undefined as unknown as T; + } + + return (await body.json()) as unknown as T; + } catch (e: any) { + const info = `Request Failed - ${path} - ${e.response?.body}`; + console.log(e); + console.log(info); + throw new Error(info); + } +} + +export async function del(path: string, opts?: RequestOptions): Promise { + return apiRequest(ampDel, path, opts, undefined, false); +} + +export async function get(path: string, opts?: RequestOptions): Promise { + return apiRequest(ampGet, path, opts); +} + +export async function post( + path: string, + opts?: RequestOptions, + customApiName?: string +): Promise { + return apiRequest(ampPost, path, opts, customApiName); +} + +export async function put(path: string, opts?: RequestOptions): Promise { + return apiRequest(ampPut, path, opts); +} diff --git a/services/ui-src/src/utils/api/providers/ApiProvider.tsx b/services/ui-src/src/utils/api/providers/ApiProvider.tsx index 2e01a7217..d726bf6e3 100644 --- a/services/ui-src/src/utils/api/providers/ApiProvider.tsx +++ b/services/ui-src/src/utils/api/providers/ApiProvider.tsx @@ -1,6 +1,4 @@ -import { ReactNode, useEffect, useMemo, createContext } from "react"; -import { API } from "aws-amplify"; -import config from "config"; +import { ReactNode, useMemo, createContext } from "react"; export const ApiContext = createContext(null); @@ -9,27 +7,6 @@ interface Props { } export const ApiProvider = ({ children }: Props) => { - useEffect(() => { - const endpoints = [ - { - name: "mfp", - endpoint: config.apiGateway.URL, - region: config.apiGateway.REGION, - }, - ]; - if (config.DEV_API_URL) { - // Add dev endpoint for pdf printing access locally - endpoints.push({ - name: "mfpDev", - endpoint: config.DEV_API_URL, - region: "us-east-1", - }); - } - API.configure({ - endpoints: endpoints, - }); - }, []); - const values = useMemo(() => ({}), []); // @ts-ignore return {children}; diff --git a/services/ui-src/src/utils/api/requestMethods/banner.test.ts b/services/ui-src/src/utils/api/requestMethods/banner.test.ts index fe4452174..d3eeead29 100644 --- a/services/ui-src/src/utils/api/requestMethods/banner.test.ts +++ b/services/ui-src/src/utils/api/requestMethods/banner.test.ts @@ -2,30 +2,34 @@ import { getBanner, writeBanner, deleteBanner } from "./banner"; // utils import { bannerId } from "../../../constants"; import { mockBannerData } from "utils/testing/setupJest"; -import { initAuthManager } from "utils/auth/authLifecycle"; -describe("utils/banner", () => { - beforeEach(async () => { - jest.useFakeTimers(); - initAuthManager(); - jest.runAllTimers(); +const mockDelete = jest.fn(); +const mockGet = jest.fn(); +const mockPost = jest.fn(); + +jest.mock("utils", () => ({ + del: () => mockDelete(), + get: () => mockGet(), + post: () => mockPost(), +})); + +describe("utils/requestMethods/banner", () => { + beforeEach(() => { + jest.clearAllMocks(); }); - describe("getBanner()", () => { - test("executes", () => { - expect(getBanner(bannerId)).toBeTruthy(); - }); + test("getBanner()", async () => { + await getBanner(bannerId); + expect(mockGet).toHaveBeenCalledTimes(1); }); - describe("writeBanner()", () => { - test("executes", () => { - expect(writeBanner(mockBannerData)).toBeTruthy(); - }); + test("postBanner()", async () => { + await writeBanner(mockBannerData); + expect(mockPost).toHaveBeenCalledTimes(1); }); - describe("deleteBanner()", () => { - test("executes", () => { - expect(deleteBanner(bannerId)).toBeTruthy(); - }); + test("deleteBanner()", async () => { + await deleteBanner(bannerId); + expect(mockDelete).toHaveBeenCalledTimes(1); }); }); diff --git a/services/ui-src/src/utils/api/requestMethods/banner.ts b/services/ui-src/src/utils/api/requestMethods/banner.ts index 12dfbc663..b17263712 100644 --- a/services/ui-src/src/utils/api/requestMethods/banner.ts +++ b/services/ui-src/src/utils/api/requestMethods/banner.ts @@ -1,40 +1,22 @@ -import { API } from "aws-amplify"; -import { getRequestHeaders } from "./getRequestHeaders"; import { AdminBannerData } from "types/banners"; -import { updateTimeout } from "utils"; +import { del, get, post } from "utils"; async function getBanner(bannerKey: string) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; - - updateTimeout(); - const response = await API.get("mfp", `/banners/${bannerKey}`, request); - return response; + const path = `/banners/${bannerKey}`; + return get(path); } async function writeBanner(bannerData: AdminBannerData) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, + const options = { body: bannerData, }; - - updateTimeout(); - const response = await API.post("mfp", `/banners/${bannerData.key}`, request); - return response; + const path = `/banners/${bannerData.key}`; + return post(path, options); } async function deleteBanner(bannerKey: string) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; - - updateTimeout(); - const response = await API.del("mfp", `/banners/${bannerKey}`, request); - return response; + const path = `/banners/${bannerKey}`; + return del(path); } export { getBanner, writeBanner, deleteBanner }; diff --git a/services/ui-src/src/utils/api/requestMethods/getRequestHeaders.test.ts b/services/ui-src/src/utils/api/requestMethods/getRequestHeaders.test.ts deleted file mode 100644 index 27865a69a..000000000 --- a/services/ui-src/src/utils/api/requestMethods/getRequestHeaders.test.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { getRequestHeaders } from "./getRequestHeaders"; - -describe("utils/getRequestHeaders", () => { - describe("getRequestHeaders()", () => { - test("Logs error to console if Auth throws error", async () => { - jest.spyOn(console, "log").mockImplementation(jest.fn()); - const spy = jest.spyOn(console, "log"); - - const mockAmplify = require("aws-amplify"); - mockAmplify.Auth.currentSession = jest.fn().mockImplementation(() => { - throw new Error(); - }); - - await getRequestHeaders(); - - await expect(spy).toHaveBeenCalled(); - }); - }); -}); diff --git a/services/ui-src/src/utils/api/requestMethods/getRequestHeaders.ts b/services/ui-src/src/utils/api/requestMethods/getRequestHeaders.ts deleted file mode 100644 index ba8eca88c..000000000 --- a/services/ui-src/src/utils/api/requestMethods/getRequestHeaders.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Auth } from "aws-amplify"; - -export const getRequestHeaders = async (): Promise => { - try { - const session = await Auth.currentSession(); - const token = await session.getIdToken().getJwtToken(); - const headers = { - "x-api-key": token, - }; - return headers; - } catch (error) { - console.log(error); //eslint-disable-line no-console - } -}; diff --git a/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.test.ts b/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.test.ts index 0084ffe39..020391968 100644 --- a/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.test.ts +++ b/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.test.ts @@ -2,8 +2,15 @@ import { getSignedTemplateUrl } from "./getTemplateUrl"; const testTemplateName = "TestName"; -describe("utils/getTemplateUrl", () => { - test("getSignedTemplateUrl()", () => { - expect(getSignedTemplateUrl(testTemplateName)).toBeTruthy(); +const mockGet = jest.fn(); + +jest.mock("utils", () => ({ + get: () => mockGet(), +})); + +describe("utils/requestMethods/getTemplateUrl", () => { + test("getSignedTemplateUrl()", async () => { + await getSignedTemplateUrl(testTemplateName); + expect(mockGet).toHaveBeenCalledTimes(1); }); }); diff --git a/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.ts b/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.ts index 19206da8c..0db1a6ef1 100644 --- a/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.ts +++ b/services/ui-src/src/utils/api/requestMethods/getTemplateUrl.ts @@ -1,12 +1,5 @@ -import { API } from "aws-amplify"; -import { getRequestHeaders } from "./getRequestHeaders"; +import { get } from "utils"; export async function getSignedTemplateUrl(templateName: string) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; - - const response = await API.get("mfp", `/templates/${templateName}`, request); - return response; + return get(`/templates/${templateName}`); } diff --git a/services/ui-src/src/utils/api/requestMethods/report.test.ts b/services/ui-src/src/utils/api/requestMethods/report.test.ts index 3bc163175..7135b8d1a 100644 --- a/services/ui-src/src/utils/api/requestMethods/report.test.ts +++ b/services/ui-src/src/utils/api/requestMethods/report.test.ts @@ -1,28 +1,74 @@ -import { getReport, getReportsByState, postReport, putReport } from "./report"; +import { + approveReport, + archiveReport, + getReport, + getReportsByState, + postReport, + putReport, + releaseReport, + submitReport, +} from "./report"; // utils import { mockReportKeys, mockWPReport } from "utils/testing/setupJest"; import { initAuthManager } from "utils/auth/authLifecycle"; -describe("utils/report", () => { - beforeEach(async () => { +const mockDelete = jest.fn(); +const mockGet = jest.fn(); +const mockPost = jest.fn(); +const mockPut = jest.fn(); + +jest.mock("utils", () => ({ + del: () => mockDelete(), + get: () => mockGet(), + post: () => mockPost(), + put: () => mockPut(), +})); + +describe("utils/requestMethods/report", () => { + beforeEach(() => { jest.useFakeTimers(); initAuthManager(); jest.runAllTimers(); + jest.clearAllMocks(); + }); + + test("approveReport()", async () => { + await approveReport(mockReportKeys, mockWPReport); + expect(mockPut).toHaveBeenCalledTimes(1); + }); + + test("archiveReport()", async () => { + await archiveReport(mockReportKeys); + expect(mockPut).toHaveBeenCalledTimes(1); + }); + + test("getReport()", async () => { + await getReport(mockReportKeys); + expect(mockGet).toHaveBeenCalledTimes(1); + }); + + test("getReportsByState()", async () => { + await getReportsByState("WP", "NJ"); + expect(mockGet).toHaveBeenCalledTimes(1); }); - test("getReport()", () => { - expect(getReport(mockReportKeys)).toBeTruthy(); + test("postReport()", async () => { + await postReport("WP", "NJ", mockWPReport); + expect(mockPost).toHaveBeenCalledTimes(1); }); - test("getReportsByState()", () => { - expect(getReportsByState("WP", "NJ")).toBeTruthy(); + test("putReport()", async () => { + await putReport(mockReportKeys, mockWPReport); + expect(mockPut).toHaveBeenCalledTimes(1); }); - test("postReport()", () => { - expect(postReport("WP", "NJ", mockWPReport)).toBeTruthy(); + test("releaseReport()", async () => { + await releaseReport(mockReportKeys); + expect(mockPut).toHaveBeenCalledTimes(1); }); - test("putReport()", () => { - expect(putReport(mockReportKeys, mockWPReport)).toBeTruthy(); + test("submitReport()", async () => { + await submitReport(mockReportKeys); + expect(mockPost).toHaveBeenCalledTimes(1); }); }); diff --git a/services/ui-src/src/utils/api/requestMethods/report.ts b/services/ui-src/src/utils/api/requestMethods/report.ts index 58c073518..2a8d6f4b5 100644 --- a/services/ui-src/src/utils/api/requestMethods/report.ts +++ b/services/ui-src/src/utils/api/requestMethods/report.ts @@ -1,141 +1,67 @@ -import { API } from "aws-amplify"; -import { AnyObject, ReportKeys } from "types"; -import { getRequestHeaders } from "./getRequestHeaders"; -import { updateTimeout } from "utils"; +import { AnyObject, ReportShape, ReportKeys } from "types"; +import { get, post, put } from "utils"; async function archiveReport(reportKeys: ReportKeys) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; const { reportType, state, id } = reportKeys; - - updateTimeout(); - const response = await API.put( - "mfp", - `/reports/archive/${reportType}/${state}/${id}`, - request - ); - return response; + const path = `/reports/archive/${reportType}/${state}/${id}`; + return put(path); } async function getReportsByState(reportType: string, state: string) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; - updateTimeout(); - const response = await API.get( - "mfp", - `/reports/${reportType}/${state}`, - request - ); - return response; + const path = `/reports/${reportType}/${state}`; + return get(path); } async function getReport(reportKeys: ReportKeys) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; const { reportType, state, id } = reportKeys; - - updateTimeout(); - const response = await API.get( - "mfp", - `/reports/${reportType}/${state}/${id}`, - request - ); - return response; + const path = `/reports/${reportType}/${state}/${id}`; + return get(path); } /** - * @todo Swap report from AnyObject to a ReportMetaData + FieldData type + * TODO: Swap report from AnyObject to a ReportMetaData + FieldData type */ async function postReport( reportType: string, state: string, report: AnyObject ) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, + const options: any = { body: { ...report }, }; - - updateTimeout(); - const response = await API.post( - "mfp", - `/reports/${reportType}/${state}`, - request - ); - return response; + const path = `/reports/${reportType}/${state}`; + return post(path, options); } async function putReport(reportKeys: ReportKeys, report: AnyObject) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, + const options: any = { body: { ...report }, }; const { reportType, state, id } = reportKeys; + const path = `/reports/${reportType}/${state}/${id}`; - updateTimeout(); - const response = await API.put( - "mfp", - `/reports/${reportType}/${state}/${id}`, - request - ); - return response; + return put(path, options); } async function releaseReport(reportKeys: ReportKeys) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; const { reportType, state, id } = reportKeys; - - updateTimeout(); - const response = await API.put( - "mfp", - `/reports/release/${reportType}/${state}/${id}`, - request - ); - return response; + const path = `/reports/release/${reportType}/${state}/${id}`; + return put(path); } async function submitReport(reportKeys: ReportKeys) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, - }; const { reportType, state, id } = reportKeys; - - updateTimeout(); - const response = await API.post( - "mfp", - `/reports/submit/${reportType}/${state}/${id}`, - request - ); - return response; + const path = `/reports/submit/${reportType}/${state}/${id}`; + return post(path); } async function approveReport(reportKeys: ReportKeys, report: AnyObject) { - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, + const options: any = { body: { ...report }, }; const { reportType, state, id } = reportKeys; - - updateTimeout(); - const response = await API.put( - "mfp", - `/reports/approve/${reportType}/${state}/${id}`, - request - ); - return response; + const path = `/reports/approve/${reportType}/${state}/${id}`; + return put(path, options); } export { diff --git a/services/ui-src/src/utils/auth/userProvider.test.tsx b/services/ui-src/src/utils/auth/UserProvider.test.tsx similarity index 72% rename from services/ui-src/src/utils/auth/userProvider.test.tsx rename to services/ui-src/src/utils/auth/UserProvider.test.tsx index 8ea4ad87b..5d9ddd5ef 100644 --- a/services/ui-src/src/utils/auth/userProvider.test.tsx +++ b/services/ui-src/src/utils/auth/UserProvider.test.tsx @@ -4,40 +4,26 @@ import userEvent from "@testing-library/user-event"; import { act } from "react-dom/test-utils"; // utils import { UserContext, UserProvider, useStore } from "utils"; -import { - mockBannerStore, - mockStateUserStore, - RouterWrappedComponent, -} from "utils/testing/setupJest"; -// types -import { UserRoles } from "types/users"; - -const mockAuthPayload = { - email: "test@email.com", - given_name: "Test", - family_name: "IsMe", - ["custom:cms_roles"]: UserRoles.STATE_USER, - ["custom:cms_state"]: "AL", -}; +import { mockUseStore, RouterWrappedComponent } from "utils/testing/setupJest"; + +const mockAuthenticateWithIDM = jest.fn(); +const mockGetTokens = jest.fn(); +const mockLogoutUser = jest.fn(); -jest.mock("aws-amplify", () => ({ - Auth: { - currentSession: jest.fn().mockReturnValue({ - getIdToken: () => ({ - payload: mockAuthPayload, - }), - }), - configure: () => {}, - signOut: jest.fn().mockImplementation(() => {}), - federatedSignIn: () => {}, - }, - Hub: { - listen: jest.fn(), - }, +jest.mock("utils/api/apiLib", () => ({ + authenticateWithIDM: () => mockAuthenticateWithIDM(), + getTokens: () => mockGetTokens(), + logoutUser: () => mockLogoutUser(), })); jest.mock("utils/state/useStore"); + +const mockSetUser = jest.fn(); const mockedUseStore = useStore as jest.MockedFunction; +mockedUseStore.mockReturnValue({ + ...mockUseStore, + setUser: mockSetUser, +}); // COMPONENTS @@ -56,7 +42,7 @@ const TestComponent = () => { User Test

- {mockedUseStore().showLocalLogins + {context.showLocalLogins ? "showLocalLogins is true" : "showLocalLogins is false"}

@@ -73,9 +59,6 @@ const testComponent = ( ); // HELPERS - -const mockReplace = jest.fn(); - const originalLocationDescriptor: any = Object.getOwnPropertyDescriptor( global, "location" @@ -87,20 +70,12 @@ const setWindowOrigin = (windowOrigin: string) => { value: { assign: jest.fn(), origin: windowOrigin, - replace: mockReplace, pathname: "/", }, writable: true, }); }; -const breakCheckAuthState = async () => { - const mockAmplify = require("aws-amplify"); - mockAmplify.Auth.currentSession = jest.fn().mockImplementation(() => { - throw new Error(); - }); -}; - // TESTS describe("", () => { @@ -115,9 +90,6 @@ describe("", () => { describe("Test UserProvider", () => { beforeEach(async () => { await act(async () => { - mockedUseStore - .mockReturnValue(mockBannerStore) - .mockReturnValue(mockStateUserStore); render(testComponent); }); }); @@ -146,23 +118,18 @@ describe("", () => { describe("Test UserProvider with production path", () => { test("test production authenticates with idm when current authenticated user throws an error", async () => { setWindowOrigin("mdctmfp.cms.gov"); - await breakCheckAuthState(); await act(async () => { - mockedUseStore.mockReturnValue(mockStateUserStore); render(testComponent); }); expect(window.location.origin).toContain("mdctmfp.cms.gov"); expect(screen.getByTestId("testdiv")).toHaveTextContent("User Test"); - expect(mockReplace).toHaveBeenCalled(); }); }); describe("Test UserProvider with non-production path", () => { test("Non-production error state correctly sets showLocalLogins", async () => { setWindowOrigin("wherever"); - await breakCheckAuthState(); await act(async () => { - mockedUseStore.mockReturnValue(mockStateUserStore); render(testComponent); }); expect(window.location.origin).toContain("wherever"); @@ -176,22 +143,47 @@ describe("", () => { jest.spyOn(console, "log").mockImplementation(jest.fn()); const spy = jest.spyOn(console, "log"); - const mockAmplify = require("aws-amplify"); - mockAmplify.Auth.signOut = jest.fn().mockImplementation(() => { + mockLogoutUser.mockImplementation(() => { throw new Error(); }); await act(async () => { - mockedUseStore.mockReturnValue(mockStateUserStore); render(testComponent); }); - await act(async () => { const logoutButton = screen.getByTestId("logout-button"); await userEvent.click(logoutButton); }); - expect(spy).toHaveBeenCalled(); + expect(spy).toHaveBeenCalledTimes(1); + }); + }); + + test("test check auth function", async () => { + mockGetTokens.mockResolvedValue({ + idToken: { + payload: { + email: "email@address.com", + given_name: "first", + family_name: "last", + "custom:cms_roles": "roles", + "custom:cms_state": "ZZ", + }, + }, + }); + await act(async () => { + render(testComponent); + }); + expect(mockSetUser).toHaveBeenCalledWith({ + email: "email@address.com", + given_name: "first", + family_name: "last", + full_name: "first last", + userRole: undefined, + state: "ZZ", + userIsAdmin: false, + userIsReadOnly: false, + userIsEndUser: false, }); }); }); diff --git a/services/ui-src/src/utils/auth/UserProvider.tsx b/services/ui-src/src/utils/auth/UserProvider.tsx index 935fec3b2..2fc25a073 100644 --- a/services/ui-src/src/utils/auth/UserProvider.tsx +++ b/services/ui-src/src/utils/auth/UserProvider.tsx @@ -6,37 +6,27 @@ import { useMemo, } from "react"; import { useLocation } from "react-router-dom"; -import { Auth } from "aws-amplify"; import config from "config"; -import { initAuthManager, updateTimeout, getExpiration, useStore } from "utils"; +import { + authenticateWithIDM, + getExpiration, + getTokens, + initAuthManager, + logoutUser, + updateTimeout, + useStore, +} from "utils"; import { PRODUCTION_HOST_DOMAIN } from "../../constants"; import { MFPUser, UserContextShape, UserRoles } from "types/users"; export const UserContext = createContext({ logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: () => {}, getExpiration: () => {}, }); -const authenticateWithIDM = async () => { - const authConfig = Auth.configure(); - if (authConfig?.oauth) { - const oAuthOpts = authConfig.oauth; - const domain = oAuthOpts.domain; - const responseType = oAuthOpts.responseType; - const redirectSignIn = (oAuthOpts as any).redirectSignIn; - const clientId = authConfig.userPoolWebClientId; - const url = `https://${domain}/oauth2/authorize?identity_provider=Okta&redirect_uri=${redirectSignIn}&response_type=${responseType}&client_id=${clientId}`; - window.location.assign(url); - } - const cognitoHostedUrl = new URL( - `https://${config.cognito.APP_CLIENT_DOMAIN}/oauth2/authorize?identity_provider=${config.cognito.COGNITO_IDP_NAME}&redirect_uri=${config.APPLICATION_ENDPOINT}&response_type=CODE&client_id=${config.cognito.APP_CLIENT_ID}&scope=email openid profile` - ); - window.location.replace(cognitoHostedUrl); -}; - export const UserProvider = ({ children }: Props) => { const location = useLocation(); const isProduction = window.location.origin.includes(PRODUCTION_HOST_DOMAIN); @@ -50,12 +40,11 @@ export const UserProvider = ({ children }: Props) => { const logout = async () => { try { setUser(undefined); - await Auth.signOut(); + await logoutUser(); localStorage.clear(); } catch (error) { console.log(error); // eslint-disable-line no-console } - window.location.assign(config.POST_SIGNOUT_REDIRECT); }; const checkAuthState = useCallback(async () => { @@ -66,9 +55,15 @@ export const UserProvider = ({ children }: Props) => { } try { - const session = await Auth.currentSession(); - const payload = session.getIdToken().payload; - const { email, given_name, family_name } = payload; + const tokens = await getTokens(); + if (!tokens?.idToken) { + throw new Error("Missing tokens auth session."); + } + const payload = tokens.idToken.payload; + const { email, given_name, family_name } = payload as Record< + string, + string + >; // "custom:cms_roles" is an string of concat roles so we need to check for the one applicable to MFP const cms_role = payload["custom:cms_roles"] as string; const userRole = cms_role.split(",").find((r) => r.includes("mdctmfp")); @@ -93,7 +88,7 @@ export const UserProvider = ({ children }: Props) => { setUser(currentUser); } catch { if (isProduction) { - authenticateWithIDM(); + await authenticateWithIDM(); } else { setShowLocalLogins(true); } diff --git a/services/ui-src/src/utils/auth/authLifecycle.test.tsx b/services/ui-src/src/utils/auth/authLifecycle.test.tsx index 1d9359945..0f0879684 100644 --- a/services/ui-src/src/utils/auth/authLifecycle.test.tsx +++ b/services/ui-src/src/utils/auth/authLifecycle.test.tsx @@ -1,7 +1,7 @@ import { initAuthManager, updateTimeout, getExpiration } from "utils"; import { refreshCredentials } from "./authLifecycle"; import { sub } from "date-fns"; -import { Hub } from "aws-amplify"; +import { Hub } from "aws-amplify/utils"; describe("utils/auth", () => { describe("Test AuthManager Init", () => { diff --git a/services/ui-src/src/utils/auth/authLifecycle.tsx b/services/ui-src/src/utils/auth/authLifecycle.tsx index 56959725b..6a63f40bb 100644 --- a/services/ui-src/src/utils/auth/authLifecycle.tsx +++ b/services/ui-src/src/utils/auth/authLifecycle.tsx @@ -1,6 +1,7 @@ -import { Auth, Hub } from "aws-amplify"; +import { Hub } from "aws-amplify/utils"; import { add } from "date-fns"; import { IDLE_WINDOW } from "../../constants"; +import { logoutUser, refreshSession } from "utils"; let authManager: AuthManager; @@ -18,7 +19,7 @@ class AuthManager { expiration && new Date(expiration).valueOf() < Date.now().valueOf(); if (isExpired) { localStorage.removeItem("mdctmfp_session_exp"); - Auth.signOut().then(() => { + logoutUser().then(() => { window.location.href = "/"; }); } @@ -47,7 +48,7 @@ class AuthManager { * Manual refresh of credentials paired with an instant timer clear */ refreshCredentials = async () => { - await Auth.currentAuthenticatedUser({ bypassCache: true }); // Force a token refresh + await refreshSession(); // Force a token refresh this.setTimer(); }; diff --git a/services/ui-src/src/utils/index.ts b/services/ui-src/src/utils/index.ts index 0daef3033..289b01011 100644 --- a/services/ui-src/src/utils/index.ts +++ b/services/ui-src/src/utils/index.ts @@ -1,7 +1,7 @@ // api +export * from "./api/apiLib"; export * from "./api/providers/ApiProvider"; export * from "./api/requestMethods/banner"; -export * from "./api/requestMethods/getRequestHeaders"; export * from "./api/requestMethods/getTemplateUrl"; export * from "./api/requestMethods/report"; // auth diff --git a/services/ui-src/src/utils/other/print.test.ts b/services/ui-src/src/utils/other/print.test.ts index 965fe9f52..450ae4dca 100644 --- a/services/ui-src/src/utils/other/print.test.ts +++ b/services/ui-src/src/utils/other/print.test.ts @@ -1,12 +1,25 @@ -import { API } from "aws-amplify"; -import { printPdf } from "utils"; +import { printPdf, RequestOptions } from "utils"; import config from "config"; +const mockPost = jest.fn(); +jest.mock("utils/api/apiLib", () => ({ + post: (path: string, opts?: RequestOptions, apiName?: string) => + mockPost(path, opts, apiName), +})); + const testBody = "

Hello

<"; -const mockPost = jest.fn().mockResolvedValue(btoa(testBody)); -API.post = mockPost; const originalURLConfig = config.DEV_API_URL; window.open = jest.fn(); + +const path = "/print_pdf"; +const options = { + body: { + encodedHtml: + "PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjxoMT5IZWxsbzwvaDE+Jmx0OzwvYm9keT48L2h0bWw+", //pragma: allowlist secret + }, +}; +const apiName = "mfpDev"; + describe("utils/print", () => { describe("printPdf()", () => { beforeEach(() => { @@ -20,19 +33,28 @@ describe("utils/print", () => { }); test("Call to the dev api if an env flag is provided", async () => { + mockPost.mockImplementation(() => + Buffer.from(testBody).toString("base64") + ); config.DEV_API_URL = "test.com"; document.body.innerHTML = testBody; await printPdf(); - expect(mockPost.mock.calls[0][0]).toEqual("mfpDev"); + expect(mockPost).toHaveBeenCalledTimes(1); + expect(mockPost).toHaveBeenCalledWith(path, options, apiName); expect(window.open).toBeCalled(); }); test("Calls normal API env flag is not provided", async () => { + mockPost.mockImplementation(() => + Buffer.from(testBody).toString("base64") + ); + config.DEV_API_URL = null; await printPdf(); - expect(mockPost.mock.calls[0][0]).not.toEqual("mfpDev"); + expect(mockPost).toHaveBeenCalledTimes(1); + expect(mockPost).toHaveBeenCalledWith(path, options, undefined); expect(window.open).toBeCalled(); }); }); diff --git a/services/ui-src/src/utils/other/print.ts b/services/ui-src/src/utils/other/print.ts index c5fefba80..4db0a897c 100644 --- a/services/ui-src/src/utils/other/print.ts +++ b/services/ui-src/src/utils/other/print.ts @@ -1,12 +1,18 @@ -import { getRequestHeaders } from "utils"; -import { API } from "aws-amplify"; import config from "config"; +import { post } from "utils"; export const printPdf = async () => { const noscriptTag = document.querySelector("noscript"); if (noscriptTag) { noscriptTag.remove(); } + const path = "/print_pdf"; + let apiName; + + if (config.DEV_API_URL) { + apiName = "mfpDev"; + } + const htmlString = document! .querySelector("html")! .outerHTML.replaceAll( @@ -19,29 +25,18 @@ export const printPdf = async () => { .replaceAll(`“`, `"`) .replaceAll("\u2013", "-") .replaceAll("\u2014", "-"); - const base64String = btoa(unescape(encodeURIComponent(htmlString))); - const requestHeaders = await getRequestHeaders(); - const request = { - headers: { ...requestHeaders }, + + const base64String = Buffer.from(htmlString, "utf-8").toString("base64"); + const options = { body: { encodedHtml: base64String }, }; - let response; - if (config.DEV_API_URL) { - response = await API.post("mfpDev", `/print_pdf`, request); - } else { - response = await API.post("mfp", `/print_pdf`, request); - } + const response = await post(path, options, apiName); openPdf(response); }; const openPdf = (basePdf: string) => { - let byteCharacters = atob(basePdf); - let byteNumbers = new Array(byteCharacters.length); - for (let i = 0; i < byteCharacters.length; i++) { - byteNumbers[i] = byteCharacters.charCodeAt(i); - } - let byteArray = new Uint8Array(byteNumbers); - let file = new Blob([byteArray], { type: "application/pdf;base64" }); - let fileURL = URL.createObjectURL(file); + const byteArray = new Uint8Array(Buffer.from(basePdf, "base64")); + const file = new Blob([byteArray], { type: "application/pdf" }); + const fileURL = URL.createObjectURL(file); window.open(fileURL); }; diff --git a/services/ui-src/src/utils/other/time.ts b/services/ui-src/src/utils/other/time.ts index a9cbca6b0..53e584794 100644 --- a/services/ui-src/src/utils/other/time.ts +++ b/services/ui-src/src/utils/other/time.ts @@ -153,16 +153,16 @@ export const displayLongformPeriod = ( reportYear: number | undefined ) => { if (period === 1) { - return ` January 1 to June 30, ${reportYear} reporting period`; + return `January 1 to June 30, ${reportYear} reporting period`; } else { - return ` July 1 to December 31, ${reportYear} reporting period`; + return `July 1 to December 31, ${reportYear} reporting period`; } }; export const displayLongformPeriodSection9 = ( reportYear: number | undefined ) => { - return ` August 1, ${ + return `August 1, ${ reportYear ? reportYear - 1 : reportYear } to July 31, ${reportYear}`; }; diff --git a/services/ui-src/src/utils/testing/mockReport.ts b/services/ui-src/src/utils/testing/mockReport.ts index 25d7b41db..a75664bd0 100644 --- a/services/ui-src/src/utils/testing/mockReport.ts +++ b/services/ui-src/src/utils/testing/mockReport.ts @@ -1,4 +1,4 @@ -import { ReportStatus } from "types"; +import { OverlayModalTypes, ReportRoute, ReportStatus } from "types"; import { genericErrorContent } from "verbiage/errors"; import { mockStandardReportPageJson, @@ -480,3 +480,113 @@ export const mockReportContextNoReports = { ...mockWpReportContext, reportsByState: undefined, }; + +export const mockWPReportWithOverlays = { + ...mockWPFullReport, + fieldData: { + ...mockWPFullReport.fieldData, + [OverlayModalTypes.INITIATIVE]: [ + { + ...mockWPFullReport.fieldData.entityType[0], + type: OverlayModalTypes.INITIATIVE, + id: "mock wip id", // this is both our search filter and our search target in renderFieldRow + initiative_wpTopic: [ + { + value: "mock WP topic", + }, + ], + }, + ], + }, + formTemplate: { + ...mockWPFullReport.formTemplate, + routes: [ + /* + * We need the 3th route to have a child with entityType initiative, + * to avoid a null reference in getInitiativeStatus() + */ + ...mockWPFullReport.formTemplate.routes.slice(0, 3), + { + name: "mock-route-4", + path: "/mock/mock-route-4", + children: [ + { + entityType: OverlayModalTypes.INITIATIVE, + }, + ], + } as ReportRoute, + ...mockWPFullReport.formTemplate.routes.slice(3), + ], + }, +}; + +export const mockWPReportWithOtherTypeOverlays = { + ...mockWPFullReport, + fieldData: { + ...mockWPFullReport.fieldData, + [OverlayModalTypes.INITIATIVE]: [ + { + ...mockWPFullReport.fieldData.entityType[0], + type: OverlayModalTypes.INITIATIVE, + id: "mock wip id", + initiative_wpTopic: [ + { + key: "other-type-key", + value: "Other, specify", + }, + ], + initiative_wp_otherTopic: "Unique initiative type", + }, + ], + }, +}; + +export const mockSARReportWithOverlays = { + ...mockSARFullReport, + fieldData: { + ...mockSARFullReport.fieldData, + [OverlayModalTypes.INITIATIVE]: [ + { + ...mockSARFullReport.fieldData.entityType[0], + type: OverlayModalTypes.INITIATIVE, + id: "mock wip id", // this is both our search filter and our search target in renderFieldRow + initiative_wpTopic: [ + { + value: "mock WP topic", + }, + ], + "mock-expenditure-field-1": "5", + "mock-expenditure-field-2": "10", + "mock-expenditure-field-3": "15", + "mock-expenditure-field-4": "20", + }, + ], + }, + formTemplate: { + ...mockSARFullReport.formTemplate, + routes: [ + /* + * We need the 2th route to have a child with entityType initiative, + * to avoid a null reference in getInitiativeStatus() + */ + ...mockSARFullReport.formTemplate.routes.slice(0, 2), + { + name: "mock-dynamic-route", + path: "/mock/mock-dynamic-route", + initiatives: [ + { + initiatiaveId: "mock-init-id", + name: "mock init name", + entitySteps: [ + { + // TODO what here? + foo: "bar", + }, + ], + }, + ], + } as ReportRoute, + ...mockSARFullReport.formTemplate.routes.slice(2), + ], + }, +}; diff --git a/services/ui-src/src/utils/testing/mockUsers.tsx b/services/ui-src/src/utils/testing/mockUsers.tsx index 806327769..fe8c3cb98 100644 --- a/services/ui-src/src/utils/testing/mockUsers.tsx +++ b/services/ui-src/src/utils/testing/mockUsers.tsx @@ -6,7 +6,7 @@ export const mockNoUser: UserContextShape = { user: undefined, showLocalLogins: true, logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: async () => {}, getExpiration: () => {}, }; @@ -23,7 +23,7 @@ export const mockStateUser: UserContextShape = { }, showLocalLogins: true, logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: async () => {}, getExpiration: () => {}, }; @@ -40,7 +40,7 @@ export const mockStateUserNoReports: UserContextShape = { }, showLocalLogins: true, logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: async () => {}, getExpiration: () => {}, }; @@ -57,7 +57,7 @@ export const mockStateApprover: UserContextShape = { }, showLocalLogins: true, logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: async () => {}, getExpiration: () => {}, }; @@ -74,7 +74,7 @@ export const mockHelpDeskUser: UserContextShape = { }, showLocalLogins: false, logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: async () => {}, getExpiration: () => {}, }; @@ -91,7 +91,7 @@ export const mockAdminUser: UserContextShape = { }, showLocalLogins: false, logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: async () => {}, getExpiration: () => {}, }; diff --git a/services/ui-src/src/utils/testing/setupJest.tsx b/services/ui-src/src/utils/testing/setupJest.tsx index eddca5615..048409d75 100644 --- a/services/ui-src/src/utils/testing/setupJest.tsx +++ b/services/ui-src/src/utils/testing/setupJest.tsx @@ -2,7 +2,6 @@ import React from "react"; import { BrowserRouter as Router } from "react-router-dom"; import "@testing-library/jest-dom"; import "jest-axe/extend-expect"; -import { mockFlags, resetLDMocks } from "jest-launchdarkly-mock"; // types import { UserRoles, @@ -55,37 +54,46 @@ jest.mock("@chakra-ui/transition", () => ({ )), })); -/* Mock LaunchDarkly (see https://bit.ly/3QAeS7j) */ -export const mockLDFlags = { - setDefault: (baseline: any) => mockFlags(baseline), - clear: resetLDMocks, - set: mockFlags, -}; - -// AUTH +/* Mock Amplify */ +jest.mock("aws-amplify/api", () => ({ + get: jest.fn().mockImplementation(() => ({ + response: Promise.resolve({ + body: { + json: () => Promise.resolve(`{"json":"blob"}`), + }, + }), + })), + post: jest.fn().mockImplementation(() => ({ + response: Promise.resolve({ + body: { + json: () => Promise.resolve(`{"json":"blob"}`), + }, + }), + })), + put: jest.fn().mockImplementation(() => ({ + response: Promise.resolve({ + body: { + json: () => Promise.resolve(`{"json":"blob"}`), + }, + }), + })), + del: jest.fn().mockImplementation(() => ({ + response: Promise.resolve({ + body: { + json: () => Promise.resolve(`{"json":"blob"}`), + }, + }), + })), +})); -jest.mock("aws-amplify", () => ({ - Auth: { - currentSession: jest.fn().mockReturnValue({ - getIdToken: () => ({ - getJwtToken: () => "eyJLongToken", - }), +jest.mock("aws-amplify/auth", () => ({ + fetchAuthSession: jest.fn().mockReturnValue({ + idToken: () => ({ + payload: "eyJLongToken", }), - currentAuthenticatedUser: () => {}, - configure: () => {}, - signOut: async () => {}, - federatedSignIn: () => {}, - }, - API: { - get: () => {}, - post: () => {}, - put: () => {}, - del: () => {}, - configure: () => {}, - }, - Hub: { - listen: jest.fn(), - }, + }), + signOut: jest.fn().mockImplementation(() => Promise.resolve()), + signInWithRedirect: () => {}, })); // USER CONTEXT @@ -93,7 +101,7 @@ jest.mock("aws-amplify", () => ({ export const mockUserContext: UserContextShape = { user: undefined, logout: async () => {}, - loginWithIDM: () => {}, + loginWithIDM: async () => {}, updateTimeout: async () => {}, getExpiration: () => {}, }; @@ -343,12 +351,6 @@ export const RouterWrappedComponent: React.FC = ({ children }) => ( {children} ); -// LAUNCHDARKLY - -export const mockLDClient = { - variation: jest.fn(() => true), -}; - // ASSET export * from "./mockAsset"; // BANNER @@ -357,6 +359,8 @@ export * from "./mockBanner"; export * from "./mockEntities"; // FORM export * from "./mockForm"; +// LAUNCHDARKLY +export * from "./mockLaunchDarkly"; // REPORT export * from "./mockReport"; // ROUTER diff --git a/services/ui-src/src/utils/text/translate.test.ts b/services/ui-src/src/utils/text/translate.test.ts new file mode 100644 index 000000000..4ff5aa3da --- /dev/null +++ b/services/ui-src/src/utils/text/translate.test.ts @@ -0,0 +1,34 @@ +import { translate } from "./translate"; + +describe("translate()", () => { + const stateName = "Puerto Rico"; + const heading = "MFP Work Plan for"; + const reportYear = "2024"; + const reportPeriod = "1"; + + test("returns translated text", () => { + const result = translate( + "{{stateName}} {{heading}} {{reportYear}} - Period {{reportPeriod}}", + { stateName, heading, reportYear, reportPeriod } + ); + expect(result).toBe("Puerto Rico MFP Work Plan for 2024 - Period 1"); + }); + + test("returns empty value for missing key", () => { + const result = translate( + "{{stateName}} {{heading}} {{reportYear}} - Period {{reportPeriod}}", + { heading, reportYear, reportPeriod } + ); + + expect(result).toBe(" MFP Work Plan for 2024 - Period 1"); + }); + + test("returns empty value for non-existent key", () => { + const result = translate( + "{{stateName}} {{heading}} {{reportYear}} - Period {{reportPeriod}}", + { stateName, nonExistent: "nonExistent", reportYear, reportPeriod } + ); + + expect(result).toBe("Puerto Rico 2024 - Period 1"); + }); +}); diff --git a/services/ui-src/src/utils/text/translate.ts b/services/ui-src/src/utils/text/translate.ts new file mode 100644 index 000000000..1d964890e --- /dev/null +++ b/services/ui-src/src/utils/text/translate.ts @@ -0,0 +1,14 @@ +export function translate(text: string, keysToReplace: any = {}) { + const keys = Object.keys(keysToReplace); + let translatedText = text; + + keys.forEach((key) => { + const matches = new RegExp(`{{${key}}}`, "gm"); + translatedText = translatedText.replace(matches, keysToReplace[key]); + }); + + const unmatched = /{{\w*}}/gm; + translatedText = translatedText.replace(unmatched, ""); + + return translatedText; +} diff --git a/services/ui-src/src/verbiage/pages/sar/sar-export.ts b/services/ui-src/src/verbiage/pages/sar/sar-export.ts index b2e8919f1..4759b5b11 100644 --- a/services/ui-src/src/verbiage/pages/sar/sar-export.ts +++ b/services/ui-src/src/verbiage/pages/sar/sar-export.ts @@ -37,6 +37,8 @@ export default { "Select the target populations applicable to your state during this reporting period.", ], }, + reportTitle: + "{{stateName}} Semi-Annual Progress Report (SAR) for {{reportYear}} - Period {{reportPeriod}}", }, generalInformationTable: { headings: [ diff --git a/services/ui-src/src/verbiage/pages/wp/wp-export.ts b/services/ui-src/src/verbiage/pages/wp/wp-export.ts index 37315b9e8..0af6281f6 100644 --- a/services/ui-src/src/verbiage/pages/wp/wp-export.ts +++ b/services/ui-src/src/verbiage/pages/wp/wp-export.ts @@ -26,6 +26,8 @@ export default { subtitle: "Enrollees in separate CHIP programs funded under Title XXI should not be reported in the WP. Please check this box if the state is unable to remove information about Separate CHIP enrollees from its reporting on this program.", }, + reportTitle: + "{{stateName}} MFP Work Plan for {{reportYear}} - Period {{reportPeriod}}", }, tableHeaders: { indicator: "Indicator", diff --git a/services/ui-src/vite.config.ts b/services/ui-src/vite.config.mts similarity index 55% rename from services/ui-src/vite.config.ts rename to services/ui-src/vite.config.mts index 5dd933caa..05e69b9b7 100644 --- a/services/ui-src/vite.config.ts +++ b/services/ui-src/vite.config.mts @@ -1,10 +1,10 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; -import viteTsconfigPaths from "vite-tsconfig-paths"; +import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ base: "/", - plugins: [react(), viteTsconfigPaths()], + plugins: [react(), tsconfigPaths()], server: { open: true, port: 3000, @@ -15,4 +15,11 @@ export default defineConfig({ build: { outDir: "./build", }, + css: { + preprocessorOptions: { + scss: { + api: "modern-compiler", // or "modern" + }, + }, + }, }); diff --git a/services/ui-src/yarn.lock b/services/ui-src/yarn.lock index 194487118..735193dd1 100644 --- a/services/ui-src/yarn.lock +++ b/services/ui-src/yarn.lock @@ -33,1714 +33,658 @@ rimraf "~2.2.8" streamsink "~1.2.0" -"@aws-amplify/analytics@6.5.12": - version "6.5.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/analytics/-/analytics-6.5.12.tgz#3fd76b9ed119b86abd5c96513b21b5b2ab24f862" - integrity sha512-8z3mXLzUoMkR47W9UrK/yNw7Qo98HuhYaPW9gQa0/H5mC4IIiN/ka0RurefKTx89xkPUxIuv7pAIWqMcg8NMCA== - dependencies: - "@aws-amplify/cache" "5.1.18" - "@aws-amplify/core" "5.8.12" - "@aws-sdk/client-firehose" "3.6.1" - "@aws-sdk/client-kinesis" "3.6.1" - "@aws-sdk/client-personalize-events" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - lodash "^4.17.20" - tslib "^1.8.0" - uuid "^3.2.1" - -"@aws-amplify/api-graphql@3.4.18": - version "3.4.18" - resolved "https://registry.yarnpkg.com/@aws-amplify/api-graphql/-/api-graphql-3.4.18.tgz#2ea2c720f0c966ef780b05062e933514f4c292ad" - integrity sha512-4rZ0vhfTQnP+kCL+uc0BZdHsjNU1vLj5+xOPIkNrI0Y0VdN9I2aKfWjBQx8i2BIPeF3B+xSKKuGhIJD6WCxcpg== - dependencies: - "@aws-amplify/api-rest" "3.5.12" - "@aws-amplify/auth" "5.6.12" - "@aws-amplify/cache" "5.1.18" - "@aws-amplify/core" "5.8.12" - "@aws-amplify/pubsub" "5.5.12" +"@aws-amplify/analytics@7.0.52": + version "7.0.52" + resolved "https://registry.yarnpkg.com/@aws-amplify/analytics/-/analytics-7.0.52.tgz#a3c942a4762fc998baecbce5abfa48b1288904dc" + integrity sha512-Ja6nKlKkIHlkZk/Rl5auLcLRwf8yFHlL65UVXzpBrafmVSl72ygNAT4dsxRMOWse/aiEw1Y/Jqb/XpkgAweBCw== + dependencies: + "@aws-sdk/client-firehose" "3.621.0" + "@aws-sdk/client-kinesis" "3.621.0" + "@aws-sdk/client-personalize-events" "3.621.0" + "@smithy/util-utf8" "2.0.0" + tslib "^2.5.0" + +"@aws-amplify/api-graphql@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@aws-amplify/api-graphql/-/api-graphql-4.4.1.tgz#681018e3082676fd65313f72d3534664195ebc7c" + integrity sha512-Waec2UbCQ4OssG2/lrAiZgQuS9WUlsth0AnuPjbsUKQpw7k7Rq0OOhGJepAXnn8v1YGVmr9ilyzKevN799qFCw== + dependencies: + "@aws-amplify/api-rest" "4.0.52" + "@aws-amplify/core" "6.4.5" + "@aws-amplify/data-schema" "^1.7.0" + "@aws-sdk/types" "3.387.0" graphql "15.8.0" - tslib "^1.8.0" - uuid "^3.2.1" - zen-observable-ts "0.8.19" - -"@aws-amplify/api-rest@3.5.12": - version "3.5.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/api-rest/-/api-rest-3.5.12.tgz#96361fba42e8ebbd3d92c6455243d9abe867b82d" - integrity sha512-WWUZU7MaKxxt9xw+FwnSWfbsXEwoDbGH6G8/S0YrcQeILbutLLcW4boW3d2vRaYjjC/1saVUHyrdO1mWZ++C5Q== - dependencies: - "@aws-amplify/core" "5.8.12" - axios "^1.6.5" - tslib "^1.8.0" - url "0.11.0" - -"@aws-amplify/api@5.4.12": - version "5.4.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/api/-/api-5.4.12.tgz#fc79e55d7c812e9deee3c1faf1d9f32d40564299" - integrity sha512-LHxfHpwu6hFm6sMiPB6UAKzj5Aoccp/r4527dTg6N/aQwQXyWEGkGSK4dBSSM/Sf0vPADo9jn6WGNttCXulDyw== - dependencies: - "@aws-amplify/api-graphql" "3.4.18" - "@aws-amplify/api-rest" "3.5.12" - tslib "^1.8.0" - -"@aws-amplify/auth@5.6.12": - version "5.6.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/auth/-/auth-5.6.12.tgz#3381e0f36deb4db17c9f5d4074ec62037027db66" - integrity sha512-NX5E2l9Ovsbfsh2R0iNweNVVY3QtJRWpBrHPIOxzhqSxiwK0Cay/+9bQ8Uv7/O8s2NHByG1+kXM7zR+iDuYxfA== - dependencies: - "@aws-amplify/core" "5.8.12" - amazon-cognito-identity-js "6.3.13" - buffer "4.9.2" - tslib "^1.8.0" - url "0.11.0" - -"@aws-amplify/cache@5.1.18": - version "5.1.18" - resolved "https://registry.yarnpkg.com/@aws-amplify/cache/-/cache-5.1.18.tgz#20700d3fb8ad5bd28d56a4b399b9239c0532bffd" - integrity sha512-1aZ8MvA+8PJur5cnJAbBUnCUCw3ACfjCI/s/qY+Fx1jKahci3J9Yl2+pf4A6Nk6e0IjtN6FVCOKUKcWV/5+QYQ== - dependencies: - "@aws-amplify/core" "5.8.12" - tslib "^1.8.0" - -"@aws-amplify/core@5.8.12": - version "5.8.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/core/-/core-5.8.12.tgz#e95386c6798db1652c84f58ac06f71cb06884a82" - integrity sha512-kQkIRBiowtMawBPTviAkz6q9Od6IImrYxdnjFebHNqF1fuLq016jxhBLxiq5ztZDvkZX+IpSr1gzOZtNGkikvA== - dependencies: - "@aws-crypto/sha256-js" "1.2.2" - "@aws-sdk/client-cloudwatch-logs" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/util-hex-encoding" "3.6.1" - "@types/node-fetch" "2.6.4" - isomorphic-unfetch "^3.0.0" - react-native-url-polyfill "^1.3.0" - tslib "^1.8.0" - universal-cookie "^4.0.4" - zen-observable-ts "0.8.19" - -"@aws-amplify/datastore@4.7.12": - version "4.7.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/datastore/-/datastore-4.7.12.tgz#420efa0701cd3b5d64b6d0b79b4cd4ec2e748177" - integrity sha512-BnyZZPvYAka6D4OHfid7/UCBvXgpZTvXTydBW0YFZ3mIoRiTZC9+rcWm0i3EjtjUuGJuzbLhxDqklXGvUsXCkg== - dependencies: - "@aws-amplify/api" "5.4.12" - "@aws-amplify/auth" "5.6.12" - "@aws-amplify/core" "5.8.12" - "@aws-amplify/pubsub" "5.5.12" - amazon-cognito-identity-js "6.3.13" - buffer "4.9.2" - idb "5.0.6" - immer "9.0.6" - ulid "2.3.0" - uuid "3.4.0" - zen-observable-ts "0.8.19" - zen-push "0.2.1" - -"@aws-amplify/geo@2.3.12": - version "2.3.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/geo/-/geo-2.3.12.tgz#22f8954547b1c3943b58da337155fccc08191f2c" - integrity sha512-H8cyusFfWhXANefNJz/rYAMAmD8cNPC36xzFfXrqHJTKplEUY+3dRMvkOx2gDZpqYF8Ij9qJ5BOoPfs7Jh6ySA== - dependencies: - "@aws-amplify/core" "5.8.12" - "@aws-sdk/client-location" "3.186.3" - "@turf/boolean-clockwise" "6.5.0" - camelcase-keys "6.2.2" - tslib "^1.8.0" - -"@aws-amplify/interactions@5.2.18": - version "5.2.18" - resolved "https://registry.yarnpkg.com/@aws-amplify/interactions/-/interactions-5.2.18.tgz#88799cde53cf4b82685d20efdab14304e9b175eb" - integrity sha512-K1oo6GFS7kgq86QMjmF+dabuFEeJLAu1FK1tfTyFIhvrgZ4xfVnzdTXlJhS+ZJ5ZKc6WyzVmE8di/KllI+pTAA== - dependencies: - "@aws-amplify/core" "5.8.12" - "@aws-sdk/client-lex-runtime-service" "3.186.3" - "@aws-sdk/client-lex-runtime-v2" "3.186.3" - base-64 "1.0.0" - fflate "0.7.3" - pako "2.0.4" - tslib "^1.8.0" - -"@aws-amplify/notifications@1.6.13": - version "1.6.13" - resolved "https://registry.yarnpkg.com/@aws-amplify/notifications/-/notifications-1.6.13.tgz#a14c8362b3d05e77fc5a7e58122b583bca90b60e" - integrity sha512-fH1k8P1Nts/1OIy8IKQjWpJgdsql0562CPpwGBVvPnRYqnkPxvzImjZdhwTgpu+vxjDBKEky/Buu9ws+ST7Myg== - dependencies: - "@aws-amplify/cache" "5.1.18" - "@aws-amplify/core" "5.8.12" - "@aws-amplify/rtn-push-notification" "1.1.14" - lodash "^4.17.21" - uuid "^3.2.1" - -"@aws-amplify/predictions@5.5.12": - version "5.5.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/predictions/-/predictions-5.5.12.tgz#ac45dfcdd76027075290df9c31bb8bacf895cdad" - integrity sha512-KY2YUDkhNGtRIHDYDcuNIVxAfUbLP2vH1268TXRoUaZvRz5NKTKAje8Ht5AnoCDhSWTN7nduoivL97fRzo6bJA== - dependencies: - "@aws-amplify/core" "5.8.12" - "@aws-amplify/storage" "5.9.12" - "@aws-sdk/client-comprehend" "3.6.1" - "@aws-sdk/client-polly" "3.6.1" - "@aws-sdk/client-rekognition" "3.6.1" - "@aws-sdk/client-textract" "3.6.1" - "@aws-sdk/client-translate" "3.6.1" - "@aws-sdk/eventstream-marshaller" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - buffer "4.9.2" - tslib "^1.8.0" - uuid "^3.2.1" - -"@aws-amplify/pubsub@5.5.12": - version "5.5.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/pubsub/-/pubsub-5.5.12.tgz#93360b6d22d3a5963f9f286d62486955fb1f8e69" - integrity sha512-eD57TUee9n7ECNPWFIl1TcZmQf8+usiB2vo7t6nBgjCoudYRhYh8ZPfxg94uqfDdWBXMbRoBI0JPISyEQo2xKA== + rxjs "^7.8.1" + tslib "^2.5.0" + uuid "^9.0.0" + +"@aws-amplify/api-rest@4.0.52": + version "4.0.52" + resolved "https://registry.yarnpkg.com/@aws-amplify/api-rest/-/api-rest-4.0.52.tgz#711bc9addf8cf6656b99a3e64bd3ef66ec3e50d9" + integrity sha512-A1kI7/6UqLUyOoPbPrUUjg84dPORAJzyC+xnk+o9ZKbVZVcfyHDU/XsbZgEi9NGZBMMPNgCek/m6O/FI5hd1VQ== + dependencies: + tslib "^2.5.0" + +"@aws-amplify/api@6.0.54": + version "6.0.54" + resolved "https://registry.yarnpkg.com/@aws-amplify/api/-/api-6.0.54.tgz#0e2b4b581171fa5318a028487e05fcd9eddedaf0" + integrity sha512-aZ2rqapEtZHuHKgGhZ9F+E9VTah61PqxGEJWuJFQYhBA3Ui5dA5m98Rt49666xvQ7dJo1KkUqw9vrpPyE/mW/Q== + dependencies: + "@aws-amplify/api-graphql" "4.4.1" + "@aws-amplify/api-rest" "4.0.52" + tslib "^2.5.0" + +"@aws-amplify/auth@6.5.2": + version "6.5.2" + resolved "https://registry.yarnpkg.com/@aws-amplify/auth/-/auth-6.5.2.tgz#4aa286bc18fdf99ffeb6b91b9f540e6445a5ebd9" + integrity sha512-YxLcfhWWt9AtkePPo4aRH3OeRrlIWoo5+FV8gyOkeaHBiF3fkWcWZ3YAxMz7jG+iycgQMzj0bkFFTaNAy0Ohgw== + dependencies: + tslib "^2.5.0" + +"@aws-amplify/core@6.4.5": + version "6.4.5" + resolved "https://registry.yarnpkg.com/@aws-amplify/core/-/core-6.4.5.tgz#a40e7c5d4857d9864fc44d94a0590844fdb2ad3d" + integrity sha512-YE1CUOEoDs6gwZbTXYcrg5BSC1yfKAPM5yh4/Yy7BdIyev3WZl0RwukWk6Z/rdM1/ePKyDAbVeiGO7GOaWhJNw== + dependencies: + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/types" "3.398.0" + "@smithy/util-hex-encoding" "2.0.0" + "@types/uuid" "^9.0.0" + js-cookie "^3.0.5" + rxjs "^7.8.1" + tslib "^2.5.0" + uuid "^9.0.0" + +"@aws-amplify/data-schema-types@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema-types/-/data-schema-types-1.1.1.tgz#5b0331626321a9407d0438e4a29c715f6f4f4afe" + integrity sha512-WhWEEsztpSSxIY0lJ3Ge5iA4g3PBm66SQmy1fBH1FBq0T+cxUBijifOU8MNwf+tf6lGpArMX0RS54HRVF5fUSA== dependencies: - "@aws-amplify/auth" "5.6.12" - "@aws-amplify/cache" "5.1.18" - "@aws-amplify/core" "5.8.12" - buffer "4.9.2" graphql "15.8.0" - tslib "^1.8.0" - url "0.11.0" - uuid "^3.2.1" - zen-observable-ts "0.8.19" + rxjs "^7.8.1" -"@aws-amplify/rtn-push-notification@1.1.14": - version "1.1.14" - resolved "https://registry.yarnpkg.com/@aws-amplify/rtn-push-notification/-/rtn-push-notification-1.1.14.tgz#abbeeb047d34ef14e8522f9cf8871dcaa32f69eb" - integrity sha512-C3y+iL8/9800wWOyIAVYAKzrHZkFeI3y2ZoJlj0xot+dCbQZkMr/XjO2ZwfC58XRKUiDKFfzCJW/XoyZlvthfw== +"@aws-amplify/data-schema@^1.7.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@aws-amplify/data-schema/-/data-schema-1.10.0.tgz#016fe8e9e1f40d268d26867c1bd925d71e902a12" + integrity sha512-tp1dtpNmc5X8B9M3yg1TmkXvnMH10UicPrnfpNCVfsuCQZk7r/hNkzLaLlAyD8/f5/sXatpYl91zo7owbIuPPw== + dependencies: + "@aws-amplify/data-schema-types" "*" + "@smithy/util-base64" "^3.0.0" + "@types/aws-lambda" "^8.10.134" + "@types/json-schema" "^7.0.15" + rxjs "^7.8.1" -"@aws-amplify/storage@5.9.12": - version "5.9.12" - resolved "https://registry.yarnpkg.com/@aws-amplify/storage/-/storage-5.9.12.tgz#66774348d5b0b35c9826ea10730a2df09b8cd7e3" - integrity sha512-aQ9JCRJL+Dlrg5mxlvZtKuBm1NjrU/8aFZ51VdHr4BWQBfAchSk9s3UcnHeh+o8pGWCl1z9W05yp12eXTWauEw== +"@aws-amplify/datastore@5.0.54": + version "5.0.54" + resolved "https://registry.yarnpkg.com/@aws-amplify/datastore/-/datastore-5.0.54.tgz#1a1569737ec9000052c0010d2c0367cb97cb17e1" + integrity sha512-WYoUMWbpQci1Ah6Ft+EyWmTzKKxB+MrtgBa8CmYsNYm7PSGcOQ/SyGDdaxxBj0YnXv8KKA46/O/ofT9SrxX9Wg== dependencies: - "@aws-amplify/core" "5.8.12" - "@aws-sdk/md5-js" "3.6.1" - "@aws-sdk/types" "3.6.1" + "@aws-amplify/api" "6.0.54" buffer "4.9.2" - events "^3.1.0" - fast-xml-parser "^4.2.5" - tslib "^1.8.0" + idb "5.0.6" + immer "9.0.6" + rxjs "^7.8.1" + ulid "^2.3.0" -"@aws-crypto/crc32@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-2.0.0.tgz#4ad432a3c03ec3087c5540ff6e41e6565d2dc153" - integrity sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA== +"@aws-amplify/notifications@2.0.52": + version "2.0.52" + resolved "https://registry.yarnpkg.com/@aws-amplify/notifications/-/notifications-2.0.52.tgz#332c401d65cfafadfa95c9c5f831182bff834394" + integrity sha512-jvReh1i4e80pY+XUtahIeGZ5I1plpQgq3lgYYky4Z9lViMQKJrrNdl6Yy0AKbkv+7/3h/m/wtKF2d/PSqJtrDw== dependencies: - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" + lodash "^4.17.21" + tslib "^2.5.0" -"@aws-crypto/crc32@^1.0.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-1.2.2.tgz#4a758a596fa8cb3ab463f037a78c2ca4992fe81f" - integrity sha512-8K0b1672qbv05chSoKpwGZ3fhvVp28Fg3AVHVkEHFl2lTLChO7wD/hTyyo8ING7uc31uZRt7bNra/hA74Td7Tw== +"@aws-amplify/storage@6.6.10": + version "6.6.10" + resolved "https://registry.yarnpkg.com/@aws-amplify/storage/-/storage-6.6.10.tgz#ef0236b03456efbd0d4e96db3cdb9c562390e1e9" + integrity sha512-wQ4Xj74Xh+TOlT9Lt7xv8zlgE5Jgtswgzap10rcNxLd45mo0KzC3dMBvIN1EW5+25HUQaQMzSByyI1T1GijE2g== dependencies: - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" + "@aws-sdk/types" "3.398.0" + "@smithy/md5-js" "2.0.7" + buffer "4.9.2" + fast-xml-parser "^4.4.1" + tslib "^2.5.0" -"@aws-crypto/ie11-detection@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz#d3a6af29ba7f15458f79c41d1cd8cac3925e726a" - integrity sha512-kCKVhCF1oDxFYgQrxXmIrS5oaWulkvRcPz+QBDMsUr2crbF4VGgGT6+uQhSwJFdUAQ2A//Vq+uT83eJrkzFgXA== +"@aws-crypto/crc32@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" + integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== dependencies: - tslib "^1.11.1" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" -"@aws-crypto/ie11-detection@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.0.tgz#bb6c2facf8f03457e949dcf0921477397ffa4c6e" - integrity sha512-pkVXf/dq6PITJ0jzYZ69VhL8VFOFoPZLZqtU/12SGnzYuJOOGNfF41q9GxdI1yqC8R13Rq3jOLKDFpUJFT5eTA== +"@aws-crypto/sha256-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" + integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== dependencies: - tslib "^1.11.1" - -"@aws-crypto/sha256-browser@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz#741c9024df55ec59b51e5b1f5d806a4852699fb5" - integrity sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A== - dependencies: - "@aws-crypto/ie11-detection" "^2.0.0" - "@aws-crypto/sha256-js" "^2.0.0" - "@aws-crypto/supports-web-crypto" "^2.0.0" - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" + "@aws-crypto/sha256-js" "^5.2.0" + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" "@aws-sdk/util-locate-window" "^3.0.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-browser@^1.0.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-1.2.2.tgz#004d806e3bbae130046c259ec3279a02d4a0b576" - integrity sha512-0tNR4kBtJp+9S0kis4+JLab3eg6QWuIeuPhzaYoYwNUXGBgsWIkktA2mnilet+EGWzf3n1zknJXC4X4DVyyXbg== - dependencies: - "@aws-crypto/ie11-detection" "^1.0.0" - "@aws-crypto/sha256-js" "^1.2.2" - "@aws-crypto/supports-web-crypto" "^1.0.0" - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-locate-window" "^3.0.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-js@1.2.2", "@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz#02acd1a1fda92896fc5a28ec7c6e164644ea32fc" - integrity sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g== - dependencies: - "@aws-crypto/util" "^1.2.2" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-js@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz#f1f936039bdebd0b9e2dd834d65afdc2aac4efcb" - integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== - dependencies: - "@aws-crypto/util" "^2.0.0" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - -"@aws-crypto/sha256-js@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.1.tgz#79e1e6cf61f652ef2089c08d471c722ecf1626a9" - integrity sha512-mbHTBSPBvg6o/mN/c18Z/zifM05eJrapj5ggoOIeHIWckvkv5VgGi7r/wYpt+QAO2ySKXLNvH2d8L7bne4xrMQ== - dependencies: - "@aws-crypto/util" "^2.0.1" - "@aws-sdk/types" "^3.1.0" - tslib "^1.11.1" - -"@aws-crypto/supports-web-crypto@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-1.0.0.tgz#c40901bc17ac1e875e248df16a2b47ad8bfd9a93" - integrity sha512-IHLfv+WmVH89EW4n6a5eE8/hUlz6qkWGMn/v4r5ZgzcXdTC5nolii2z3k46y01hWRiC2PPhOdeSLzMUCUMco7g== - dependencies: - tslib "^1.11.1" - -"@aws-crypto/supports-web-crypto@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.0.tgz#fd6cde30b88f77d5a4f57b2c37c560d918014f9e" - integrity sha512-Ge7WQ3E0OC7FHYprsZV3h0QIcpdyJLvIeg+uTuHqRYm8D6qCFJoiC+edSzSyFiHtZf+NOQDJ1q46qxjtzIY2nA== - dependencies: - tslib "^1.11.1" - -"@aws-crypto/util@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-1.2.2.tgz#b28f7897730eb6538b21c18bd4de22d0ea09003c" - integrity sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg== - dependencies: - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - tslib "^1.11.1" - -"@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-2.0.1.tgz#976cf619cf85084ca85ec5eb947a6ac6b8b5c98c" - integrity sha512-JJmFFwvbm08lULw4Nm5QOLg8+lAQeC8aCXK5xrtxntYzYXCGfHwUJ4Is3770Q7HmICsXthGQ+ZsDL7C2uH3yBQ== - dependencies: - "@aws-sdk/types" "^3.1.0" - "@aws-sdk/util-utf8-browser" "^3.0.0" - tslib "^1.11.1" - -"@aws-sdk/abort-controller@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.186.0.tgz#dfaccd296d57136930582e1a19203d6cb60debc7" - integrity sha512-JFvvvtEcbYOvVRRXasi64Dd1VcOz5kJmPvtzsJ+HzMHvPbGGs/aopOJAZQJMJttzJmJwVTay0QL6yag9Kk8nYA== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/abort-controller@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.6.1.tgz#75812875bbef6ad17e0e3a6d96aab9df636376f9" - integrity sha512-X81XkxX/2Tvv9YNcEto/rcQzPIdKJHFSnl9hBl/qkSdCFV/GaQ2XNWfKm5qFXMLlZNFS0Fn5CnBJ83qnBm47vg== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/client-cloudwatch-logs@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.6.1.tgz#5e8dba495a2ba9a901b0a1a2d53edef8bd452398" - integrity sha512-QOxIDnlVTpnwJ26Gap6RGz61cDLH6TKrIp30VqwdMeT1pCGy8mn9rWln6XA+ymkofHy/08RfpGp+VN4axwd4Lw== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - tslib "^2.0.0" - -"@aws-sdk/client-comprehend@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-comprehend/-/client-comprehend-3.6.1.tgz#d640d510b49feafa94ac252cdd7942cbe5537249" - integrity sha512-Y2ixlSTjjAp2HJhkUArtYqC/X+zG5Qqu3Bl+Ez22u4u4YnG8HsNFD6FE1axuWSdSa5AFtWTEt+Cz2Ghj/tDySA== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - tslib "^2.0.0" - uuid "^3.0.0" - -"@aws-sdk/client-firehose@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-firehose/-/client-firehose-3.6.1.tgz#87a8ef0c18267907b3ce712e6d3de8f36b0a7c7b" - integrity sha512-KhiKCm+cJmnRFuAEyO3DBpFVDNix1XcVikdxk2lvYbFWkM1oUZoBpudxaJ+fPf2W3stF3CXIAOP+TnGqSZCy9g== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - tslib "^2.0.0" - -"@aws-sdk/client-kinesis@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-kinesis/-/client-kinesis-3.6.1.tgz#48583cc854f9108bc8ff6168005d9a05b24bae31" - integrity sha512-Ygo+92LxHeUZmiyhiHT+k7hIOhJd6S7ckCEVUsQs2rfwe9bAygUY/3cCoZSqgWy7exFRRKsjhzStcyV6i6jrVQ== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/eventstream-serde-browser" "3.6.1" - "@aws-sdk/eventstream-serde-config-resolver" "3.6.1" - "@aws-sdk/eventstream-serde-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - "@aws-sdk/util-waiter" "3.6.1" - tslib "^2.0.0" - -"@aws-sdk/client-lex-runtime-service@3.186.3": - version "3.186.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-lex-runtime-service/-/client-lex-runtime-service-3.186.3.tgz#cc1130254d50dc1a5b85ac736e6f764b0fa145c3" - integrity sha512-YP+GDY9OxyW4rJDqjreaNpiDBvH1uzO3ShJKl57hT92Kw2auDQxttcMf//J8dQXvrVkW/fVXCLI9TmtxS7XJOQ== - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/client-sts" "3.186.3" - "@aws-sdk/config-resolver" "3.186.0" - "@aws-sdk/credential-provider-node" "3.186.0" - "@aws-sdk/fetch-http-handler" "3.186.0" - "@aws-sdk/hash-node" "3.186.0" - "@aws-sdk/invalid-dependency" "3.186.0" - "@aws-sdk/middleware-content-length" "3.186.0" - "@aws-sdk/middleware-host-header" "3.186.0" - "@aws-sdk/middleware-logger" "3.186.0" - "@aws-sdk/middleware-recursion-detection" "3.186.0" - "@aws-sdk/middleware-retry" "3.186.0" - "@aws-sdk/middleware-serde" "3.186.0" - "@aws-sdk/middleware-signing" "3.186.0" - "@aws-sdk/middleware-stack" "3.186.0" - "@aws-sdk/middleware-user-agent" "3.186.0" - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/node-http-handler" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/smithy-client" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/url-parser" "3.186.0" - "@aws-sdk/util-base64-browser" "3.186.0" - "@aws-sdk/util-base64-node" "3.186.0" - "@aws-sdk/util-body-length-browser" "3.186.0" - "@aws-sdk/util-body-length-node" "3.186.0" - "@aws-sdk/util-defaults-mode-browser" "3.186.0" - "@aws-sdk/util-defaults-mode-node" "3.186.0" - "@aws-sdk/util-user-agent-browser" "3.186.0" - "@aws-sdk/util-user-agent-node" "3.186.0" - "@aws-sdk/util-utf8-browser" "3.186.0" - "@aws-sdk/util-utf8-node" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/client-lex-runtime-v2@3.186.3": - version "3.186.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-lex-runtime-v2/-/client-lex-runtime-v2-3.186.3.tgz#7baa6772ce3fdd7265fca2daa75eb0e896f27764" - integrity sha512-4MJfSnb+qM8BYW4ToCvg7sDWN0NcEqK738hCZUV89cjp7pIHZ6osJuS/PsmZEommVj+71GviZ4buu5KUCfCGFQ== - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/client-sts" "3.186.3" - "@aws-sdk/config-resolver" "3.186.0" - "@aws-sdk/credential-provider-node" "3.186.0" - "@aws-sdk/eventstream-handler-node" "3.186.0" - "@aws-sdk/eventstream-serde-browser" "3.186.0" - "@aws-sdk/eventstream-serde-config-resolver" "3.186.0" - "@aws-sdk/eventstream-serde-node" "3.186.0" - "@aws-sdk/fetch-http-handler" "3.186.0" - "@aws-sdk/hash-node" "3.186.0" - "@aws-sdk/invalid-dependency" "3.186.0" - "@aws-sdk/middleware-content-length" "3.186.0" - "@aws-sdk/middleware-eventstream" "3.186.0" - "@aws-sdk/middleware-host-header" "3.186.0" - "@aws-sdk/middleware-logger" "3.186.0" - "@aws-sdk/middleware-recursion-detection" "3.186.0" - "@aws-sdk/middleware-retry" "3.186.0" - "@aws-sdk/middleware-serde" "3.186.0" - "@aws-sdk/middleware-signing" "3.186.0" - "@aws-sdk/middleware-stack" "3.186.0" - "@aws-sdk/middleware-user-agent" "3.186.0" - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/node-http-handler" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/smithy-client" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/url-parser" "3.186.0" - "@aws-sdk/util-base64-browser" "3.186.0" - "@aws-sdk/util-base64-node" "3.186.0" - "@aws-sdk/util-body-length-browser" "3.186.0" - "@aws-sdk/util-body-length-node" "3.186.0" - "@aws-sdk/util-defaults-mode-browser" "3.186.0" - "@aws-sdk/util-defaults-mode-node" "3.186.0" - "@aws-sdk/util-user-agent-browser" "3.186.0" - "@aws-sdk/util-user-agent-node" "3.186.0" - "@aws-sdk/util-utf8-browser" "3.186.0" - "@aws-sdk/util-utf8-node" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/client-location@3.186.3": - version "3.186.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-location/-/client-location-3.186.3.tgz#c812ae3dabf76153ad046413298a1ab53cadee9a" - integrity sha512-LCMFgoWfvKBnZhhtl93RLhrsHCalM7huaxErHSKoqWDBUDP0i7rOX73qW8E25j/vQ4emEkT0d6ts1rDu4EnlNw== - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/client-sts" "3.186.3" - "@aws-sdk/config-resolver" "3.186.0" - "@aws-sdk/credential-provider-node" "3.186.0" - "@aws-sdk/fetch-http-handler" "3.186.0" - "@aws-sdk/hash-node" "3.186.0" - "@aws-sdk/invalid-dependency" "3.186.0" - "@aws-sdk/middleware-content-length" "3.186.0" - "@aws-sdk/middleware-host-header" "3.186.0" - "@aws-sdk/middleware-logger" "3.186.0" - "@aws-sdk/middleware-recursion-detection" "3.186.0" - "@aws-sdk/middleware-retry" "3.186.0" - "@aws-sdk/middleware-serde" "3.186.0" - "@aws-sdk/middleware-signing" "3.186.0" - "@aws-sdk/middleware-stack" "3.186.0" - "@aws-sdk/middleware-user-agent" "3.186.0" - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/node-http-handler" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/smithy-client" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/url-parser" "3.186.0" - "@aws-sdk/util-base64-browser" "3.186.0" - "@aws-sdk/util-base64-node" "3.186.0" - "@aws-sdk/util-body-length-browser" "3.186.0" - "@aws-sdk/util-body-length-node" "3.186.0" - "@aws-sdk/util-defaults-mode-browser" "3.186.0" - "@aws-sdk/util-defaults-mode-node" "3.186.0" - "@aws-sdk/util-user-agent-browser" "3.186.0" - "@aws-sdk/util-user-agent-node" "3.186.0" - "@aws-sdk/util-utf8-browser" "3.186.0" - "@aws-sdk/util-utf8-node" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/client-personalize-events@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-personalize-events/-/client-personalize-events-3.6.1.tgz#86942bb64108cfc2f6c31a8b54aab6fa7f7be00f" - integrity sha512-x9Jl/7emSQsB6GwBvjyw5BiSO26CnH4uvjNit6n54yNMtJ26q0+oIxkplnUDyjLTfLRe373c/z5/4dQQtDffkw== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - tslib "^2.0.0" - -"@aws-sdk/client-polly@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-polly/-/client-polly-3.6.1.tgz#869deb186e57fca29737bfa7af094599d7879841" - integrity sha512-y6fxVYndGS7z2KqHViPCqagBEOsZlxBUYUJZuD6WWTiQrI0Pwe5qG02oKJVaa5OmxE20QLf6bRBWj2rQpeF4IQ== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - tslib "^2.0.0" - -"@aws-sdk/client-rekognition@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-rekognition/-/client-rekognition-3.6.1.tgz#710ba6d4509a2caa417cf0702ba81b5b65aa73eb" - integrity sha512-Ia4FEog9RrI0IoDRbOJO6djwhVAAaEZutxEKrWbjrVz4bgib28L+V+yAio2SUneeirj8pNYXwBKPfoYOUqGHhA== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - "@aws-sdk/util-waiter" "3.6.1" - tslib "^2.0.0" - -"@aws-sdk/client-sso@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.186.0.tgz#233bdd1312dbf88ef9452f8a62c3c3f1ac580330" - integrity sha512-qwLPomqq+fjvp42izzEpBEtGL2+dIlWH5pUCteV55hTEwHgo+m9LJPIrMWkPeoMBzqbNiu5n6+zihnwYlCIlEA== - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/config-resolver" "3.186.0" - "@aws-sdk/fetch-http-handler" "3.186.0" - "@aws-sdk/hash-node" "3.186.0" - "@aws-sdk/invalid-dependency" "3.186.0" - "@aws-sdk/middleware-content-length" "3.186.0" - "@aws-sdk/middleware-host-header" "3.186.0" - "@aws-sdk/middleware-logger" "3.186.0" - "@aws-sdk/middleware-recursion-detection" "3.186.0" - "@aws-sdk/middleware-retry" "3.186.0" - "@aws-sdk/middleware-serde" "3.186.0" - "@aws-sdk/middleware-stack" "3.186.0" - "@aws-sdk/middleware-user-agent" "3.186.0" - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/node-http-handler" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/smithy-client" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/url-parser" "3.186.0" - "@aws-sdk/util-base64-browser" "3.186.0" - "@aws-sdk/util-base64-node" "3.186.0" - "@aws-sdk/util-body-length-browser" "3.186.0" - "@aws-sdk/util-body-length-node" "3.186.0" - "@aws-sdk/util-defaults-mode-browser" "3.186.0" - "@aws-sdk/util-defaults-mode-node" "3.186.0" - "@aws-sdk/util-user-agent-browser" "3.186.0" - "@aws-sdk/util-user-agent-node" "3.186.0" - "@aws-sdk/util-utf8-browser" "3.186.0" - "@aws-sdk/util-utf8-node" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/client-sts@3.186.3": - version "3.186.3" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.186.3.tgz#1c12355cb9d3cadc64ab74c91c3d57515680dfbd" - integrity sha512-mnttdyYBtqO+FkDtOT3F1FGi8qD11fF5/3zYLaNuFFULqKneaIwW2YIsjFlgvPGpmoyo/tNplnZwhQ9xQtT3Sw== - dependencies: - "@aws-crypto/sha256-browser" "2.0.0" - "@aws-crypto/sha256-js" "2.0.0" - "@aws-sdk/config-resolver" "3.186.0" - "@aws-sdk/credential-provider-node" "3.186.0" - "@aws-sdk/fetch-http-handler" "3.186.0" - "@aws-sdk/hash-node" "3.186.0" - "@aws-sdk/invalid-dependency" "3.186.0" - "@aws-sdk/middleware-content-length" "3.186.0" - "@aws-sdk/middleware-host-header" "3.186.0" - "@aws-sdk/middleware-logger" "3.186.0" - "@aws-sdk/middleware-recursion-detection" "3.186.0" - "@aws-sdk/middleware-retry" "3.186.0" - "@aws-sdk/middleware-sdk-sts" "3.186.0" - "@aws-sdk/middleware-serde" "3.186.0" - "@aws-sdk/middleware-signing" "3.186.0" - "@aws-sdk/middleware-stack" "3.186.0" - "@aws-sdk/middleware-user-agent" "3.186.0" - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/node-http-handler" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/smithy-client" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/url-parser" "3.186.0" - "@aws-sdk/util-base64-browser" "3.186.0" - "@aws-sdk/util-base64-node" "3.186.0" - "@aws-sdk/util-body-length-browser" "3.186.0" - "@aws-sdk/util-body-length-node" "3.186.0" - "@aws-sdk/util-defaults-mode-browser" "3.186.0" - "@aws-sdk/util-defaults-mode-node" "3.186.0" - "@aws-sdk/util-user-agent-browser" "3.186.0" - "@aws-sdk/util-user-agent-node" "3.186.0" - "@aws-sdk/util-utf8-browser" "3.186.0" - "@aws-sdk/util-utf8-node" "3.186.0" - entities "2.2.0" - fast-xml-parser "4.2.5" - tslib "^2.3.1" - -"@aws-sdk/client-textract@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-textract/-/client-textract-3.6.1.tgz#b8972f53f0353222b4c052adc784291e602be6aa" - integrity sha512-nLrBzWDt3ToiGVFF4lW7a/eZpI2zjdvu7lwmOWyXX8iiPzhBVVEfd5oOorRyJYBsGMslp4sqV8TBkU5Ld/a97Q== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - tslib "^2.0.0" - -"@aws-sdk/client-translate@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-translate/-/client-translate-3.6.1.tgz#ce855c9fe7885b930d4039c2e45c869e3c0a6656" - integrity sha512-RIHY+Og1i43B5aWlfUUk0ZFnNfM7j2vzlYUwOqhndawV49GFf96M3pmskR5sKEZI+5TXY77qR9TgZ/r3UxVCRQ== - dependencies: - "@aws-crypto/sha256-browser" "^1.0.0" - "@aws-crypto/sha256-js" "^1.0.0" - "@aws-sdk/config-resolver" "3.6.1" - "@aws-sdk/credential-provider-node" "3.6.1" - "@aws-sdk/fetch-http-handler" "3.6.1" - "@aws-sdk/hash-node" "3.6.1" - "@aws-sdk/invalid-dependency" "3.6.1" - "@aws-sdk/middleware-content-length" "3.6.1" - "@aws-sdk/middleware-host-header" "3.6.1" - "@aws-sdk/middleware-logger" "3.6.1" - "@aws-sdk/middleware-retry" "3.6.1" - "@aws-sdk/middleware-serde" "3.6.1" - "@aws-sdk/middleware-signing" "3.6.1" - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/middleware-user-agent" "3.6.1" - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/node-http-handler" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/smithy-client" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/url-parser" "3.6.1" - "@aws-sdk/url-parser-native" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - "@aws-sdk/util-base64-node" "3.6.1" - "@aws-sdk/util-body-length-browser" "3.6.1" - "@aws-sdk/util-body-length-node" "3.6.1" - "@aws-sdk/util-user-agent-browser" "3.6.1" - "@aws-sdk/util-user-agent-node" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - "@aws-sdk/util-utf8-node" "3.6.1" - tslib "^2.0.0" - uuid "^3.0.0" - -"@aws-sdk/config-resolver@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.186.0.tgz#68bbf82b572f03ee3ec9ac84d000147e1050149b" - integrity sha512-l8DR7Q4grEn1fgo2/KvtIfIHJS33HGKPQnht8OPxkl0dMzOJ0jxjOw/tMbrIcPnr2T3Fi7LLcj3dY1Fo1poruQ== - dependencies: - "@aws-sdk/signature-v4" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-config-provider" "3.186.0" - "@aws-sdk/util-middleware" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/config-resolver@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.6.1.tgz#3bcc5e6a0ebeedf0981b0540e1f18a72b4dafebf" - integrity sha512-qjP1g3jLIm+XvOIJ4J7VmZRi87vsDmTRzIFePVeG+EFWwYQLxQjTGMdIj3yKTh1WuZ0HByf47mGcpiS4HZLm1Q== - dependencies: - "@aws-sdk/signature-v4" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/credential-provider-env@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.186.0.tgz#55dec9c4c29ebbdff4f3bce72de9e98f7a1f92e1" - integrity sha512-N9LPAqi1lsQWgxzmU4NPvLPnCN5+IQ3Ai1IFf3wM6FFPNoSUd1kIA2c6xaf0BE7j5Kelm0raZOb4LnV3TBAv+g== - dependencies: - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/credential-provider-env@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.6.1.tgz#d8b2dd36836432a9b8ec05a5cf9fe428b04c9964" - integrity sha512-coeFf/HnhpGidcAN1i1NuFgyFB2M6DeN1zNVy4f6s4mAh96ftr9DgWM1CcE3C+cLHEdpNqleVgC/2VQpyzOBLQ== - dependencies: - "@aws-sdk/property-provider" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/credential-provider-imds@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.186.0.tgz#73e0f62832726c7734b4f6c50a02ab0d869c00e1" - integrity sha512-iJeC7KrEgPPAuXjCZ3ExYZrRQvzpSdTZopYgUm5TnNZ8S1NU/4nvv5xVy61JvMj3JQAeG8UDYYgC421Foc8wQw== - dependencies: - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/url-parser" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/credential-provider-imds@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.6.1.tgz#b5a8b8ef15eac26c58e469451a6c7c34ab3ca875" - integrity sha512-bf4LMI418OYcQbyLZRAW8Q5AYM2IKrNqOnIcfrFn2f17ulG7TzoWW3WN/kMOw4TC9+y+vIlCWOv87GxU1yP0Bg== - dependencies: - "@aws-sdk/property-provider" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/credential-provider-ini@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.186.0.tgz#3b3873ccae855ee3f6f15dcd8212c5ca4ec01bf3" - integrity sha512-ecrFh3MoZhAj5P2k/HXo/hMJQ3sfmvlommzXuZ/D1Bj2yMcyWuBhF1A83Fwd2gtYrWRrllsK3IOMM5Jr8UIVZA== - dependencies: - "@aws-sdk/credential-provider-env" "3.186.0" - "@aws-sdk/credential-provider-imds" "3.186.0" - "@aws-sdk/credential-provider-sso" "3.186.0" - "@aws-sdk/credential-provider-web-identity" "3.186.0" - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/shared-ini-file-loader" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/credential-provider-ini@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.6.1.tgz#0da6d9341e621f8e0815814ed017b88e268fbc3d" - integrity sha512-3jguW6+ttRNddRZvbrs1yb3F1jrUbqyv0UfRoHuOGthjTt+L9sDpJaJGugYnT3bS9WBu1NydLVE2kDV++mJGVw== - dependencies: - "@aws-sdk/property-provider" "3.6.1" - "@aws-sdk/shared-ini-file-loader" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/credential-provider-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.186.0.tgz#0be58623660b41eed3a349a89b31a01d4cc773ea" - integrity sha512-HIt2XhSRhEvVgRxTveLCzIkd/SzEBQfkQ6xMJhkBtfJw1o3+jeCk+VysXM0idqmXytctL0O3g9cvvTHOsUgxOA== - dependencies: - "@aws-sdk/credential-provider-env" "3.186.0" - "@aws-sdk/credential-provider-imds" "3.186.0" - "@aws-sdk/credential-provider-ini" "3.186.0" - "@aws-sdk/credential-provider-process" "3.186.0" - "@aws-sdk/credential-provider-sso" "3.186.0" - "@aws-sdk/credential-provider-web-identity" "3.186.0" - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/shared-ini-file-loader" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/credential-provider-node@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.6.1.tgz#0055292a4f0f49d053e8dfcc9174d8d2cf6862bb" - integrity sha512-VAHOcsqkPrF1k/fA62pv9c75lUWe5bHpcbFX83C3EUPd2FXV10Lfkv6bdWhyZPQy0k8T+9/yikHH3c7ZQeFE5A== - dependencies: - "@aws-sdk/credential-provider-env" "3.6.1" - "@aws-sdk/credential-provider-imds" "3.6.1" - "@aws-sdk/credential-provider-ini" "3.6.1" - "@aws-sdk/credential-provider-process" "3.6.1" - "@aws-sdk/property-provider" "3.6.1" - "@aws-sdk/shared-ini-file-loader" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/credential-provider-process@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.186.0.tgz#e3be60983261a58c212f5c38b6fb76305bbb8ce7" - integrity sha512-ATRU6gbXvWC1TLnjOEZugC/PBXHBoZgBADid4fDcEQY1vF5e5Ux1kmqkJxyHtV5Wl8sE2uJfwWn+FlpUHRX67g== - dependencies: - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/shared-ini-file-loader" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/credential-provider-process@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.6.1.tgz#5bf851f3ee232c565b8c82608926df0ad28c1958" - integrity sha512-d0/TpMoEV4qMYkdpyyjU2Otse9X2jC1DuxWajHOWZYEw8oejMvXYTZ10hNaXZvAcNM9q214rp+k4mkt6gIcI6g== - dependencies: - "@aws-sdk/credential-provider-ini" "3.6.1" - "@aws-sdk/property-provider" "3.6.1" - "@aws-sdk/shared-ini-file-loader" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/credential-provider-sso@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.186.0.tgz#e1aa466543b3b0877d45b885a1c11b329232df22" - integrity sha512-mJ+IZljgXPx99HCmuLgBVDPLepHrwqnEEC/0wigrLCx6uz3SrAWmGZsNbxSEtb2CFSAaczlTHcU/kIl7XZIyeQ== - dependencies: - "@aws-sdk/client-sso" "3.186.0" - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/shared-ini-file-loader" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/credential-provider-web-identity@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.186.0.tgz#db43f37f7827b553490dd865dbaa9a2c45f95494" - integrity sha512-KqzI5eBV72FE+8SuOQAu+r53RXGVHg4AuDJmdXyo7Gc4wS/B9FNElA8jVUjjYgVnf0FSiri+l41VzQ44dCopSA== - dependencies: - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/eventstream-codec@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.186.0.tgz#9da9608866b38179edf72987f2bc3b865d11db13" - integrity sha512-3kLcJ0/H+zxFlhTlE1SGoFpzd/SitwXOsTSlYVwrwdISKRjooGg0BJpm1CSTkvmWnQIUlYijJvS96TAJ+fCPIA== - dependencies: - "@aws-crypto/crc32" "2.0.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-hex-encoding" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/eventstream-handler-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.186.0.tgz#d58aec9a8617ed1a9a3800d5526333deb3efebb2" - integrity sha512-S8eAxCHyFAGSH7F6GHKU2ckpiwFPwJUQwMzewISLg3wzLQeu6lmduxBxVaV3/SoEbEMsbNmrgw9EXtw3Vt/odQ== - dependencies: - "@aws-sdk/eventstream-codec" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/eventstream-marshaller@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-marshaller/-/eventstream-marshaller-3.6.1.tgz#6abfbdf3639249d1a77686cbcae5d8e47bcba989" - integrity sha512-ZvN3Nvxn2Gul08L9MOSN123LwSO0E1gF/CqmOGZtEWzPnoSX/PWM9mhPPeXubyw2KdlXylOodYYw3EAATk3OmA== - dependencies: - "@aws-crypto/crc32" "^1.0.0" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/util-hex-encoding" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/eventstream-serde-browser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.186.0.tgz#2a0bd942f977b3e2f1a77822ac091ddebe069475" - integrity sha512-0r2c+yugBdkP5bglGhGOgztjeHdHTKqu2u6bvTByM0nJShNO9YyqWygqPqDUOE5axcYQE1D0aFDGzDtP3mGJhw== - dependencies: - "@aws-sdk/eventstream-serde-universal" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/eventstream-serde-browser@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.6.1.tgz#1253bd5215745f79d534fc9bc6bd006ee7a0f239" - integrity sha512-J8B30d+YUfkBtgWRr7+9AfYiPnbG28zjMlFGsJf8Wxr/hDCfff+Z8NzlBYFEbS7McXXhRiIN8DHUvCtolJtWJQ== - dependencies: - "@aws-sdk/eventstream-marshaller" "3.6.1" - "@aws-sdk/eventstream-serde-universal" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/eventstream-serde-config-resolver@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.186.0.tgz#6c277058bb0fa14752f0b6d7043576e0b5f13da4" - integrity sha512-xhwCqYrAX5c7fg9COXVw6r7Sa3BO5cCfQMSR5S1QisE7do8K1GDKEHvUCheOx+RLon+P3glLjuNBMdD0HfCVNA== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/eventstream-serde-config-resolver@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.6.1.tgz#ebb5c1614f55d0ebb225defac1f76c420e188086" - integrity sha512-72pCzcT/KeD4gPgRVBSQzEzz4JBim8bNwPwZCGaIYdYAsAI8YMlvp0JNdis3Ov9DFURc87YilWKQlAfw7CDJxA== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/eventstream-serde-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.186.0.tgz#dabeab714f447790c5dd31d401c5a3822b795109" - integrity sha512-9p/gdukJYfmA+OEYd6MfIuufxrrfdt15lBDM3FODuc9j09LSYSRHSxthkIhiM5XYYaaUM+4R0ZlSMdaC3vFDFQ== - dependencies: - "@aws-sdk/eventstream-serde-universal" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/eventstream-serde-node@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.6.1.tgz#705e12bea185905a198d7812af10e3a679dfc841" - integrity sha512-rjBbJFjCrEcm2NxZctp+eJmyPxKYayG3tQZo8PEAQSViIlK5QexQI3fgqNAeCtK7l/SFAAvnOMRZF6Z3NdUY6A== - dependencies: - "@aws-sdk/eventstream-marshaller" "3.6.1" - "@aws-sdk/eventstream-serde-universal" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/eventstream-serde-universal@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.186.0.tgz#85a88a2cd5c336b1271976fa8db70654ec90fbf4" - integrity sha512-rIgPmwUxn2tzainBoh+cxAF+b7o01CcW+17yloXmawsi0kiR7QK7v9m/JTGQPWKtHSsPOrtRzuiWQNX57SlcsQ== - dependencies: - "@aws-sdk/eventstream-codec" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/eventstream-serde-universal@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.6.1.tgz#5be6865adb55436cbc90557df3a3c49b53553470" - integrity sha512-rpRu97yAGHr9GQLWMzcGICR2PxNu1dHU/MYc9Kb6UgGeZd4fod4o1zjhAJuj98cXn2xwHNFM4wMKua6B4zKrZg== - dependencies: - "@aws-sdk/eventstream-marshaller" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/fetch-http-handler@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.186.0.tgz#c1adc5f741e1ba9ad9d3fb13c9c2afdc88530a85" - integrity sha512-k2v4AAHRD76WnLg7arH94EvIclClo/YfuqO7NoQ6/KwOxjRhs4G6TgIsAZ9E0xmqoJoV81Xqy8H8ldfy9F8LEw== - dependencies: - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/querystring-builder" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-base64-browser" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/fetch-http-handler@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.6.1.tgz#c5fb4a4ee158161fca52b220d2c11dddcda9b092" - integrity sha512-N8l6ZbwhINuWG5hsl625lmIQmVjzsqRPmlgh061jm5D90IhsM5/3A3wUxpB/k0av1dmuMRw/m0YtBU5w4LOwvw== - dependencies: - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/querystring-builder" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/util-base64-browser" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/hash-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.186.0.tgz#8cb13aae8f46eb360fed76baf5062f66f27dfb70" - integrity sha512-G3zuK8/3KExDTxqrGqko+opOMLRF0BwcwekV/wm3GKIM/NnLhHblBs2zd/yi7VsEoWmuzibfp6uzxgFpEoJ87w== - dependencies: - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-buffer-from" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/hash-node@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.6.1.tgz#72d75ec3b9c7e7f9b0c498805364f1f897165ce9" - integrity sha512-iKEpzpyaG9PYCnaOGwTIf0lffsF/TpsXrzAfnBlfeOU/3FbgniW2z/yq5xBbtMDtLobtOYC09kUFwDnDvuveSA== - dependencies: - "@aws-sdk/types" "3.6.1" - "@aws-sdk/util-buffer-from" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/invalid-dependency@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.186.0.tgz#aa6331ccf404cb659ec38483116080e4b82b0663" - integrity sha512-hjeZKqORhG2DPWYZ776lQ9YO3gjw166vZHZCZU/43kEYaCZHsF4mexHwHzreAY6RfS25cH60Um7dUh1aeVIpkw== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/invalid-dependency@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.6.1.tgz#fd2519f5482c6d6113d38a73b7143fd8d5b5b670" - integrity sha512-d0RLqK7yeDCZJKopnGmGXo2rYkQNE7sGKVmBHQD1j1kKZ9lWwRoJeWqo834JNPZzY5XRvZG5SuIjJ1kFy8LpyQ== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/is-array-buffer@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.186.0.tgz#7700e36f29d416c2677f4bf8816120f96d87f1b7" - integrity sha512-fObm+P6mjWYzxoFY4y2STHBmSdgKbIAXez0xope563mox62I8I4hhVPUCaDVydXvDpJv8tbedJMk0meJl22+xA== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/is-array-buffer@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.6.1.tgz#96df5d64b2d599947f81b164d5d92623f85c659c" - integrity sha512-qm2iDJmCrxlQE2dsFG+TujPe7jw4DF+4RTrsFMhk/e3lOl3MAzQ6Fc2kXtgeUcVrZVFTL8fQvXE1ByYyI6WbCw== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/md5-js@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.6.1.tgz#bffe21106fba0174d73ccc2c29ca1c5364d2af2d" - integrity sha512-lzCqkZF1sbzGFDyq1dI+lR3AmlE33rbC/JhZ5fzw3hJZvfZ6Beq3Su7YwDo65IWEu0zOKYaNywTeOloXP/CkxQ== - dependencies: - "@aws-sdk/types" "3.6.1" - "@aws-sdk/util-utf8-browser" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/middleware-content-length@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.186.0.tgz#8cc7aeec527738c46fdaf4a48b17c5cbfdc7ce58" - integrity sha512-Ol3c1ks3IK1s+Okc/rHIX7w2WpXofuQdoAEme37gHeml+8FtUlWH/881h62xfMdf+0YZpRuYv/eM7lBmJBPNJw== - dependencies: - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-content-length@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.6.1.tgz#f9c00a4045b2b56c1ff8bcbb3dec9c3d42332992" - integrity sha512-QRcocG9f5YjYzbjs2HjKla6ZIjvx8Y8tm1ZSFOPey81m18CLif1O7M3AtJXvxn+0zeSck9StFdhz5gfjVNYtDg== - dependencies: - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/middleware-eventstream@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.186.0.tgz#64a66102ed2e182182473948f131f23dda84e729" - integrity sha512-7yjFiitTGgfKL6cHK3u3HYFnld26IW5aUAFuEd6ocR/FjliysfBd8g0g1bw3bRfIMgCDD8OIOkXK8iCk2iYGWQ== - dependencies: - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-host-header@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.186.0.tgz#fce4f1219ce1835e2348c787d8341080b0024e34" - integrity sha512-5bTzrRzP2IGwyF3QCyMGtSXpOOud537x32htZf344IvVjrqZF/P8CDfGTkHkeBCIH+wnJxjK+l/QBb3ypAMIqQ== - dependencies: - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-host-header@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.6.1.tgz#6e1b4b95c5bfea5a4416fa32f11d8fa2e6edaeff" - integrity sha512-nwq8R2fGBRZQE0Fr/jiOgqfppfiTQCUoD8hyX3qSS7Qc2uqpsDOt2TnnoZl56mpQYkF/344IvMAkp+ew6wR73w== - dependencies: - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/middleware-logger@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.186.0.tgz#8a027fbbb1b8098ccc888bce51f34b000c0a0550" - integrity sha512-/1gGBImQT8xYh80pB7QtyzA799TqXtLZYQUohWAsFReYB7fdh5o+mu2rX0FNzZnrLIh2zBUNs4yaWGsnab4uXg== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-logger@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.6.1.tgz#78b3732cf188d5e4df13488db6418f7f98a77d6d" - integrity sha512-zxaSLpwKlja7JvK20UsDTxPqBZUo3rbDA1uv3VWwpxzOrEWSlVZYx/KLuyGWGkx9V71ZEkf6oOWWJIstS0wyQQ== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/middleware-recursion-detection@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.186.0.tgz#9d9d3212e9a954b557840bb80415987f4484487e" - integrity sha512-Za7k26Kovb4LuV5tmC6wcVILDCt0kwztwSlB991xk4vwNTja8kKxSt53WsYG8Q2wSaW6UOIbSoguZVyxbIY07Q== - dependencies: - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-retry@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.186.0.tgz#0ff9af58d73855863683991a809b40b93c753ad1" - integrity sha512-/VI9emEKhhDzlNv9lQMmkyxx3GjJ8yPfXH3HuAeOgM1wx1BjCTLRYEWnTbQwq7BDzVENdneleCsGAp7yaj80Aw== - dependencies: - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/service-error-classification" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-middleware" "3.186.0" - tslib "^2.3.1" - uuid "^8.3.2" - -"@aws-sdk/middleware-retry@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.6.1.tgz#202aadb1a3bf0e1ceabcd8319a5fa308b32db247" - integrity sha512-WHeo4d2jsXxBP+cec2SeLb0btYXwYXuE56WLmNt0RvJYmiBzytUeGJeRa9HuwV574kgigAuHGCeHlPO36G4Y0Q== - dependencies: - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/service-error-classification" "3.6.1" - "@aws-sdk/types" "3.6.1" - react-native-get-random-values "^1.4.0" - tslib "^1.8.0" - uuid "^3.0.0" - -"@aws-sdk/middleware-sdk-sts@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.186.0.tgz#18f3d6b7b42c1345b5733ac3e3119d370a403e94" - integrity sha512-GDcK0O8rjtnd+XRGnxzheq1V2jk4Sj4HtjrxW/ROyhzLOAOyyxutBt+/zOpDD6Gba3qxc69wE+Cf/qngOkEkDw== - dependencies: - "@aws-sdk/middleware-signing" "3.186.0" - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/signature-v4" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-serde@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.186.0.tgz#f7944241ad5fb31cb15cd250c9e92147942b9ec6" - integrity sha512-6FEAz70RNf18fKL5O7CepPSwTKJEIoyG9zU6p17GzKMgPeFsxS5xO94Hcq5tV2/CqeHliebjqhKY7yi+Pgok7g== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-serde@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.6.1.tgz#734c7d16c2aa9ccc01f6cca5e2f6aa2993b6739d" - integrity sha512-EdQCFZRERfP3uDuWcPNuaa2WUR3qL1WFDXafhcx+7ywQxagdYqBUWKFJlLYi6njbkOKXFM+eHBzoXGF0OV3MJA== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/middleware-signing@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.186.0.tgz#37633bf855667b4841464e0044492d0aec5778b9" - integrity sha512-riCJYG/LlF/rkgVbHkr4xJscc0/sECzDivzTaUmfb9kJhAwGxCyNqnTvg0q6UO00kxSdEB9zNZI2/iJYVBijBQ== - dependencies: - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/signature-v4" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-middleware" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-signing@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.6.1.tgz#e70a2f35d85d70e33c9fddfb54b9520f6382db16" - integrity sha512-1woKq+1sU3eausdl8BNdAMRZMkSYuy4mxhLsF0/qAUuLwo1eJLLUCOQp477tICawgu4O4q2OAyUHk7wMqYnQCg== - dependencies: - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/signature-v4" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/middleware-stack@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.186.0.tgz#da3445fe74b867ee6d7eec4f0dde28aaca1125d6" - integrity sha512-fENMoo0pW7UBrbuycPf+3WZ+fcUgP9PnQ0jcOK3WWZlZ9d2ewh4HNxLh4EE3NkNYj4VIUFXtTUuVNHlG8trXjQ== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/middleware-stack@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.6.1.tgz#d7483201706bb5935a62884e9b60f425f1c6434f" - integrity sha512-EPsIxMi8LtCt7YwTFpWGlVGYJc0q4kwFbOssY02qfqdCnyqi2y5wo089dH7OdxUooQ0D7CPsXM1zTTuzvm+9Fw== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/middleware-user-agent@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.186.0.tgz#6d881e9cea5fe7517e220f3a47c2f3557c7f27fc" - integrity sha512-fb+F2PF9DLKOVMgmhkr+ltN8ZhNJavTla9aqmbd01846OLEaN1n5xEnV7p8q5+EznVBWDF38Oz9Ae5BMt3Hs7w== - dependencies: - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/middleware-user-agent@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.6.1.tgz#6845dfb3bc6187897f348c2c87dec833e6a65c99" - integrity sha512-YvXvwllNDVvxQ30vIqLsx+P6jjnfFEQUmhlv64n98gOme6h2BqoyQDcC3yHRGctuxRZEsR7W/H1ASTKC+iabbQ== - dependencies: - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" -"@aws-sdk/node-config-provider@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.186.0.tgz#64259429d39f2ef5a76663162bf2e8db6032a322" - integrity sha512-De93mgmtuUUeoiKXU8pVHXWKPBfJQlS/lh1k2H9T2Pd9Tzi0l7p5ttddx4BsEx4gk+Pc5flNz+DeptiSjZpa4A== - dependencies: - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/shared-ini-file-loader" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/node-config-provider@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.6.1.tgz#cb85d06329347fde566f08426f8714b1f65d2fb7" - integrity sha512-x2Z7lm0ZhHYqMybvkaI5hDKfBkaLaXhTDfgrLl9TmBZ3QHO4fIHgeL82VZ90Paol+OS+jdq2AheLmzbSxv3HrA== - dependencies: - "@aws-sdk/property-provider" "3.6.1" - "@aws-sdk/shared-ini-file-loader" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/node-http-handler@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.186.0.tgz#8be1598a9187637a767dc337bf22fe01461e86eb" - integrity sha512-CbkbDuPZT9UNJ4dAZJWB3BV+Z65wFy7OduqGkzNNrKq6ZYMUfehthhUOTk8vU6RMe/0FkN+J0fFXlBx/bs/cHw== - dependencies: - "@aws-sdk/abort-controller" "3.186.0" - "@aws-sdk/protocol-http" "3.186.0" - "@aws-sdk/querystring-builder" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/node-http-handler@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.6.1.tgz#4b65c4dcc0cf46ba44cb6c3bf29c5f817bb8d9a7" - integrity sha512-6XSaoqbm9ZF6T4UdBCcs/Gn2XclwBotkdjj46AxO+9vRAgZDP+lH/8WwZsvfqJhhRhS0qxWrks98WGJwmaTG8g== - dependencies: - "@aws-sdk/abort-controller" "3.6.1" - "@aws-sdk/protocol-http" "3.6.1" - "@aws-sdk/querystring-builder" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/property-provider@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.186.0.tgz#af41e615662a2749d3ff7da78c41f79f4be95b3b" - integrity sha512-nWKqt36UW3xV23RlHUmat+yevw9up+T+953nfjcmCBKtgWlCWu/aUzewTRhKj3VRscbN+Wer95SBw9Lr/MMOlQ== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/property-provider@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.6.1.tgz#d973fc87d199d32c44d947e17f2ee2dd140a9593" - integrity sha512-2gR2DzDySXKFoj9iXLm1TZBVSvFIikEPJsbRmAZx5RBY+tp1IXWqZM6PESjaLdLg/ZtR0QhW2ZcRn0fyq2JfnQ== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/protocol-http@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.186.0.tgz#99115870846312dd4202b5e2cc68fe39324b9bfa" - integrity sha512-l/KYr/UBDUU5ginqTgHtFfHR3X6ljf/1J1ThIiUg3C3kVC/Zwztm7BEOw8hHRWnWQGU/jYasGYcrcPLdQqFZyQ== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/protocol-http@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.6.1.tgz#d3d276846bec19ddb339d06bbc48116d17bbc656" - integrity sha512-WkQz7ncVYTLvCidDfXWouDzqxgSNPZDz3Bql+7VhZeITnzAEcr4hNMyEqMAVYBVugGmkG2W6YiUqNNs1goOcDA== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/querystring-builder@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.186.0.tgz#a380db0e1c71004932d9e2f3e6dc6761d1165c47" - integrity sha512-mweCpuLufImxfq/rRBTEpjGuB4xhQvbokA+otjnUxlPdIobytLqEs7pCGQfLzQ7+1ZMo8LBXt70RH4A2nSX/JQ== - dependencies: - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-uri-escape" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/querystring-builder@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.6.1.tgz#4c769829a3760ef065d0d3801f297a7f0cd324d4" - integrity sha512-ESe255Yl6vB1AMNqaGSQow3TBYYnpw0AFjE40q2VyiNrkbaqKmW2EzjeCy3wEmB1IfJDHy3O12ZOMUMOnjFT8g== - dependencies: - "@aws-sdk/types" "3.6.1" - "@aws-sdk/util-uri-escape" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/querystring-parser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.186.0.tgz#4db6d31ad4df0d45baa2a35e371fbaa23e45ddd2" - integrity sha512-0iYfEloghzPVXJjmnzHamNx1F1jIiTW9Svy5ZF9LVqyr/uHZcQuiWYsuhWloBMLs8mfWarkZM02WfxZ8buAuhg== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/querystring-parser@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.6.1.tgz#e3fa5a710429c7dd411e802a0b82beb48012cce2" - integrity sha512-hh6dhqamKrWWaDSuO2YULci0RGwJWygoy8hpCRxs/FpzzHIcbm6Cl6Jhrn5eKBzOBv+PhCcYwbfad0kIZZovcQ== - dependencies: - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/service-error-classification@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.186.0.tgz#6e4e1d4b53d68bd28c28d9cf0b3b4cb6a6a59dbb" - integrity sha512-DRl3ORk4tF+jmH5uvftlfaq0IeKKpt0UPAOAFQ/JFWe+TjOcQd/K+VC0iiIG97YFp3aeFmH1JbEgsNxd+8fdxw== - -"@aws-sdk/service-error-classification@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.6.1.tgz#296fe62ac61338341e8a009c9a2dab013a791903" - integrity sha512-kZ7ZhbrN1f+vrSRkTJvXsu7BlOyZgym058nPA745+1RZ1Rtv4Ax8oknf2RvJyj/1qRUi8LBaAREjzQ3C8tmLBA== - -"@aws-sdk/shared-ini-file-loader@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.186.0.tgz#a2d285bb3c4f8d69f7bfbde7a5868740cd3f7795" - integrity sha512-2FZqxmICtwN9CYid4dwfJSz/gGFHyStFQ3HCOQ8DsJUf2yREMSBsVmKqsyWgOrYcQ98gPcD5GIa7QO5yl3XF6A== - dependencies: - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/shared-ini-file-loader@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.6.1.tgz#2b7182cbb0d632ad7c9712bebffdeee24a6f7eb6" - integrity sha512-BnLHtsNLOoow6rPV+QVi6jnovU5g1m0YzoUG0BQYZ1ALyVlWVr0VvlUX30gMDfdYoPMp+DHvF8GXdMuGINq6kQ== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/signature-v4@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.186.0.tgz#bbd56e71af95548abaeec6307ea1dfe7bd26b4e4" - integrity sha512-18i96P5c4suMqwSNhnEOqhq4doqqyjH4fn0YV3F8TkekHPIWP4mtIJ0PWAN4eievqdtcKgD/GqVO6FaJG9texw== - dependencies: - "@aws-sdk/is-array-buffer" "3.186.0" - "@aws-sdk/types" "3.186.0" - "@aws-sdk/util-hex-encoding" "3.186.0" - "@aws-sdk/util-middleware" "3.186.0" - "@aws-sdk/util-uri-escape" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/signature-v4@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.6.1.tgz#b20a3cf3e891131f83b012651f7d4af2bf240611" - integrity sha512-EAR0qGVL4AgzodZv4t+BSuBfyOXhTNxDxom50IFI1MqidR9vI6avNZKcPHhgXbm7XVcsDGThZKbzQ2q7MZ2NTA== - dependencies: - "@aws-sdk/is-array-buffer" "3.6.1" - "@aws-sdk/types" "3.6.1" - "@aws-sdk/util-hex-encoding" "3.6.1" - "@aws-sdk/util-uri-escape" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/smithy-client@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.186.0.tgz#67514544fb55d7eff46300e1e73311625cf6f916" - integrity sha512-rdAxSFGSnrSprVJ6i1BXi65r4X14cuya6fYe8dSdgmFSa+U2ZevT97lb3tSINCUxBGeMXhENIzbVGkRZuMh+DQ== - dependencies: - "@aws-sdk/middleware-stack" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/smithy-client@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.6.1.tgz#683fef89802e318922f8529a5433592d71a7ce9d" - integrity sha512-AVpRK4/iUxNeDdAm8UqP0ZgtgJMQeWcagTylijwelhWXyXzHUReY1sgILsWcdWnoy6gq845W7K2VBhBleni8+w== - dependencies: - "@aws-sdk/middleware-stack" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/types@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.186.0.tgz#f6fb6997b6a364f399288bfd5cd494bc680ac922" - integrity sha512-NatmSU37U+XauMFJCdFI6nougC20JUFZar+ump5wVv0i54H+2Refg1YbFDxSs0FY28TSB9jfhWIpfFBmXgL5MQ== - -"@aws-sdk/types@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.6.1.tgz#00686db69e998b521fcd4a5f81ef0960980f80c4" - integrity sha512-4Dx3eRTrUHLxhFdLJL8zdNGzVsJfAxtxPYYGmIddUkO2Gj3WA1TGjdfG4XN/ClI6e1XonCHafQX3UYO/mgnH3g== - -"@aws-sdk/types@^3.1.0": - version "3.78.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.78.0.tgz#51dc80b2142ee20821fb9f476bdca6e541021443" - integrity sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ== - -"@aws-sdk/url-parser-native@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser-native/-/url-parser-native-3.6.1.tgz#a5e787f98aafa777e73007f9490df334ef3389a2" - integrity sha512-3O+ktsrJoE8YQCho9L41YXO8EWILXrSeES7amUaV3mgIV5w4S3SB/r4RkmylpqRpQF7Ry8LFiAnMqH1wa4WBPA== - dependencies: - "@aws-sdk/querystring-parser" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - url "^0.11.0" - -"@aws-sdk/url-parser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.186.0.tgz#e42f845cd405c1920fdbdcc796a350d4ace16ae9" - integrity sha512-jfdJkKqJZp8qjjwEjIGDqbqTuajBsddw02f86WiL8bPqD8W13/hdqbG4Fpwc+Bm6GwR6/4MY6xWXFnk8jDUKeA== - dependencies: - "@aws-sdk/querystring-parser" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/url-parser@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.6.1.tgz#f5d89fb21680469a61cb9fe08a7da3ef887884dd" - integrity sha512-pWFIePDx0PMCleQRsQDWoDl17YiijOLj0ZobN39rQt+wv5PhLSZDz9PgJsqS48nZ6hqsKgipRcjiBMhn5NtFcQ== - dependencies: - "@aws-sdk/querystring-parser" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/util-base64-browser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.186.0.tgz#0310482752163fa819718ce9ea9250836b20346d" - integrity sha512-TpQL8opoFfzTwUDxKeon/vuc83kGXpYqjl6hR8WzmHoQgmFfdFlV+0KXZOohra1001OP3FhqvMqaYbO8p9vXVQ== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-base64-browser@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.6.1.tgz#eddea1311b41037fc3fddd889d3e0a9882363215" - integrity sha512-+DHAIgt0AFARDVC7J0Z9FkSmJhBMlkYdOPeAAgO0WaQoKj7rtsLQJ7P3v3aS1paKN5/sk5xNY7ziVB6uHtOvHA== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/util-base64-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.186.0.tgz#500bd04b1ef7a6a5c0a2d11c0957a415922e05c7" - integrity sha512-wH5Y/EQNBfGS4VkkmiMyZXU+Ak6VCoFM1GKWopV+sj03zR2D4FHexi4SxWwEBMpZCd6foMtihhbNBuPA5fnh6w== - dependencies: - "@aws-sdk/util-buffer-from" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/util-base64-node@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.6.1.tgz#a79c233861e50d3a30728c72b736afdee07d4009" - integrity sha512-oiqzpsvtTSS92+cL3ykhGd7t3qBJKeHvrgOwUyEf1wFWHQ2DPJR+dIMy5rMFRXWLKCl3w7IddY2rJCkLYMjaqQ== - dependencies: - "@aws-sdk/util-buffer-from" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/util-body-length-browser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.186.0.tgz#a898eda9f874f6974a9c5c60fcc76bcb6beac820" - integrity sha512-zKtjkI/dkj9oGkjo+7fIz+I9KuHrVt1ROAeL4OmDESS8UZi3/O8uMDFMuCp8jft6H+WFuYH6qRVWAVwXMiasXw== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-body-length-browser@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.6.1.tgz#2e8088f2d9a5a8258b4f56079a8890f538c2797e" - integrity sha512-IdWwE3rm/CFDk2F+IwTZOFTnnNW5SB8y1lWiQ54cfc7y03hO6jmXNnpZGZ5goHhT+vf1oheNQt1J47m0pM/Irw== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/util-body-length-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.186.0.tgz#95efbacbd13cb739b942c126c5d16ecf6712d4db" - integrity sha512-U7Ii8u8Wvu9EnBWKKeuwkdrWto3c0j7LG677Spe6vtwWkvY70n9WGfiKHTgBpVeLNv8jvfcx5+H0UOPQK1o9SQ== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-body-length-node@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.6.1.tgz#6e4f2eae46c5a7b0417a12ca7f4b54c390d4cacd" - integrity sha512-CUG3gc18bSOsqViQhB3M4AlLpAWV47RE6yWJ6rLD0J6/rSuzbwbjzxM39q0YTAVuSo/ivdbij+G9c3QCirC+QQ== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/util-buffer-from@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.186.0.tgz#01f7edb683d2f40374d0ca8ef2d16346dc8040a1" - integrity sha512-be2GCk2lsLWg/2V5Y+S4/9pOMXhOQo4DR4dIqBdR2R+jrMMHN9Xsr5QrkT6chcqLaJ/SBlwiAEEi3StMRmCOXA== - dependencies: - "@aws-sdk/is-array-buffer" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/util-buffer-from@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.6.1.tgz#24184ce74512f764d84002201b7f5101565e26f9" - integrity sha512-OGUh2B5NY4h7iRabqeZ+EgsrzE1LUmNFzMyhoZv0tO4NExyfQjxIYXLQQvydeOq9DJUbCw+yrRZrj8vXNDQG+g== - dependencies: - "@aws-sdk/is-array-buffer" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/util-config-provider@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.186.0.tgz#52ce3711edceadfac1b75fccc7c615e90c33fb2f" - integrity sha512-71Qwu/PN02XsRLApyxG0EUy/NxWh/CXxtl2C7qY14t+KTiRapwbDkdJ1cMsqYqghYP4BwJoj1M+EFMQSSlkZQQ== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-defaults-mode-browser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.186.0.tgz#d30b2f572e273d7d98287274c37c9ee00b493507" - integrity sha512-U8GOfIdQ0dZ7RRVpPynGteAHx4URtEh+JfWHHVfS6xLPthPHWTbyRhkQX++K/F8Jk+T5U8Anrrqlea4TlcO2DA== - dependencies: - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/types" "3.186.0" - bowser "^2.11.0" - tslib "^2.3.1" - -"@aws-sdk/util-defaults-mode-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.186.0.tgz#8572453ba910fd2ab08d2cfee130ce5a0db83ba7" - integrity sha512-N6O5bpwCiE4z8y7SPHd7KYlszmNOYREa+mMgtOIXRU3VXSEHVKVWTZsHKvNTTHpW0qMqtgIvjvXCo3vsch5l3A== +"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" + integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== dependencies: - "@aws-sdk/config-resolver" "3.186.0" - "@aws-sdk/credential-provider-imds" "3.186.0" - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/property-provider" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" -"@aws-sdk/util-hex-encoding@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.186.0.tgz#7ed58b923997c6265f4dce60c8704237edb98895" - integrity sha512-UL9rdgIZz1E/jpAfaKH8QgUxNK9VP5JPgoR0bSiaefMjnsoBh0x/VVMsfUyziOoJCMLebhJzFowtwrSKEGsxNg== +"@aws-crypto/supports-web-crypto@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" + integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== dependencies: - tslib "^2.3.1" + tslib "^2.6.2" -"@aws-sdk/util-hex-encoding@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.6.1.tgz#84954fcc47b74ffbd2911ba5113e93bd9b1c6510" - integrity sha512-pzsGOHtU2eGca4NJgFg94lLaeXDOg8pcS9sVt4f9LmtUGbrqRveeyBv0XlkHeZW2n0IZBssPHipVYQFlk7iaRA== - dependencies: - tslib "^1.8.0" +"@aws-crypto/util@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" + integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-firehose@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-firehose/-/client-firehose-3.621.0.tgz#2bfb5bc59808dde055ccc18fcb89f6322326729a" + integrity sha512-XAjAkXdb35PDvBYph609Fxn4g00HYH/U6N4+KjF9gLQrdTU+wkjf3D9YD02DZNbApJVcu4eIxWh/8M25YkW02A== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.621.0" + "@aws-sdk/client-sts" "3.621.0" + "@aws-sdk/core" "3.621.0" + "@aws-sdk/credential-provider-node" "3.621.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.620.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.1" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.13" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.13" + "@smithy/util-defaults-mode-node" "^3.0.13" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-kinesis@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-kinesis/-/client-kinesis-3.621.0.tgz#3af1e18622638d20cd0fa3df5182978cb130ab86" + integrity sha512-53Omt/beFmTQPjQNpMuPMk5nMzYVsXCRiO+MeqygZEKYG1fWw/UGluCWVbi7WjClOHacsW8lQcsqIRvkPDFNag== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.621.0" + "@aws-sdk/client-sts" "3.621.0" + "@aws-sdk/core" "3.621.0" + "@aws-sdk/credential-provider-node" "3.621.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.620.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.1" + "@smithy/eventstream-serde-browser" "^3.0.5" + "@smithy/eventstream-serde-config-resolver" "^3.0.3" + "@smithy/eventstream-serde-node" "^3.0.4" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.13" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.13" + "@smithy/util-defaults-mode-node" "^3.0.13" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-personalize-events@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-personalize-events/-/client-personalize-events-3.621.0.tgz#f061e00d2dc75b1165ace8280879119e78f9a577" + integrity sha512-qkVkqYvOe3WVuVNL/gRITGYFfHJCx2ijGFK7H3hNUJH3P4AwskmouAd1pWf+3cbGedRnj2is7iw7E602LeJIHA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.621.0" + "@aws-sdk/client-sts" "3.621.0" + "@aws-sdk/core" "3.621.0" + "@aws-sdk/credential-provider-node" "3.621.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.620.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.1" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.13" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.13" + "@smithy/util-defaults-mode-node" "^3.0.13" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso-oidc@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.621.0.tgz#3fa3d468fbebbd93a5f75c1d51b63cc7af3ef17b" + integrity sha512-mMjk3mFUwV2Y68POf1BQMTF+F6qxt5tPu6daEUCNGC9Cenk3h2YXQQoS4/eSyYzuBiYk3vx49VgleRvdvkg8rg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.621.0" + "@aws-sdk/credential-provider-node" "3.621.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.620.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.1" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.13" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.13" + "@smithy/util-defaults-mode-node" "^3.0.13" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.621.0.tgz#c0eefeb9adcbc6bb7c91c32070404c8c91846825" + integrity sha512-xpKfikN4u0BaUYZA9FGUMkkDmfoIP0Q03+A86WjqDWhcOoqNA1DkHsE4kZ+r064ifkPUfcNuUvlkVTEoBZoFjA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.621.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.620.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.1" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.13" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.13" + "@smithy/util-defaults-mode-node" "^3.0.13" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sts@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.621.0.tgz#2994f601790893901704c5df56c837e89f279952" + integrity sha512-707uiuReSt+nAx6d0c21xLjLm2lxeKc7padxjv92CIrIocnQSlJPxSCM7r5zBhwiahJA6MNQwmTl2xznU67KgA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.621.0" + "@aws-sdk/core" "3.621.0" + "@aws-sdk/credential-provider-node" "3.621.0" + "@aws-sdk/middleware-host-header" "3.620.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.620.0" + "@aws-sdk/middleware-user-agent" "3.620.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.3.1" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.5" + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.13" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.13" + "@smithy/util-defaults-mode-node" "^3.0.13" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/core@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.621.0.tgz#e38c56c3ce0c819ca1185eaabcb98412429aaca3" + integrity sha512-CtOwWmDdEiINkGXD93iGfXjN0WmCp9l45cDWHHGa8lRgEDyhuL7bwd/pH5aSzj0j8SiQBG2k0S7DHbd5RaqvbQ== + dependencies: + "@smithy/core" "^2.3.1" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/signature-v4" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/util-middleware" "^3.0.3" + fast-xml-parser "4.4.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@3.620.1": + version "3.620.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz#d4692c49a65ebc11dae3f7f8b053fee9268a953c" + integrity sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.621.0.tgz#5f944bf548f203d842cf71a5792f73c205544627" + integrity sha512-/jc2tEsdkT1QQAI5Dvoci50DbSxtJrevemwFsm0B73pwCcOQZ5ZwwSdVqGsPutzYzUVx3bcXg3LRL7jLACqRIg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/fetch-http-handler" "^3.2.4" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/property-provider" "^3.1.3" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.11" + "@smithy/types" "^3.3.0" + "@smithy/util-stream" "^3.1.3" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.621.0.tgz#bda2365f88fee40e3ae067b08bf484106c339222" + integrity sha512-0EWVnSc+JQn5HLnF5Xv405M8n4zfdx9gyGdpnCmAmFqEDHA8LmBdxJdpUk1Ovp/I5oPANhjojxabIW5f1uU0RA== + dependencies: + "@aws-sdk/credential-provider-env" "3.620.1" + "@aws-sdk/credential-provider-http" "3.621.0" + "@aws-sdk/credential-provider-process" "3.620.1" + "@aws-sdk/credential-provider-sso" "3.621.0" + "@aws-sdk/credential-provider-web-identity" "3.621.0" + "@aws-sdk/types" "3.609.0" + "@smithy/credential-provider-imds" "^3.2.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.621.0.tgz#9cc5052760a9f9d70d70f12ddbdbf0d59bf13a47" + integrity sha512-4JqpccUgz5Snanpt2+53hbOBbJQrSFq7E1sAAbgY6BKVQUsW5qyXqnjvSF32kDeKa5JpBl3bBWLZl04IadcPHw== + dependencies: + "@aws-sdk/credential-provider-env" "3.620.1" + "@aws-sdk/credential-provider-http" "3.621.0" + "@aws-sdk/credential-provider-ini" "3.621.0" + "@aws-sdk/credential-provider-process" "3.620.1" + "@aws-sdk/credential-provider-sso" "3.621.0" + "@aws-sdk/credential-provider-web-identity" "3.621.0" + "@aws-sdk/types" "3.609.0" + "@smithy/credential-provider-imds" "^3.2.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@3.620.1": + version "3.620.1" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz#10387cf85400420bb4bbda9cc56937dcc6d6d0ee" + integrity sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.621.0.tgz#710f413708cb372f9f94e8eb9726cf263ffd83e3" + integrity sha512-Kza0jcFeA/GEL6xJlzR2KFf1PfZKMFnxfGzJzl5yN7EjoGdMijl34KaRyVnfRjnCWcsUpBWKNIDk9WZVMY9yiw== + dependencies: + "@aws-sdk/client-sso" "3.621.0" + "@aws-sdk/token-providers" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@3.621.0": + version "3.621.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz#b25878c0a05dad60cd5f91e7e5a31a145c2f14be" + integrity sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-host-header@3.620.0": + version "3.620.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz#b561d419a08a984ba364c193376b482ff5224d74" + integrity sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-logger@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" + integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.620.0": + version "3.620.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz#f8270dfff843fd756be971e5673f89c6a24c6513" + integrity sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.620.0": + version "3.620.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.620.0.tgz#1fe3104f04f576a942cf0469bfbd73c38eef3d9e" + integrity sha512-bvS6etn+KsuL32ubY5D3xNof1qkenpbJXf/ugGXbg0n98DvDFQ/F+SMLxHgbnER5dsKYchNnhmtI6/FC3HFu/A== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/region-config-resolver@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" + integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.3" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" + integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/types@3.387.0": + version "3.387.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.387.0.tgz#15a968344956b2587dbab1224718d72329e050f4" + integrity sha512-YTjFabNwjTF+6yl88f0/tWff018qmmgMmjlw45s6sdVKueWxdxV68U7gepNLF2nhaQPZa6FDOBoA51NaviVs0Q== + dependencies: + "@smithy/types" "^2.1.0" + tslib "^2.5.0" + +"@aws-sdk/types@3.398.0": + version "3.398.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.398.0.tgz#8ce02559536670f9188cddfce32e9dd12b4fe965" + integrity sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ== + dependencies: + "@smithy/types" "^2.2.2" + tslib "^2.5.0" + +"@aws-sdk/types@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" + integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/types@^3.222.0": + version "3.664.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.664.0.tgz#e6de1c0a2cdfe4f1e43271223dc0b55e613ced58" + integrity sha512-+GtXktvVgpreM2b+NJL9OqZGsOzHwlCUrO8jgQUvH/yA6Kd8QO2YFhQCp0C9sSzTteZJVqGBu8E0CQurxJHPbw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@aws-sdk/util-endpoints@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" + integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + "@smithy/util-endpoints" "^2.0.5" + tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": version "3.55.0" @@ -1749,108 +693,25 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/util-middleware@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.186.0.tgz#ba2e286b206cbead306b6d2564f9d0495f384b40" - integrity sha512-fddwDgXtnHyL9mEZ4s1tBBsKnVQHqTUmFbZKUUKPrg9CxOh0Y/zZxEa5Olg/8dS/LzM1tvg0ATkcyd4/kEHIhg== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-uri-escape@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.186.0.tgz#1752a93dfe58ec88196edb6929806807fd8986da" - integrity sha512-imtOrJFpIZAipAg8VmRqYwv1G/x4xzyoxOJ48ZSn1/ZGnKEEnB6n6E9gwYRebi4mlRuMSVeZwCPLq0ey5hReeQ== +"@aws-sdk/util-user-agent-browser@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" + integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-uri-escape@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.6.1.tgz#433e87458bb510d0e457a86c0acf12b046a5068c" - integrity sha512-tgABiT71r0ScRJZ1pMX0xO0QPMMiISCtumph50IU5VDyZWYgeIxqkMhIcrL1lX0QbNCMgX0n6rZxGrrbjDNavA== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/util-user-agent-browser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.186.0.tgz#02e214887d30a69176c6a6c2d6903ce774b013b4" - integrity sha512-fbRcTTutMk4YXY3A2LePI4jWSIeHOT8DaYavpc/9Xshz/WH9RTGMmokeVOcClRNBeDSi5cELPJJ7gx6SFD3ZlQ== - dependencies: - "@aws-sdk/types" "3.186.0" - bowser "^2.11.0" - tslib "^2.3.1" - -"@aws-sdk/util-user-agent-browser@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.6.1.tgz#11b9cc8743392761adb304460f4b54ec8acc2ee6" - integrity sha512-KhJ4VED4QpuBVPXoTjb5LqspX1xHWJTuL8hbPrKfxj+cAaRRW2CNEe7PPy2CfuHtPzP3dU3urtGTachbwNb0jg== - dependencies: - "@aws-sdk/types" "3.6.1" + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" bowser "^2.11.0" - tslib "^1.8.0" - -"@aws-sdk/util-user-agent-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.186.0.tgz#1ef74973442c8650c7b64ff2fd15cf3c09d8c004" - integrity sha512-oWZR7hN6NtOgnT6fUvHaafgbipQc2xJCRB93XHiF9aZGptGNLJzznIOP7uURdn0bTnF73ejbUXWLQIm8/6ue6w== - dependencies: - "@aws-sdk/node-config-provider" "3.186.0" - "@aws-sdk/types" "3.186.0" - tslib "^2.3.1" + tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.6.1.tgz#98384095fa67d098ae7dd26f3ccaad028e8aebb6" - integrity sha512-PWwL5EDRwhkXX40m5jjgttlBmLA7vDhHBen1Jcle0RPIDFRVPSE7GgvLF3y4r3SNH0WD6hxqadT50bHQynXW6w== +"@aws-sdk/util-user-agent-node@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" + integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== dependencies: - "@aws-sdk/node-config-provider" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/util-utf8-browser@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.186.0.tgz#5fee6385cfc3effa2be704edc2998abfd6633082" - integrity sha512-n+IdFYF/4qT2WxhMOCeig8LndDggaYHw3BJJtfIBZRiS16lgwcGYvOUmhCkn0aSlG1f/eyg9YZHQG0iz9eLdHQ== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-utf8-browser@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.6.1.tgz#97a8770cae9d29218adc0f32c7798350261377c7" - integrity sha512-gZPySY6JU5gswnw3nGOEHl3tYE7vPKvtXGYoS2NRabfDKRejFvu+4/nNW6SSpoOxk6LSXsrWB39NO51k+G4PVA== - dependencies: - tslib "^1.8.0" - -"@aws-sdk/util-utf8-browser@^3.0.0": - version "3.55.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.55.0.tgz#a045bf1a93f6e0ff9c846631b168ea55bbb37668" - integrity sha512-ljzqJcyjfJpEVSIAxwtIS8xMRUly84BdjlBXyp6cu4G8TUufgjNS31LWdhyGhgmW5vYBNr+LTz0Kwf6J+ou7Ug== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-utf8-node@3.186.0": - version "3.186.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.186.0.tgz#722d9b0f5675ae2e9d79cf67322126d9c9d8d3d8" - integrity sha512-7qlE0dOVdjuRbZTb7HFywnHHCrsN7AeQiTnsWT63mjXGDbPeUWQQw3TrdI20um3cxZXnKoeudGq8K6zbXyQ4iA== - dependencies: - "@aws-sdk/util-buffer-from" "3.186.0" - tslib "^2.3.1" - -"@aws-sdk/util-utf8-node@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.6.1.tgz#18534c2069b61f5739ee4cdc70060c9f4b4c4c4f" - integrity sha512-4s0vYfMUn74XLn13rUUhNsmuPMh0j1d4rF58wXtjlVUU78THxonnN8mbCLC48fI3fKDHTmDDkeEqy7+IWP9VyA== - dependencies: - "@aws-sdk/util-buffer-from" "3.6.1" - tslib "^1.8.0" - -"@aws-sdk/util-waiter@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.6.1.tgz#5c66c2da33ff98468726fefddc2ca7ac3352c17d" - integrity sha512-CQMRteoxW1XZSzPBVrTsOTnfzsEGs8N/xZ8BuBnXLBjoIQmRKVxIH9lgphm1ohCtVHoSWf28XH/KoOPFULQ4Tg== - dependencies: - "@aws-sdk/abort-controller" "3.6.1" - "@aws-sdk/types" "3.6.1" - tslib "^1.8.0" + "@aws-sdk/types" "3.609.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7": version "7.16.7" @@ -1883,6 +744,14 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" +"@babel/code-frame@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" + integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== + dependencies: + "@babel/highlight" "^7.25.7" + picocolors "^1.0.0" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" @@ -1893,6 +762,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== +"@babel/compat-data@^7.25.7": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.8.tgz#0376e83df5ab0eb0da18885c0140041f0747a402" + integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA== + "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.13.16": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" @@ -1914,7 +788,7 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/core@^7.11.6", "@babel/core@^7.24.5": +"@babel/core@^7.11.6": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== @@ -1935,6 +809,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.25.2": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.8.tgz#a57137d2a51bbcffcfaeba43cb4dd33ae3e0e1c6" + integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.7" + "@babel/helpers" "^7.25.7" + "@babel/parser" "^7.25.8" + "@babel/template" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.8" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.17.9": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" @@ -1974,6 +869,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" + integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== + dependencies: + "@babel/types" "^7.25.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -2010,6 +915,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" + integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A== + dependencies: + "@babel/compat-data" "^7.25.7" + "@babel/helper-validator-option" "^7.25.7" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" @@ -2138,6 +1054,14 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helper-module-imports@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" + integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" @@ -2163,6 +1087,16 @@ "@babel/helper-split-export-declaration" "^7.24.7" "@babel/helper-validator-identifier" "^7.24.7" +"@babel/helper-module-transforms@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" + integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ== + dependencies: + "@babel/helper-module-imports" "^7.25.7" + "@babel/helper-simple-access" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" @@ -2180,10 +1114,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== -"@babel/helper-plugin-utils@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" - integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== +"@babel/helper-plugin-utils@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" + integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" @@ -2220,6 +1154,14 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helper-simple-access@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0" + integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" @@ -2270,6 +1212,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== +"@babel/helper-string-parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" + integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" @@ -2290,6 +1237,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== +"@babel/helper-validator-identifier@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5" + integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" @@ -2300,6 +1252,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== +"@babel/helper-validator-option@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729" + integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== + "@babel/helper-wrap-function@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" @@ -2327,6 +1284,14 @@ "@babel/template" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helpers@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2" + integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA== + dependencies: + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/highlight@^7.16.7": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" @@ -2365,6 +1330,16 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/highlight@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" + integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": version "7.17.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" @@ -2385,6 +1360,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== +"@babel/parser@^7.25.7", "@babel/parser@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2" + integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ== + dependencies: + "@babel/types" "^7.25.8" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" @@ -2847,19 +1829,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-react-jsx-self@^7.24.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz#66bff0248ea0b549972e733516ffad577477bdab" - integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== +"@babel/plugin-transform-react-jsx-self@^7.24.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.7.tgz#3d11df143131fd8f5486a1f7d3839890f88f8c85" + integrity sha512-JD9MUnLbPL0WdVK8AWC7F7tTG2OS6u/AKKnsK+NdRhUiVdnzyR1S3kKQCaRLOiaULvUiqK6Z4JQE635VgtCFeg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.7" -"@babel/plugin-transform-react-jsx-source@^7.24.1": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz#1198aab2548ad19582013815c938d3ebd8291ee3" - integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== +"@babel/plugin-transform-react-jsx-source@^7.24.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.7.tgz#a0d8372310d5ea5b0447dfa03a8485f960eff7be" + integrity sha512-S/JXG/KrbIY06iyJPKfxr0qRxnhNOdkNXYBl/rmwgDd72cQLH9tEGkDm/yJPGvcSIUoikzfjMios9i+xT/uv9w== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-transform-react-jsx@^7.13.12": version "7.17.3" @@ -3094,6 +2076,15 @@ "@babel/parser" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/template@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" + integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" @@ -3126,6 +2117,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" + integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + debug "^4.3.1" + globals "^11.1.0" + "@babel/traverse@^7.7.2": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" @@ -3177,6 +2181,15 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@babel/types@^7.25.7", "@babel/types@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1" + integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg== + dependencies: + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -3765,23 +2778,6 @@ resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32" integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== -"@emotion/babel-plugin@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" - integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.2.0" - "@emotion/babel-plugin@^11.12.0": version "11.12.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" @@ -3799,22 +2795,17 @@ source-map "^0.5.7" stylis "4.2.0" -"@emotion/cache@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== +"@emotion/cache@^11.13.0": + version "11.13.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7" + integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw== dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/sheet" "^1.2.2" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" stylis "4.2.0" -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - "@emotion/hash@^0.9.2": version "0.9.2" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" @@ -3839,41 +2830,25 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - "@emotion/memoize@^0.9.0": version "0.9.0" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.11.4": - version "11.11.4" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d" - integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw== +"@emotion/react@^11.13.3": + version "11.13.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4" + integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg== dependencies: "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/babel-plugin" "^11.12.0" + "@emotion/cache" "^11.13.0" + "@emotion/serialize" "^1.3.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451" - integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" - "@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.0.tgz#e07cadfc967a4e7816e0c3ffaff4c6ce05cb598d" @@ -3885,10 +2860,21 @@ "@emotion/utils" "^1.4.0" csstype "^3.0.2" -"@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/serialize@^1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a" + integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA== + dependencies: + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.1" + csstype "^3.0.2" + +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== "@emotion/styled@^11.13.0": version "11.13.0" @@ -3902,40 +2888,35 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" "@emotion/utils" "^1.4.0" -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== "@emotion/unitless@^0.9.0": version "0.9.0" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.9.0.tgz#8e5548f072bd67b8271877e51c0f95c76a66cbe2" integrity sha512-TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZQ== -"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - "@emotion/use-insertion-effect-with-fallbacks@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf" integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw== -"@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - "@emotion/utils@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.0.tgz#262f1d02aaedb2ec91c83a0955dd47822ad5fbdd" integrity sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ== -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/utils@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad" + integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA== + +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== "@esbuild/aix-ppc64@0.21.5": version "0.21.5" @@ -4383,6 +3364,95 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@parcel/watcher-android-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a" + integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ== + +"@parcel/watcher-darwin-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f" + integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw== + +"@parcel/watcher-darwin-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb" + integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA== + +"@parcel/watcher-freebsd-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82" + integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw== + +"@parcel/watcher-linux-arm-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42" + integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA== + +"@parcel/watcher-linux-arm-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4" + integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA== + +"@parcel/watcher-linux-arm64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03" + integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA== + +"@parcel/watcher-linux-arm64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732" + integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q== + +"@parcel/watcher-linux-x64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d" + integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw== + +"@parcel/watcher-linux-x64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef" + integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA== + +"@parcel/watcher-win32-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154" + integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig== + +"@parcel/watcher-win32-ia32@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220" + integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA== + +"@parcel/watcher-win32-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7" + integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw== + +"@parcel/watcher@^2.4.1": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10" + integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.0" + "@parcel/watcher-darwin-arm64" "2.5.0" + "@parcel/watcher-darwin-x64" "2.5.0" + "@parcel/watcher-freebsd-x64" "2.5.0" + "@parcel/watcher-linux-arm-glibc" "2.5.0" + "@parcel/watcher-linux-arm-musl" "2.5.0" + "@parcel/watcher-linux-arm64-glibc" "2.5.0" + "@parcel/watcher-linux-arm64-musl" "2.5.0" + "@parcel/watcher-linux-x64-glibc" "2.5.0" + "@parcel/watcher-linux-x64-musl" "2.5.0" + "@parcel/watcher-win32-arm64" "2.5.0" + "@parcel/watcher-win32-ia32" "2.5.0" + "@parcel/watcher-win32-x64" "2.5.0" + "@popperjs/core@^2.4.4", "@popperjs/core@^2.9.3": version "2.11.5" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64" @@ -4431,90 +3501,90 @@ prop-types "^15.7.2" tslib "^2.1.0" -"@remix-run/router@1.18.0": - version "1.18.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.18.0.tgz#20b033d1f542a100c1d57cfd18ecf442d1784732" - integrity sha512-L3jkqmqoSVBVKHfpGZmLrex0lxR5SucGA0sUfFzGctehw+S/ggL9L/0NnC5mw6P8HUWpFZ3nQw3cRApjjWx9Sw== - -"@rollup/rollup-android-arm-eabi@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz#1a32112822660ee104c5dd3a7c595e26100d4c2d" - integrity sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ== - -"@rollup/rollup-android-arm64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz#5aeef206d65ff4db423f3a93f71af91b28662c5b" - integrity sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw== - -"@rollup/rollup-darwin-arm64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz#6b66aaf003c70454c292cd5f0236ebdc6ffbdf1a" - integrity sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw== - -"@rollup/rollup-darwin-x64@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz#f64fc51ed12b19f883131ccbcea59fc68cbd6c0b" - integrity sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz#1a7641111be67c10111f7122d1e375d1226cbf14" - integrity sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A== - -"@rollup/rollup-linux-arm-musleabihf@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz#c93fd632923e0fee25aacd2ae414288d0b7455bb" - integrity sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg== - -"@rollup/rollup-linux-arm64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz#fa531425dd21d058a630947527b4612d9d0b4a4a" - integrity sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A== - -"@rollup/rollup-linux-arm64-musl@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz#8acc16f095ceea5854caf7b07e73f7d1802ac5af" - integrity sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA== - -"@rollup/rollup-linux-powerpc64le-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz#94e69a8499b5cf368911b83a44bb230782aeb571" - integrity sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ== - -"@rollup/rollup-linux-riscv64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz#7ef1c781c7e59e85a6ce261cc95d7f1e0b56db0f" - integrity sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg== - -"@rollup/rollup-linux-s390x-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz#f15775841c3232fca9b78cd25a7a0512c694b354" - integrity sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g== - -"@rollup/rollup-linux-x64-gnu@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz#b521d271798d037ad70c9f85dd97d25f8a52e811" - integrity sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ== - -"@rollup/rollup-linux-x64-musl@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz#9254019cc4baac35800991315d133cc9fd1bf385" - integrity sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q== - -"@rollup/rollup-win32-arm64-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz#27f65a89f6f52ee9426ec11e3571038e4671790f" - integrity sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA== - -"@rollup/rollup-win32-ia32-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz#a2fbf8246ed0bb014f078ca34ae6b377a90cb411" - integrity sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ== - -"@rollup/rollup-win32-x64-msvc@4.17.2": - version "4.17.2" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz#5a2d08b81e8064b34242d5cc9973ef8dd1e60503" - integrity sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w== +"@remix-run/router@1.20.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.20.0.tgz#03554155b45d8b529adf635b2f6ad1165d70d8b4" + integrity sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg== + +"@rollup/rollup-android-arm-eabi@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.0.tgz#e8c16c336f060b4cb592f62eb4f0e543d79d51fe" + integrity sha512-/IZQvg6ZR0tAkEi4tdXOraQoWeJy9gbQ/cx4I7k9dJaCk9qrXEcdouxRVz5kZXt5C2bQ9pILoAA+KB4C/d3pfw== + +"@rollup/rollup-android-arm64@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.0.tgz#7a44160a14017fa744912d7037c7d81d6f8a46e7" + integrity sha512-ETHi4bxrYnvOtXeM7d4V4kZWixib2jddFacJjsOjwbgYSRsyXYtZHC4ht134OsslPIcnkqT+TKV4eU8rNBKyyQ== + +"@rollup/rollup-darwin-arm64@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.0.tgz#6122dc37d4a09521d8abe18925956d3b46cfbac9" + integrity sha512-ZWgARzhSKE+gVUX7QWaECoRQsPwaD8ZR0Oxb3aUpzdErTvlEadfQpORPXkKSdKbFci9v8MJfkTtoEHnnW9Ulng== + +"@rollup/rollup-darwin-x64@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.0.tgz#453f345899cbf544aa0d6f5808d24d2e42f605b7" + integrity sha512-h0ZAtOfHyio8Az6cwIGS+nHUfRMWBDO5jXB8PQCARVF6Na/G6XS2SFxDl8Oem+S5ZsHQgtsI7RT4JQnI1qrlaw== + +"@rollup/rollup-linux-arm-gnueabihf@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.0.tgz#3a32fa4e80a62a6d733014838b1123fe76b060fe" + integrity sha512-9pxQJSPwFsVi0ttOmqLY4JJ9pg9t1gKhK0JDbV1yUEETSx55fdyCjt39eBQ54OQCzAF0nVGO6LfEH1KnCPvelA== + +"@rollup/rollup-linux-arm-musleabihf@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.0.tgz#55d3953c54419e93efe124882a3103c8a2f65641" + integrity sha512-YJ5Ku5BmNJZb58A4qSEo3JlIG4d3G2lWyBi13ABlXzO41SsdnUKi3HQHe83VpwBVG4jHFTW65jOQb8qyoR+qzg== + +"@rollup/rollup-linux-arm64-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.0.tgz#cd626963b9962baf8e09d792e67b87269a5bcfff" + integrity sha512-U4G4u7f+QCqHlVg1Nlx+qapZy+QoG+NV6ux+upo/T7arNGwKvKP2kmGM4W5QTbdewWFgudQxi3kDNST9GT1/mg== + +"@rollup/rollup-linux-arm64-musl@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.0.tgz#ad209270c9937a27346fce5b0670cbdfb1e6a0a6" + integrity sha512-aQpNlKmx3amwkA3a5J6nlXSahE1ijl0L9KuIjVOUhfOh7uw2S4piR3mtpxpRtbnK809SBtyPsM9q15CPTsY7HQ== + +"@rollup/rollup-linux-powerpc64le-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.0.tgz#fdd173929a5bba8b7e8b37314380213d9604088f" + integrity sha512-9fx6Zj/7vve/Fp4iexUFRKb5+RjLCff6YTRQl4CoDhdMfDoobWmhAxQWV3NfShMzQk1Q/iCnageFyGfqnsmeqQ== + +"@rollup/rollup-linux-riscv64-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.0.tgz#90b11314fbf45d04083f658e08dc3b32fd713061" + integrity sha512-VWQiCcN7zBgZYLjndIEh5tamtnKg5TGxyZPWcN9zBtXBwfcGSZ5cHSdQZfQH/GB4uRxk0D3VYbOEe/chJhPGLQ== + +"@rollup/rollup-linux-s390x-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.0.tgz#46bb2f1135aeec646b720d6032d7c86915f8b2ec" + integrity sha512-EHmPnPWvyYqncObwqrosb/CpH3GOjE76vWVs0g4hWsDRUVhg61hBmlVg5TPXqF+g+PvIbqkC7i3h8wbn4Gp2Fg== + +"@rollup/rollup-linux-x64-gnu@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.0.tgz#d731a19af5f05eabcba871bda2eeb2fa8c8adb67" + integrity sha512-tsSWy3YQzmpjDKnQ1Vcpy3p9Z+kMFbSIesCdMNgLizDWFhrLZIoN21JSq01g+MZMDFF+Y1+4zxgrlqPjid5ohg== + +"@rollup/rollup-linux-x64-musl@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.0.tgz#5438b2dc38fe467444cf769146098be083022d0f" + integrity sha512-anr1Y11uPOQrpuU8XOikY5lH4Qu94oS6j0xrulHk3NkLDq19MlX8Ng/pVipjxBJ9a2l3+F39REZYyWQFkZ4/fw== + +"@rollup/rollup-win32-arm64-msvc@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.0.tgz#6bd66c198f80c8e7050cfd901701cfb9555d768a" + integrity sha512-7LB+Bh+Ut7cfmO0m244/asvtIGQr5pG5Rvjz/l1Rnz1kDzM02pSX9jPaS0p+90H5I1x4d1FkCew+B7MOnoatNw== + +"@rollup/rollup-win32-ia32-msvc@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.0.tgz#58daea1f1e65143c44c8f3311f30ff8eefa62bae" + integrity sha512-+3qZ4rer7t/QsC5JwMpcvCVPRcJt1cJrYS/TMJZzXIJbxWFQEVhrIc26IhB+5Z9fT9umfVc+Es2mOZgl+7jdJQ== + +"@rollup/rollup-win32-x64-msvc@4.22.0": + version "4.22.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.0.tgz#956948629f6b87de0bdf526b28d940221540bbb6" + integrity sha512-YdicNOSJONVx/vuPkgPTyRoAPx3GbknBZRCOUkK84FJ/YTfs/F0vl/YsMscrB6Y177d+yDRcj+JWMPMCgshwrA== "@sinclair/typebox@^0.24.1": version "0.24.51" @@ -4535,6 +3605,484 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@smithy/abort-controller@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.5.tgz#ca7a86a3c6b20fabe59667143f58d9e198616d14" + integrity sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/config-resolver@^3.0.5", "@smithy/config-resolver@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.9.tgz#dcf4b7747ca481866f9bfac21469ebe2031a599e" + integrity sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + tslib "^2.6.2" + +"@smithy/core@^2.3.1": + version "2.4.8" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.4.8.tgz#397ac17dfa8ad658b77f96f19484f0eeaf22d397" + integrity sha512-x4qWk7p/a4dcf7Vxb2MODIf4OIcqNbK182WxRvZ/3oKPrf/6Fdic5sSElhO1UtXpWKBazWfqg0ZEK9xN1DsuHA== + dependencies: + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-retry" "^3.0.23" + "@smithy/middleware-serde" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^3.2.0", "@smithy/credential-provider-imds@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz#e1a2bfc8a0066f673756ad8735247cf284b9735c" + integrity sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^3.1.6": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.6.tgz#70ca95aad82d5140522eb883fbc140f1f22dcb27" + integrity sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@smithy/types" "^3.5.0" + "@smithy/util-hex-encoding" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-browser@^3.0.5": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.10.tgz#ffca366a4edee5097be5a710f87627a5b2da5dec" + integrity sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.9" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-config-resolver@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.7.tgz#1f352f384665f322e024a1396a7a2cca52fce9e3" + integrity sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-node@^3.0.4": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.9.tgz#e985340093c2ca6587ae2fdd0663e6845fbe9463" + integrity sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.9" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-universal@^3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.9.tgz#1832b190a3018204e33487ba1f7f0f6e2fb0da34" + integrity sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw== + dependencies: + "@smithy/eventstream-codec" "^3.1.6" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^3.2.4", "@smithy/fetch-http-handler@^3.2.9": + version "3.2.9" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz#8d5199c162a37caa37a8b6848eefa9ca58221a0b" + integrity sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A== + dependencies: + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-node@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.7.tgz#03b5a382fb588b8c2bac11b4fe7300aaf1661c88" + integrity sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw== + dependencies: + "@smithy/types" "^3.5.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.7.tgz#b36f258d94498f3c72ab6020091a66fc7cc16eda" + integrity sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" + integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== + dependencies: + tslib "^2.6.2" + +"@smithy/is-array-buffer@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a" + integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== + dependencies: + tslib "^2.6.2" + +"@smithy/md5-js@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-2.0.7.tgz#4dea27b20b065857f953c74dbaa050003f48a374" + integrity sha512-2i2BpXF9pI5D1xekqUsgQ/ohv5+H//G9FlawJrkOJskV18PgJ8LiNbLiskMeYt07yAsSTZR7qtlcAaa/GQLWww== + dependencies: + "@smithy/types" "^2.3.1" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.5.0" + +"@smithy/middleware-content-length@^3.0.5": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.9.tgz#fb613d1a6b8c91e828d11c0d7a0a8576dba89b8b" + integrity sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA== + dependencies: + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^3.1.0", "@smithy/middleware-endpoint@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.4.tgz#222c9fa49c8af6ebf8bea8ab220d92d9b8c90d3d" + integrity sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ== + dependencies: + "@smithy/middleware-serde" "^3.0.7" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + "@smithy/url-parser" "^3.0.7" + "@smithy/util-middleware" "^3.0.7" + tslib "^2.6.2" + +"@smithy/middleware-retry@^3.0.13", "@smithy/middleware-retry@^3.0.23": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.23.tgz#ce5574e278dd14a7995afd5a4ed2a6c9891da8ed" + integrity sha512-x9PbGXxkcXIpm6L26qRSCC+eaYcHwybRmqU8LO/WM2RRlW0g8lz6FIiKbKgGvHuoK3dLZRiQVSQJveiCzwnA5A== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/protocol-http" "^4.1.4" + "@smithy/service-error-classification" "^3.0.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-retry" "^3.0.7" + tslib "^2.6.2" + uuid "^9.0.1" + +"@smithy/middleware-serde@^3.0.3", "@smithy/middleware-serde@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.7.tgz#03f0dda75edffc4cc90ea422349cbfb82368efa7" + integrity sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/middleware-stack@^3.0.3", "@smithy/middleware-stack@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.7.tgz#813fa7b47895ce0d085eac89c056d21b1e46e771" + integrity sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/node-config-provider@^3.1.4", "@smithy/node-config-provider@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz#2c1092040b4062eae0f7c9e121cc00ac6a77efee" + integrity sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q== + dependencies: + "@smithy/property-provider" "^3.1.7" + "@smithy/shared-ini-file-loader" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/node-http-handler@^3.1.4", "@smithy/node-http-handler@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.2.4.tgz#3c57c40d082c3bacac1e49955bd1240e8ccc40b2" + integrity sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ== + dependencies: + "@smithy/abort-controller" "^3.1.5" + "@smithy/protocol-http" "^4.1.4" + "@smithy/querystring-builder" "^3.0.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/property-provider@^3.1.3", "@smithy/property-provider@^3.1.7": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.7.tgz#8a304a4b9110a067a93c784e4c11e175f82da379" + integrity sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/protocol-http@^4.1.0", "@smithy/protocol-http@^4.1.4": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.4.tgz#6940d652b1825bda2422163ec9baab552669a338" + integrity sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/querystring-builder@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.7.tgz#8c443c65f4249ff1637088db1166d18411d41555" + integrity sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw== + dependencies: + "@smithy/types" "^3.5.0" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz#936206d1e6da9d862384dae730b4bad042d6a948" + integrity sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/service-error-classification@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.7.tgz#5bab4ad802d30bd3fa52b8134f6c171582358226" + integrity sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA== + dependencies: + "@smithy/types" "^3.5.0" + +"@smithy/shared-ini-file-loader@^3.1.4", "@smithy/shared-ini-file-loader@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz#7a0bf5f20cfe8e0c4a36d8dcab8194d0d2ee958e" + integrity sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/signature-v4@^4.1.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.0.tgz#291f5a0e756cc251377e1e8af2a1f494e6173029" + integrity sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.7" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^3.1.11", "@smithy/smithy-client@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.4.0.tgz#ceffb92108a4ad60cbede3baf44ed224dc70b333" + integrity sha512-nOfJ1nVQsxiP6srKt43r2My0Gp5PLWCW2ASqUioxIiGmu6d32v4Nekidiv5qOmmtzIrmaD+ADX5SKHUuhReeBQ== + dependencies: + "@smithy/middleware-endpoint" "^3.1.4" + "@smithy/middleware-stack" "^3.0.7" + "@smithy/protocol-http" "^4.1.4" + "@smithy/types" "^3.5.0" + "@smithy/util-stream" "^3.1.9" + tslib "^2.6.2" + +"@smithy/types@^2.1.0", "@smithy/types@^2.2.2", "@smithy/types@^2.3.1": + version "2.12.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-2.12.0.tgz#c44845f8ba07e5e8c88eda5aed7e6a0c462da041" + integrity sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw== + dependencies: + tslib "^2.6.2" + +"@smithy/types@^3.3.0", "@smithy/types@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.5.0.tgz#9589e154c50d9c5d00feb7d818112ef8fc285d6e" + integrity sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^3.0.3", "@smithy/url-parser@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.7.tgz#9d7d7e4e38514bf75ade6e8a30d2300f3db17d1b" + integrity sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA== + dependencies: + "@smithy/querystring-parser" "^3.0.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/util-base64@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017" + integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded" + integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d" + integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^2.0.0", "@smithy/util-buffer-from@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" + integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-buffer-from@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3" + integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe" + integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^3.0.13": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.23.tgz#6920b473126ae8857a04dd6941793bbda12adc8b" + integrity sha512-Y07qslyRtXDP/C5aWKqxTPBl4YxplEELG3xRrz2dnAQ6Lq/FgNrcKWmV561nNaZmFH+EzeGOX3ZRMbU8p1T6Nw== + dependencies: + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + bowser "^2.11.0" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^3.0.13": + version "3.0.23" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.23.tgz#d03d21816e8b2f586ccf4a87cd0b1cc55b4d75e0" + integrity sha512-9Y4WH7f0vnDGuHUa4lGX9e2p+sMwODibsceSV6rfkZOvMC+BY3StB2LdO1NHafpsyHJLpwAgChxQ38tFyd6vkg== + dependencies: + "@smithy/config-resolver" "^3.0.9" + "@smithy/credential-provider-imds" "^3.2.4" + "@smithy/node-config-provider" "^3.1.8" + "@smithy/property-provider" "^3.1.7" + "@smithy/smithy-client" "^3.4.0" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/util-endpoints@^2.0.5": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.3.tgz#7498151e9dc714bdd0c6339314dd2350fa4d250a" + integrity sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw== + dependencies: + "@smithy/node-config-provider" "^3.1.8" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-2.0.0.tgz#0aa3515acd2b005c6d55675e377080a7c513b59e" + integrity sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA== + dependencies: + tslib "^2.5.0" + +"@smithy/util-hex-encoding@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6" + integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^3.0.3", "@smithy/util-middleware@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.7.tgz#770d09749b6d170a1641384a2e961487447446fa" + integrity sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA== + dependencies: + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/util-retry@^3.0.3", "@smithy/util-retry@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.7.tgz#694e0667574ffe9772f620b35d3c7286aced35e9" + integrity sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug== + dependencies: + "@smithy/service-error-classification" "^3.0.7" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + +"@smithy/util-stream@^3.1.3", "@smithy/util-stream@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.9.tgz#d39656eae27696bdc5a3ec7c2f6b89c32dccd1ca" + integrity sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ== + dependencies: + "@smithy/fetch-http-handler" "^3.2.9" + "@smithy/node-http-handler" "^3.2.4" + "@smithy/types" "^3.5.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54" + integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.0.0.tgz#b4da87566ea7757435e153799df9da717262ad42" + integrity sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ== + dependencies: + "@smithy/util-buffer-from" "^2.0.0" + tslib "^2.5.0" + +"@smithy/util-utf8@^2.0.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" + integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-utf8@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a" + integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^3.1.2": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.6.tgz#c65870d0c802e33b96112fac5c4471b3bf2eeecb" + integrity sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ== + dependencies: + "@smithy/abort-controller" "^3.1.5" + "@smithy/types" "^3.5.0" + tslib "^2.6.2" + "@testing-library/dom@^8.0.0": version "8.13.0" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5" @@ -4588,31 +4136,16 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@turf/boolean-clockwise@6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/boolean-clockwise/-/boolean-clockwise-6.5.0.tgz#34573ecc18f900080f00e4ff364631a8b1135794" - integrity sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw== - dependencies: - "@turf/helpers" "^6.5.0" - "@turf/invariant" "^6.5.0" - -"@turf/helpers@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e" - integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw== - -"@turf/invariant@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.5.0.tgz#970afc988023e39c7ccab2341bd06979ddc7463f" - integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg== - dependencies: - "@turf/helpers" "^6.5.0" - "@types/aria-query@^4.2.0": version "4.2.2" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== +"@types/aws-lambda@^8.10.134": + version "8.10.145" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.145.tgz#b2d31a987f4888e5553ff1819f57cafa475594d9" + integrity sha512-dtByW6WiFk5W5Jfgz1VM+YPA21xMXTuSFoLYIDY0L44jDLLflVPtZkYuu3/YxpGcvjzKFBZLU+GyKjR0HOYtyw== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -4657,11 +4190,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/cookie@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803" - integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== - "@types/dompurify@^2.3.3": version "2.3.3" resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-2.3.3.tgz#c24c92f698f77ed9cc9d9fa7888f90cf2bfaa23f" @@ -4742,6 +4270,11 @@ "@types/parse5" "^6.0.3" "@types/tough-cookie" "*" +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/lodash.mergewith@4.6.6": version "4.6.6" resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz#c4698f5b214a433ff35cb2c75ee6ec7f99d79f10" @@ -4754,14 +4287,6 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== -"@types/node-fetch@2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" - integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - "@types/node@*": version "17.0.29" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.29.tgz#7f2e1159231d4a077bb660edab0fde373e375a3d" @@ -4863,6 +4388,11 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== +"@types/uuid@^9.0.0": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== + "@types/warning@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" @@ -4894,14 +4424,14 @@ dependencies: "@types/node" "*" -"@vitejs/plugin-react@^4.3.0": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz#d0be6594051ded8957df555ff07a991fb618b48e" - integrity sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg== +"@vitejs/plugin-react@^4.3.2": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz#28301ac6d7aaf20b73a418ee5c65b05519b4836c" + integrity sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA== dependencies: - "@babel/core" "^7.24.5" - "@babel/plugin-transform-react-jsx-self" "^7.24.5" - "@babel/plugin-transform-react-jsx-source" "^7.24.1" + "@babel/core" "^7.25.2" + "@babel/plugin-transform-react-jsx-self" "^7.24.7" + "@babel/plugin-transform-react-jsx-source" "^7.24.7" "@types/babel__core" "^7.20.5" react-refresh "^0.14.2" @@ -4945,17 +4475,6 @@ agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: dependencies: debug "4" -amazon-cognito-identity-js@6.3.13: - version "6.3.13" - resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.13.tgz#887e42077c4bac9ac66be5a63d81325a7416c5cb" - integrity sha512-AOROAQHQYvXYnhzhB9L1cZdz+linq/xaPTBfXhvXsx1tyhbbzmA7HX8Ap3mKBPsjsG8UWfzDhdRCb7hmH3S14A== - dependencies: - "@aws-crypto/sha256-js" "1.2.2" - buffer "4.9.2" - fast-base64-decode "^1.0.0" - isomorphic-unfetch "^3.0.0" - js-cookie "^2.2.1" - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -4995,7 +4514,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -5069,24 +4588,19 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -aws-amplify@^5.3.19: - version "5.3.19" - resolved "https://registry.yarnpkg.com/aws-amplify/-/aws-amplify-5.3.19.tgz#1d8ec76d3c43f0edb41df867b75fe01570d3c5b4" - integrity sha512-/Sbgow1Zfe5RDnKyVlNZblaDuphz2g7IPBF6w6NKnM1JfuVCREHb5FwKUPr5RzfH8JAdCh/OFiCqhLDk2wo7dw== - dependencies: - "@aws-amplify/analytics" "6.5.12" - "@aws-amplify/api" "5.4.12" - "@aws-amplify/auth" "5.6.12" - "@aws-amplify/cache" "5.1.18" - "@aws-amplify/core" "5.8.12" - "@aws-amplify/datastore" "4.7.12" - "@aws-amplify/geo" "2.3.12" - "@aws-amplify/interactions" "5.2.18" - "@aws-amplify/notifications" "1.6.13" - "@aws-amplify/predictions" "5.5.12" - "@aws-amplify/pubsub" "5.5.12" - "@aws-amplify/storage" "5.9.12" - tslib "^2.0.0" +aws-amplify@^6.6.4: + version "6.6.5" + resolved "https://registry.yarnpkg.com/aws-amplify/-/aws-amplify-6.6.5.tgz#d033d165d9e29fabcb2be79f81f9e5029d6bb755" + integrity sha512-m8NzejjZi5ASY9ynkeEZ1maM+F2Ho1vb4IyM5ZLDPIHz4kk1zOZPIuWAPUbOPu4Q3kDr0jvoBSpq/rfTqa630w== + dependencies: + "@aws-amplify/analytics" "7.0.52" + "@aws-amplify/api" "6.0.54" + "@aws-amplify/auth" "6.5.2" + "@aws-amplify/core" "6.4.5" + "@aws-amplify/datastore" "5.0.54" + "@aws-amplify/notifications" "2.0.52" + "@aws-amplify/storage" "6.6.10" + tslib "^2.5.0" aws-sdk@^2.224.1, aws-sdk@^2.346.0: version "2.1124.0" @@ -5118,15 +4632,6 @@ axe-core@~4.2.1: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.2.4.tgz#626cfbd1827985c5b20a9b9ae5bc3dbe8a3df490" integrity sha512-9AiDKFKUCWEQm1Kj4lcq7KFavLqSXdf2m/zJo+NVh4VXlW5iwXRJ6alkKmipCyYorsRnqsICH9XLubP1jBF+Og== -axios@^1.6.5: - version "1.6.8" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" - integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -5269,11 +4774,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-64@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base-64/-/base-64-1.0.0.tgz#09d0f2084e32a3fd08c2475b973788eee6ae8f4a" - integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== - base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -5302,11 +4802,6 @@ bfj@~7.0.2: hoopy "^0.1.4" tryer "^1.0.1" -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - bl@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -5350,7 +4845,7 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: +braces@^3.0.2, braces@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -5383,6 +4878,16 @@ browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.24.0: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -5409,7 +4914,7 @@ buffer@4.9.2: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0: +buffer@^5.2.1, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -5450,15 +4955,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -5479,6 +4975,11 @@ caniuse-lite@^1.0.30001587: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz#78bb6f35b8fe315b96b8590597094145d0b146b4" integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== +caniuse-lite@^1.0.30001669: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -5529,20 +5030,12 @@ check-types@^11.1.1: resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== -"chokidar@>=3.0.0 <4.0.0": - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" +chokidar@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41" + integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA== + dependencies: + readdirp "^4.0.1" chownr@^1.1.1: version "1.1.4" @@ -5674,11 +5167,6 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -5900,6 +5388,11 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -5966,10 +5459,10 @@ domhandler@5.0.3, domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^2.5.3: - version "2.5.5" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.5.tgz#0540a05b8020d4691ee9c6083fb23b2c919276fc" - integrity sha512-FgbqnEPiv5Vdtwt6Mxl7XSylttCC03cqP5ldNT2z+Kj0nLxPHJH4+1Cyf5Jasxhw93Rl4Oo11qRoUV72fmya2Q== +dompurify@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.7.tgz#6e0d36b9177db5a99f18ade1f28579db5ab839d7" + integrity sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q== domutils@^3.0.1: version "3.0.1" @@ -6000,6 +5493,11 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.776.tgz#1580009f42f9f2ffc1b238e3d8d6e6baa7ca1682" integrity sha512-s694bi3+gUzlliqxjPHpa9NRTlhzTgB34aan+pVKZmOTGy2xoZXl+8E1B8i5p5rtev3PKMK/H4asgNejC+YHNg== +electron-to-chromium@^1.5.41: + version "1.5.41" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz#eae1ba6c49a1a61d84cf8263351d3513b2bcc534" + integrity sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ== + emittery@^0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" @@ -6017,11 +5515,6 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -entities@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - entities@^4.2.0: version "4.3.1" resolved "https://registry.yarnpkg.com/entities/-/entities-4.3.1.tgz#c34062a94c865c322f9d67b4384e4169bcede6a4" @@ -6083,6 +5576,11 @@ escalade@^3.1.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -6151,11 +5649,6 @@ events@1.1.1: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -events@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - exec-sh@^0.3.2: version "0.3.6" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" @@ -6258,11 +5751,6 @@ extract-zip@^2.0.0: optionalDependencies: "@types/yauzl" "^2.9.1" -fast-base64-decode@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" - integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== - fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -6278,17 +5766,17 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-xml-parser@4.2.5: - version "4.2.5" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" - integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== +fast-xml-parser@4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" + integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== dependencies: strnum "^1.0.5" -fast-xml-parser@^4.2.5: - version "4.3.6" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz#190f9d99097f0c8f2d3a0e681a10404afca052ff" - integrity sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw== +fast-xml-parser@^4.4.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" + integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== dependencies: strnum "^1.0.5" @@ -6313,11 +5801,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -fflate@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.3.tgz#288b034ff0e9c380eaa2feff48c787b8371b7fa5" - integrity sha512-0Zz1jOzJWERhyhsimS54VTqOteCNwRtIlh8isdL0AXLo0g7xNTfTL7oWrkmCnPhZGocKIkWHBistBrrpoNH3aw== - file-uri-to-path@2: version "2.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" @@ -6401,25 +5884,11 @@ focus-trap@^4.0.2: tabbable "^3.1.2" xtend "^4.0.1" -follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -6577,13 +6046,6 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - glob@^7.1.3, glob@^7.1.4: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -6838,10 +6300,10 @@ immer@9.0.6: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73" integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ== -immutable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== +immutable@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.2.tgz#bb8a987349a73efbe6b3b292a9cbaf1b530d296b" + integrity sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw== import-fresh@^3.2.1: version "3.3.0" @@ -6918,13 +6380,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -7003,7 +6458,7 @@ is-extendable@^1.0.1: is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -7015,7 +6470,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -7105,14 +6560,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-unfetch@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" - integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== - dependencies: - node-fetch "^2.6.1" - unfetch "^4.2.0" - istanbul-lib-coverage@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" @@ -7657,10 +7104,10 @@ jmespath@0.16.0: resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== -js-cookie@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" - integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -7713,6 +7160,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -7862,7 +7314,7 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== -lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7912,11 +7364,6 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7964,6 +7411,14 @@ micromatch@^4.0.4: braces "^3.0.3" picomatch "^4.0.2" +micromatch@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -8085,6 +7540,11 @@ no-scroll@^2.0.0: resolved "https://registry.yarnpkg.com/no-scroll/-/no-scroll-2.1.1.tgz#f37e08cb159b75a5bdbfc0a87cd9223e120e6e27" integrity sha512-YTzGAJOo/B6hkodeT5SKKHpOhAzjMfkUCCXjLJwjWk2F4/InIg+HbdH9kmT7bKpleDuqLZDTRy2OdNtAj0IVyQ== +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -8102,6 +7562,11 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + node-releases@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" @@ -8122,7 +7587,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -8312,11 +7777,6 @@ pac-resolver@^4.1.0: ip "^1.1.5" netmask "^2.0.1" -pako@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" - integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -8408,7 +7868,12 @@ picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -8450,14 +7915,14 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss@^8.4.40: - version "8.4.41" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.0" + source-map-js "^1.2.1" postinstall-postinstall@^2.1.0: version "2.1.0" @@ -8585,11 +8050,6 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - randombytes@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" @@ -8684,10 +8144,10 @@ react-helmet@^6.1.0: react-fast-compare "^3.1.1" react-side-effect "^2.1.0" -react-hook-form@^7.52.1: - version "7.52.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.52.1.tgz#ec2c96437b977f8b89ae2d541a70736c66284852" - integrity sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg== +react-hook-form@^7.53.1: + version "7.53.2" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.53.2.tgz#6fa37ae27330af81089baadd7f322cc987b8e2ac" + integrity sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw== react-icons@^4.12.0: version "4.12.0" @@ -8709,20 +8169,6 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-native-get-random-values@^1.4.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.7.2.tgz#60a9b6497d22e713779b71139f016a5fcec7ac04" - integrity sha512-28KRYGpIG/upV8+k/qFA+TwGW+yGjmtOHaCduJHpOQK1QUTyhiA6E2IgL4UvvU2dybeCTYFmUi9wcEQ0GiWe5g== - dependencies: - fast-base64-decode "^1.0.0" - -react-native-url-polyfill@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-native-url-polyfill/-/react-native-url-polyfill-1.3.0.tgz#c1763de0f2a8c22cc3e959b654c8790622b6ef6a" - integrity sha512-w9JfSkvpqqlix9UjDvJjm1EjSt652zVQ6iwCIj1cVVkwXf4jQhQgTNXY6EVTwuAmUjg6BC6k9RHCBynoLFo3IQ== - dependencies: - whatwg-url-without-unicode "8.0.0-3" - react-property@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.0.tgz#2156ba9d85fa4741faf1918b38efc1eae3c6a136" @@ -8752,20 +8198,20 @@ react-remove-scroll@2.4.1: use-callback-ref "^1.2.3" use-sidecar "^1.0.1" -react-router-dom@6.25.1: - version "6.25.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.25.1.tgz#b89f8d63fc8383ea4e89c44bf31c5843e1f7afa0" - integrity sha512-0tUDpbFvk35iv+N89dWNrJp+afLgd+y4VtorJZuOCXK0kkCWjEvb3vTJM++SYvMEpbVwXKf3FjeVveVEb6JpDQ== +react-router-dom@6.27.0: + version "6.27.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.27.0.tgz#8d7972a425fd75f91c1e1ff67e47240c5752dc3f" + integrity sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g== dependencies: - "@remix-run/router" "1.18.0" - react-router "6.25.1" + "@remix-run/router" "1.20.0" + react-router "6.27.0" -react-router@6.25.1: - version "6.25.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.25.1.tgz#70b4f1af79954cfcfd23f6ddf5c883e8c904203e" - integrity sha512-u8ELFr5Z6g02nUtpPAggP73Jigj1mRePSwhS/2nkTrlPU5yEkH1vYzWNyvSnSzeeE2DNqWdH+P8OhIh9wuXhTw== +react-router@6.27.0: + version "6.27.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.27.0.tgz#db292474926c814c996c0ff3ef0162d1f9f60ed4" + integrity sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw== dependencies: - "@remix-run/router" "1.18.0" + "@remix-run/router" "1.20.0" react-side-effect@^2.1.0: version "2.1.2" @@ -8823,12 +8269,10 @@ readable-stream@^3.1.1, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" +readdirp@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a" + integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA== redent@^3.0.0: version "3.0.0" @@ -8993,29 +8437,29 @@ rimraf@~2.2.8: resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= -rollup@^4.13.0: - version "4.17.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.17.2.tgz#26d1785d0144122277fdb20ab3a24729ae68301f" - integrity sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ== +rollup@^4.20.0: + version "4.22.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.0.tgz#23cd9e4565a458587683accc34a054660c01f351" + integrity sha512-W21MUIFPZ4+O2Je/EU+GP3iz7PH4pVPUXSbEZdatQnxo29+3rsUjgrJmzuAZU24z7yRAnFN6ukxeAhZh/c7hzg== dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.17.2" - "@rollup/rollup-android-arm64" "4.17.2" - "@rollup/rollup-darwin-arm64" "4.17.2" - "@rollup/rollup-darwin-x64" "4.17.2" - "@rollup/rollup-linux-arm-gnueabihf" "4.17.2" - "@rollup/rollup-linux-arm-musleabihf" "4.17.2" - "@rollup/rollup-linux-arm64-gnu" "4.17.2" - "@rollup/rollup-linux-arm64-musl" "4.17.2" - "@rollup/rollup-linux-powerpc64le-gnu" "4.17.2" - "@rollup/rollup-linux-riscv64-gnu" "4.17.2" - "@rollup/rollup-linux-s390x-gnu" "4.17.2" - "@rollup/rollup-linux-x64-gnu" "4.17.2" - "@rollup/rollup-linux-x64-musl" "4.17.2" - "@rollup/rollup-win32-arm64-msvc" "4.17.2" - "@rollup/rollup-win32-ia32-msvc" "4.17.2" - "@rollup/rollup-win32-x64-msvc" "4.17.2" + "@rollup/rollup-android-arm-eabi" "4.22.0" + "@rollup/rollup-android-arm64" "4.22.0" + "@rollup/rollup-darwin-arm64" "4.22.0" + "@rollup/rollup-darwin-x64" "4.22.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.22.0" + "@rollup/rollup-linux-arm-musleabihf" "4.22.0" + "@rollup/rollup-linux-arm64-gnu" "4.22.0" + "@rollup/rollup-linux-arm64-musl" "4.22.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.22.0" + "@rollup/rollup-linux-riscv64-gnu" "4.22.0" + "@rollup/rollup-linux-s390x-gnu" "4.22.0" + "@rollup/rollup-linux-x64-gnu" "4.22.0" + "@rollup/rollup-linux-x64-musl" "4.22.0" + "@rollup/rollup-win32-arm64-msvc" "4.22.0" + "@rollup/rollup-win32-ia32-msvc" "4.22.0" + "@rollup/rollup-win32-x64-msvc" "4.22.0" fsevents "~2.3.2" rsvp@^4.8.4: @@ -9023,6 +8467,13 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +rxjs@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -9060,14 +8511,16 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass@^1.77.8: - version "1.77.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd" - integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== +sass@^1.80.7: + version "1.80.7" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.80.7.tgz#7569334c39220f8ca62fcea38dce60f809ba345c" + integrity sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ== dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" + chokidar "^4.0.0" + immutable "^5.0.2" source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" sax@1.2.1: version "1.2.1" @@ -9257,10 +8710,10 @@ socks@^2.3.3: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-resolve@^0.5.0: version "0.5.3" @@ -9634,7 +9087,7 @@ tsconfck@^3.0.3: resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.3.tgz#d9bda0e87d05b1c360e996c9050473c7e6f8084f" integrity sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA== -tslib@^1.0.0, tslib@^1.11.1, tslib@^1.8.0, tslib@^1.9.3: +tslib@^1.0.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -9644,6 +9097,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.5.0, tslib@^2.6.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.0.tgz#d124c86c3c05a40a91e6fdea4021bd31d377971b" + integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -9673,7 +9131,7 @@ typescript@^4.6.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== -ulid@2.3.0: +ulid@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/ulid/-/ulid-2.3.0.tgz#93063522771a9774121a84d126ecd3eb9804071f" integrity sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw== @@ -9686,11 +9144,6 @@ unbzip2-stream@^1.3.3: buffer "^5.2.1" through "^2.3.8" -unfetch@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" - integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -9724,14 +9177,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -universal-cookie@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/universal-cookie/-/universal-cookie-4.0.4.tgz#06e8b3625bf9af049569ef97109b4bb226ad798d" - integrity sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw== - dependencies: - "@types/cookie" "^0.3.3" - cookie "^0.4.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -9763,6 +9208,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.2" picocolors "^1.0.1" +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -9784,14 +9237,6 @@ url@0.10.3: punycode "1.3.2" querystring "0.2.0" -url@0.11.0, url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use-callback-ref@^1.2.3, use-callback-ref@^1.2.5: version "1.3.0" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" @@ -9827,16 +9272,16 @@ uuid@3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uuid@3.4.0, uuid@^3.0.0, uuid@^3.2.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.0.0, uuid@^8.3.2: +uuid@^8.0.0: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0, uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-to-istanbul@^9.0.1: version "9.2.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" @@ -9846,23 +9291,23 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -vite-tsconfig-paths@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz#321f02e4b736a90ff62f9086467faf4e2da857a9" - integrity sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA== +vite-tsconfig-paths@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.2.tgz#975810f12cdaebcda196ce3c2cb4ba19df277bb1" + integrity sha512-gEIbKfJzSEv0yR3XS2QEocKetONoWkbROj6hGx0FHM18qKUojhvcokQsxQx5nMkelZq2n37zbSGCJn+FSODSjA== dependencies: debug "^4.1.1" globrex "^0.1.2" tsconfck "^3.0.3" -vite@^5.3.4: - version "5.4.0" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.0.tgz#11dca8a961369ba8b5cae42d068c7ad684d5370f" - integrity sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg== +vite@^5.4.7: + version "5.4.8" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8" + integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ== dependencies: esbuild "^0.21.3" - postcss "^8.4.40" - rollup "^4.13.0" + postcss "^8.4.43" + rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" @@ -9899,11 +9344,6 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" @@ -9921,15 +9361,6 @@ whatwg-mimetype@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== -whatwg-url-without-unicode@8.0.0-3: - version "8.0.0-3" - resolved "https://registry.yarnpkg.com/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz#ab6df4bf6caaa6c85a59f6e82c026151d4bb376b" - integrity sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig== - dependencies: - buffer "^5.4.3" - punycode "^2.1.1" - webidl-conversions "^5.0.0" - whatwg-url@^10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" @@ -10112,31 +9543,6 @@ yup@^0.32.11: property-expr "^2.0.4" toposort "^2.0.2" -zen-observable-ts@0.8.19: - version "0.8.19" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz#c094cd20e83ddb02a11144a6e2a89706946b5694" - integrity sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.7.1.tgz#f84075c0ee085594d3566e1d6454207f126411b3" - integrity sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg== - -zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - -zen-push@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/zen-push/-/zen-push-0.2.1.tgz#ddc33b90f66f9a84237d5f1893970f6be60c3c28" - integrity sha512-Qv4qvc8ZIue51B/0zmeIMxpIGDVhz4GhJALBvnKs/FRa2T7jy4Ori9wFwaHVt0zWV7MIFglKAHbgnVxVTw7U1w== - dependencies: - zen-observable "^0.7.0" - zustand@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" diff --git a/tests/cypress/e2e/accessibility/admin.cy.js b/tests/cypress/e2e/accessibility/admin.cy.js index 5c519345d..7c29e60cb 100644 --- a/tests/cypress/e2e/accessibility/admin.cy.js +++ b/tests/cypress/e2e/accessibility/admin.cy.js @@ -2,6 +2,7 @@ describe("Admin Page - Accessibility Test", () => { it("is accessible on all device types for admin user", () => { cy.authenticate("adminUser"); cy.visit("/admin"); + cy.get("h1"); // ensure page loaded cy.testPageAccessibility(); }); }); diff --git a/tests/cypress/e2e/accessibility/help.cy.js b/tests/cypress/e2e/accessibility/help.cy.js index 28abcf0cc..199927187 100644 --- a/tests/cypress/e2e/accessibility/help.cy.js +++ b/tests/cypress/e2e/accessibility/help.cy.js @@ -3,6 +3,7 @@ describe("Help Page - Accessibility Test", () => { cy.authenticate("adminUser"); cy.visit("/help"); + cy.get("h1"); // ensure page loaded cy.location("pathname").should("match", /help/); cy.testPageAccessibility(); @@ -12,6 +13,7 @@ describe("Help Page - Accessibility Test", () => { cy.authenticate("stateUser"); cy.visit("/help"); + cy.get("h1"); // ensure page loaded cy.location("pathname").should("match", /help/); cy.testPageAccessibility(); diff --git a/tests/cypress/e2e/accessibility/home.cy.js b/tests/cypress/e2e/accessibility/home.cy.js index 9848da1de..b5f5307aa 100644 --- a/tests/cypress/e2e/accessibility/home.cy.js +++ b/tests/cypress/e2e/accessibility/home.cy.js @@ -1,18 +1,21 @@ describe("Home Page - Accessibility Test", () => { it("Is assessible when not logged in", () => { cy.visit("/"); + cy.get("h1"); // ensure page loaded cy.testPageAccessibility(); }); it("is accessible on all device types for admin user", () => { cy.authenticate("adminUser"); + cy.get("h1"); // ensure page loaded cy.testPageAccessibility(); }); it("is accessible on all device types for state user", () => { cy.authenticate("stateUser"); + cy.get("h1"); // ensure page loaded cy.testPageAccessibility(); }); }); diff --git a/tests/cypress/e2e/accessibility/profile.cy.js b/tests/cypress/e2e/accessibility/profile.cy.js index 17828c434..e92559ca2 100644 --- a/tests/cypress/e2e/accessibility/profile.cy.js +++ b/tests/cypress/e2e/accessibility/profile.cy.js @@ -3,6 +3,7 @@ describe("Profile Page - Accessibility Test", () => { cy.authenticate("adminUser"); cy.visit("/profile"); + cy.get("h1"); // ensure page loaded cy.location("pathname").should("match", /profile/); cy.testPageAccessibility(); @@ -12,6 +13,7 @@ describe("Profile Page - Accessibility Test", () => { cy.authenticate("stateUser"); cy.visit("/profile"); + cy.get("h1"); // ensure page loaded cy.location("pathname").should("match", /profile/); cy.testPageAccessibility(); diff --git a/tests/e2e/pages/admin.spec.ts b/tests/e2e/pages/admin.spec.ts index 94fe05bb8..dad80c41c 100644 --- a/tests/e2e/pages/admin.spec.ts +++ b/tests/e2e/pages/admin.spec.ts @@ -1,7 +1,8 @@ -import { test } from "@playwright/test"; -import { e2eA11y, logInAdminUser } from "../utils"; +import { test } from "../utils/fixtures/base"; -test("Is accessible on all device types for admin user", async ({ page }) => { - await logInAdminUser(page); - await e2eA11y(page, "/admin"); +test("Is accessible on all device types for admin user", async ({ + adminHomePage, +}) => { + await adminHomePage.goto("/admin"); + await adminHomePage.e2eA11y(); }); diff --git a/tests/e2e/pages/home.spec.ts b/tests/e2e/pages/home.spec.ts index e2b109563..435dde011 100644 --- a/tests/e2e/pages/home.spec.ts +++ b/tests/e2e/pages/home.spec.ts @@ -1,37 +1,52 @@ -import { e2eA11y, logInAdminUser, logInStateUser } from "../utils"; import { test, expect } from "../utils/fixtures/base"; +import BasePage from "../utils/pageObjects/base.page"; -test("Should see the correct home page as a state user", async ({ - page, - stateHomePage, -}) => { - await page.goto("/"); - await logInStateUser(page); - await stateHomePage.isReady(); - await expect(stateHomePage.wpButton).toBeVisible(); - await expect(stateHomePage.sarButton).toBeVisible(); -}); +test.describe("state user home page", () => { + test("Should see the correct home page as a state user", async ({ + stateHomePage, + }) => { + await stateHomePage.goto(); + await stateHomePage.isReady(); + await expect(stateHomePage.wpButton).toBeVisible(); + await expect(stateHomePage.sarButton).toBeVisible(); + }); -test("Should see the correct home page as an admin user", async ({ - page, - adminHomePage, -}) => { - await page.goto("/"); - await logInAdminUser(page); - await adminHomePage.isReady(); - await expect(adminHomePage.dropdown).toBeVisible(); + test("Is accessible on all device types for state user", async ({ + stateHomePage, + }) => { + await stateHomePage.goto(); + await stateHomePage.e2eA11y(); + }); }); -test("Is accessible on all device types for state user", async ({ page }) => { - await logInStateUser(page); - await e2eA11y(page, "/"); -}); +test.describe("admin user home page", () => { + test("Should see the correct home page as an admin user", async ({ + adminHomePage, + }) => { + await adminHomePage.goto(); + await adminHomePage.isReady(); + await expect(adminHomePage.dropdown).toBeVisible(); + }); -test("Is accessible on all device types for admin user", async ({ page }) => { - await logInAdminUser(page); - await e2eA11y(page, "/"); + test("Is accessible on all device types for admin user", async ({ + adminHomePage, + }) => { + await adminHomePage.goto(); + await adminHomePage.e2eA11y(); + }); }); -test("Is assessible when not logged in", async ({ page }) => { - await e2eA11y(page, "/"); +test.describe("not logged in home page", () => { + test("Is assessible when not logged in", async ({ browser }) => { + const userContext = await browser.newContext({ + storageState: { + cookies: [], + origins: [], + }, + }); + const homePage = new BasePage(await userContext.newPage()); + await homePage.goto(); + await homePage.e2eA11y(); + await userContext.close(); + }); }); diff --git a/tests/e2e/pages/profile.spec.ts b/tests/e2e/pages/profile.spec.ts index 3b9c8c4c8..f98a414eb 100644 --- a/tests/e2e/pages/profile.spec.ts +++ b/tests/e2e/pages/profile.spec.ts @@ -1,12 +1,77 @@ -import { test } from "@playwright/test"; -import { e2eA11y, logInAdminUser, logInStateUser } from "../utils"; +import { expect, test } from "../utils/fixtures/base"; +import { BrowserContext, Page } from "@playwright/test"; +import ProfilePage from "../utils/pageObjects/profile.page"; +import BannerEditorPage from "../utils/pageObjects/banner.page"; -test("Is accessible on all device types for state user", async ({ page }) => { - await logInStateUser(page); - await e2eA11y(page, "/profile"); +let adminPage: Page; +let userPage: Page; +let adminContext: BrowserContext; +let userContext: BrowserContext; +test.beforeAll(async ({ browser }) => { + adminContext = await browser.newContext({ + storageState: "playwright/.auth/admin.json", + }); + adminPage = await adminContext.newPage(); + + userContext = await browser.newContext({ + storageState: "playwright/.auth/user.json", + }); + userPage = await userContext.newPage(); +}); + +test.afterAll(async () => { + await adminContext.close(); + await userContext.close(); }); +test.describe("Admin profile", () => { + test( + "Admin user can navigate to /admin", + { tag: "@admin" }, + async ({ adminHomePage }) => { + const profilePage = new ProfilePage(adminPage); + const bannerEditorPage = new BannerEditorPage(adminPage); + await adminHomePage.goto(); + await adminHomePage.isReady(); + await adminHomePage.manageAccount(); + await profilePage.goto(); + await expect(profilePage.bannerEditorButton).toBeVisible(); + + await profilePage.bannerEditorButton.click(); + await bannerEditorPage.goto(); + await bannerEditorPage.isReady(); + } + ); + + test( + "Is accessible on all device types for admin user", + { tag: "@admin" }, + async () => { + const profilePage = new ProfilePage(adminPage); + await profilePage.goto(); + await profilePage.e2eA11y(); + } + ); +}); + +test.describe("State user profile", { tag: "@user" }, () => { + test("State user cannot navigate to /admin", async ({ stateHomePage }) => { + const profilePage = new ProfilePage(userPage); + const bannerEditorPage = new BannerEditorPage(userPage); + + await stateHomePage.goto(); + await stateHomePage.isReady(); + await stateHomePage.manageAccount(); + await profilePage.goto(); + await expect(profilePage.bannerEditorButton).not.toBeVisible(); + await bannerEditorPage.goto(); + + // Expect a redirect to the profile page + await profilePage.isReady(); + }); -test("Is accessible on all device types for admin user", async ({ page }) => { - await logInAdminUser(page); - await e2eA11y(page, "/profile"); + test("Is accessible on all device types for state user", async () => { + const profilePage = new ProfilePage(userPage); + await profilePage.goto(); + await profilePage.e2eA11y(); + }); }); diff --git a/tests/e2e/utils/archive.ts b/tests/e2e/utils/archive.ts deleted file mode 100644 index cbefc9356..000000000 --- a/tests/e2e/utils/archive.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Page } from "@playwright/test"; -import { logInAdminUser, logOutUser } from "./login"; -import { stateAbbreviation } from "./consts"; - -export async function archiveReports(page: Page) { - const archiveButtons = await page - .getByRole("button", { name: "Archive", exact: true }) - .all(); - if (archiveButtons.length > 0) { - await archiveButtons[0].click(); - const modal = page.getByRole("dialog"); - await modal.isVisible(); - await modal.getByRole("textbox").fill("ARCHIVE"); - await modal.getByRole("button", { name: "Archive" }).click(); - await page.waitForResponse( - (response: Response) => - response.url().includes(`reports/archive/WP/${stateAbbreviation}/`) && - response.status() == 200 - ); - await modal.isHidden(); - await page.getByRole("table").isVisible(); - await archiveReports(page); - } -} - -export async function archiveExistingWPs(page: Page) { - await logInAdminUser(page); - await page - .getByRole("combobox", { - name: "List of states, including District of Columbia and Puerto Rico", - }) - .selectOption(stateAbbreviation); - await page.getByLabel("MFP Work Plan").click(); - - await page.getByRole("button", { name: "Go to Report Dashboard" }).click(); - await page.getByRole("table").isVisible(); - await archiveReports(page); - await logOutUser(page); -} diff --git a/tests/e2e/utils/auth.setup.ts b/tests/e2e/utils/auth.setup.ts new file mode 100644 index 000000000..b5bc9ad79 --- /dev/null +++ b/tests/e2e/utils/auth.setup.ts @@ -0,0 +1,43 @@ +import { test as setup } from "@playwright/test"; + +import { adminPassword, adminUser, statePassword, stateUser } from "./consts"; + +const adminFile = "playwright/.auth/admin.json"; + +setup("authenticate as admin", async ({ page }) => { + await page.goto("/"); + const emailInput = page.getByRole("textbox", { name: "email" }); + const passwordInput = page.getByRole("textbox", { name: "password" }); + const loginButton = page.getByRole("button", { name: "Log In with Cognito" }); + await emailInput.fill(adminUser); + await passwordInput.fill(adminPassword); + await loginButton.click(); + await page.waitForURL("/"); + await page + .getByRole("heading", { + name: "View State/Territory Reports", + }) + .isVisible(); + await page.waitForTimeout(1000); + await page.context().storageState({ path: adminFile }); +}); + +const userFile = "playwright/.auth/user.json"; + +setup("authenticate as user", async ({ page }) => { + await page.goto("/"); + const emailInput = page.getByRole("textbox", { name: "email" }); + const passwordInput = page.getByRole("textbox", { name: "password" }); + const loginButton = page.getByRole("button", { name: "Log In with Cognito" }); + await emailInput.fill(stateUser); + await passwordInput.fill(statePassword); + await loginButton.click(); + await page.waitForURL("/"); + await page + .getByRole("heading", { + name: "Money Follows the Person (MFP) Portal", + }) + .isVisible(); + await page.waitForTimeout(1000); + await page.context().storageState({ path: userFile }); +}); diff --git a/tests/e2e/utils/fixtures/base.ts b/tests/e2e/utils/fixtures/base.ts index a43040db0..b2de4b2d1 100644 --- a/tests/e2e/utils/fixtures/base.ts +++ b/tests/e2e/utils/fixtures/base.ts @@ -10,11 +10,21 @@ type CustomFixtures = { }; export const baseTest = base.extend({ - stateHomePage: async ({ page }, use) => { - await use(new StateHomePage(page)); + stateHomePage: async ({ browser }, use) => { + const context = await browser.newContext({ + storageState: "playwright/.auth/user.json", + }); + const stateHomePage = new StateHomePage(await context.newPage()); + await use(stateHomePage); + await context.close(); }, - adminHomePage: async ({ page }, use) => { - await use(new AdminHomePage(page)); + adminHomePage: async ({ browser }, use) => { + const context = await browser.newContext({ + storageState: "playwright/.auth/admin.json", + }); + const adminHomePage = new AdminHomePage(await context.newPage()); + await use(adminHomePage); + await context.close(); }, }); diff --git a/tests/e2e/utils/fixtures/wp.ts b/tests/e2e/utils/fixtures/wp.ts index de095ca54..f33780da3 100644 --- a/tests/e2e/utils/fixtures/wp.ts +++ b/tests/e2e/utils/fixtures/wp.ts @@ -2,10 +2,18 @@ import { test as base } from "@playwright/test"; import { WPDashboardPage } from "../pageObjects/wp/wpDashboard.page"; import { WPGeneralInformationPage } from "../pageObjects/wp/wpGeneral.page"; import { WPReviewAndSubmitPage } from "../pageObjects/wp/wpReviewAndSubmit.page"; +import { WPTransitionBenchmarkProjectionsPage } from "../pageObjects/wp/wpTransitionBenchmarkProjections.page"; +import { WPTransitionBenchmarkStrategyPage } from "../pageObjects/wp/wpTransitionBenchmarkStrategy.page"; +import { WPInitiativesInstructionsPage } from "../pageObjects/wp/wpInitiativesInstructions.page"; +import { WPInitiativesDashboardPage } from "../pageObjects/wp/wpInitiativesDashboard.page"; type WPFixtures = { wpDashboard: WPDashboardPage; wpGeneralInformation: WPGeneralInformationPage; + wpTransitionBenchmarksProjections: WPTransitionBenchmarkProjectionsPage; + wpTransitionBenchmarkStrategy: WPTransitionBenchmarkStrategyPage; + wpInitiativesInstructions: WPInitiativesInstructionsPage; + wpInitiativesDashboard: WPInitiativesDashboardPage; wpReviewAndSubmit: WPReviewAndSubmitPage; }; @@ -16,6 +24,18 @@ export const test = base.extend({ wpGeneralInformation: async ({ page }, use) => { await use(new WPGeneralInformationPage(page)); }, + wpTransitionBenchmarksProjections: async ({ page }, use) => { + await use(new WPTransitionBenchmarkProjectionsPage(page)); + }, + wpTransitionBenchmarkStrategy: async ({ page }, use) => { + await use(new WPTransitionBenchmarkStrategyPage(page)); + }, + wpInitiativesInstructions: async ({ page }, use) => { + await use(new WPInitiativesInstructionsPage(page)); + }, + wpInitiativesDashboard: async ({ page }, use) => { + await use(new WPInitiativesDashboardPage(page)); + }, wpReviewAndSubmit: async ({ page }, use) => { await use(new WPReviewAndSubmitPage(page)); }, diff --git a/tests/e2e/utils/index.ts b/tests/e2e/utils/index.ts index e3941e044..1b4506130 100644 --- a/tests/e2e/utils/index.ts +++ b/tests/e2e/utils/index.ts @@ -1,4 +1,3 @@ export * from "./consts"; export * from "./login"; -export * from "./archive"; export * from "./a11y"; diff --git a/tests/e2e/utils/pageObjects/adminHome.page.ts b/tests/e2e/utils/pageObjects/adminHome.page.ts index bc661873c..943bce86c 100644 --- a/tests/e2e/utils/pageObjects/adminHome.page.ts +++ b/tests/e2e/utils/pageObjects/adminHome.page.ts @@ -19,8 +19,14 @@ export default class AdminHomePage extends BasePage { }); } - public async selectWP() { + public async selectWP(state: string) { + await this.page + .getByRole("combobox", { + name: "List of states, including District of Columbia and Puerto Rico", + }) + .selectOption(state); await this.page.getByRole("radio", { name: "MFP Work Plan" }).click(); + await this.goToDashboard(); } public async selectSAR() { diff --git a/tests/e2e/utils/pageObjects/banner.page.ts b/tests/e2e/utils/pageObjects/banner.page.ts new file mode 100644 index 000000000..3086d7ddc --- /dev/null +++ b/tests/e2e/utils/pageObjects/banner.page.ts @@ -0,0 +1,17 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "./base.page"; + +export default class BannerEditorPage extends BasePage { + public path = "/admin"; + + readonly page: Page; + readonly title: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "Banner Admin", + }); + } +} diff --git a/tests/e2e/utils/pageObjects/base.page.ts b/tests/e2e/utils/pageObjects/base.page.ts index 728f34b50..a6a0ab36d 100644 --- a/tests/e2e/utils/pageObjects/base.page.ts +++ b/tests/e2e/utils/pageObjects/base.page.ts @@ -1,4 +1,5 @@ import { expect, Locator, Page } from "@playwright/test"; +import AxeBuilder from "@axe-core/playwright"; export default class BasePage { public path = "/"; @@ -7,6 +8,10 @@ export default class BasePage { readonly title: Locator; readonly continueButton: Locator; readonly previousButton: Locator; + readonly myAccountButton: Locator; + readonly accountMenu: Locator; + readonly manageAccountButton: Locator; + readonly logoutButton: Locator; constructor(page: Page) { this.page = page; @@ -15,14 +20,53 @@ export default class BasePage { }); this.continueButton = page.getByRole("button", { name: "Continue" }); this.previousButton = page.getByRole("button", { name: "Previous" }); + this.myAccountButton = page.getByRole("button", { name: "my account" }); + this.accountMenu = page.getByRole("menu"); + this.manageAccountButton = page.getByRole("menuitem", { + name: "Manage Account", + }); + this.logoutButton = page.getByRole("menuitem", { name: "Log Out" }); } - public async goto() { - await this.page.goto(this.path); + public async goto(url?: string) { + if (url) { + await this.page.goto(url); + } else { + await this.page.goto(this.path); + } } public async isReady() { await this.title.isVisible(); return expect(this.page).toHaveURL(this.path); } + + public async manageAccount() { + await this.myAccountButton.click(); + await this.accountMenu.isVisible(); + await this.manageAccountButton.click(); + } + + public async logOut() { + await this.myAccountButton.click(); + await this.accountMenu.isVisible(); + await this.logoutButton.click(); + } + + public async e2eA11y() { + const breakpoints = { + mobile: [560, 800], + tablet: [880, 1000], + desktop: [1200, 1200], + }; + + for (const size of Object.values(breakpoints)) { + this.page.setViewportSize({ width: size[0], height: size[1] }); + const results = await new AxeBuilder({ page: this.page }) + .withTags(["wcag2a", "wcag2aa"]) + .disableRules(["duplicate-id"]) + .analyze(); + expect(results.violations).toEqual([]); + } + } } diff --git a/tests/e2e/utils/pageObjects/profile.page.ts b/tests/e2e/utils/pageObjects/profile.page.ts new file mode 100644 index 000000000..c9e62d931 --- /dev/null +++ b/tests/e2e/utils/pageObjects/profile.page.ts @@ -0,0 +1,21 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "./base.page"; + +export default class ProfilePage extends BasePage { + public path = "/profile"; + + readonly page: Page; + readonly title: Locator; + readonly bannerEditorButton: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "My Account", + }); + this.bannerEditorButton = page.getByRole("button", { + name: "Banner Editor", + }); + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpDashboard.page.ts b/tests/e2e/utils/pageObjects/wp/wpDashboard.page.ts index da808c665..36b166ef1 100644 --- a/tests/e2e/utils/pageObjects/wp/wpDashboard.page.ts +++ b/tests/e2e/utils/pageObjects/wp/wpDashboard.page.ts @@ -67,4 +67,26 @@ export class WPDashboardPage extends BasePage { .click(); await this.modal.getByRole("button", { name: "Start new" }).click(); } + + public async archiveAllReports() { + const archiveButtons = this.page.getByRole("button", { + name: "Archive", + }); + const count = await archiveButtons.count(); + + for (let i = 0; i < count; i++) { + await archiveButtons.nth(i).click(); + const modal = this.page.getByRole("dialog"); + await modal.isVisible(); + await modal.getByRole("textbox").fill("ARCHIVE"); + await modal.getByRole("button", { name: "Archive" }).click(); + await this.page.waitForResponse( + (response) => + response.url().includes(`reports/archive/WP/${stateAbbreviation}/`) && + response.status() == 200 + ); + await this.getReports(); + await this.archiveAllReports(); + } + } } diff --git a/tests/e2e/utils/pageObjects/wp/wpInitiativeDefine.page.ts b/tests/e2e/utils/pageObjects/wp/wpInitiativeDefine.page.ts new file mode 100644 index 000000000..ecb7fa57c --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpInitiativeDefine.page.ts @@ -0,0 +1,57 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; + +export class WPDefineInitiativePage extends BasePage { + public path = "/wp/state-or-territory-specific-initiatives/initiatives"; + + readonly page: Page; + readonly title: Locator; + readonly backButton: Locator; + readonly description: Locator; + readonly olderAdultsCheckbox: Locator; + readonly individualsPhysicalCheckbox: Locator; + readonly startDate: Locator; + readonly endDate: Locator; + readonly saveButton: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "State or Territory-Specific Initiatives: I. Define initiative", + }); + this.backButton = page + .getByRole("button", { + name: "Return to dashboard for this initiative", + }) + .first(); + this.description = page.getByLabel( + "Describe the initiative, including key activities:" + ); + this.olderAdultsCheckbox = page.getByLabel("Older adults"); + this.individualsPhysicalCheckbox = page.getByLabel( + "Individuals with physical" + ); + this.startDate = page.getByLabel("Start date"); + this.endDate = page.getByRole("group", { + name: "Does the initiative have a projected end date?", + }); + this.saveButton = page.getByRole("button", { name: "Save & return" }); + } + + public async fillFields() { + await this.description.fill("test"); + await this.olderAdultsCheckbox.click(); + await this.olderAdultsCheckbox.blur(); + // ChoiceListField component has a hard timeout in the onblur handler to call the updateReport function and a hard timeout this is how we are working with that. :( + await this.page.waitForTimeout(200); + await this.individualsPhysicalCheckbox.click(); + await this.individualsPhysicalCheckbox.blur(); + await this.page.waitForTimeout(200); + await this.endDate.getByLabel("No").click(); + await this.endDate.getByLabel("No").blur(); + await this.page.waitForTimeout(200); + await this.startDate.fill("01/01/2024"); + await this.page.waitForTimeout(200); + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpInitiativeEvaluation.page.ts b/tests/e2e/utils/pageObjects/wp/wpInitiativeEvaluation.page.ts new file mode 100644 index 000000000..1ffa92e6e --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpInitiativeEvaluation.page.ts @@ -0,0 +1,50 @@ +import { expect, Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; + +export class WPEvaluationPlanPage extends BasePage { + public path = "/wp/state-or-territory-specific-initiatives/initiatives"; + + readonly page: Page; + readonly title: Locator; + readonly backButton: Locator; + readonly addObjectiveButton: Locator; + readonly modal: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "State or Territory-Specific Initiatives: I. Define initiative", + }); + this.backButton = page + .getByRole("button", { + name: "Return to dashboard for this initiative", + }) + .first(); + this.addObjectiveButton = page + .getByRole("button", { + name: "Add objective", + }) + .first(); + this.modal = page.getByRole("dialog"); + } + + public async fillFields() { + const modal = this.page.getByRole("dialog"); + const textAreas = await modal.getByRole("textbox").all(); + const radioGroup = await modal.getByRole("group", { + name: "Does the performance measure include quantitative targets?", + }); + + // Fill all the text boxes in the modal + for (const textArea of textAreas) { + await textArea.fill("test"); + } + + // Click the "No" radio option so we don't have to fill out conditional fields + await radioGroup.getByLabel("No").click(); + await modal.getByRole("button", { name: "Save" }).click(); + await expect(this.page.getByRole("alert")).not.toBeVisible(); + await modal.isHidden(); + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpInitiativeFunding.page.ts b/tests/e2e/utils/pageObjects/wp/wpInitiativeFunding.page.ts new file mode 100644 index 000000000..4cd53de77 --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpInitiativeFunding.page.ts @@ -0,0 +1,52 @@ +import { expect, Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; + +export class WPFundingSourcesPage extends BasePage { + public path = "/wp/state-or-territory-specific-initiatives/initiatives"; + + readonly page: Page; + readonly title: Locator; + readonly backButton: Locator; + readonly modal: Locator; + readonly addSourceButton: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "State or Territory-Specific Initiatives: I. Define initiative", + }); + this.backButton = page + .getByRole("button", { + name: "Return to dashboard for this initiative", + }) + .first(); + this.modal = page.getByRole("dialog"); + this.addSourceButton = page + .getByRole("button", { + name: "Add funding source", + }) + .first(); + } + + public async fillFields() { + const radioGroup = this.modal.getByRole("group", { + name: "Funding source:", + }); + const quarterFields = await this.modal.getByRole("textbox").all(); + + await radioGroup + .getByLabel( + "MFP cooperative agreement funds for qualified HCBS and demonstration services" + ) + .click(); + + for (const textInput of quarterFields) { + await textInput.fill("99"); + } + + await this.modal.getByRole("button", { name: "Save" }).click(); + await expect(this.page.getByRole("alert")).not.toBeVisible(); + await this.modal.isHidden(); + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpInitiativeOverlay.page.ts b/tests/e2e/utils/pageObjects/wp/wpInitiativeOverlay.page.ts new file mode 100644 index 000000000..25b85a6eb --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpInitiativeOverlay.page.ts @@ -0,0 +1,78 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; +import { WPDefineInitiativePage } from "./wpInitiativeDefine.page"; +import { WPEvaluationPlanPage } from "./wpInitiativeEvaluation.page"; +import { WPFundingSourcesPage } from "./wpInitiativeFunding.page"; + +export class WPInitiativeOverlayPage extends BasePage { + public path = "/wp/state-or-territory-specific-initiatives/initiatives"; + + readonly page: Page; + readonly title: Locator; + readonly backButton: Locator; + readonly defineInitiative: Locator; + readonly evaluationPlan: Locator; + readonly fundingSources: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "State or Territory-Specific Initiatives", + }); + this.backButton = page + .getByRole("button", { name: "Return to all initiatives" }) + .first(); + this.defineInitiative = page.getByRole("row", { + name: "I. Define initiative", + }); + this.evaluationPlan = page.getByRole("row", { + name: "II. Evaluation plan", + }); + this.fundingSources = page.getByRole("row", { + name: "III. Funding sources", + }); + } + + public async isTitleReady(topic: string) { + return this.page.getByRole("heading", { name: topic }).isVisible(); + } + + public async completeDefineInitiative(page: Page) { + await this.defineInitiative.getByRole("button", { name: "Edit" }).click(); + const definePage = new WPDefineInitiativePage(page); + await definePage.isReady(); + await definePage.fillFields(); + await definePage.saveButton.click(); + await this.defineInitiative.isVisible(); + } + + public async completeEvaluationPlan(page: Page) { + await this.evaluationPlan.getByRole("button", { name: "Edit" }).click(); + const evaluationPage = new WPEvaluationPlanPage(page); + await evaluationPage.isReady(); + const noObjectivesText = evaluationPage.page.getByText( + "Objective total count: 0" + ); + if (noObjectivesText) { + await evaluationPage.addObjectiveButton.click(); + await evaluationPage.fillFields(); + } + await evaluationPage.backButton.click(); + await this.evaluationPlan.isVisible(); + } + + public async completeFundingSources(page: Page) { + await this.fundingSources.getByRole("button", { name: "Edit" }).click(); + const fundingPage = new WPFundingSourcesPage(page); + await fundingPage.isReady(); + const noFundingSourcesText = + fundingPage.page.getByText("Funding Sources: 0"); + if (noFundingSourcesText) { + await fundingPage.addSourceButton.click(); + await fundingPage.fillFields(); + } + await fundingPage.backButton.click(); + await this.fundingSources.isVisible(); + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpInitiativesDashboard.page.ts b/tests/e2e/utils/pageObjects/wp/wpInitiativesDashboard.page.ts new file mode 100644 index 000000000..9c835e819 --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpInitiativesDashboard.page.ts @@ -0,0 +1,47 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; +import { stateAbbreviation } from "../../consts"; + +export class WPInitiativesDashboardPage extends BasePage { + public path = "/wp/state-or-territory-specific-initiatives/initiatives"; + + readonly page: Page; + readonly title: Locator; + readonly alert: Locator; + readonly addInitiativeButton: Locator; + readonly requiredTopics: string[]; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "State or Territory-Specific Initiatives", + }); + this.alert = page.getByText( + "This alert will disappear once you add initiatives that meet the topic requirements" + ); + this.addInitiativeButton = page.getByRole("button", { + name: "Add initiative", + }); + this.requiredTopics = [ + "Transitions and transition coordination services", + "Housing-related supports", + "Quality measurement and improvement", + ]; + } + + public async addInitiative(topic: string) { + await this.addInitiativeButton.click(); + const modal = this.page.getByRole("dialog"); + await modal.isVisible(); + await modal.getByLabel("Initiative name").fill(`Initiative: ${topic}`); + await modal.getByLabel(topic).click(); + await modal.getByRole("button", { name: "Save" }).click(); + await this.page.waitForResponse( + (response) => + response.url().includes(`/reports/WP/${stateAbbreviation}`) && + response.status() == 200 + ); + await modal.isHidden(); + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpInitiativesInstructions.page.ts b/tests/e2e/utils/pageObjects/wp/wpInitiativesInstructions.page.ts new file mode 100644 index 000000000..2b9271c8c --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpInitiativesInstructions.page.ts @@ -0,0 +1,25 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; + +export class WPInitiativesInstructionsPage extends BasePage { + public path = "/wp/state-or-territory-specific-initiatives/instructions"; + + readonly page: Page; + readonly title: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "State or Territory-Specific Initiatives Instructions", + }); + } + + public async fillFormFields() { + const radioButtons = await this.page.getByLabel("No").all(); + + for (const radio of radioButtons) { + await radio.click(); + } + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpReviewAndSubmit.page.ts b/tests/e2e/utils/pageObjects/wp/wpReviewAndSubmit.page.ts index fef6afe62..a93ae0f8f 100644 --- a/tests/e2e/utils/pageObjects/wp/wpReviewAndSubmit.page.ts +++ b/tests/e2e/utils/pageObjects/wp/wpReviewAndSubmit.page.ts @@ -8,6 +8,7 @@ export class WPReviewAndSubmitPage extends BasePage { readonly title: Locator; readonly reviewPDFButton: Locator; readonly submitButton: Locator; + readonly confirmModal: Locator; readonly approveButton: Locator; readonly unlockButton: Locator; readonly approveModal: Locator; @@ -17,6 +18,12 @@ export class WPReviewAndSubmitPage extends BasePage { this.page = page; this.title = page.getByRole("heading", { name: "Review & Submit" }); this.reviewPDFButton = page.getByRole("button", { name: "Review PDF" }); + this.confirmModal = page.getByRole("dialog", { + name: "Are you sure you want to submit MFP Work Plan?", + }); + this.submitButton = page.getByRole("button", { + name: "Submit MFP Work Plan", + }); this.approveButton = page.getByRole("button", { name: "Approve" }); this.unlockButton = page.getByRole("button", { name: "Unlock" }); this.approveModal = page.getByRole("dialog", { @@ -24,6 +31,16 @@ export class WPReviewAndSubmitPage extends BasePage { }); } + public async confirmSubmit() { + await this.confirmModal.isVisible(); + await this.confirmModal + .getByRole("button", { + name: "Submit MFP Work Plan", + }) + .click(); + await this.confirmModal.waitFor({ state: "hidden" }); + } + public async approveReport() { await this.approveModal.getByRole("textbox").fill("APPROVE"); await this.approveModal.getByRole("button", { name: "Approve" }).click(); diff --git a/tests/e2e/utils/pageObjects/wp/wpTransitionBenchmarkProjections.page.ts b/tests/e2e/utils/pageObjects/wp/wpTransitionBenchmarkProjections.page.ts new file mode 100644 index 000000000..95cc70b2a --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpTransitionBenchmarkProjections.page.ts @@ -0,0 +1,60 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; + +export class WPTransitionBenchmarkProjectionsPage extends BasePage { + public path = "/wp/transition-benchmarks"; + + readonly page: Page; + readonly title: Locator; + readonly addNewButton: Locator; + readonly reviewPdfButton: Locator; + readonly drawer: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "Transition Benchmark Projections", + }); + this.addNewButton = page.getByRole("button", { + name: "Add other target population", + }); + this.reviewPdfButton = page.getByRole("button", { name: "Review PDF" }); + this.drawer = page.locator("dialog", { + hasText: "Report transition benchmarks for", + }); + } + + public async editPopulations() { + await this.isReady(); + const hasWarnings = await this.page + .getByRole("row", { name: "warning icon" }) + .count(); + + if (hasWarnings) { + const rows = await this.page + .locator("tr", { has: this.page.getByRole("button") }) + .all(); + + for (const row of rows) { + const editButton = row.getByLabel("edit button"); + await editButton.click(); + const drawer = this.page.getByRole("dialog"); + await drawer.isVisible(); + await drawer.getByLabel("Yes").click(); + await this.fillBenchmarks(); + await drawer.getByRole("button", { name: "Save & Close" }).click(); + await drawer.waitFor({ state: "hidden" }); + } + } + } + + public async fillBenchmarks() { + const drawer = this.page.getByRole("dialog"); + await drawer.getByLabel("Yes").click(); + const inputs = await drawer.getByRole("textbox").all(); + for (const input of inputs) { + await input.fill("99"); + } + } +} diff --git a/tests/e2e/utils/pageObjects/wp/wpTransitionBenchmarkStrategy.page.ts b/tests/e2e/utils/pageObjects/wp/wpTransitionBenchmarkStrategy.page.ts new file mode 100644 index 000000000..3f85b5409 --- /dev/null +++ b/tests/e2e/utils/pageObjects/wp/wpTransitionBenchmarkStrategy.page.ts @@ -0,0 +1,25 @@ +import { Locator, Page } from "@playwright/test"; +import BasePage from "../base.page"; + +export class WPTransitionBenchmarkStrategyPage extends BasePage { + public path = "/wp/transition-benchmark-strategy"; + + readonly page: Page; + readonly title: Locator; + + constructor(page: Page) { + super(page); + this.page = page; + this.title = page.getByRole("heading", { + name: "Transition Benchmark Projections", + }); + } + + public async fillTextFields() { + const textFields = await this.page.getByRole("textbox").all(); + + for (const textField of textFields) { + await textField.fill("test"); + } + } +} diff --git a/tests/e2e/wp/create.spec.ts b/tests/e2e/wp/create.spec.ts index 814470359..e278aa669 100644 --- a/tests/e2e/wp/create.spec.ts +++ b/tests/e2e/wp/create.spec.ts @@ -1,52 +1,213 @@ -import { archiveExistingWPs, logInStateUser } from "../utils"; +import { BrowserContext, Page } from "@playwright/test"; import { test, expect } from "../utils/fixtures/base"; +import { WPInitiativeOverlayPage } from "../utils/pageObjects/wp/wpInitiativeOverlay.page"; +import StateHomePage from "../utils/pageObjects/stateHome.page"; +import { WPDashboardPage } from "../utils/pageObjects/wp/wpDashboard.page"; +import { WPGeneralInformationPage } from "../utils/pageObjects/wp/wpGeneral.page"; +import { WPTransitionBenchmarkProjectionsPage } from "../utils/pageObjects/wp/wpTransitionBenchmarkProjections.page"; +import { WPTransitionBenchmarkStrategyPage } from "../utils/pageObjects/wp/wpTransitionBenchmarkStrategy.page"; +import { WPInitiativesInstructionsPage } from "../utils/pageObjects/wp/wpInitiativesInstructions.page"; +import { WPInitiativesDashboardPage } from "../utils/pageObjects/wp/wpInitiativesDashboard.page"; +import { WPReviewAndSubmitPage } from "../utils/pageObjects/wp/wpReviewAndSubmit.page"; +import AdminHomePage from "../utils/pageObjects/adminHome.page"; -test("State user can create a Work Plan", async ({ - page, - stateHomePage, - wpDashboard, -}) => { - await archiveExistingWPs(page); - await logInStateUser(page); - - // View WPs - await stateHomePage.wpButton.click(); - await wpDashboard.isReady(); - - // check if work plans exist already or not - if (await wpDashboard.createButton.isVisible()) { - await wpDashboard.createButton.click(); - await expect(wpDashboard.modal).toBeVisible(); - await expect(wpDashboard.modal).toContainText("Add new MFP Work Plan"); - - await wpDashboard.createNewWP(); - - // Confirm created WP is in table - await wpDashboard.getReports(); - await expect(wpDashboard.firstReport).toBeVisible(); +let userPage: Page; +let userContext: BrowserContext; +let adminPage: Page; +let adminContext: BrowserContext; +let homePage: StateHomePage; +let wpDashboard: WPDashboardPage; +let wpGeneralInformation: WPGeneralInformationPage; +let wpTransitionBenchmarkProjections: WPTransitionBenchmarkProjectionsPage; +let wpTransitionBenchmarkStrategy: WPTransitionBenchmarkStrategyPage; +let wpInitiativesInstructions: WPInitiativesInstructionsPage; +let wpInitiativesDashboard: WPInitiativesDashboardPage; +let wpReviewAndSubmit: WPReviewAndSubmitPage; +let adminHomePage: AdminHomePage; +let adminWpDashboard: WPDashboardPage; + +test.beforeAll(async ({ browser }) => { + userContext = await browser.newContext({ + storageState: "playwright/.auth/user.json", + }); + adminContext = await browser.newContext({ + storageState: "playwright/.auth/admin.json", + }); + userPage = await userContext.newPage(); + adminPage = await adminContext.newPage(); + + homePage = new StateHomePage(userPage); + wpDashboard = new WPDashboardPage(userPage); + wpGeneralInformation = new WPGeneralInformationPage(userPage); + wpTransitionBenchmarkProjections = new WPTransitionBenchmarkProjectionsPage( + userPage + ); + wpTransitionBenchmarkStrategy = new WPTransitionBenchmarkStrategyPage( + userPage + ); + wpInitiativesInstructions = new WPInitiativesInstructionsPage(userPage); + wpInitiativesDashboard = new WPInitiativesDashboardPage(userPage); + wpReviewAndSubmit = new WPReviewAndSubmitPage(userPage); + adminHomePage = new AdminHomePage(adminPage); + adminWpDashboard = new WPDashboardPage(adminPage); +}); + +test.afterAll(async () => { + await userContext.close(); +}); + +test.describe("Creating a new Work Plan", () => { + test("State user can create a Work Plan", async () => { + await adminHomePage.goto(); + await adminHomePage.selectWP("PR"); + await adminWpDashboard.reportsReady(); + await adminWpDashboard.archiveAllReports(); + + // View WPs + await homePage.goto(); + await homePage.wpButton.click(); + await wpDashboard.isReady(); + + // check if work plans exist already or not + if (await wpDashboard.createButton.isVisible()) { + await wpDashboard.createButton.click(); + await expect(wpDashboard.modal).toBeVisible(); + await expect(wpDashboard.modal).toContainText("Add new MFP Work Plan"); + + await wpDashboard.createNewWP(); + + // Confirm created WP is in table + await wpDashboard.getReports(); + await expect(wpDashboard.firstReport).toBeVisible(); + const editNewWPButton = wpDashboard.firstReport.getByRole("button", { + name: "Edit", + exact: true, + }); + await expect(editNewWPButton).toBeVisible(); + } else { + await wpDashboard.copyoverButton.click(); + await expect(wpDashboard.modal).toBeVisible(); + await expect(wpDashboard.modal).toContainText("Continue"); + await wpDashboard.page + .getByRole("button", { name: "Continue from previous period" }) + .click(); + + // Confirm created WP is in table + await wpDashboard.getReports(); + await expect(wpDashboard.copiedReport).toBeVisible(); + const editCopiedReportButton = wpDashboard.copiedReport.getByRole( + "button", + { + name: "Edit", + exact: true, + } + ); + await expect(editCopiedReportButton).toBeVisible(); + } + }); + + test("State user can fill and submit a Work Plan", async () => { + await homePage.goto(); + await homePage.wpButton.click(); + + // Dashboard + await wpDashboard.isReady(); const editNewWPButton = wpDashboard.firstReport.getByRole("button", { name: "Edit", exact: true, }); - await expect(editNewWPButton).toBeVisible(); - } else { - await wpDashboard.copyoverButton.click(); - await expect(wpDashboard.modal).toBeVisible(); - await expect(wpDashboard.modal).toContainText("Continue"); - await page - .getByRole("button", { name: "Continue from previous period" }) - .click(); - - // Confirm created WP is in table - await wpDashboard.getReports(); - await expect(wpDashboard.copiedReport).toBeVisible(); - const editCopiedReportButton = wpDashboard.copiedReport.getByRole( - "button", - { - name: "Edit", - exact: true, + await editNewWPButton.click(); + + // General Information + await wpGeneralInformation.isReady(); + await expect(wpGeneralInformation.disclosure).toBeVisible(); + + // Transition Benchmarks + await wpGeneralInformation.continueButton.click(); + await wpTransitionBenchmarkProjections.isReady(); + await wpTransitionBenchmarkProjections.editPopulations(); + + // Transition Benchmark Strategy + await wpTransitionBenchmarkProjections.continueButton.click(); + await wpTransitionBenchmarkStrategy.isReady(); + await wpTransitionBenchmarkStrategy.fillTextFields(); + + // Initiatives Instructions + await wpTransitionBenchmarkStrategy.continueButton.click(); + await wpInitiativesInstructions.isReady(); + await wpInitiativesInstructions.fillFormFields(); + + // Initiatives Dashboard + await wpInitiativesInstructions.continueButton.click(); + await wpInitiativesDashboard.isReady(); + + if (await wpInitiativesDashboard.alert.isVisible()) { + for (const topic of wpInitiativesDashboard.requiredTopics) { + await wpInitiativesDashboard.addInitiative(topic); } - ); - await expect(editCopiedReportButton).toBeVisible(); - } + } + + await expect(wpInitiativesDashboard.alert).not.toBeVisible(); + + // Initiatives Overlays + const initiatives = await wpInitiativesDashboard.page + .getByRole("row", { + name: "Edit", + }) + .all(); + + for (const initiative of initiatives) { + await initiative.getByRole("button", { name: "edit button" }).click(); + const overlayPage = new WPInitiativeOverlayPage(userPage); + await overlayPage.isReady(); + + await overlayPage.completeDefineInitiative(userPage); + await overlayPage.completeEvaluationPlan(userPage); + await overlayPage.completeFundingSources(userPage); + await overlayPage.isReady(); + const errorIcons = await wpReviewAndSubmit.page + .getByAltText("warning icon") + .all(); + await expect(errorIcons.length).toBe(0); + + await overlayPage.backButton.click(); + } + + await wpInitiativesDashboard.isReady(); + + // Review and Submit + await wpInitiativesDashboard.continueButton.click(); + await wpReviewAndSubmit.isReady(); + const errorIcons = await wpReviewAndSubmit.page + .getByAltText("Error notification") + .all(); + await expect(errorIcons.length).toBe(0); + + await wpReviewAndSubmit.submitButton.click(); + await wpReviewAndSubmit.confirmSubmit(); + + // Confirmation + await wpReviewAndSubmit.isReady(); + await expect( + wpReviewAndSubmit.page.getByRole("heading", { + name: "Successfully Submitted", + }) + ).toBeVisible(); + + await wpDashboard.goto(); + }); + + test("Admin user can deny a work plan", async () => { + const page = adminWpDashboard.page; + const unlockButton = page.getByRole("button", { name: "Unlock" }).first(); + const modal = page.getByRole("dialog"); + + await adminWpDashboard.goto(); + await unlockButton.click(); + await modal + .getByRole("heading", { name: "You unlocked this Work Plan" }) + .isVisible(); + await modal.getByRole("button", { name: "Return to dashboard" }).click(); + await expect(unlockButton).toBeDisabled(); + }); }); diff --git a/tests/seeds/fixtures/banner.ts b/tests/seeds/fixtures/banner.ts index 5fe1cd017..4fddc8a8c 100644 --- a/tests/seeds/fixtures/banner.ts +++ b/tests/seeds/fixtures/banner.ts @@ -1,8 +1,10 @@ import { faker } from "@faker-js/faker"; -import { SeedBannerDataShape } from "../types"; +import { SeedBannerShape } from "../types"; -export const newBanner = (key: string): SeedBannerDataShape => ({ +export const newBanner = (key: string): SeedBannerShape => ({ key, + createdAt: faker.date.past({ years: 1 }).getTime(), + lastAltered: faker.date.past({ years: 1 }).getTime(), title: faker.lorem.sentence(), description: faker.lorem.sentence(), startDate: faker.date.past({ years: 1 }).getTime(), diff --git a/tests/seeds/fixtures/work-plan.ts b/tests/seeds/fixtures/work-plan.ts index e5bffb104..75fea9d63 100644 --- a/tests/seeds/fixtures/work-plan.ts +++ b/tests/seeds/fixtures/work-plan.ts @@ -5,27 +5,22 @@ import { ReportStatus, ReportType, } from "../../../services/app-api/utils/types"; -import { - dateFormat, - quarterlyKeyValueGenerator, - randomReportPeriod, - randomReportYear, -} from "../helpers"; +import { dateFormat, quarterlyKeyValueGenerator } from "../helpers"; import { SeedFillReportShape, SeedNewReportShape } from "../types"; export const newWorkPlan = ( stateName: string, - reportYear?: number, - reportPeriod?: number + reportYear: number, + reportPeriod: number ): SeedNewReportShape => ({ metadata: { isComplete: false, lastAlteredBy: faker.person.fullName(), locked: false, previousRevisions: [], - reportPeriod: reportPeriod || randomReportPeriod, + reportPeriod: reportPeriod, reportType: ReportType.WP, - reportYear: reportYear || randomReportYear, + reportYear: reportYear, status: ReportStatus.NOT_STARTED, submissionCount: 0, submissionName: "Work Plan", diff --git a/tests/seeds/helpers.ts b/tests/seeds/helpers.ts index 13391ff1b..e3a11bbb0 100644 --- a/tests/seeds/helpers.ts +++ b/tests/seeds/helpers.ts @@ -115,8 +115,8 @@ const del = async ( }; try { - const response = await fetch(url, request); - return response.json(); + await fetch(url, request); + return {}; } catch (error) { errorResponse(error); } @@ -201,13 +201,6 @@ export const dateFormat: Intl.DateTimeFormat = new Intl.DateTimeFormat( export const currentYear: number = new Date().getFullYear(); -export const randomReportPeriod: number = faker.number.int({ min: 1, max: 2 }); - -export const randomReportYear: number = faker.number.int({ - min: currentYear, - max: currentYear + 1, -}); - export const quarterlyKeyValueGenerator = ( year: number, period: number, diff --git a/tests/seeds/options.ts b/tests/seeds/options.ts index 465281779..9015b715e 100644 --- a/tests/seeds/options.ts +++ b/tests/seeds/options.ts @@ -1,3 +1,4 @@ +import { ReportStatus } from "../../services/app-api/utils/types"; import { fillSemiAnnualReport, fillWorkPlan, @@ -28,25 +29,31 @@ export const loginSeedUsers = async (): Promise => { // Work Plan (WP) export const createWorkPlan = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number ): Promise => { const report = await postApi( `/reports/WP/${state}`, headers, - newWorkPlan(stateName, customReportYear, customReportPeriod) + newWorkPlan(stateName, year, period) ); return report; }; export const createFilledWorkPlan = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number ): Promise => { - const { id, reportYear, reportPeriod } = await createWorkPlan( - customReportYear, - customReportPeriod - ); + const { id } = await createWorkPlan(year, period); + const report = await updateFillWorkPlan(id); + return report; +}; + +export const updateFillWorkPlan = async ( + id: string +): Promise => { + const { reportYear, reportPeriod } = await getWorkPlanById(id); + const report = await putApi( `/reports/WP/${state}/${id}`, headers, @@ -56,13 +63,17 @@ export const createFilledWorkPlan = async ( }; export const createSubmittedWorkPlan = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number +): Promise => { + const { id } = await createFilledWorkPlan(year, period); + const report = await updateSubmitWorkPlan(id); + return report; +}; + +export const updateSubmitWorkPlan = async ( + id: string ): Promise => { - const { id } = await createFilledWorkPlan( - customReportYear, - customReportPeriod - ); const report = await postApi( `/reports/submit/WP/${state}/${id}`, headers, @@ -72,13 +83,17 @@ export const createSubmittedWorkPlan = async ( }; export const createApprovedWorkPlan = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number +): Promise => { + const { id } = await createSubmittedWorkPlan(year, period); + const report = await updateApproveWorkPlan(id); + return report; +}; + +export const updateApproveWorkPlan = async ( + id: string ): Promise => { - const { id } = await createSubmittedWorkPlan( - customReportYear, - customReportPeriod - ); const report = await putApi( `/reports/approve/WP/${state}/${id}`, adminHeaders, @@ -88,13 +103,17 @@ export const createApprovedWorkPlan = async ( }; export const createLockedWorkPlan = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number +): Promise => { + const { id } = await createApprovedWorkPlan(year, period); + const report = await updateLockWorkPlan(id); + return report; +}; + +export const updateLockWorkPlan = async ( + id: string ): Promise => { - const { id } = await createApprovedWorkPlan( - customReportYear, - customReportPeriod - ); const report = await putApi( `/reports/release/WP/${state}/${id}`, adminHeaders, @@ -104,13 +123,17 @@ export const createLockedWorkPlan = async ( }; export const createArchivedWorkPlan = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number +): Promise => { + const { id } = await createApprovedWorkPlan(year, period); + const report = await updateArchiveWorkPlan(id); + return report; +}; + +export const updateArchiveWorkPlan = async ( + id: string ): Promise => { - const { id } = await createApprovedWorkPlan( - customReportYear, - customReportPeriod - ); const report = await putApi( `/reports/archive/WP/${state}/${id}`, adminHeaders, @@ -119,6 +142,17 @@ export const createArchivedWorkPlan = async ( return report; }; +export const getWorkPlansByReportingPeriod = async ( + year: number, + period: number +): Promise => { + const wps = await getWorkPlansByState(); + const reports = wps.filter( + (w) => w.reportYear === year && w.reportPeriod === period + ); + return reports; +}; + export const getWorkPlanById = async (id: string): Promise => { const report = await getApi(`/reports/WP/${state}/${id}`, headers); return report; @@ -131,13 +165,28 @@ export const getWorkPlansByState = async (): Promise => { // Semi-Annual Report (SAR) export const createSemiAnnualReport = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number ): Promise => { - const { id } = await createApprovedWorkPlan( - customReportYear, - customReportPeriod - ); + let id; + + const newWP = await createApprovedWorkPlan(year, period); + + if (newWP.id) { + id = newWP.id; + } else { + const existingWPs = await getWorkPlansByReportingPeriod(year, period); + const approvedWPs = existingWPs.filter( + (w) => w.status === ReportStatus.APPROVED + ); + + if (approvedWPs.length === 0) { + return "No approved WP available for this SAR." as unknown as SeedReportShape; + } + + id = approvedWPs[0].id; + } + const wp = await getWorkPlanById(id); const report = await postApi( @@ -150,31 +199,50 @@ export const createSemiAnnualReport = async ( }; export const createFilledSemiAnnualReport = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number ): Promise => { - const sar = await createSemiAnnualReport( - customReportYear, - customReportPeriod - ); + const sar = await createSemiAnnualReport(year, period); + + if (sar.id) { + const report = await updateFillSemiAnnualReport(sar.id); + return report; + } + + // Error message + return sar; +}; +export const updateFillSemiAnnualReport = async ( + id: string +): Promise => { + const sar = await getSemiAnnualReportById(id); const report = await putApi( - `/reports/SAR/${state}/${sar.id}`, + `/reports/SAR/${state}/${id}`, headers, fillSemiAnnualReport(sar) ); - return report; }; export const createSubmittedSemiAnnualReport = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number +): Promise => { + const sar = await createFilledSemiAnnualReport(year, period); + + if (sar.id) { + const report = await updateSubmitSemiAnnualReport(sar.id); + return report; + } + + // Error message + return sar; +}; + +export const updateSubmitSemiAnnualReport = async ( + id: string ): Promise => { - const { id } = await createFilledSemiAnnualReport( - customReportYear, - customReportPeriod - ); const report = await postApi( `/reports/submit/SAR/${state}/${id}`, headers, @@ -184,13 +252,23 @@ export const createSubmittedSemiAnnualReport = async ( }; export const createLockedSemiAnnualReport = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number +): Promise => { + const sar = await createFilledSemiAnnualReport(year, period); + + if (sar.id) { + const report = await updateLockSemiAnnualReport(sar.id); + return report; + } + + // Error message + return sar; +}; + +export const updateLockSemiAnnualReport = async ( + id: string ): Promise => { - const { id } = await createFilledSemiAnnualReport( - customReportYear, - customReportPeriod - ); const report = await putApi( `/reports/release/SAR/${state}/${id}`, adminHeaders, @@ -200,13 +278,23 @@ export const createLockedSemiAnnualReport = async ( }; export const createArchivedSemiAnnualReport = async ( - customReportYear?: number, - customReportPeriod?: number + year: number, + period: number +): Promise => { + const sar = await createFilledSemiAnnualReport(year, period); + + if (sar.id) { + const report = await updateArchiveSemiAnnualReport(sar.id); + return report; + } + + // Error message + return sar; +}; + +export const updateArchiveSemiAnnualReport = async ( + id: string ): Promise => { - const { id } = await createFilledSemiAnnualReport( - customReportYear, - customReportPeriod - ); const report = await putApi( `/reports/archive/SAR/${state}/${id}`, adminHeaders, @@ -242,11 +330,14 @@ export const createBanner = async (): Promise => { }; export const getBannerById = async (): Promise => { - const banner = await getApi(`/banners/${bannerKey}`, headers); - return banner; + try { + const banner = await getApi(`/banners/${bannerKey}`, adminHeaders); + return banner; + } catch { + return {} as SeedBannerShape; + } }; -export const deleteBannerById = async (): Promise => { - const banner = await deleteApi(`/banners/${bannerKey}`, adminHeaders); - return banner; +export const deleteBannerById = async (): Promise => { + await deleteApi(`/banners/${bannerKey}`, adminHeaders); }; diff --git a/tests/seeds/types.ts b/tests/seeds/types.ts index 5778af048..c6705ac4d 100644 --- a/tests/seeds/types.ts +++ b/tests/seeds/types.ts @@ -38,15 +38,12 @@ export type SeedReportShape = ReportMetadataShape & { fieldData: ReportFieldData; }; -export type SeedBannerDataShape = { +export type SeedBannerShape = { key: string; + createdAt: number; + lastAltered: number; title: string; description: string; startDate: number; endDate: number; }; - -export type SeedBannerShape = { - Item?: SeedBannerDataShape; - Key?: SeedBannerDataShape; -}; diff --git a/yarn.lock b/yarn.lock index 78d4bff31..13955295c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4228,12 +4228,12 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@playwright/test@^1.44.0": - version "1.44.0" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.44.0.tgz#ac7a764b5ee6a80558bdc0fcbc525fcb81f83465" - integrity sha512-rNX5lbNidamSUorBhB4XZ9SQTjAqfe5M+p37Z8ic0jPFBMo5iCtQz1kRWkEMg+rYOKSlVycpQmpqjSFq7LXOfg== +"@playwright/test@^1.48.0": + version "1.48.0" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.48.0.tgz#4b81434a3ca75e2a6f82a645287784223a45434c" + integrity sha512-W5lhqPUVPqhtc/ySvZI5Q8X2ztBOUgZ8LbAFy0JQgrXZs2xaILrUcNO3rQjwbLPfGK13+rZsDa1FpG+tqYkT5w== dependencies: - playwright "1.44.0" + playwright "1.48.0" "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" @@ -11714,17 +11714,17 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -playwright-core@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.44.0.tgz#316c4f0bca0551ffb88b6eb1c97bc0d2d861b0d5" - integrity sha512-ZTbkNpFfYcGWohvTTl+xewITm7EOuqIqex0c7dNZ+aXsbrLj0qI8XlGKfPpipjm0Wny/4Lt4CJsWJk1stVS5qQ== +playwright-core@1.48.0: + version "1.48.0" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.48.0.tgz#34d209dd4aba8fccd4a96116f1c4f7630f868722" + integrity sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA== -playwright@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.44.0.tgz#22894e9b69087f6beb639249323d80fe2b5087ff" - integrity sha512-F9b3GUCLQ3Nffrfb6dunPOkE5Mh68tR7zN32L4jCk4FjQamgesGay7/dAAe1WaMEGV04DkdJfcJzjoCKygUaRQ== +playwright@1.48.0: + version "1.48.0" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.48.0.tgz#00855d9a25f1991d422867f1c32af5d90f457b48" + integrity sha512-qPqFaMEHuY/ug8o0uteYJSRfMGFikhUysk8ZvAtfKmUK3kc/6oNl/y3EczF8OFGYIi/Ex2HspMfzYArk6+XQSA== dependencies: - playwright-core "1.44.0" + playwright-core "1.48.0" optionalDependencies: fsevents "2.3.2"