From 25a4450feab2e2e2ad70845006691ba2de644414 Mon Sep 17 00:00:00 2001 From: Tony Barnes Date: Tue, 23 Jul 2024 13:54:52 +0100 Subject: [PATCH] chore(merge): iterations - merge main into main-iterations (#2787) * chore(deployment-script): changed feature to main-iterations (#2715) Co-authored-by: Zain Kassam * chore(remove-script-prefix): package.json - Remove --prefix (#2708) * chore(main): release 2.10.0 (#2722) * chore(main): release 2.10.0 * chore(cspell): fix typos --------- Co-authored-by: ttbarnes * fix(EMS-3560): update az cli to v2 (#2720) * fix(EMS-3560): update az cli to v2 * fix(EMS-3560): update az cli to v2 * fix(durable-functions): updated szenius/set-timezone GHA plugin to v2 * fix(durable-functions): updated szenius/set-timezone GHA plugin to v2 --------- Co-authored-by: Abhi Markan Co-authored-by: ttbarnes * chore(main): release 2.10.1 (#2724) * feat(EMS-3502-3567-3568): content updates - contact details (#2721) * feat(EMS-3502-3567-3568): content updates - contact us * feat(EMS-3502-3567-3568): content updates - email links * feat(EMS-3502-3567-3568): content updates - email links * feat(EMS-3502-3567-3568): content updates - email links * feat(EMS-3502-3567-3568): dry cypress selectors * feat(EMS-3502-3567-3568): dry cypress selectors * feat(EMS-3502-3567-3568): content updates - email links * feat(EMS-3502-3567-3568): revert content string change * chore(main): release 2.11.0 (#2725) * fix(EMS-3439-3504): uk goods or services, application submission email copy fixes (#2728) * feat(EMS-2186): added key vault * fix(EMS-2186): added tags to Key Vault * fix(EMS-2186): azure IaC fix * fix(EMS-2186): azure IaC fix * fix(EMS-2186): azure IaC fix * fix(EMS-2186): added tags to Key Vault * chore(main): release 2.11.1 (#2732) * fix(EMS-3590-3591-3423): header link, integrity hashes (#2738) * fix(EMS-3590): update insurance header link * fix(EMS-3591-3423): update integrity hashes * chore(EMS-3533): update start url redirect * fix(EMS-3533): revert start page redirect * chore(e2e): dry route const * chore(main): release 2.11.2 (#2740) * style(EMS-3574): problem with service - content iterations (#2741) * feat(EMS-3587-3425): contact page - content iterations (#2742) * feat(EMS-3587): contact page - content iterations * chore(EMS-3587): remove commented code * fix(EMS-3425): password reset - update label text * fix(EMS-3425): password reset - update label text * chore(main): release 2.12.0 (#2743) * fix(DTFS2-7284): fixed private endpoint * fix(EMS-2186): removed purge protection * chore(deps): bump dependencies (#2755) * fix(EMS-2186): removed * from flag * fix(EM-2186): fixed conditional deployment * chore(main): release 2.12.1 (#2757) * chore(mysql-version): mysql - Version (#2758) * chore(mysql-version): downgraded to 8.0.21 * chore(mysql-version): added to cspell * chore(mysql-version): bumped dependency * chore(mysql-version): downgrade to 8.0 * chore(mysql-version): bump deps * chore(mysql-version): bump deps --------- Co-authored-by: Zain Kassam * fix(EMS-3604): no PDF - Anti-bribery code of conduct - Incorrect link (#2768) * chore(main): release 2.12.2 (#2769) * feat(EMS-3606): added missing environment variables * chore(main): release 2.13.0 (#2779) * feat(EMS-3610): changed wording for export contract agent question * chore(main): release 2.14.0 (#2784) * feat(EMS-3535): changes to anti-bribery and corruption definitions (#2778) Co-authored-by: Zain Kassam * chore(main): release 2.15.0 (#2786) --------- Co-authored-by: zainZzKk <51957827+Zainzzkk@users.noreply.github.com> Co-authored-by: Zain Kassam Co-authored-by: Abhi Markan <32125108+abhi-markan@users.noreply.github.com> Co-authored-by: Abhi Markan --- .cspell.json | 2 + .github/workflows/deployment.yml | 3 +- .github/workflows/infrastructure.yml | 91 +++-- .github/workflows/test.yml | 344 +++++++++--------- .release-please-manifest.json | 2 +- CHANGELOG.md | 33 ++ docker-compose.yml | 2 +- e2e-tests/content-strings/links.js | 2 +- .../pages/insurance/declarations/index.js | 6 +- .../pages/insurance/export-contract/index.js | 5 +- package-lock.json | 226 ++++++------ package.json | 10 +- src/api/package-lock.json | 16 +- src/api/package.json | 2 +- src/ui/package-lock.json | 24 +- src/ui/package.json | 4 +- src/ui/server/content-strings/links.ts | 2 +- .../pages/insurance/declarations/index.ts | 6 +- .../pages/insurance/export-contract/index.ts | 5 +- 19 files changed, 436 insertions(+), 349 deletions(-) diff --git a/.cspell.json b/.cspell.json index 706981fa22..9114305ca5 100644 --- a/.cspell.json +++ b/.cspell.json @@ -60,6 +60,7 @@ "Curncy", "datafixes", "Dockerised", + "DTFS", "dtos", "EASS", "ecgd", @@ -148,6 +149,7 @@ "Useds", "venv", "VNET", + "vnets", "XLSX" ], "dictionaries": [ diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 539f3db5f2..4674095039 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -59,7 +59,6 @@ jobs: name: Database 💾 needs: setup environment: ${{ needs.setup.outputs.environment }} - if: ${{ '1' == vars.DATABASE }} env: ENVIRONMENT: ${{ needs.setup.outputs.environment }} runs-on: [self-hosted, EXIP, deployment] @@ -81,12 +80,14 @@ jobs: az configure --defaults group=rg-${{ env.PRODUCT }}-${{ github.ref_name }}-${{ vars.VERSION }} - name: Extension ➕ + if: ${{ '1' == vars.DATABASE }} uses: azure/cli@v2 with: inlineScript: | az config set extension.use_dynamic_install=yes_without_prompt - name: Import ⬇ + if: ${{ '1' == vars.DATABASE }} uses: azure/cli@v2 with: inlineScript: | diff --git a/.github/workflows/infrastructure.yml b/.github/workflows/infrastructure.yml index 2648d8219c..c2d0505802 100644 --- a/.github/workflows/infrastructure.yml +++ b/.github/workflows/infrastructure.yml @@ -165,6 +165,12 @@ jobs: --address-prefixes ${{ vars.VNET_SUBNET_PRIVATE_PREFIX }} \ --vnet-name vnet-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} + az network vnet subnet create \ + --name snet-keyvault-${{ env.PRODUCT }}-${{ vars.VERSION }} \ + --address-prefixes ${{ vars.VNET_SUBNET_KEYVAULT_PREFIX }} \ + --vnet-name vnet-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --service-endpoints Microsoft.KeyVault + - name: VNET Peer - AMI 🔀 uses: azure/cli@v2 with: @@ -365,6 +371,17 @@ jobs: inlineScript: | az extension add --name front-door + - name: Key Vault 🔑 + uses: azure/cli@v2 + with: + inlineScript: | + az keyvault create \ + --name kv-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --default-action Deny \ + --public-network-access Disabled \ + --network-acls-ips ${{ secrets.WAF_ALLOWED_IP }} \ + --network-acls-vnets $(az network vnet subnet list --vnet-name vnet-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} --query '[?contains(name, `keyvault`)].id' -o tsv) + - name: Private endpoint 🔏 uses: azure/cli@v2 with: @@ -389,6 +406,16 @@ jobs: --group-id sites \ --tags ${{ env.TAGS }} + #Key Vault + az network private-endpoint create \ + --name private-endpoint-keyvault-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --private-connection-resource-id $(az keyvault show --name kv-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} --query id -o tsv) \ + --connection-name private-link-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --subnet snet-private-${{ env.PRODUCT }}-${{ vars.VERSION }} \ + --vnet-name vnet-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --group-id vault \ + --tags ${{ env.TAGS }} + - name: Private DNS 🌍 uses: azure/cli@v2 with: @@ -441,7 +468,7 @@ jobs: --private-link-location ${{ vars.REGION }} \ --private-link-resource $(az webapp show --name app-${{ env.PRODUCT }}-ui-${{ env.TARGET }}-${{ vars.VERSION }} --query id -o tsv) \ --private-link-request-message '${{ env.PRODUCT }}-ui-${{ env.TARGET }}-${{ vars.VERSION }}' \ - --private-link-sub-resource-type $(az network private-link-resource list --id $(az webapp show --name app-${{ env.PRODUCT }}-ui-${{ env.TARGET }}-${{ vars.VERSION }} --query id -o tsv) --query [].name -o tsv) \ + --private-link-sub-resource-type $(az network private-link-resource list --id $(az webapp show --name app-${{ env.PRODUCT }}-ui-${{ env.TARGET }}-${{ vars.VERSION }} --query id -o tsv) --query '[]'.name -o tsv) \ --origin-group-name ui \ --profile-name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ --enabled-state Enabled @@ -491,8 +518,8 @@ jobs: # Associate FD az afd security-policy create \ --security-policy-name security-policy-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ - --waf-policy $(az network front-door waf-policy list --query [].id -o tsv) \ - --domains $(az afd endpoint list --profile-name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} --query [].id -o tsv) \ + --waf-policy $(az network front-door waf-policy list --query '[]'.id -o tsv) \ + --domains $(az afd endpoint list --profile-name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} --query '[]'.id -o tsv) \ --profile-name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} # Custom rule - RL @@ -649,11 +676,11 @@ jobs: COMPANIES_HOUSE_API_KEY='${{ secrets.COMPANIES_HOUSE_API_KEY }}' \ JWT_SIGNING_KEY='${{ secrets.JWT_SIGNING_KEY }}' \ UNDERWRITING_TEAM_EMAIL='${{ secrets.UNDERWRITING_TEAM_EMAIL }}' \ - FEEDBACK_EMAIL_RECIPIENT='${{ secrets.FEEDBACK_EMAIL_RECIPIENT }}' - CRON_SCHEDULE_UNVERIFIED_ACCOUNT='${{ secrets.CRON_SCHEDULE_UNVERIFIED_ACCOUNT }}' - CRON_SCHEDULE_INACTIVE_APPLICATION='${{ secrets.CRON_SCHEDULE_INACTIVE_APPLICATION }}' - CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL='${{ secrets.CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL }}' - APPLICATION_URL='${{ secrets.APPLICATION_URL }}' + FEEDBACK_EMAIL_RECIPIENT='${{ secrets.FEEDBACK_EMAIL_RECIPIENT }}' \ + CRON_SCHEDULE_UNVERIFIED_ACCOUNT='${{ secrets.CRON_SCHEDULE_UNVERIFIED_ACCOUNT }}' \ + CRON_SCHEDULE_INACTIVE_APPLICATION='${{ secrets.CRON_SCHEDULE_INACTIVE_APPLICATION }}' \ + CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL='${{ secrets.CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL }}' \ + APPLICATION_URL='${{ vars.APPLICATION_URL }}' - name: Extension ➕ uses: azure/cli@v2 @@ -670,7 +697,7 @@ jobs: inlineScript: | az webapp connection create mysql-flexible \ --source-id $(az webapp show --name app-${{ env.PRODUCT }}-api-${{ env.TARGET }}-${{ vars.VERSION }} --query id -o tsv) \ - --target-id $(az mysql flexible-server list --query [].id -o tsv)/databases/${{ env.PRODUCT }} \ + --target-id $(az mysql flexible-server list --query '[]'.id -o tsv)/databases/${{ env.PRODUCT }} \ --connection webapp_api_mysqlflexible_${{ env.PRODUCT }}_${{ env.TARGET }}_${{ vars.VERSION }} \ --secret name=${{ secrets.MYSQL_USER }} secret=${{ secrets.MYSQL_PASSWORD }} \ --client-type nodejs @@ -769,13 +796,13 @@ jobs: --record-set-name "@" \ --zone ${{ vars.DOMAIN_QUOTE }} \ --value ${{ vars.CA_VERIFICATION }} \ - --if-none-match "*" + --if-none-match az network dns record-set txt add-record \ --record-set-name "@" \ --zone ${{ vars.DOMAIN_INSURANCE }} \ --value ${{ vars.CA_VERIFICATION }} \ - --if-none-match "*" + --if-none-match - name: CAA records uses: azure/cli@v2 @@ -865,8 +892,8 @@ jobs: inlineScript: | az monitor diagnostic-settings create \ --name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ - --resource $(az monitor log-analytics workspace list --query [].id -o tsv) \ - --workspace $(az monitor log-analytics workspace list --query [].id -o tsv) \ + --resource $(az monitor log-analytics workspace list --query '[]'.id -o tsv) \ + --workspace $(az monitor log-analytics workspace list --query '[]'.id -o tsv) \ --logs "[{categoryGroup:allLogs,enabled:true}]" \ --metrics "[{category:allMetrics,enabled:true}]" @@ -914,8 +941,19 @@ jobs: inlineScript: | az monitor diagnostic-settings create \ --name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ - --resource $(az afd profile list --query [].id -o tsv) \ - --workspace $(az monitor log-analytics workspace list --query [].id -o tsv) \ + --resource $(az afd profile list --query '[]'.id -o tsv) \ + --workspace $(az monitor log-analytics workspace list --query '[]'.id -o tsv) \ + --logs "[{categoryGroup:allLogs,enabled:true}]" \ + --metrics "[{category:allMetrics,enabled:true}]" + + - name: Key Vault 🔑 + uses: azure/cli@v2 + with: + inlineScript: | + az monitor diagnostic-settings create \ + --name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --resource $(az keyvault show --name kv-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} --query id -o tsv) \ + --workspace $(az monitor log-analytics workspace list --query '[]'.id -o tsv) \ --logs "[{categoryGroup:allLogs,enabled:true}]" \ --metrics "[{category:allMetrics,enabled:true}]" @@ -925,16 +963,23 @@ jobs: inlineScript: | # UI az monitor diagnostic-settings create \ - --name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ - --resource $(az network nic list --query ['?contains(name, `ui`)'].id -o tsv) \ - --workspace $(az monitor log-analytics workspace list --query [].id -o tsv) \ + --name webapp-ui-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --resource $(az network nic list --query '[?contains(name, `ui`)]'.id -o tsv) \ + --workspace $(az monitor log-analytics workspace list --query '[]'.id -o tsv) \ --metrics "[{category:allMetrics,enabled:true}]" # API az monitor diagnostic-settings create \ - --name frontdoor-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ - --resource $(az network nic list --query ['?contains(name, `api`)'].id -o tsv) \ - --workspace $(az monitor log-analytics workspace list --query [].id -o tsv) \ + --name webapp-api-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --resource $(az network nic list --query '[?contains(name, `api`)]'.id -o tsv) \ + --workspace $(az monitor log-analytics workspace list --query '[]'.id -o tsv) \ + --metrics "[{category:allMetrics,enabled:true}]" + + # KV + az monitor diagnostic-settings create \ + --name kv-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ + --resource $(az network nic list --query '[?contains(name, `key`)]'.id -o tsv) \ + --workspace $(az monitor log-analytics workspace list --query '[]'.id -o tsv) \ --metrics "[{category:allMetrics,enabled:true}]" # 7. Various alerts @@ -1008,8 +1053,8 @@ jobs: --name alert-healthcheck-${{ env.PRODUCT }}-${{ env.TARGET }}-${{ vars.VERSION }} \ --description "1 minute health check" \ --condition "avg 'OriginHealthPercentage' <= 99.0 where OriginGroup includes ui" \ - --scope $(az afd profile list --query [].id -o tsv) \ - --action $(az monitor action-group list --query [].id -o tsv) \ + --scope $(az afd profile list --query '[]'.id -o tsv) \ + --action $(az monitor action-group list --query '[]'.id -o tsv) \ --auto-mitigate true \ --severity 0 \ --tags ${{ env.TAGS }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f0340ceca6..b5f95f51b5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,20 +11,20 @@ on: pull_request: branches: [main, main-*] paths: - - ".github/workflows/**" - - "docker-compose.yml" - - "package*.json" - - "src/**" - - "e2e-tests/**" - - "generate-exip-pricing-grid/**" - - "database/**" + - '.github/workflows/**' + - 'docker-compose.yml' + - 'package*.json' + - 'src/**' + - 'e2e-tests/**' + - 'generate-exip-pricing-grid/**' + - 'database/**' env: - environment: "qa" + environment: 'qa' timezone: ${{ vars.TIMEZONE }} NODE_ENV: ${{ vars.NODE_ENV }} - TLS_CERTIFICATE: "${{ secrets.TLS_CERTIFICATE }}" - TLS_KEY: "${{ secrets.TLS_KEY }}" + TLS_CERTIFICATE: '${{ secrets.TLS_CERTIFICATE }}' + TLS_KEY: '${{ secrets.TLS_KEY }}' DATABASE_PORT: ${{ vars.DATABASE_PORT }} API_PORT: ${{ vars.API_PORT }} UI_PORT: ${{ vars.UI_PORT }} @@ -49,6 +49,10 @@ env: MOCK_ACCOUNT_PASSWORD: ${{ secrets.MOCK_ACCOUNT_PASSWORD }} JWT_SIGNING_KEY: ${{ secrets.JWT_SIGNING_KEY }} EXCELJS_PROTECTION_PASSWORD: ${{ secrets.EXCELJS_PROTECTION_PASSWORD }} + CRON_SCHEDULE_UNVERIFIED_ACCOUNT: ${{ secrets.CRON_SCHEDULE_UNVERIFIED_ACCOUNT }} + CRON_SCHEDULE_INACTIVE_APPLICATION: ${{ secrets.CRON_SCHEDULE_INACTIVE_APPLICATION }} + CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL: ${{ secrets.CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL }} + APPLICATION_URL: ${{ vars.APPLICATION_URL }} jobs: # 1. Setup test infrastructure @@ -143,8 +147,8 @@ jobs: working-directory: ./ env: NODE_ENV: ${{ vars.NODE_ENV }} - TLS_CERTIFICATE: "${{ secrets.TLS_CERTIFICATE }}" - TLS_KEY: "${{ secrets.TLS_KEY }}" + TLS_CERTIFICATE: '${{ secrets.TLS_CERTIFICATE }}' + TLS_KEY: '${{ secrets.TLS_KEY }}' DATABASE_PORT: ${{ vars.DATABASE_PORT }} API_PORT: ${{ vars.API_PORT }} UI_PORT: ${{ vars.UI_PORT }} @@ -166,6 +170,10 @@ jobs: FEEDBACK_EMAIL_RECIPIENT: ${{ secrets.FEEDBACK_EMAIL_RECIPIENT }} MOCK_ACCOUNT_PASSWORD: ${{ secrets.MOCK_ACCOUNT_PASSWORD }} JWT_SIGNING_KEY: ${{ secrets.JWT_SIGNING_KEY }} + CRON_SCHEDULE_UNVERIFIED_ACCOUNT: ${{ secrets.CRON_SCHEDULE_UNVERIFIED_ACCOUNT }} + CRON_SCHEDULE_INACTIVE_APPLICATION: ${{ secrets.CRON_SCHEDULE_INACTIVE_APPLICATION }} + CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL: ${{ secrets.CRON_SCHEDULE_SUBMISSION_DEADLINE_REMINDER_EMAIL }} + APPLICATION_URL: ${{ secrets.APPLICATION_URL }} run: | docker compose up --build -d npm run ci:all @@ -193,146 +201,146 @@ jobs: matrix: spec: [ - "/*.spec.js", - "account/create/**/*.spec.js", - "account/manage/**/*.spec.js", - "account/password-reset/**/*.spec.js", - "account/reactivated/**/*.spec.js", - "account/sign-in/**/*.spec.js", - "account/sign-out/**/*.spec.js", - "account/suspended/**/*.spec.js", - "application-submission/*.spec.js", - "application-submission/multiple-policy-type/*.spec.js", - "application-submission/multiple-policy-type/business-conditions/*.spec.js", - "application-submission/multiple-policy-type/buyer-conditions/*.spec.js", - "application-submission/multiple-policy-type/buyer-conditions/traded-with-buyer/*.spec.js", - "application-submission/multiple-policy-type/declarations-conditions/*.spec.js", - "application-submission/multiple-policy-type/export-contract-conditions/*.spec.js", - "application-submission/multiple-policy-type/policy-conditions/*.spec.js", - "application-submission/single-policy-type/*.spec.js", - "application-submission/single-policy-type/business-conditions/*.spec.js", - "application-submission/single-policy-type/buyer-conditions/*.spec.js", - "application-submission/single-policy-type/buyer-conditions/traded-with-buyer/*.spec.js", - "application-submission/single-policy-type/declarations-conditions/*.spec.js", - "application-submission/single-policy-type/export-contract-conditions/*.spec.js", - "application-submission/single-policy-type/policy-conditions/*.spec.js", - "cannot-skip-flow/**/*.spec.js", - "check-your-answers/export-contract/*.spec.js", - "check-your-answers/export-contract/change-your-answers/about-goods-or-services/*.spec.js", - "check-your-answers/export-contract/change-your-answers/agent/*.spec.js", - "check-your-answers/export-contract/change-your-answers/agent-charges/*.spec.js", - "check-your-answers/export-contract/change-your-answers/agent-service/*.spec.js", - "check-your-answers/export-contract/change-your-answers/how-will-you-get-paid/*.spec.js", - "check-your-answers/export-contract/change-your-answers/private-market/*.spec.js", - "check-your-answers/export-contract/summary-list/**/*.spec.js", - "check-your-answers/policy/*.spec.js", - "check-your-answers/policy/change-your-answers/another-company/*.spec.js", - "check-your-answers/policy/change-your-answers/broker/*.spec.js", - "check-your-answers/policy/change-your-answers/loss-payee/*.spec.js", - "check-your-answers/policy/change-your-answers/multiple-policy/*.spec.js", - "check-your-answers/policy/change-your-answers/name-on-policy/*.spec.js", - "check-your-answers/policy/change-your-answers/other-company-details/*.spec.js", - "check-your-answers/policy/change-your-answers/pre-credit-period/*.spec.js", - "check-your-answers/policy/change-your-answers/single-policy/*.spec.js", - "check-your-answers/policy/summary-list/multiple-policy/*.spec.js", - "check-your-answers/policy/summary-list/single-policy/*.spec.js", - "check-your-answers/your-business/**/*.spec.js", - "check-your-answers/your-buyer/**/*.spec.js", - "cookies-consent/**/*.spec.js", - "dashboard/**/*.spec.js", - "declarations/anti-bribery/**/*.spec.js", - "declarations/confidentiality/**/*.spec.js", - "declarations/confirmation-and-acknowledgements/**/*.spec.js", - "declarations/how-your-data-will-be-used/**/*.spec.js", - "eligibility/*.spec.js", - "eligibility/buyer-country/**/*.spec.js", - "eligibility/cannot-apply/**/*.spec.js", - "eligibility/cannot-apply-multiple-risks/**/*.spec.js", - "eligibility/cannot-skip-flow/**/*.spec.js", - "eligibility/contract-too-short/**/*.spec.js", - "eligibility/change-your-answers/**/*.spec.js", - "eligibility/check-your-answers/**/*.spec.js", - "eligibility/companies-house/**/*.spec.js", - "eligibility/company-details/**/*.spec.js", - "eligibility/company-not-active/**/*.spec.js", - "eligibility/cover-period/**/*.spec.js", - "eligibility/eligible-to-apply-online/**/*.spec.js", - "eligibility/end-buyer/**/*.spec.js", - "eligibility/exporter-location/**/*.spec.js", - "eligibility/have-an-account/**/*.spec.js", - "eligibility/no-companies-house-number/**/*.spec.js", - "eligibility/total-value-insured/**/*.spec.js", - "eligibility/uk-goods-or-services/**/*.spec.js", - "export-contract/about-goods-or-services/**/*.spec.js", - "export-contract/how-will-you-get-paid/**/*.spec.js", - "export-contract/private-market/**/*.spec.js", - "export-contract/declined-by-private-market/**/*.spec.js", - "export-contract/agent/**/*.spec.js", - "export-contract/agent-details/**/*.spec.js", - "export-contract/agent-service/**/*.spec.js", - "export-contract/agent-charges/**/*.spec.js", - "export-contract/change-your-answers/about-goods-or-services/*.spec.js", - "export-contract/change-your-answers/agent/*.spec.js", - "export-contract/change-your-answers/agent-charges/*.spec.js", - "export-contract/change-your-answers/agent-service/*.spec.js", - "export-contract/change-your-answers/how-will-you-get-paid/*.spec.js", - "export-contract/change-your-answers/private-market/*.spec.js", - "export-contract/check-your-answers/**/*.spec.js", - "export-contract/root/**/*.spec.js", - "feedback/**/*.spec.js", - "no-access-application-submitted/**/*.spec.js", - "no-access-to-application/**/*.spec.js", - "policy/*.spec.js", - "policy/another-company/**/*.spec.js", - "policy/broker/**/*.spec.js", - "policy/broker-details/**/*.spec.js", - "policy/broker-confirm-address/**/*.spec.js", - "policy/change-your-answers/another-company/**/*.spec.js", - "policy/change-your-answers/broker/**/*.spec.js", - "policy/change-your-answers/loss-payee/**/*.spec.js", - "policy/change-your-answers/multiple-policy/**/*.spec.js", - "policy/change-your-answers/name-on-policy/**/*.spec.js", - "policy/change-your-answers/other-company-details/**/*.spec.js", - "policy/change-your-answers/pre-credit-period/**/*.spec.js", - "policy/change-your-answers/single-policy/**/*.spec.js", - "policy/check-your-answers/**/*.spec.js", - "policy/different-name-on-policy/**/*.spec.js", - "policy/loss-payee/**/*.spec.js", - "policy/loss-payee-details/**/*.spec.js", - "policy/loss-payee-financial-details-uk/**/*.spec.js", - "policy/loss-payee-financial-details-international/**/*.spec.js", - "policy/multiple-contract-policy/**/*.spec.js", - "policy/name-on-policy/**/*.spec.js", - "policy/other-company-details/**/*.spec.js", - "policy/pre-credit-period/**/*.spec.js", - "policy/root/**/*.spec.js", - "policy/single-contract-policy/**/*.spec.js", - "policy/type-of-policy/**/*.spec.js", - "redirects/*.spec.js", - "submit-name-fields-with-special-characters/**/*.spec.js", - "submit-textarea-fields-with-new-line-characters/**/*.spec.js", - "submit-textarea-fields-with-special-characters/**/*.spec.js", - "submit-textarea-fields-with-a-pure-number/**/*.spec.js", - "task-list/**/*.spec.js", - "your-business/alternative-trading-address/**/*.spec.js", - "your-business/change-your-answers/**/*.spec.js", - "your-business/check-your-answers/**/*.spec.js", - "your-business/companies-house-number/*.spec.js", - "your-business/company-details/**/*.spec.js", - "your-business/credit-control/**/*.spec.js", - "your-business/nature-of-business/**/*.spec.js", - "your-business/root/**/*.spec.js", - "your-business/turnover/**/*.spec.js", - "your-buyer/alternative-currency/**/*.spec.js", - "your-buyer/buyer-financial-information/**/*.spec.js", - "your-buyer/change-your-answers/**/*.spec.js", - "your-buyer/check-your-answers/**/*.spec.js", - "your-buyer/company-or-organisation/**/*.spec.js", - "your-buyer/connection-with-the-buyer/**/*.spec.js", - "your-buyer/credit-insurance-cover/**/*.spec.js", - "your-buyer/root/**/*.spec.js", - "your-buyer/traded-with-buyer/**/*.spec.js", - "your-buyer/trading-history/**/*.spec.js", + '/*.spec.js', + 'account/create/**/*.spec.js', + 'account/manage/**/*.spec.js', + 'account/password-reset/**/*.spec.js', + 'account/reactivated/**/*.spec.js', + 'account/sign-in/**/*.spec.js', + 'account/sign-out/**/*.spec.js', + 'account/suspended/**/*.spec.js', + 'application-submission/*.spec.js', + 'application-submission/multiple-policy-type/*.spec.js', + 'application-submission/multiple-policy-type/business-conditions/*.spec.js', + 'application-submission/multiple-policy-type/buyer-conditions/*.spec.js', + 'application-submission/multiple-policy-type/buyer-conditions/traded-with-buyer/*.spec.js', + 'application-submission/multiple-policy-type/declarations-conditions/*.spec.js', + 'application-submission/multiple-policy-type/export-contract-conditions/*.spec.js', + 'application-submission/multiple-policy-type/policy-conditions/*.spec.js', + 'application-submission/single-policy-type/*.spec.js', + 'application-submission/single-policy-type/business-conditions/*.spec.js', + 'application-submission/single-policy-type/buyer-conditions/*.spec.js', + 'application-submission/single-policy-type/buyer-conditions/traded-with-buyer/*.spec.js', + 'application-submission/single-policy-type/declarations-conditions/*.spec.js', + 'application-submission/single-policy-type/export-contract-conditions/*.spec.js', + 'application-submission/single-policy-type/policy-conditions/*.spec.js', + 'cannot-skip-flow/**/*.spec.js', + 'check-your-answers/export-contract/*.spec.js', + 'check-your-answers/export-contract/change-your-answers/about-goods-or-services/*.spec.js', + 'check-your-answers/export-contract/change-your-answers/agent/*.spec.js', + 'check-your-answers/export-contract/change-your-answers/agent-charges/*.spec.js', + 'check-your-answers/export-contract/change-your-answers/agent-service/*.spec.js', + 'check-your-answers/export-contract/change-your-answers/how-will-you-get-paid/*.spec.js', + 'check-your-answers/export-contract/change-your-answers/private-market/*.spec.js', + 'check-your-answers/export-contract/summary-list/**/*.spec.js', + 'check-your-answers/policy/*.spec.js', + 'check-your-answers/policy/change-your-answers/another-company/*.spec.js', + 'check-your-answers/policy/change-your-answers/broker/*.spec.js', + 'check-your-answers/policy/change-your-answers/loss-payee/*.spec.js', + 'check-your-answers/policy/change-your-answers/multiple-policy/*.spec.js', + 'check-your-answers/policy/change-your-answers/name-on-policy/*.spec.js', + 'check-your-answers/policy/change-your-answers/other-company-details/*.spec.js', + 'check-your-answers/policy/change-your-answers/pre-credit-period/*.spec.js', + 'check-your-answers/policy/change-your-answers/single-policy/*.spec.js', + 'check-your-answers/policy/summary-list/multiple-policy/*.spec.js', + 'check-your-answers/policy/summary-list/single-policy/*.spec.js', + 'check-your-answers/your-business/**/*.spec.js', + 'check-your-answers/your-buyer/**/*.spec.js', + 'cookies-consent/**/*.spec.js', + 'dashboard/**/*.spec.js', + 'declarations/anti-bribery/**/*.spec.js', + 'declarations/confidentiality/**/*.spec.js', + 'declarations/confirmation-and-acknowledgements/**/*.spec.js', + 'declarations/how-your-data-will-be-used/**/*.spec.js', + 'eligibility/*.spec.js', + 'eligibility/buyer-country/**/*.spec.js', + 'eligibility/cannot-apply/**/*.spec.js', + 'eligibility/cannot-apply-multiple-risks/**/*.spec.js', + 'eligibility/cannot-skip-flow/**/*.spec.js', + 'eligibility/contract-too-short/**/*.spec.js', + 'eligibility/change-your-answers/**/*.spec.js', + 'eligibility/check-your-answers/**/*.spec.js', + 'eligibility/companies-house/**/*.spec.js', + 'eligibility/company-details/**/*.spec.js', + 'eligibility/company-not-active/**/*.spec.js', + 'eligibility/cover-period/**/*.spec.js', + 'eligibility/eligible-to-apply-online/**/*.spec.js', + 'eligibility/end-buyer/**/*.spec.js', + 'eligibility/exporter-location/**/*.spec.js', + 'eligibility/have-an-account/**/*.spec.js', + 'eligibility/no-companies-house-number/**/*.spec.js', + 'eligibility/total-value-insured/**/*.spec.js', + 'eligibility/uk-goods-or-services/**/*.spec.js', + 'export-contract/about-goods-or-services/**/*.spec.js', + 'export-contract/how-will-you-get-paid/**/*.spec.js', + 'export-contract/private-market/**/*.spec.js', + 'export-contract/declined-by-private-market/**/*.spec.js', + 'export-contract/agent/**/*.spec.js', + 'export-contract/agent-details/**/*.spec.js', + 'export-contract/agent-service/**/*.spec.js', + 'export-contract/agent-charges/**/*.spec.js', + 'export-contract/change-your-answers/about-goods-or-services/*.spec.js', + 'export-contract/change-your-answers/agent/*.spec.js', + 'export-contract/change-your-answers/agent-charges/*.spec.js', + 'export-contract/change-your-answers/agent-service/*.spec.js', + 'export-contract/change-your-answers/how-will-you-get-paid/*.spec.js', + 'export-contract/change-your-answers/private-market/*.spec.js', + 'export-contract/check-your-answers/**/*.spec.js', + 'export-contract/root/**/*.spec.js', + 'feedback/**/*.spec.js', + 'no-access-application-submitted/**/*.spec.js', + 'no-access-to-application/**/*.spec.js', + 'policy/*.spec.js', + 'policy/another-company/**/*.spec.js', + 'policy/broker/**/*.spec.js', + 'policy/broker-details/**/*.spec.js', + 'policy/broker-confirm-address/**/*.spec.js', + 'policy/change-your-answers/another-company/**/*.spec.js', + 'policy/change-your-answers/broker/**/*.spec.js', + 'policy/change-your-answers/loss-payee/**/*.spec.js', + 'policy/change-your-answers/multiple-policy/**/*.spec.js', + 'policy/change-your-answers/name-on-policy/**/*.spec.js', + 'policy/change-your-answers/other-company-details/**/*.spec.js', + 'policy/change-your-answers/pre-credit-period/**/*.spec.js', + 'policy/change-your-answers/single-policy/**/*.spec.js', + 'policy/check-your-answers/**/*.spec.js', + 'policy/different-name-on-policy/**/*.spec.js', + 'policy/loss-payee/**/*.spec.js', + 'policy/loss-payee-details/**/*.spec.js', + 'policy/loss-payee-financial-details-uk/**/*.spec.js', + 'policy/loss-payee-financial-details-international/**/*.spec.js', + 'policy/multiple-contract-policy/**/*.spec.js', + 'policy/name-on-policy/**/*.spec.js', + 'policy/other-company-details/**/*.spec.js', + 'policy/pre-credit-period/**/*.spec.js', + 'policy/root/**/*.spec.js', + 'policy/single-contract-policy/**/*.spec.js', + 'policy/type-of-policy/**/*.spec.js', + 'redirects/*.spec.js', + 'submit-name-fields-with-special-characters/**/*.spec.js', + 'submit-textarea-fields-with-new-line-characters/**/*.spec.js', + 'submit-textarea-fields-with-special-characters/**/*.spec.js', + 'submit-textarea-fields-with-a-pure-number/**/*.spec.js', + 'task-list/**/*.spec.js', + 'your-business/alternative-trading-address/**/*.spec.js', + 'your-business/change-your-answers/**/*.spec.js', + 'your-business/check-your-answers/**/*.spec.js', + 'your-business/companies-house-number/*.spec.js', + 'your-business/company-details/**/*.spec.js', + 'your-business/credit-control/**/*.spec.js', + 'your-business/nature-of-business/**/*.spec.js', + 'your-business/root/**/*.spec.js', + 'your-business/turnover/**/*.spec.js', + 'your-buyer/alternative-currency/**/*.spec.js', + 'your-buyer/buyer-financial-information/**/*.spec.js', + 'your-buyer/change-your-answers/**/*.spec.js', + 'your-buyer/check-your-answers/**/*.spec.js', + 'your-buyer/company-or-organisation/**/*.spec.js', + 'your-buyer/connection-with-the-buyer/**/*.spec.js', + 'your-buyer/credit-insurance-cover/**/*.spec.js', + 'your-buyer/root/**/*.spec.js', + 'your-buyer/traded-with-buyer/**/*.spec.js', + 'your-buyer/trading-history/**/*.spec.js', ] concurrency: @@ -388,19 +396,19 @@ jobs: matrix: spec: [ - "/*.spec.js", - "cookies-consent/**/*.spec.js", - "quote/*.spec.js", - "quote/buyer-body/*.spec.js", - "quote/buyer-country/*.spec.js", - "quote/cannot-skip-flow/*.spec.js", - "quote/change-your-answers/*.spec.js", - "quote/check-your-answers/*.spec.js", - "quote/exporter-location/*.spec.js", - "quote/policy-type/*.spec.js", - "quote/tell-us-about-your-policy/*.spec.js", - "quote/uk-goods-or-services/*.spec.js", - "quote/your-quote/*.spec.js", + '/*.spec.js', + 'cookies-consent/**/*.spec.js', + 'quote/*.spec.js', + 'quote/buyer-body/*.spec.js', + 'quote/buyer-country/*.spec.js', + 'quote/cannot-skip-flow/*.spec.js', + 'quote/change-your-answers/*.spec.js', + 'quote/check-your-answers/*.spec.js', + 'quote/exporter-location/*.spec.js', + 'quote/policy-type/*.spec.js', + 'quote/tell-us-about-your-policy/*.spec.js', + 'quote/uk-goods-or-services/*.spec.js', + 'quote/your-quote/*.spec.js', ] concurrency: @@ -454,11 +462,7 @@ jobs: fail-fast: false # Single dimension matrix matrix: - spec: - [ - "via-exporter-location-routes/**/*.spec.js", - "via-start-now-routes/**/*.spec.js", - ] + spec: ['via-exporter-location-routes/**/*.spec.js', 'via-start-now-routes/**/*.spec.js'] concurrency: group: e2e-tests-switch-${{ github.workflow }}-${{ github.workflow_ref }}-${{ matrix.spec }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ff587c6edf..fcc47ff786 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.12.0" + ".": "2.15.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b223331b61..11a34e1acd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,38 @@ # Changelog +## [2.15.0](https://github.com/UK-Export-Finance/exip/compare/v2.14.0...v2.15.0) (2024-07-23) + +### Features + +- **EMS-3535:** changes to anti-bribery and corruption definitions ([#2778](https://github.com/UK-Export-Finance/exip/issues/2778)) ([9ec9d20](https://github.com/UK-Export-Finance/exip/commit/9ec9d201026e62c8eb7262a3785419d55f3c2fc1)) + +## [2.14.0](https://github.com/UK-Export-Finance/exip/compare/v2.13.0...v2.14.0) (2024-07-22) + +### Features + +- **EMS-3610:** changed wording for export contract agent question ([4dd6ed9](https://github.com/UK-Export-Finance/exip/commit/4dd6ed9b7566d515d36338fec15aa56416c609c7)) + +## [2.13.0](https://github.com/UK-Export-Finance/exip/compare/v2.12.2...v2.13.0) (2024-07-19) + +### Features + +- **EMS-3606:** added missing environment variables ([5b1fccd](https://github.com/UK-Export-Finance/exip/commit/5b1fccdaf24693c4756d638d0003b521e5815899)) + +## [2.12.2](https://github.com/UK-Export-Finance/exip/compare/v2.12.1...v2.12.2) (2024-07-18) + +### Bug Fixes + +- **EMS-3604:** no PDF - Anti-bribery code of conduct - Incorrect link ([#2768](https://github.com/UK-Export-Finance/exip/issues/2768)) ([331cc7b](https://github.com/UK-Export-Finance/exip/commit/331cc7bfe59741d669079d68e1f595401d76fe80)) + +## [2.12.1](https://github.com/UK-Export-Finance/exip/compare/v2.12.0...v2.12.1) (2024-07-17) + +### Bug Fixes + +- **DTFS2-7284:** fixed private endpoint ([f23e285](https://github.com/UK-Export-Finance/exip/commit/f23e285be2b2a25a50c02d02f141907fe2f33454)) +- **EM-2186:** fixed conditional deployment ([41d5d4c](https://github.com/UK-Export-Finance/exip/commit/41d5d4cb9615d8afd7b3aec22a41fc8f1bc43d4e)) +- **EMS-2186:** removed \* from flag ([8f7721f](https://github.com/UK-Export-Finance/exip/commit/8f7721f29bb450e2684fb8403d0a4f5b9e14fce4)) +- **EMS-2186:** removed purge protection ([ac65a2e](https://github.com/UK-Export-Finance/exip/commit/ac65a2e023ced9a73f12bf78142b307a5a0fc725)) + ## [2.12.0](https://github.com/UK-Export-Finance/exip/compare/v2.11.2...v2.12.0) (2024-07-16) ### Features diff --git a/docker-compose.yml b/docker-compose.yml index 6044e8e9a3..10af13602f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: database: - image: mysql:8.0.36 + image: mysql:8.0 container_name: exip_db restart: always command: --default-authentication-plugin=caching_sha2_password diff --git a/e2e-tests/content-strings/links.js b/e2e-tests/content-strings/links.js index 408d0f34dc..a7f01fb4c9 100644 --- a/e2e-tests/content-strings/links.js +++ b/e2e-tests/content-strings/links.js @@ -28,7 +28,7 @@ export const LINKS = { ABILITY_NET: 'https://mcmw.abilityNet.org.uk', EQUALITY_ADVISORY_SERVICE: 'https://www.equalityadvisoryservice.com', ACCESSIBILITY_GUIDLINES: 'https://www.w3.org/TR/WCAG21', - BRIBERY_ACT_2010_GUIDANCE: 'https://www.justice.gov.uk/downloads/legislation/bribery-act-2010-guidance.pdf', + BRIBERY_ACT_2010_GUIDANCE: 'https://assets.publishing.service.gov.uk/media/5d80cfc3ed915d51e9aff85a/bribery-act-2010-guidance.pdf', ICO_MAKE_A_COMPLAINT: 'https://ico.org.uk/make-a-complaint', COMPANIES_HOUSE: 'https://find-and-update.company-information.service.gov.uk', }, diff --git a/e2e-tests/content-strings/pages/insurance/declarations/index.js b/e2e-tests/content-strings/pages/insurance/declarations/index.js index f00cee5fa5..2d3dde5d78 100644 --- a/e2e-tests/content-strings/pages/insurance/declarations/index.js +++ b/e2e-tests/content-strings/pages/insurance/declarations/index.js @@ -59,7 +59,7 @@ const ANTI_BRIBERY = { BODY: [ { TERM: 'Consortium Party or Agent', - DEFINITION: ['Is a consortium party or Agent named in this Application.'], + DEFINITION: ['Is a consortium party or agent name in this application'], }, { TERM: 'Controlled', @@ -97,14 +97,14 @@ const ANTI_BRIBERY = { { TERM: 'Involved Group Company', DEFINITION: [ - 'Means a Group Company which (a) having made the reasonable enquiries referred to in paragraph 8(ii) of section 14 of this Proposal, has had, or is intended to have, at the date of this Proposal, any material part in the negotiation or obtaining of the export contract;', + 'Means a group company which (a) having made the reasonable enquires referred to in paragraph 8(ii) of the anti-bribery and corruption declaration, has had, or is intended to have, at the date of this proposal, any material part in the negotiation or obtaining of the export contract;', '(b) employs personnel providing head office, legal, compliance, audit and/ or similar functions.', ], }, { TERM: 'Potential Corrupt Activity', DEFINITION: [ - 'Means activity which could, subject to the occurrence of subsequent events referred to in (a), (c) and (d) of the definition of “Corrupt Activity” in this section 14, amount to Corrupt Activity;', + 'Means activity which could, subject to the occurrence of subsequent events referred to in (a), (c) and (d) of the definition of “Corrupt Activity” in this anti-bribery and corruption declaration.', ], }, { diff --git a/e2e-tests/content-strings/pages/insurance/export-contract/index.js b/e2e-tests/content-strings/pages/insurance/export-contract/index.js index 3455fe1ec6..2b46eb0247 100644 --- a/e2e-tests/content-strings/pages/insurance/export-contract/index.js +++ b/e2e-tests/content-strings/pages/insurance/export-contract/index.js @@ -35,8 +35,9 @@ const DECLINED_BY_PRIVATE_MARKET = { const AGENT = { ...SHARED, - PAGE_TITLE: 'Did anyone help you win your export contract?', - HINT: 'This is usually an agent who helped with tendering, connecting you to the buyer or setting up the contract.', + PAGE_TITLE: + 'Is there an Agent who has been, or will be, directly or indirectly involved in the process of tendering for, or seeking the award of, the export contract(s) or any related agreement?', + HINT: 'An "Agent" is any agent, intermediary, consultant or other person who has been, or will be, instructed by you or on your behalf', }; const AGENT_DETAILS = { diff --git a/package-lock.json b/package-lock.json index 8d37ecb581..72d41253de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uk-export-finance/exip", - "version": "2.12.0", + "version": "2.15.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@uk-export-finance/exip", - "version": "2.12.0", + "version": "2.15.0", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -19,7 +19,7 @@ "apollo-cache-inmemory": "^1.6.6", "apollo-client": "^2.6.10", "apollo-link-http": "^1.5.17", - "cypress": "^13.13.0", + "cypress": "^13.13.1", "date-fns": "^2.30.0", "dotenv": "^16.4.5", "graphql-tag": "^2.12.6", @@ -30,11 +30,11 @@ "@commitlint/cli": "^19.3.0", "@commitlint/config-conventional": "19.2.2", "@types/jest": "^29.5.12", - "@types/node": "^20.14.10", + "@types/node": "^20.14.11", "@typescript-eslint/eslint-plugin": "^7.16.1", "@typescript-eslint/parser": "^7.16.1", "commitlint": "^19.3.0", - "cspell": "^8.10.4", + "cspell": "^8.11.0", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-base": "^15.0.0", @@ -45,7 +45,7 @@ "eslint-plugin-cypress": "^3.3.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsx-a11y": "^6.9.0", - "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-prettier": "^5.2.1", "husky": "^9.0.11", "jest": "^29.7.0", "lint-staged": "^15.2.7", @@ -2521,13 +2521,13 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.10.4.tgz", - "integrity": "sha512-QmgvIp9/NM60Jj6ft5oaiCFidwPwKYS9FfpfABrDLw/Jx6wwcTdy9cVbuPxT8n4LwkHpswkmIzOf4zSlnrd4MQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.11.0.tgz", + "integrity": "sha512-SYAW1oT9jjnbwju5P6luTnKogEe8DGUVmUO0O02LxYNmgE2eJt8pKZcy3RtR9V7Q5WW8PWsXXq0Xvoseji0olg==", "dev": true, "dependencies": { "@cspell/dict-ada": "^4.0.2", - "@cspell/dict-aws": "^4.0.2", + "@cspell/dict-aws": "^4.0.3", "@cspell/dict-bash": "^4.1.3", "@cspell/dict-companies": "^3.1.2", "@cspell/dict-cpp": "^5.1.10", @@ -2571,7 +2571,7 @@ "@cspell/dict-ruby": "^5.0.2", "@cspell/dict-rust": "^4.0.4", "@cspell/dict-scala": "^5.0.2", - "@cspell/dict-software-terms": "^3.4.9", + "@cspell/dict-software-terms": "^3.4.10", "@cspell/dict-sql": "^2.1.3", "@cspell/dict-svelte": "^1.0.2", "@cspell/dict-swift": "^2.0.1", @@ -2584,30 +2584,30 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.10.4.tgz", - "integrity": "sha512-W6aUZ2LkKkDEKgx1sjik2xQT7m6CrLxcuJiF7MkPPZMdsnXyg5jsRalkQTn7my7RZ+n5xxEO69r6jM4IImvWAg==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.11.0.tgz", + "integrity": "sha512-GSk2dKZHak4EuRXRKpyW3EsxmJmirkcZoM6sJQh6ZaFXSffMPgydNNIeL2xH/2hnwE7yWcP0ryq8hOxlrl9mVw==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.10.4" + "@cspell/cspell-types": "8.11.0" }, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-pipe": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.10.4.tgz", - "integrity": "sha512-yN+A9EIgdSkNiQnrFgsy5dzFl879ddMRHw/u38Zw4HdHIGr+xLpw5UVSKK6OacPMro853engM3dTJJDzRzh+rA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.11.0.tgz", + "integrity": "sha512-VNWoAb2Y5VO87O8FipQZfk7H5aDhjE2HbGInVWC1x+qNMyQvnh3WYexa5r0Z4g3WqdTPhhpZdeBHnEfcdBwmOw==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-resolver": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.10.4.tgz", - "integrity": "sha512-f0Y+Tol1aqrj9LsDT1oQOoj0P9uJ0ZW5PbhVlKqFeIDhrA5rYLy0ffnFESLNBRxWXaB/cznzpgMUyNfpVCXJpg==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.11.0.tgz", + "integrity": "sha512-4qqYBct6wsdoDCnTvt7rfpBE3ARegLDTeYOxglZLE3xZj0vpI1LZiGc3jgroTql866Lqy+IeRCwnQd5GXrqtmg==", "dev": true, "dependencies": { "global-directory": "^4.0.1" @@ -2617,18 +2617,18 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.10.4.tgz", - "integrity": "sha512-bXIllG6C1rKjWGlKdrAfs0AKrs/iQ6ZL6kSXrzHh5NB8oyBzX8tf5v4BX3Bnh5yrjBzkT2qhL+teEcvWjjvu2w==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.11.0.tgz", + "integrity": "sha512-W7BBouT5prXvvh9javWTzZN3vvnSujS3agrOjRQ5BuimOgLonUwydimuSTDFIkyvT6ZwzyIVO4r984w3OcYyzg==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-types": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.10.4.tgz", - "integrity": "sha512-K/7JALR417KYHoovk18LTJCnKXF8ToNraWX4P3NFkYZNffc62fPn0y7nV9kphdK/biLM7np9gWtHq22MhX4qgw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.11.0.tgz", + "integrity": "sha512-WNscRYt7MHhJhv2E8GbNoyUVZnRvWsz8O+OFrMjmGO6PxokQRnuKRp3rgHpZxL0NR4xw+2xyZKYC/9iOQ6yCnQ==", "dev": true, "engines": { "node": ">=18" @@ -2956,9 +2956,9 @@ "dev": true }, "node_modules/@cspell/dynamic-import": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.10.4.tgz", - "integrity": "sha512-YxpzOgrP/u0nxEMR4hUfV+4z3b0rLWnKsKIv6pLpRez7ACvrMeb53FedSMZW/YaF3NjWTpUEdqFHaemPkmwnRA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.11.0.tgz", + "integrity": "sha512-Xk5iQQZ23Q9IR9N5YQb4J0mXOegIBw2/aJ7mYjMQZ24I5fL47Ir45cd5a8m5UEMheZppfrolVsDoTEgXnAfPDQ==", "dev": true, "dependencies": { "import-meta-resolve": "^4.1.0" @@ -2968,18 +2968,18 @@ } }, "node_modules/@cspell/strong-weak-map": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.10.4.tgz", - "integrity": "sha512-QyL8mvv8HDnIHU/wKqWf04yMHCHv3icakZF4UdAk181tl8gymzrtyXSSbMaVlySlK9p+7OQlEG/KUF8R0LR75Q==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.11.0.tgz", + "integrity": "sha512-XumxAVA1Pi5U8d+qqo2//KPrsOINOHnHpal/yPu8FwfZhkRzpDnNPdgiMNKBVmZMFxmSCEJwc7AUUMnfyuGuLg==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/url": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.10.4.tgz", - "integrity": "sha512-4+Bxm43py50W872FjUvKoT9+EQoK9pqOblxu7GRfFx7CjEgYJB03Cb4rHiKYzLuJakUk6IyAlgPD2vNZO37Vzg==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.11.0.tgz", + "integrity": "sha512-X0l/WJmavRqRKDgsgEjXHGizmvYt40omMTmNOLPHUa2jxL+a2ayuQD3GMFC8Omassjk3bSyFByftmgJDI+P2ZA==", "dev": true, "engines": { "node": ">=18.0" @@ -7192,9 +7192,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "dependencies": { "undici-types": "~5.26.4" } @@ -9816,22 +9816,22 @@ "integrity": "sha512-N3ASg0C4kNPUaNxt1XAvzHIVuzdtr8KLgfk1O8WDyimp1GisPAHESupArO2ieHk9QWbrJ/WkQODyh21Ps/xhxw==" }, "node_modules/cspell": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.10.4.tgz", - "integrity": "sha512-6eu42atG3ohf1r8vkRCKHBgUED+MOY7ErwPodeEtiHOqCXBtTCoPQXbqJozRy5Jfr2VMCMiryknxI4dH5yzjuQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.11.0.tgz", + "integrity": "sha512-nyzeSk/Rj4dcuXIV9a3Ri9pJW5gAVDJtTUhyNW9a5rjNcQn+k8uxV8eBgx5s42ESSQrmUh3HhocYy2jLEolunw==", "dev": true, "dependencies": { - "@cspell/cspell-json-reporter": "8.10.4", - "@cspell/cspell-pipe": "8.10.4", - "@cspell/cspell-types": "8.10.4", - "@cspell/dynamic-import": "8.10.4", + "@cspell/cspell-json-reporter": "8.11.0", + "@cspell/cspell-pipe": "8.11.0", + "@cspell/cspell-types": "8.11.0", + "@cspell/dynamic-import": "8.11.0", "chalk": "^5.3.0", "chalk-template": "^1.1.0", "commander": "^12.1.0", - "cspell-gitignore": "8.10.4", - "cspell-glob": "8.10.4", - "cspell-io": "8.10.4", - "cspell-lib": "8.10.4", + "cspell-gitignore": "8.11.0", + "cspell-glob": "8.11.0", + "cspell-io": "8.11.0", + "cspell-lib": "8.11.0", "fast-glob": "^3.3.2", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^8.0.0", @@ -9852,12 +9852,12 @@ } }, "node_modules/cspell-config-lib": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.10.4.tgz", - "integrity": "sha512-0VgnDEU4/+PWG+8x0FBN0QPun14sox9n7DBMvKGwAORhfiuYJ9w8kdrS/QqHdpHsRRQhXP1SWR8Nfg/5dUxsPg==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.11.0.tgz", + "integrity": "sha512-8AE1qm/nuD+aiN+mZXQIGp0ESHyQ9uowbKaB5+qi261HEEhuFPceP/3u0yq0kc1YPtnKxEfYHrLukvQIMlDshA==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.10.4", + "@cspell/cspell-types": "8.11.0", "comment-json": "^4.2.4", "yaml": "^2.4.5" }, @@ -9866,14 +9866,14 @@ } }, "node_modules/cspell-dictionary": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.10.4.tgz", - "integrity": "sha512-9Hg2eTYbTKMoPy0r/IjGwcIII7PLGpeZlG1XzCDP4MW/bV4TGB6EfY8RAmhUt8cTwo7f6fxqu53WLaR3YPEozg==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.11.0.tgz", + "integrity": "sha512-h5AVFuTeP+NLBRZbaX6sFGZ/wnvnyeeGtnNiYU0f4dVB3Yq0K9c7QXM8PllIpcbe+SBDoQ15ZlbECzUlGt/Ysg==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.10.4", - "@cspell/cspell-types": "8.10.4", - "cspell-trie-lib": "8.10.4", + "@cspell/cspell-pipe": "8.11.0", + "@cspell/cspell-types": "8.11.0", + "cspell-trie-lib": "8.11.0", "fast-equals": "^5.0.1", "gensequence": "^7.0.0" }, @@ -9882,14 +9882,14 @@ } }, "node_modules/cspell-gitignore": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.10.4.tgz", - "integrity": "sha512-OtN/nZAxgFYGdV+hCK8tF3drlGJJ+42W278cIM67H67cHYupVICFgsDLiNBz/iR/J9S4pEU5WXu2yPtHFHvVUQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.11.0.tgz", + "integrity": "sha512-r+buXvm3NqU/5N1zmiXSgo7DQLZyKR5sr6McepWlGBmT4DDm7s22yojS8LSusIthJ2k3tvLFDI9O4Rs0DnzK2Q==", "dev": true, "dependencies": { - "@cspell/url": "8.10.4", - "cspell-glob": "8.10.4", - "cspell-io": "8.10.4", + "@cspell/url": "8.11.0", + "cspell-glob": "8.11.0", + "cspell-io": "8.11.0", "find-up-simple": "^1.0.0" }, "bin": { @@ -9900,12 +9900,12 @@ } }, "node_modules/cspell-glob": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.10.4.tgz", - "integrity": "sha512-HPRK6ZtHBzY/zGMhajzJ2MOgHMgY74/FijtaZkYc09QTEjONhIO4VWcrxrr1/qoM/qAp2Y/CKcBM/OOiHls7+A==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.11.0.tgz", + "integrity": "sha512-X0cEErrQdrVLXDMse84QH/iV2Q+f7AsXxIjlSt+6PPEoDz8yRO8xD71iaaeE/8+cMFrKMl0uDpIpBQ5OlvcIyQ==", "dev": true, "dependencies": { - "@cspell/url": "8.10.4", + "@cspell/url": "8.11.0", "micromatch": "^4.0.7" }, "engines": { @@ -9913,13 +9913,13 @@ } }, "node_modules/cspell-grammar": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.10.4.tgz", - "integrity": "sha512-AW9JqEmMJLrbBwN/3BAwpHgOz5WFyb4syS+pjFRdZGx/w9e9ZSn4xyfnQ3mjNaFc/oZUcXy+q032bNZQppjGXA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.11.0.tgz", + "integrity": "sha512-fIq7/KDjNMfBBqKTnnp4dhjNmbvnl019bPwecddkQOpx5H9Vn4WVDTiAZbI6/5Li/VU+h1Ld2+pIOKYql/7DBg==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.10.4", - "@cspell/cspell-types": "8.10.4" + "@cspell/cspell-pipe": "8.11.0", + "@cspell/cspell-types": "8.11.0" }, "bin": { "cspell-grammar": "bin.mjs" @@ -9929,39 +9929,39 @@ } }, "node_modules/cspell-io": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.10.4.tgz", - "integrity": "sha512-IU+w0hNUQSR99ftC5Jr5D3Vtg70AOUSvdFXHO13qVf3GBnfYxbltQirbY5afLFUWDY6ayNO3GsZisCMdywmlwg==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.11.0.tgz", + "integrity": "sha512-R6ZCNh2RrOkP3/OIpFHmtg6vztxMMsl6/t5kY1nTcmWv/1Ltw56G3q357KN6e+8epFiqFm4gMFmvzImFeR34Yw==", "dev": true, "dependencies": { - "@cspell/cspell-service-bus": "8.10.4", - "@cspell/url": "8.10.4" + "@cspell/cspell-service-bus": "8.11.0", + "@cspell/url": "8.11.0" }, "engines": { "node": ">=18" } }, "node_modules/cspell-lib": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.10.4.tgz", - "integrity": "sha512-u1Edp5p2zwnBuQ9pBFg+YfAWB1c1uERWSZkteD5uClVz21zY5Aiikl41gOLi6Qm5+oWCWW+nP1HcC6B6wlFLHQ==", - "dev": true, - "dependencies": { - "@cspell/cspell-bundled-dicts": "8.10.4", - "@cspell/cspell-pipe": "8.10.4", - "@cspell/cspell-resolver": "8.10.4", - "@cspell/cspell-types": "8.10.4", - "@cspell/dynamic-import": "8.10.4", - "@cspell/strong-weak-map": "8.10.4", - "@cspell/url": "8.10.4", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.11.0.tgz", + "integrity": "sha512-msdfqJLIhJE1whfGXC2J669dKWrnWdFI18nR2OTXipWdiwZDDQEFT3q2Pq56+bhxwtoqAZKrez/zhRB/JbpUuA==", + "dev": true, + "dependencies": { + "@cspell/cspell-bundled-dicts": "8.11.0", + "@cspell/cspell-pipe": "8.11.0", + "@cspell/cspell-resolver": "8.11.0", + "@cspell/cspell-types": "8.11.0", + "@cspell/dynamic-import": "8.11.0", + "@cspell/strong-weak-map": "8.11.0", + "@cspell/url": "8.11.0", "clear-module": "^4.1.2", "comment-json": "^4.2.4", - "cspell-config-lib": "8.10.4", - "cspell-dictionary": "8.10.4", - "cspell-glob": "8.10.4", - "cspell-grammar": "8.10.4", - "cspell-io": "8.10.4", - "cspell-trie-lib": "8.10.4", + "cspell-config-lib": "8.11.0", + "cspell-dictionary": "8.11.0", + "cspell-glob": "8.11.0", + "cspell-grammar": "8.11.0", + "cspell-io": "8.11.0", + "cspell-trie-lib": "8.11.0", "env-paths": "^3.0.0", "fast-equals": "^5.0.1", "gensequence": "^7.0.0", @@ -9988,13 +9988,13 @@ } }, "node_modules/cspell-trie-lib": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.10.4.tgz", - "integrity": "sha512-PQDwEYI10sp9nwnUA8HFFZr1c5j1Zrk9p8oqk7KUy+QUF3XcJn3ayLenPNUG95U/ysg3RBHc7/Vmh7unvXNRlQ==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.11.0.tgz", + "integrity": "sha512-PRW2ve2F3LBN1a/AwuuxHJ+VHPh9mN01qDAnyQojfqoF7ckRBe7+8Jb+7V9GonBS/oFQJ7AwObXtM2j0FP/DnQ==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.10.4", - "@cspell/cspell-types": "8.10.4", + "@cspell/cspell-pipe": "8.11.0", + "@cspell/cspell-types": "8.11.0", "gensequence": "^7.0.0" }, "engines": { @@ -10046,9 +10046,9 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/cypress": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.0.tgz", - "integrity": "sha512-ou/MQUDq4tcDJI2FsPaod2FZpex4kpIK43JJlcBgWrX8WX7R/05ZxGTuxedOuZBfxjZxja+fbijZGyxiLP6CFA==", + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.1.tgz", + "integrity": "sha512-8F9UjL5MDUdgC/S5hr8CGLHbS5gGht5UOV184qc2pFny43fnkoaKxlzH/U6//zmGu/xRTaKimNfjknLT8+UDFg==", "hasInstallScript": true, "dependencies": { "@cypress/request": "^3.0.0", @@ -11833,13 +11833,13 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -21361,9 +21361,9 @@ } }, "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { "@pkgr/core": "^0.1.0", diff --git a/package.json b/package.json index 53feca3e33..7c44ab9fec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uk-export-finance/exip", - "version": "2.12.0", + "version": "2.15.0", "description": "Export Insurance Policies", "homepage": "https://github.com/UK-Export-Finance/exip#readme", "bugs": { @@ -53,7 +53,7 @@ "apollo-cache-inmemory": "^1.6.6", "apollo-client": "^2.6.10", "apollo-link-http": "^1.5.17", - "cypress": "^13.13.0", + "cypress": "^13.13.1", "date-fns": "^2.30.0", "dotenv": "^16.4.5", "graphql-tag": "^2.12.6", @@ -64,11 +64,11 @@ "@commitlint/cli": "^19.3.0", "@commitlint/config-conventional": "19.2.2", "@types/jest": "^29.5.12", - "@types/node": "^20.14.10", + "@types/node": "^20.14.11", "@typescript-eslint/eslint-plugin": "^7.16.1", "@typescript-eslint/parser": "^7.16.1", "commitlint": "^19.3.0", - "cspell": "^8.10.4", + "cspell": "^8.11.0", "eslint": "^8.57.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-base": "^15.0.0", @@ -79,7 +79,7 @@ "eslint-plugin-cypress": "^3.3.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsx-a11y": "^6.9.0", - "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-prettier": "^5.2.1", "husky": "^9.0.11", "jest": "^29.7.0", "lint-staged": "^15.2.7", diff --git a/src/api/package-lock.json b/src/api/package-lock.json index 29e5f01640..17d1508d38 100644 --- a/src/api/package-lock.json +++ b/src/api/package-lock.json @@ -54,7 +54,7 @@ "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-prettier": "5.2.1", "jest": "^29.7.0", "prettier": "^3.3.2", "spectaql": "^3.0.1", @@ -11980,13 +11980,13 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -22480,9 +22480,9 @@ } }, "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { "@pkgr/core": "^0.1.0", diff --git a/src/api/package.json b/src/api/package.json index 466369dec6..288948b4d0 100644 --- a/src/api/package.json +++ b/src/api/package.json @@ -68,7 +68,7 @@ "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-prettier": "5.2.1", "jest": "^29.7.0", "prettier": "^3.3.2", "spectaql": "^3.0.1", diff --git a/src/ui/package-lock.json b/src/ui/package-lock.json index dad1facd5a..0cddb43abc 100644 --- a/src/ui/package-lock.json +++ b/src/ui/package-lock.json @@ -20,7 +20,7 @@ "@types/google-libphonenumber": "^7.4.30", "@types/is-url": "^1.2.32", "@types/morgan": "^1.9.9", - "@types/node": "^20.14.10", + "@types/node": "^20.14.11", "@types/nunjucks": "^3.2.6", "accessible-autocomplete": "^3.0.0", "apollo-cache-inmemory": "^1.6.6", @@ -76,7 +76,7 @@ "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-prettier": "5.2.1", "jest": "29.6.2", "prettier": "^3.3.2", "ts-jest": "^29.2.2" @@ -3055,9 +3055,9 @@ } }, "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "dependencies": { "undici-types": "~5.26.4" } @@ -6385,13 +6385,13 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -12916,9 +12916,9 @@ } }, "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { "@pkgr/core": "^0.1.0", diff --git a/src/ui/package.json b/src/ui/package.json index fbf3bce791..e972b6fd88 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -33,7 +33,7 @@ "@types/google-libphonenumber": "^7.4.30", "@types/is-url": "^1.2.32", "@types/morgan": "^1.9.9", - "@types/node": "^20.14.10", + "@types/node": "^20.14.11", "@types/nunjucks": "^3.2.6", "accessible-autocomplete": "^3.0.0", "apollo-cache-inmemory": "^1.6.6", @@ -89,7 +89,7 @@ "eslint-config-prettier": "9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-prettier": "5.2.1", "jest": "29.6.2", "prettier": "^3.3.2", "ts-jest": "^29.2.2" diff --git a/src/ui/server/content-strings/links.ts b/src/ui/server/content-strings/links.ts index 919f411351..fd4e49e800 100644 --- a/src/ui/server/content-strings/links.ts +++ b/src/ui/server/content-strings/links.ts @@ -28,7 +28,7 @@ export const LINKS = { ABILITY_NET: 'https://mcmw.abilityNet.org.uk', EQUALITY_ADVISORY_SERVICE: 'https://www.equalityadvisoryservice.com', ACCESSIBILITY_GUIDLINES: 'https://www.w3.org/TR/WCAG21', - BRIBERY_ACT_2010_GUIDANCE: 'https://www.justice.gov.uk/downloads/legislation/bribery-act-2010-guidance.pdf', + BRIBERY_ACT_2010_GUIDANCE: 'https://assets.publishing.service.gov.uk/media/5d80cfc3ed915d51e9aff85a/bribery-act-2010-guidance.pdf', ICO_MAKE_A_COMPLAINT: 'https://ico.org.uk/make-a-complaint', COMPANIES_HOUSE: 'https://find-and-update.company-information.service.gov.uk', }, diff --git a/src/ui/server/content-strings/pages/insurance/declarations/index.ts b/src/ui/server/content-strings/pages/insurance/declarations/index.ts index f00cee5fa5..2d3dde5d78 100644 --- a/src/ui/server/content-strings/pages/insurance/declarations/index.ts +++ b/src/ui/server/content-strings/pages/insurance/declarations/index.ts @@ -59,7 +59,7 @@ const ANTI_BRIBERY = { BODY: [ { TERM: 'Consortium Party or Agent', - DEFINITION: ['Is a consortium party or Agent named in this Application.'], + DEFINITION: ['Is a consortium party or agent name in this application'], }, { TERM: 'Controlled', @@ -97,14 +97,14 @@ const ANTI_BRIBERY = { { TERM: 'Involved Group Company', DEFINITION: [ - 'Means a Group Company which (a) having made the reasonable enquiries referred to in paragraph 8(ii) of section 14 of this Proposal, has had, or is intended to have, at the date of this Proposal, any material part in the negotiation or obtaining of the export contract;', + 'Means a group company which (a) having made the reasonable enquires referred to in paragraph 8(ii) of the anti-bribery and corruption declaration, has had, or is intended to have, at the date of this proposal, any material part in the negotiation or obtaining of the export contract;', '(b) employs personnel providing head office, legal, compliance, audit and/ or similar functions.', ], }, { TERM: 'Potential Corrupt Activity', DEFINITION: [ - 'Means activity which could, subject to the occurrence of subsequent events referred to in (a), (c) and (d) of the definition of “Corrupt Activity” in this section 14, amount to Corrupt Activity;', + 'Means activity which could, subject to the occurrence of subsequent events referred to in (a), (c) and (d) of the definition of “Corrupt Activity” in this anti-bribery and corruption declaration.', ], }, { diff --git a/src/ui/server/content-strings/pages/insurance/export-contract/index.ts b/src/ui/server/content-strings/pages/insurance/export-contract/index.ts index 1050767d1a..15a75db64d 100644 --- a/src/ui/server/content-strings/pages/insurance/export-contract/index.ts +++ b/src/ui/server/content-strings/pages/insurance/export-contract/index.ts @@ -35,8 +35,9 @@ const DECLINED_BY_PRIVATE_MARKET = { const AGENT = { ...SHARED, - PAGE_TITLE: 'Did anyone help you win your export contract?', - HINT: 'This is usually an agent who helped with tendering, connecting you to the buyer or setting up the contract.', + PAGE_TITLE: + 'Is there an Agent who has been, or will be, directly or indirectly involved in the process of tendering for, or seeking the award of, the export contract(s) or any related agreement?', + HINT: 'An "Agent" is any agent, intermediary, consultant or other person who has been, or will be, instructed by you or on your behalf', }; const AGENT_DETAILS = {