diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9da59da15c..448473e430 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: pull_request: push: - branches: [ master ] + branches: [master] permissions: contents: write @@ -20,7 +20,6 @@ env: selenium-cucumber-tests-artifact-name: selenium_cucumber_tests_${{github.run_number}}_${{github.run_attempt}} jobs: - build: name: Build runs-on: ubuntu-latest @@ -41,7 +40,7 @@ jobs: - name: Lint Dockerfile uses: brpaz/hadolint-action@master with: - dockerfile: "Dockerfile" + dockerfile: "Dockerfile" - name: Set up Docker Buildx id: buildx @@ -49,19 +48,19 @@ jobs: - name: Get Short SHA id: sha - run: echo "short=$(echo $GITHUB_SHA | cut -c -7)" >> $GITHUB_OUTPUT + run: echo "short=$(echo $GITHUB_SHA | cut -c -7)" >> $GITHUB_OUTPUT - name: Set DOCKER_IMAGE environment variable - id: docker + id: docker run: | - if [ "${{github.ref}}" == "refs/heads/master" ] - then - echo "DOCKER_IMAGE=${{ env.DOCKER_REPOSITORY }}:sha-${{ steps.sha.outputs.short }}" >> $GITHUB_OUTPUT - echo "DOCKER_MASTER=${{ env.DOCKER_REPOSITORY }}:master" >> $GITHUB_OUTPUT - else - echo "DOCKER_IMAGE=${{ env.DOCKER_REPOSITORY }}:review-${{steps.sha.outputs.short }}" >> $GITHUB_OUTPUT - echo "DOCKER_MASTER=${{ env.DOCKER_REPOSITORY }}:PR-${{ github.event.number }}" >> $GITHUB_OUTPUT - fi + if [ "${{github.ref}}" == "refs/heads/master" ] + then + echo "DOCKER_IMAGE=${{ env.DOCKER_REPOSITORY }}:sha-${{ steps.sha.outputs.short }}" >> $GITHUB_OUTPUT + echo "DOCKER_MASTER=${{ env.DOCKER_REPOSITORY }}:master" >> $GITHUB_OUTPUT + else + echo "DOCKER_IMAGE=${{ env.DOCKER_REPOSITORY }}:review-${{steps.sha.outputs.short }}" >> $GITHUB_OUTPUT + echo "DOCKER_MASTER=${{ env.DOCKER_REPOSITORY }}:PR-${{ github.event.number }}" >> $GITHUB_OUTPUT + fi - name: Login to GitHub Container Registry uses: docker/login-action@v3 @@ -75,11 +74,10 @@ jobs: with: cache-from: ${{ env.DOCKER_REPOSITORY }}:master tags: | - ${{ steps.docker.outputs.DOCKER_IMAGE }} - ${{ steps.docker.outputs.DOCKER_MASTER }} + ${{ steps.docker.outputs.DOCKER_IMAGE }} + ${{ steps.docker.outputs.DOCKER_MASTER }} push: true - build-args: - SHA=${{ steps.sha.outputs.short }} + build-args: SHA=${{ steps.sha.outputs.short }} - name: Fetch slack web hook if: failure() && github.ref == 'refs/heads/master' @@ -95,15 +93,15 @@ jobs: if: failure() && github.ref == 'refs/heads/master' uses: rtCamp/action-slack-notify@master env: - SLACK_COLOR: ${{env.SLACK_ERROR}} - SLACK_MESSAGE: 'There has been a failure building the application' - SLACK_TITLE: 'Failure Building Application' - SLACK_WEBHOOK: " ${{ steps.slack-web-hook.outputs.SLACK-WEBHOOK }} " + SLACK_COLOR: ${{env.SLACK_ERROR}} + SLACK_MESSAGE: "There has been a failure building the application" + SLACK_TITLE: "Failure Building Application" + SLACK_WEBHOOK: " ${{ steps.slack-web-hook.outputs.SLACK-WEBHOOK }} " spec_tests: name: Unit Tests runs-on: ubuntu-latest - needs: [ build ] + needs: [build] steps: - name: Check out the repo uses: actions/checkout@v4 @@ -113,7 +111,7 @@ jobs: - uses: Azure/login@v2 with: - creds: ${{ secrets.AZURE_CREDENTIALS }} + creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 @@ -128,7 +126,7 @@ jobs: IMAGE: ${{needs.build.outputs.DOCKER_IMAGE}} - name: Lint Ruby - run: docker run -t --rm -v ${PWD}/out:/app/out -e RAILS_ENV=test ${{needs.build.outputs.DOCKER_IMAGE}} rubocop + run: docker run -t --rm -v ${PWD}/out:/app/out -e RAILS_ENV=test ${{needs.build.outputs.DOCKER_IMAGE}} rubocop - name: Keep Rubocop output if: always() @@ -138,18 +136,18 @@ jobs: path: ${{ github.workspace }}/out/rubocop-result.json - name: Run Specs - run: docker-compose -f docker-compose-ci.yml run --rm db-tasks rspec + run: docker-compose -f docker-compose-ci.yml run --rm db-tasks rspec env: IMAGE: ${{needs.build.outputs.DOCKER_IMAGE}} - - name: Keep Unit Tests Results + - name: Keep Unit Tests Results if: always() uses: actions/upload-artifact@v4 with: name: ${{ env.unit-tests-artifact-name }} path: ${{ github.workspace }}/out/test-report.xml - - name: Keep Code Coverage Report + - name: Keep Code Coverage Report if: always() uses: actions/upload-artifact@v4 with: @@ -159,7 +157,7 @@ jobs: security_tests: name: Security Tests runs-on: ubuntu-latest - needs: [ build ] + needs: [build] steps: - name: Checkout uses: actions/checkout@v4 @@ -169,7 +167,7 @@ jobs: - uses: Azure/login@v2 with: - creds: ${{ secrets.GSE_REPO_AZ_CREDENTIALS }} + creds: ${{ secrets.GSE_REPO_AZ_CREDENTIALS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 @@ -202,7 +200,7 @@ jobs: cucumber_tests: name: Cucumber Tests runs-on: ubuntu-latest - needs: [ build ] + needs: [build] strategy: fail-fast: false matrix: @@ -216,7 +214,7 @@ jobs: - uses: Azure/login@v2 with: - creds: ${{ secrets.AZURE_CREDENTIALS }} + creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 @@ -240,7 +238,7 @@ jobs: NODE: ${{ matrix.node }} NODE_COUNT: 2 - - name: Keep Unit Tests Results + - name: Keep Unit Tests Results if: always() uses: actions/upload-artifact@v4 with: @@ -250,7 +248,7 @@ jobs: selenium_cucumber_tests: name: Chrome Cucumber Tests runs-on: ubuntu-latest - needs: [ build ] + needs: [build] strategy: fail-fast: false matrix: @@ -264,7 +262,7 @@ jobs: - uses: Azure/login@v2 with: - creds: ${{ secrets.AZURE_CREDENTIALS }} + creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 @@ -289,7 +287,7 @@ jobs: NODE: ${{ matrix.node }} NODE_COUNT: 2 - - name: Keep Unit Tests Results + - name: Keep Unit Tests Results if: always() uses: actions/upload-artifact@v4 with: @@ -299,24 +297,23 @@ jobs: sonarcloud: name: SonarCloud runs-on: ubuntu-latest - needs: [ selenium_cucumber_tests, cucumber_tests , security_tests, spec_tests ] + needs: [selenium_cucumber_tests, cucumber_tests, security_tests, spec_tests] steps: - - uses: actions/checkout@v4 with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: set-up-environment uses: DFE-Digital/github-actions/set-up-environment@master - uses: Azure/login@v2 with: - creds: ${{ secrets.GSE_REPO_AZ_CREDENTIALS }} + creds: ${{ secrets.GSE_REPO_AZ_CREDENTIALS }} - name: Download Test Artifacts uses: actions/download-artifact@v4 with: - path: ${{ github.workspace }}/out/ + path: ${{ github.workspace }}/out/ - name: Fixup report file paths run: sudo sed -i "s?/app/app?/github/workspace/app?" ${{ github.workspace }}/out/${{ env.code-coverage-artifact-name }}/coverage.json @@ -342,7 +339,7 @@ jobs: prepare: name: Configure Matrix Deployments - needs: [ sonarcloud ] + needs: [sonarcloud] runs-on: ubuntu-latest outputs: @@ -352,12 +349,12 @@ jobs: - name: Set matrix environments (Push to master) if: github.event_name == 'push' && github.ref == 'refs/heads/master' run: | - echo "MATRIX_ENVIRONMENTS={\"environment\":[\"development\",\"staging\",\"production\"]}" >> $GITHUB_ENV + echo "MATRIX_ENVIRONMENTS={\"environment\":[\"development\",\"staging\",\"production\"]}" >> $GITHUB_ENV - name: Set matrix environments ( Review) if: github.event_name == 'pull_request' && github.ref != 'refs/heads/master' run: | - echo "MATRIX_ENVIRONMENTS={\"environment\":[\"review\"]}" >> $GITHUB_ENV + echo "MATRIX_ENVIRONMENTS={\"environment\":[\"review\"]}" >> $GITHUB_ENV - name: Generate Tag from PR Number if: github.event_name == 'push' && github.ref == 'refs/heads/master' id: tag_version @@ -382,7 +379,7 @@ jobs: if: github.event_name == 'push' && github.ref == 'refs/heads/master' && steps.release.outputs.id uses: DFE-Digital/github-actions/CopyPRtoRelease@master with: - PR_NUMBER: ${{ steps.tag_version.outputs.pr_number }} + PR_NUMBER: ${{ steps.tag_version.outputs.pr_number }} RELEASE_ID: ${{ steps.release.outputs.id }} TOKEN: ${{secrets.GITHUB_TOKEN}} @@ -392,9 +389,9 @@ jobs: max-parallel: 1 matrix: ${{fromJSON(needs.prepare.outputs.matrix_environments)}} environment: - name: ${{matrix.environment}} + name: ${{matrix.environment}} concurrency: ${{matrix.environment}}_${{github.event.number}} - needs: [prepare ] + needs: [prepare] runs-on: ubuntu-latest steps: - name: Check out the repo @@ -405,47 +402,45 @@ jobs: - uses: Azure/login@v2 with: - creds: ${{ secrets.AZURE_CREDENTIALS }} - + creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Fetch SECURE USERNAME uses: azure/CLI@v2 id: fetch-username with: inlineScript: | - SECRET_VALUE=$(az keyvault secret show --name "SECURE-USERNAME" --vault-name "${{ secrets.APP_KEY_VAULT}}" --query "value" -o tsv) - echo "::add-mask::$SECRET_VALUE" - echo "SECURE_USERNAME=$SECRET_VALUE" >> $GITHUB_OUTPUT + SECRET_VALUE=$(az keyvault secret show --name "SECURE-USERNAME" --vault-name "${{ secrets.APP_KEY_VAULT}}" --query "value" -o tsv) + echo "::add-mask::$SECRET_VALUE" + echo "SECURE_USERNAME=$SECRET_VALUE" >> $GITHUB_OUTPUT - name: Fetch SECURE PASSWORD uses: azure/CLI@v2 id: fetch-password with: - inlineScript: | - SECRET_VALUE=$(az keyvault secret show --name "SECURE-PASSWORD" --vault-name "${{ secrets.APP_KEY_VAULT}}" --query "value" -o tsv) - echo "::add-mask::$SECRET_VALUE" - echo "SECURE_PASSWORD=$SECRET_VALUE" >> $GITHUB_OUTPUT + inlineScript: | + SECRET_VALUE=$(az keyvault secret show --name "SECURE-PASSWORD" --vault-name "${{ secrets.APP_KEY_VAULT}}" --query "value" -o tsv) + echo "::add-mask::$SECRET_VALUE" + echo "SECURE_PASSWORD=$SECRET_VALUE" >> $GITHUB_OUTPUT - name: Trigger Deployment to ${{matrix.environment}} id: deploy uses: ./.github/workflows/actions/deploy with: environment: ${{matrix.environment}} - sha: ${{ github.sha }} + sha: ${{ github.sha }} azure-credentials: ${{ secrets.AZURE_CREDENTIALS }} - pr: ${{github.event.number}} + pr: ${{github.event.number}} secure-username: ${{ steps.fetch-username.outputs.SECURE_USERNAME}} secure-password: ${{ steps.fetch-password.outputs.SECURE_PASSWORD}} - - name: Determine DfE Sign In Message if: matrix.environment == 'Review' uses: haya14busa/action-cond@v1 id: dsiMessage with: cond: ${{ steps.deploy.outputs.dsi-hostname != '' }} - if_true: ':white_check_mark: DfE sign in route obtained: https://${{ steps.deploy.outputs.dsi-hostname }}' - if_false: ':warning: **DfE sign in route pool exhausted (close some open PRs!)**' + if_true: ":white_check_mark: DfE sign in route obtained: https://${{ steps.deploy.outputs.dsi-hostname }}" + if_false: ":warning: **DfE sign in route pool exhausted (close some open PRs!)**" - name: Post sticky pull request comment if: matrix.environment == 'Review' @@ -472,7 +467,7 @@ jobs: TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Publish Release - if: matrix.environment == 'Production' && steps.tag_id.outputs.release_id + if: matrix.environment == 'Production' && steps.tag_id.outputs.release_id uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -493,7 +488,7 @@ jobs: uses: rtCamp/action-slack-notify@master env: SLACK_COLOR: ${{env.SLACK_SUCCESS}} - SLACK_MESSAGE: ${{ fromJson(steps.tag_id.outputs.release_body) }} + SLACK_MESSAGE: ${{ fromJson(steps.tag_id.outputs.release_body) }} SLACK_TITLE: "Release Published: ${{steps.tag_id.outputs.release_name}}" SLACK_WEBHOOK: "${{steps.fetch-slack-secret.outputs.SLACK-WEBHOOK}}" MSG_MINIMAL: true @@ -508,9 +503,9 @@ jobs: SLACK_WEBHOOK: "${{steps.fetch-slack-secret.outputs.SLACK-WEBHOOK}}" owasp: - name: 'OWASP Test' + name: "OWASP Test" runs-on: ubuntu-latest - needs: [deployments ] + needs: [deployments] if: github.event_name == 'push' && github.ref == 'refs/heads/master' steps: - name: Checkout @@ -521,7 +516,7 @@ jobs: - uses: Azure/login@v2 with: - creds: ${{ secrets.GSE_REPO_AZ_CREDENTIALS }} + creds: ${{ secrets.GSE_REPO_AZ_CREDENTIALS }} - name: Fetch SECURE USERNAME uses: azure/CLI@v2 @@ -545,10 +540,10 @@ jobs: uses: zaproxy/action-full-scan@v0.10.0 with: token: ${{ secrets.GITHUB_TOKEN }} - docker_name: 'owasp/zap2docker-stable' - target: 'https://${{ steps.fetch-username.outputs.SECURE_USERNAME}}:${{ steps.fetch-password.outputs.SECURE_PASSWORD }}@${{env.APPLICATION_NAME}}-development.${{env.REVIEW_DOMAIN}}' - rules_file_name: '.zap/rules.tsv' - cmd_options: '-a' + docker_name: "ghcr.io/zaproxy/zaproxy:stable" + target: "https://${{ steps.fetch-username.outputs.SECURE_USERNAME}}:${{ steps.fetch-password.outputs.SECURE_PASSWORD }}@${{env.APPLICATION_NAME}}-development.${{env.REVIEW_DOMAIN}}" + rules_file_name: ".zap/rules.tsv" + cmd_options: "-a" - name: Fetch secrets from key vault uses: azure/CLI@v2 @@ -563,7 +558,7 @@ jobs: if: failure() uses: rtCamp/action-slack-notify@master env: - SLACK_COLOR: ${{env.SLACK_FAILURE}} - SLACK_MESSAGE: 'Pipeline Failure carrying out OWASP Testing on https://${{env.APPLICATION_NAME}}-development.${{env.REVIEW_DOMAIN}}/' - SLACK_TITLE: 'Failure: OWSAP Testing has failed on Development' - SLACK_WEBHOOK: "${{ steps.fetch-slack-secret.outputs.SLACK-WEBHOOK}}" + SLACK_COLOR: ${{env.SLACK_FAILURE}} + SLACK_MESSAGE: "Pipeline Failure carrying out OWASP Testing on https://${{env.APPLICATION_NAME}}-development.${{env.REVIEW_DOMAIN}}/" + SLACK_TITLE: "Failure: OWSAP Testing has failed on Development" + SLACK_WEBHOOK: "${{ steps.fetch-slack-secret.outputs.SLACK-WEBHOOK}}" diff --git a/.ruby-version b/.ruby-version index fd2a01863f..0aec50e6ed 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.1.0 +3.1.4 diff --git a/Dockerfile b/Dockerfile index b42e5f224c..cba38bda0d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.1.0-alpine3.15 +FROM ruby:3.1.4-alpine3.18 ENV RAILS_ENV=production \ NODE_ENV=production \ @@ -24,11 +24,8 @@ RUN apk update && apk add -Uu --no-cache zlib-dev busybox ncurses # hadolint ignore=DL3018 RUN apk add -U --no-cache bash build-base git tzdata libxml2 libxml2-dev \ - postgresql-libs postgresql-dev nodejs yarn \ - chromium=99.0.4844.84-r0 chromium-chromedriver=99.0.4844.84-r0 - -# Remove once base image ruby:3.1.0-alpine3.15 has been updated -RUN apk add --no-cache gmp=6.2.1-r1 libretls=3.3.4-r3 + postgresql-libs postgresql-dev nodejs yarn \ + chromium chromium-chromedriver # Copy Entrypoint script COPY script/docker-entrypoint.sh . diff --git a/Gemfile.lock b/Gemfile.lock index 9ddcf47695..735e26dfe8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -744,7 +744,7 @@ DEPENDENCIES yabeda-sidekiq RUBY VERSION - ruby 3.1.0p0 + ruby 3.1.4p223 BUNDLED WITH 2.3.10 diff --git a/app/views/candidates/booking_feedbacks/show.html.erb b/app/views/candidates/booking_feedbacks/show.html.erb index 885970c376..bf9275c83f 100644 --- a/app/views/candidates/booking_feedbacks/show.html.erb +++ b/app/views/candidates/booking_feedbacks/show.html.erb @@ -4,14 +4,21 @@
- <%= link_to "Your requests and bookings", candidates_dashboard_path %> + Get free, ongoing one-to-one support from an adviser with years of teaching experience. + They can help you to find a course, explain funding options and guide you step-by-step through the application process.
++ <%= link_to 'Get a teacher training adviser', 'https://getintoteaching.education.gov.uk/teacher-training-advisers' %>. +
++ You can find more information on how to become a teacher at + <%= link_to 'Get Into Teaching', 'https://getintoteaching.education.gov.uk/' %>.
- <%= link_to 'Your requests and bookings', candidates_dashboard_path %> + To request a placement you can search to find school experience near you. +
++ <%= govuk_link_to 'Search for school experience', new_candidates_school_search_path, class: "govuk-!-margin-bottom-0" %>
- Each school will have their own COVID-19 safety measures and these can change often. Schools will provide you with these details when you request experience with them. -
-diff --git a/app/views/candidates/home/index.html.erb b/app/views/candidates/home/index.html.erb index b009b069f4..71e912bf86 100644 --- a/app/views/candidates/home/index.html.erb +++ b/app/views/candidates/home/index.html.erb @@ -110,18 +110,6 @@ Visit schools to see how teachers plan lessons, manage classrooms and teach subj <% end %> - -
+ To request a different placement you can search to find school experience near you. +
- <%= link_to 'Your requests and bookings', candidates_dashboard_path %> + <%= govuk_link_to 'Search for school experience', new_candidates_school_search_path, class: "govuk-!-margin-bottom-0" %>
diff --git a/app/views/candidates/placement_requests/cancellations/_show_booking_cancelled_by_school.html.erb b/app/views/candidates/placement_requests/cancellations/_show_booking_cancelled_by_school.html.erb index d0fdd25b55..d310214ed7 100644 --- a/app/views/candidates/placement_requests/cancellations/_show_booking_cancelled_by_school.html.erb +++ b/app/views/candidates/placement_requests/cancellations/_show_booking_cancelled_by_school.html.erb @@ -4,7 +4,7 @@- <%= link_to 'Your requests and bookings', candidates_dashboard_path %> + To request a different placement you can search to find school experience near you.
++ <%= govuk_link_to 'Search for school experience', new_candidates_school_search_path, class: "govuk-!-margin-bottom-0" %> +
++ To request a different placement you can search to find school experience near you. +
++ <%= govuk_link_to 'Search for school experience', new_candidates_school_search_path, class: "govuk-!-margin-bottom-0" %> +
+ diff --git a/app/views/candidates/placement_requests/cancellations/_show_placement_request_cancelled_by_school.html.erb b/app/views/candidates/placement_requests/cancellations/_show_placement_request_cancelled_by_school.html.erb index e8eeca343e..9e5b066fea 100644 --- a/app/views/candidates/placement_requests/cancellations/_show_placement_request_cancelled_by_school.html.erb +++ b/app/views/candidates/placement_requests/cancellations/_show_placement_request_cancelled_by_school.html.erb @@ -17,8 +17,14 @@ <%= rejection_reasons %> +- <%= link_to 'Request school experience at other schools', new_candidates_school_search_path %> + To request a different placement you can search to find school experience near you. +
++ <%= govuk_link_to 'Search for school experience', new_candidates_school_search_path, class: "govuk-!-margin-bottom-0" %>
diff --git a/app/views/candidates/registrations/background_checks/_form.html.erb b/app/views/candidates/registrations/background_checks/_form.html.erb index 70783e0b5f..123b2be83a 100644 --- a/app/views/candidates/registrations/background_checks/_form.html.erb +++ b/app/views/candidates/registrations/background_checks/_form.html.erb @@ -8,20 +8,17 @@
- Some schools may ask you to have a criminal record check through the - <%= link_to 'Disclosure and Barring Service (DBS)', 'https://www.gov.uk/government/organisations/disclosure-and-barring-service/about' %> + Some schools may ask you to have a criminal record check through the Disclosure and Barring Service (DBS) before offering you school experience.
- These are commonly known as ‘DBS checks’ and provide you with a ‘DBS certificate’ to show you’re suitable to work with children and young people. + These are commonly known as DBS checks and provide you with a DBS certificate to show you’re suitable to work with children and young people.
-+
Schools will let you know if you need to have a DBS check before offering you school experience.
- - <%= link_to "Find out more", 'https://www.gov.uk/government/organisations/disclosure-and-barring-service/about' %> about 'DBS checks' and 'DBS certificates'. - + <%= link_to "Find out more about DBS checks and DBS certificates", 'https://www.gov.uk/government/organisations/disclosure-and-barring-service/about' %>.
<% # force the params to submit if the user has not selected an option %> diff --git a/app/views/candidates/registrations/placement_requests/show.html.erb b/app/views/candidates/registrations/placement_requests/show.html.erb index 68b1e39455..3a751aa093 100644 --- a/app/views/candidates/registrations/placement_requests/show.html.erb +++ b/app/views/candidates/registrations/placement_requests/show.html.erb @@ -28,8 +28,6 @@ <%= govuk_link_to 'Search for school experience', new_candidates_school_search_path, class: "govuk-!-margin-bottom-0" %> - <%= govuk_button_to "Visit your dashboard", candidates_dashboard_path, method: :get, secondary: true %> -Request school experience at other schools - - <%= link_to "Find school experience.", new_candidates_school_search_path %> + <%= link_to "Find school experience", new_candidates_school_search_path %>.
diff --git a/config/routes.rb b/config/routes.rb index 5190588495..536b168bfa 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -164,6 +164,8 @@ root to: 'home#index' get "splash", to: "home#splash" + get '/dashboard', to: redirect('/candidates') + # email confirmation link get 'confirm/:uuid', to: 'registrations/placement_requests#create', as: :confirm @@ -199,8 +201,8 @@ resource :feedback, only: %i[new create show], controller: "booking_feedbacks" end - get 'signin', to: 'sessions#new' - post 'signin', to: 'sessions#create' + get 'signin', to: redirect('/candidates') + post 'signin', to: redirect('/candidates') put 'signin', to: 'sessions#update', as: :signin_code get 'signout', to: 'sessions#sign_out' diff --git a/features/candidates/booking_feedback.feature b/features/candidates/booking_feedback.feature index 21b594bd0e..e94e022f7a 100644 --- a/features/candidates/booking_feedback.feature +++ b/features/candidates/booking_feedback.feature @@ -44,4 +44,4 @@ Feature: Feedback And I choose 'Positively' from the 'How has your experience affected your decision to apply for teacher training?' radio buttons And I choose 'No' from the 'Do you want to apply for teacher training?' radio buttons When I click the 'Submit feedback' button - Then I should see the text 'Thank you for your feedback.' + Then I should see the text 'Thank you for your feedback' diff --git a/features/candidates/dashboard.feature b/features/candidates/dashboard.feature deleted file mode 100644 index f991091af0..0000000000 --- a/features/candidates/dashboard.feature +++ /dev/null @@ -1,40 +0,0 @@ -Feature: View Dashboard page - Login as a Candidate - I want to see my Dashboard showing my Placement Requests and Bookings - - Background: - Given there is a fully-onboarded school - And the school has subjects - - Scenario: Viewing the Dashboard when signed out - Given I visit the Dashboard page - Then I should be redirected to the candidate signin page - - Scenario: Page title - Given I am logged in as a candidate user - When I visit the Dashboard page - Then the page title should be 'Candidate dashboard' - - Scenario: List candidate's placements only - Given I am logged in as a candidate user - And there are some placement requests - And there are some placement requests of the current user - When I visit the Dashboard page - Then I should see all my placement requests listed - - Scenario: Table contents - Given I am logged in as a candidate user - And there are some placement requests of the current user - When I visit the Dashboard page - Then I should see a table with the following headings: - | Placement date | - | School | - | Subject | - | Status | - | Action | - - Scenario: Empty list - Given I am logged in as a candidate user - When I visit the Dashboard page - Then I should see the text 'You have no placement requests or bookings' - And I should not see the requests table diff --git a/features/candidates/feedback.feature b/features/candidates/feedback.feature index 7f1e7e587a..35f9236419 100644 --- a/features/candidates/feedback.feature +++ b/features/candidates/feedback.feature @@ -41,10 +41,10 @@ Feature: Feedback And I choose 'Satisfied' from the 'Overall, how did you feel about the service you received?' radio buttons And I enter 'Keep up the good work' into the 'How could we improve the service? (optional)' field When I click the 'Submit feedback' button - Then I should see the text 'Thank you for your feedback.' + Then I should see the text 'Thank you for your feedback' Scenario: Recording the referrer Given I am on the 'find a school' page prior to giving feedback When I click 'Give feedback', fill in and submit the candidate feedback form - Then I should see the text 'Thank you for your feedback.' + Then I should see the text 'Thank you for your feedback' And my referrer should have been recorded diff --git a/package.json b/package.json index 3b8abedb5a..d340f49bc5 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,10 @@ "accessible-autocomplete": "^2.0.4", "babel-loader": "8", "babel-plugin-macros": "^3.1.0", - "compression-webpack-plugin": "9", + "compression-webpack-plugin": "11", "core-js": "^3.35.0", "css-loader": "^6.8.1", - "css-minimizer-webpack-plugin": "^5.0.1", + "css-minimizer-webpack-plugin": "^6.0.0", "custom-event-polyfill": "^1.0.7", "govuk-frontend": "5.2.0", "express": "4.19.2", diff --git a/spec/controllers/candidates/dashboards_controller_spec.rb b/spec/controllers/candidates/dashboards_controller_spec.rb index 78ce77e876..0503c2938a 100644 --- a/spec/controllers/candidates/dashboards_controller_spec.rb +++ b/spec/controllers/candidates/dashboards_controller_spec.rb @@ -2,35 +2,9 @@ RSpec.describe Candidates::DashboardsController, type: :request do describe "GET #show" do - it_behaves_like "candidate signed out", -> { get candidates_dashboard_path } - - context "when signed in" do - include_context 'candidate signin' - - let(:school) { build :bookings_school } - let(:other_school) { build :bookings_school } - let(:placement_requests) { create_list :placement_request, 1, school: school } - let(:current_candidate_placement_requests) do - create_list :placement_request, 2, candidate: current_candidate, school: school - end - - before do - # Ensure there are placement requests for other candidates - create_list :placement_request, 2, school: other_school - get candidates_dashboard_path - end - - it 'assigns the current contact' do - expect(assigns(:current_candidate)).to eq(current_candidate) - end - - it "assigns the placement requests of the current candidate" do - expect(assigns(:placement_requests)).to match_array(current_candidate_placement_requests) - end - - it "returns http success" do - expect(response).to have_http_status(:success) - end + it "redirects to /candidates" do + get candidates_dashboard_path + expect(response).to redirect_to("/candidates") end end end diff --git a/spec/controllers/candidates/sessions_controller_spec.rb b/spec/controllers/candidates/sessions_controller_spec.rb index 872cbb8097..c757cb2414 100644 --- a/spec/controllers/candidates/sessions_controller_spec.rb +++ b/spec/controllers/candidates/sessions_controller_spec.rb @@ -6,8 +6,8 @@ describe "GET #new" do before { get candidates_signin_path } - it "returns http success" do - expect(response).to have_http_status(:success) + it "redirects the user to /candidates" do + expect(response).to have_http_status(:redirect) end end @@ -32,9 +32,8 @@ post candidates_signin_path, params: { candidates_session: valid_creds } end - it "returns http success" do - expect(response).to have_http_status(:success) - expect(response.body).to match('Verify your school experience sign in') + it "redirects the user to /candidates" do + expect(response).to have_http_status(:redirect) end end @@ -48,10 +47,8 @@ end end - it "renders an error page with a link to try again" do - expect(response).to have_http_status(:success) - expect(response.body).to match('We didn’t recognise the email address you entered') - expect(response.body).to match("Try entering your details again.") + it "redirects the user to /candidates" do + expect(response).to have_http_status(:redirect) end end @@ -62,10 +59,8 @@ end end - it "renders an error page" do - expect(response).to have_http_status(:success) - expect(response.body).to match('We didn’t recognise the email address you entered') - expect(response.body).to match("To login, you need to be registered with us.") + it "redirects the user to /candidates" do + expect(response).to have_http_status(:redirect) end end end @@ -74,9 +69,8 @@ let(:invalid_creds) { { candidates_session: { email: 'invalid' } } } before { post candidates_signin_path, params: invalid_creds } - it "returns http success" do - expect(response).to have_http_status(:success) - expect(response.body).to match('Get school experience sign in') + it "returns http redirect to /candidates" do + expect(response).to have_http_status(:redirect) end end end diff --git a/spec/features/candidates/api_registrations_spec.rb b/spec/features/candidates/api_registrations_spec.rb index d2fe4739a9..a958ac40fe 100644 --- a/spec/features/candidates/api_registrations_spec.rb +++ b/spec/features/candidates/api_registrations_spec.rb @@ -36,7 +36,6 @@ complete_application_preview_step button_text: 'Continue' complete_email_confirmation_step view_request_acknowledgement_step - visit_candidate_dashboard_step end end @@ -80,67 +79,6 @@ view_request_acknowledgement_step end end - - context 'for known Candidate already signed in' do - include_context "api candidate matched back" - include_context "api correct verification code" - - let(:email_address) { sign_up.email } - let!(:candidate) { create(:candidate, :confirmed, gitis_uuid: sign_up.candidate_id) } - - before do - allow_any_instance_of(GetIntoTeachingApiClient::SchoolsExperienceApi).to \ - receive(:get_schools_experience_sign_up) - .with(sign_up.candidate_id) { sign_up } - end - - scenario "completing the Journey" do - sign_in_via_dashboard(sign_up) - complete_personal_information_step fill_in_fields: false - complete_contact_information_step - complete_education_step - complete_teaching_preference_step - complete_placement_preference_step - complete_availability_preference_step - complete_background_step - complete_application_preview_step(name: sign_up.full_name) - view_request_acknowledgement_step - end - end - - context 'for known Candidate already signed in switching account part way through' do - include_context "api candidate matched back" - include_context "api correct verification code" - - let(:email_address) { sign_up.email } - let(:candidate1) { create(:candidate, :confirmed, gitis_contact: sign_up, gitis_uuid: sign_up.candidate_id) } - let(:candidate2) { create(:candidate, :confirmed, :with_api_contact) } - let(:request2) do - GetIntoTeachingApiClient::ExistingCandidateRequest.new( - first_name: candidate2.gitis_contact.first_name, - last_name: candidate2.gitis_contact.last_name, - email: candidate2.gitis_contact.email - ) - end - - before do - allow_any_instance_of(GetIntoTeachingApiClient::SchoolsExperienceApi).to \ - receive(:get_schools_experience_sign_up) - .with(candidate2.gitis_uuid) { candidate2.gitis_contact } - allow_any_instance_of(GetIntoTeachingApiClient::SchoolsExperienceApi).to \ - receive(:exchange_access_token_for_schools_experience_sign_up) - .with(code, request2) { candidate2.gitis_contact } - end - - scenario "completing the Journey" do - sign_in_via_dashboard(candidate1.gitis_contact) - complete_personal_information_step(fill_in_fields: false) - complete_contact_information_step - sign_in_via_dashboard(candidate2.gitis_contact) - swap_back_to_education_step - get_bounced_to_contact_information_step - end - end end def complete_personal_information_step(expected_heading: nil, fill_in_fields: true) @@ -304,21 +242,6 @@ def visit_candidate_dashboard_step expect(page).to have_text "Your dashboard" end - def sign_in_via_dashboard(sign_up) - visit "/candidates/signin" - - fill_in 'Email address', with: sign_up.email - fill_in 'First name', with: sign_up.first_name - fill_in 'Last name', with: sign_up.last_name - click_button 'Sign in' - - expect(page.current_path).to eq "/candidates/signin" - - complete_sign_in_step - - expect(page.current_path).to eq "/candidates/dashboard" - end - def swap_back_to_education_step visit "/candidates/schools/#{school_urn}/registrations/education/new" end diff --git a/spec/features/cookie_preferences_spec.rb b/spec/features/cookie_preferences_spec.rb index d6466bf7c6..81350696cb 100644 --- a/spec/features/cookie_preferences_spec.rb +++ b/spec/features/cookie_preferences_spec.rb @@ -11,11 +11,11 @@ end scenario "a user accepts the cookies from valid path" do - visit candidates_signin_path + visit root_path click_on "Accept analytics cookies" - expect(page.current_path).to eq(candidates_signin_path) + expect(page.current_path).to eq(root_path) end scenario "a user accepts the cookies from a blacklisted path" do diff --git a/yarn.lock b/yarn.lock index 47f7bdae67..1d5120e158 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1401,7 +1401,7 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.5.0", "@jest/types@^29.6.3": +"@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== @@ -1463,10 +1463,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.21", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -2280,7 +2280,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.6.4: +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.6.4: version "4.22.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== @@ -2484,10 +2484,10 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== +colord@^2.9.3: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^2.0.10, colorette@^2.0.14: version "2.0.16" @@ -2516,13 +2516,13 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression-webpack-plugin@9: - version "9.2.0" - resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz#57fd539d17c5907eebdeb4e83dcfe2d7eceb9ef6" - integrity sha512-R/Oi+2+UHotGfu72fJiRoVpuRifZT0tTC6UqFD/DUo+mv8dbOow9rVOuTvDv5nPPm3GZhHL/fKkwxwIHnJ8Nyw== +compression-webpack-plugin@11: + version "11.1.0" + resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-11.1.0.tgz#ee340d2029cf99ccecdea9ad1410b377d15b48b3" + integrity sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA== dependencies: - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" + schema-utils "^4.2.0" + serialize-javascript "^6.0.2" compression@^1.7.4: version "1.7.4" @@ -2645,10 +2645,10 @@ css-blank-pseudo@^0.1.4: dependencies: postcss "^7.0.5" -css-declaration-sorter@^6.3.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" - integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== +css-declaration-sorter@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" + integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== css-has-pseudo@^0.10.0: version "0.10.0" @@ -2672,17 +2672,17 @@ css-loader@^6.8.1: postcss-value-parser "^4.2.0" semver "^7.3.8" -css-minimizer-webpack-plugin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" - integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== +css-minimizer-webpack-plugin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-6.0.0.tgz#eb79947af785467739375faf7fcb8c2dbf4f06dc" + integrity sha512-BLpR9CCDkKvhO3i0oZQgad6v9pCxUuhSc5RT6iUEy9M8hBXi4TJb5vqF2GQ2deqYHmRi3O6IR9hgAZQWg0EBwA== dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - cssnano "^6.0.1" - jest-worker "^29.4.3" - postcss "^8.4.24" - schema-utils "^4.0.1" - serialize-javascript "^6.0.1" + "@jridgewell/trace-mapping" "^0.3.21" + cssnano "^6.0.3" + jest-worker "^29.7.0" + postcss "^8.4.33" + schema-utils "^4.2.0" + serialize-javascript "^6.0.2" css-prefers-color-scheme@^3.1.1: version "3.1.1" @@ -2702,7 +2702,7 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-tree@^2.2.1: +css-tree@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== @@ -2738,53 +2738,54 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz#2a93247140d214ddb9f46bc6a3562fa9177fe301" - integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^4.0.0" - postcss-calc "^9.0.0" - postcss-colormin "^6.0.0" - postcss-convert-values "^6.0.0" - postcss-discard-comments "^6.0.0" - postcss-discard-duplicates "^6.0.0" - postcss-discard-empty "^6.0.0" - postcss-discard-overridden "^6.0.0" - postcss-merge-longhand "^6.0.0" - postcss-merge-rules "^6.0.1" - postcss-minify-font-values "^6.0.0" - postcss-minify-gradients "^6.0.0" - postcss-minify-params "^6.0.0" - postcss-minify-selectors "^6.0.0" - postcss-normalize-charset "^6.0.0" - postcss-normalize-display-values "^6.0.0" - postcss-normalize-positions "^6.0.0" - postcss-normalize-repeat-style "^6.0.0" - postcss-normalize-string "^6.0.0" - postcss-normalize-timing-functions "^6.0.0" - postcss-normalize-unicode "^6.0.0" - postcss-normalize-url "^6.0.0" - postcss-normalize-whitespace "^6.0.0" - postcss-ordered-values "^6.0.0" - postcss-reduce-initial "^6.0.0" - postcss-reduce-transforms "^6.0.0" - postcss-svgo "^6.0.0" - postcss-unique-selectors "^6.0.0" - -cssnano-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" - integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== +cssnano-preset-default@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" + integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== + dependencies: + browserslist "^4.23.0" + css-declaration-sorter "^7.2.0" + cssnano-utils "^4.0.2" + postcss-calc "^9.0.1" + postcss-colormin "^6.1.0" + postcss-convert-values "^6.1.0" + postcss-discard-comments "^6.0.2" + postcss-discard-duplicates "^6.0.3" + postcss-discard-empty "^6.0.3" + postcss-discard-overridden "^6.0.2" + postcss-merge-longhand "^6.0.5" + postcss-merge-rules "^6.1.1" + postcss-minify-font-values "^6.1.0" + postcss-minify-gradients "^6.0.3" + postcss-minify-params "^6.1.0" + postcss-minify-selectors "^6.0.4" + postcss-normalize-charset "^6.0.2" + postcss-normalize-display-values "^6.0.2" + postcss-normalize-positions "^6.0.2" + postcss-normalize-repeat-style "^6.0.2" + postcss-normalize-string "^6.0.2" + postcss-normalize-timing-functions "^6.0.2" + postcss-normalize-unicode "^6.1.0" + postcss-normalize-url "^6.0.2" + postcss-normalize-whitespace "^6.0.2" + postcss-ordered-values "^6.0.2" + postcss-reduce-initial "^6.1.0" + postcss-reduce-transforms "^6.0.2" + postcss-svgo "^6.0.3" + postcss-unique-selectors "^6.0.4" + +cssnano-utils@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" + integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== -cssnano@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.1.tgz#87c38c4cd47049c735ab756d7e77ac3ca855c008" - integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== +cssnano@^6.0.3: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" + integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== dependencies: - cssnano-preset-default "^6.0.1" - lilconfig "^2.1.0" + cssnano-preset-default "^6.1.2" + lilconfig "^3.1.1" csso@^5.0.5: version "5.0.5" @@ -3951,18 +3952,6 @@ jest-snapshot@^29.7.0: pretty-format "^29.7.0" semver "^7.5.3" -jest-util@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" - integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== - dependencies: - "@jest/types" "^29.5.0" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" @@ -4010,16 +3999,6 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.4.3: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" - integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== - dependencies: - "@types/node" "*" - jest-util "^29.5.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" @@ -4118,10 +4097,10 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== lines-and-columns@^1.1.6: version "1.2.4" @@ -4335,10 +4314,10 @@ mutation-observer-inner-html-shim@^1.0.0: resolved "https://registry.yarnpkg.com/mutation-observer-inner-html-shim/-/mutation-observer-inner-html-shim-1.0.1.tgz#84349f51dfc390d0af85011de8fa14e645fb400e" integrity sha512-YmJPDSUWJgBhwqRJP6AMvjdfDHU1gsrT5YdgpxMit2+x1khLYhdYq9fvp4clPsYecVT3JOprBf/KjEX7IqlU+g== -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== natural-compare@^1.4.0: version "1.4.0" @@ -4590,10 +4569,10 @@ postcss-attribute-case-insensitive@^4.0.1: postcss "^7.0.2" postcss-selector-parser "^6.0.2" -postcss-calc@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.0.tgz#cd9b2b155e57c823687eb67c9afcbe97c98ecaa4" - integrity sha512-B9BNW/SVh4SMJfoCQ6D9h1Wo7Yjqks7UdbiARJ16J5TIsQn5NEqwMF5joSgOYb26oJPUR5Uv3fCQ/4PvmZWeJQ== +postcss-calc@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== dependencies: postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" @@ -4640,22 +4619,22 @@ postcss-color-rebeccapurple@^4.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-colormin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.0.tgz#d4250652e952e1c0aca70c66942da93d3cdeaafe" - integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== +postcss-colormin@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" + integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" caniuse-api "^3.0.0" - colord "^2.9.1" + colord "^2.9.3" postcss-value-parser "^4.2.0" -postcss-convert-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz#ec94a954957e5c3f78f0e8f65dfcda95280b8996" - integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== +postcss-convert-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" + integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" postcss-value-parser "^4.2.0" postcss-custom-media@^7.0.8: @@ -4689,25 +4668,25 @@ postcss-dir-pseudo-class@^5.0.0: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" -postcss-discard-comments@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz#9ca335e8b68919f301b24ba47dde226a42e535fe" - integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== +postcss-discard-comments@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" + integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== -postcss-discard-duplicates@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz#c26177a6c33070922e67e9a92c0fd23d443d1355" - integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== +postcss-discard-duplicates@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" + integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== -postcss-discard-empty@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz#06c1c4fce09e22d2a99e667c8550eb8a3a1b9aee" - integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== +postcss-discard-empty@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" + integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== -postcss-discard-overridden@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz#49c5262db14e975e349692d9024442de7cd8e234" - integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== +postcss-discard-overridden@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" + integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== postcss-double-position-gradients@^1.0.0: version "1.0.0" @@ -4791,55 +4770,55 @@ postcss-media-minmax@^4.0.0: dependencies: postcss "^7.0.2" -postcss-merge-longhand@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz#6f627b27db939bce316eaa97e22400267e798d69" - integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== +postcss-merge-longhand@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" + integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== dependencies: postcss-value-parser "^4.2.0" - stylehacks "^6.0.0" + stylehacks "^6.1.1" -postcss-merge-rules@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz#39f165746404e646c0f5c510222ccde4824a86aa" - integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== +postcss-merge-rules@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" + integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" caniuse-api "^3.0.0" - cssnano-utils "^4.0.0" - postcss-selector-parser "^6.0.5" + cssnano-utils "^4.0.2" + postcss-selector-parser "^6.0.16" -postcss-minify-font-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz#68d4a028f9fa5f61701974724b2cc9445d8e6070" - integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== +postcss-minify-font-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" + integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz#22b5c88cc63091dadbad34e31ff958404d51d679" - integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== +postcss-minify-gradients@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" + integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== dependencies: - colord "^2.9.1" - cssnano-utils "^4.0.0" + colord "^2.9.3" + cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" -postcss-minify-params@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz#2b3a85a9e3b990d7a16866f430f5fd1d5961b539" - integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== +postcss-minify-params@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" + integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== dependencies: - browserslist "^4.21.4" - cssnano-utils "^4.0.0" + browserslist "^4.23.0" + cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" -postcss-minify-selectors@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz#5046c5e8680a586e5a0cad52cc9aa36d6be5bda2" - integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== +postcss-minify-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" + integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== dependencies: - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.16" postcss-modules-extract-imports@^3.0.0: version "3.0.0" @@ -4876,74 +4855,74 @@ postcss-nesting@^7.0.0: dependencies: postcss "^7.0.2" -postcss-normalize-charset@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz#36cc12457259064969fb96f84df491652a4b0975" - integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== +postcss-normalize-charset@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" + integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== -postcss-normalize-display-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz#8d2961415078644d8c6bbbdaf9a2fdd60f546cd4" - integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== +postcss-normalize-display-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" + integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-positions@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz#25b96df99a69f8925f730eaee0be74416865e301" - integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== +postcss-normalize-positions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" + integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz#ddf30ad8762feb5b1eb97f39f251acd7b8353299" - integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== +postcss-normalize-repeat-style@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" + integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-string@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz#948282647a51e409d69dde7910f0ac2ff97cb5d8" - integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== +postcss-normalize-string@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" + integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz#5f13e650b8c43351989fc5de694525cc2539841c" - integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== +postcss-normalize-timing-functions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" + integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz#741b3310f874616bdcf07764f5503695d3604730" - integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== +postcss-normalize-unicode@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" + integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" postcss-value-parser "^4.2.0" -postcss-normalize-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz#d0a31e962a16401fb7deb7754b397a323fb650b4" - integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== +postcss-normalize-url@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" + integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz#accb961caa42e25ca4179b60855b79b1f7129d4d" - integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== +postcss-normalize-whitespace@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" + integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz#374704cdff25560d44061d17ba3c6308837a3218" - integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== +postcss-ordered-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" + integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== dependencies: - cssnano-utils "^4.0.0" + cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" postcss-overflow-shorthand@^2.0.0: @@ -5019,18 +4998,18 @@ postcss-pseudo-class-any-link@^6.0.0: postcss "^7.0.2" postcss-selector-parser "^5.0.0-rc.3" -postcss-reduce-initial@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz#7d16e83e60e27e2fa42f56ec0b426f1da332eca7" - integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== +postcss-reduce-initial@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" + integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" caniuse-api "^3.0.0" -postcss-reduce-transforms@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz#28ff2601a6d9b96a2f039b3501526e1f4d584a46" - integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== +postcss-reduce-transforms@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" + integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== dependencies: postcss-value-parser "^4.2.0" @@ -5074,6 +5053,14 @@ postcss-selector-parser@^6.0.11: cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^6.0.16: + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" + integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-selector-parser@^6.0.2: version "6.0.8" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914" @@ -5082,7 +5069,7 @@ postcss-selector-parser@^6.0.2: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: +postcss-selector-parser@^6.0.4: version "6.0.9" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== @@ -5090,20 +5077,20 @@ postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" - integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== +postcss-svgo@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" + integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== dependencies: postcss-value-parser "^4.2.0" - svgo "^3.0.2" + svgo "^3.2.0" -postcss-unique-selectors@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz#c94e9b0f7bffb1203894e42294b5a1b3fb34fbe1" - integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== +postcss-unique-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" + integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== dependencies: - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.16" postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" @@ -5127,14 +5114,14 @@ postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0. picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.4.21, postcss@^8.4.24: - version "8.4.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" - integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== +postcss@^8.4.21, postcss@^8.4.33: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== dependencies: - nanoid "^3.3.6" + nanoid "^3.3.7" picocolors "^1.0.0" - source-map-js "^1.0.2" + source-map-js "^1.2.0" preact@^8.3.1: version "8.5.3" @@ -5450,7 +5437,7 @@ schema-utils@^3.1.1, schema-utils@^3.2.0, schema-utils@^3.3.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.0.1: +schema-utils@^4.0.0, schema-utils@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -5504,10 +5491,10 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== +serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" @@ -5615,11 +5602,16 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1: version "1.0.2" 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-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -5752,13 +5744,13 @@ style-loader@^3.3.3: resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== -stylehacks@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.0.tgz#9fdd7c217660dae0f62e14d51c89f6c01b3cb738" - integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== +stylehacks@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" + integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" + browserslist "^4.23.0" + postcss-selector-parser "^6.0.16" supports-color@^5.3.0: version "5.5.0" @@ -5786,15 +5778,16 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svgo@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" - integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== +svgo@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d" + integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" css-select "^5.1.0" - css-tree "^2.2.1" + css-tree "^2.3.1" + css-what "^6.1.0" csso "^5.0.5" picocolors "^1.0.0"