diff --git a/.docker-hub/print/Dockerfile b/.docker-hub/print/Dockerfile index 9106836285..d9b5da4f21 100644 --- a/.docker-hub/print/Dockerfile +++ b/.docker-hub/print/Dockerfile @@ -1,5 +1,5 @@ # build stage -FROM node:24.10.0 AS build-stage +FROM node:24.11.0 AS build-stage ARG SENTRY_AUTH_TOKEN ARG SENTRY_ORG ARG SENTRY_PRINT_PROJECT @@ -22,7 +22,7 @@ COPY print . RUN npm run build # production stage -FROM node:24.10.0 AS production-stage +FROM node:24.11.0 AS production-stage WORKDIR /app COPY --from=build-stage /app/.output ./.output diff --git a/.github/workflows/check-dependencies.yml b/.github/workflows/check-dependencies.yml index df1443881b..c7e6be2074 100644 --- a/.github/workflows/check-dependencies.yml +++ b/.github/workflows/check-dependencies.yml @@ -22,11 +22,11 @@ jobs: name: 'Api Platform check dependencies' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.13' + php-version: '8.4.14' tools: composer:2.8.0 coverage: xdebug diff --git a/.github/workflows/continuous-integration-optional.yml b/.github/workflows/continuous-integration-optional.yml index a37cb0f070..1f66412882 100644 --- a/.github/workflows/continuous-integration-optional.yml +++ b/.github/workflows/continuous-integration-optional.yml @@ -17,11 +17,11 @@ jobs: name: 'Validate Api Platform composer.lock' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.13' + php-version: '8.4.14' tools: composer:2.8.0 coverage: xdebug @@ -32,11 +32,11 @@ jobs: name: 'Lint: API (psalm)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.13' + php-version: '8.4.14' tools: composer:2.8.0 coverage: xdebug @@ -62,11 +62,11 @@ jobs: name: 'Lint: API (phpstan)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.13' + php-version: '8.4.14' tools: composer:2.8.0 coverage: xdebug @@ -110,11 +110,11 @@ jobs: --health-retries 5 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.13' + php-version: '8.4.14' tools: composer:2.8.0 coverage: xdebug diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index c855e80f56..78dcb8dd1b 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -87,11 +87,11 @@ jobs: - api-check-needed if: needs.api-check-needed.outputs.should_skip != 'true' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.13' + php-version: '8.4.14' tools: composer:2.8.0 coverage: none @@ -110,7 +110,7 @@ jobs: - run: composer install --no-interaction --no-plugins --no-scripts --prefer-dist working-directory: api - - run: PHP_CS_FIXER_IGNORE_ENV=1 php vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php -v --dry-run --diff + - run: php vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php -v --dry-run --diff working-directory: api frontend-eslint: @@ -120,11 +120,11 @@ jobs: - frontend-check-needed if: needs.frontend-check-needed.outputs.should_skip != 'true' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: '24.10.0' + node-version: '24.11.0' - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: @@ -149,11 +149,11 @@ jobs: name: 'Lint: ClientPrint (ESLint)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: '24.10.0' + node-version: '24.11.0' - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: @@ -178,11 +178,11 @@ jobs: name: 'Lint: Print (ESLint)' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: '24.10.0' + node-version: '24.11.0' - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: @@ -210,11 +210,11 @@ jobs: - e2e-check-needed if: needs.e2e-check-needed.outputs.should_skip != 'true' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: '24.10.0' + node-version: '24.11.0' - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: @@ -260,11 +260,11 @@ jobs: --health-retries 5 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - uses: shivammathur/setup-php@v2 with: - php-version: '8.4.13' + php-version: '8.4.14' extensions: intl-73.1 tools: composer:2.8.0 coverage: pcov @@ -349,11 +349,11 @@ jobs: - frontend-check-needed if: needs.frontend-check-needed.outputs.should_skip != 'true' steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: '24.10.0' + node-version: '24.11.0' - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: @@ -392,11 +392,11 @@ jobs: name: 'Tests: Print' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: '24.10.0' + node-version: '24.11.0' - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: @@ -431,11 +431,11 @@ jobs: name: 'Tests: PDF' runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: - node-version: '24.10.0' + node-version: '24.11.0' - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: @@ -530,7 +530,7 @@ jobs: - workflow-success runs-on: ubuntu-latest steps: - - uses: peter-evans/repository-dispatch@5fc4efd1a4797ddb68ffd0714a238564e4cc0e6f # v4 + - uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v4 with: event-type: ci-passed client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}' diff --git a/.github/workflows/deploy-ecamp3-logging.yml b/.github/workflows/deploy-ecamp3-logging.yml index 2fce94e62a..b387b59e92 100644 --- a/.github/workflows/deploy-ecamp3-logging.yml +++ b/.github/workflows/deploy-ecamp3-logging.yml @@ -31,7 +31,7 @@ jobs: } - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Dump secrets to /tmp/secrets.yaml run: | diff --git a/.github/workflows/deploy-ingress.yml b/.github/workflows/deploy-ingress.yml index 8be431109b..d71bc20e93 100644 --- a/.github/workflows/deploy-ingress.yml +++ b/.github/workflows/deploy-ingress.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest environment: ${{ github.event.inputs.environment }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Setup helm run: | diff --git a/.github/workflows/deploy-ops-dashboard.yml b/.github/workflows/deploy-ops-dashboard.yml index f0a63dd22f..a90207d234 100644 --- a/.github/workflows/deploy-ops-dashboard.yml +++ b/.github/workflows/deploy-ops-dashboard.yml @@ -31,7 +31,7 @@ jobs: } - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Dump secrets to /tmp/secrets.yaml run: | diff --git a/.github/workflows/deployment-devel.yml b/.github/workflows/deployment-devel.yml index 4515c9236c..aa607346a6 100644 --- a/.github/workflows/deployment-devel.yml +++ b/.github/workflows/deployment-devel.yml @@ -5,6 +5,15 @@ on: branches: - devel workflow_dispatch: + inputs: + action: + description: "Choose action" + type: choice + required: true + default: diff + options: + - diff + - deploy jobs: continuous-integration: @@ -25,8 +34,9 @@ jobs: upgrade-or-install-deployment: name: Upgrade or install deployment needs: build-and-push - uses: ./.github/workflows/reusable-dev-deployment.yml + uses: ./.github/workflows/reusable-ecamp3-deployment.yml with: name: dev env: dev - secrets: inherit \ No newline at end of file + action: ${{ github.event.inputs.action || 'deploy' }} + secrets: inherit diff --git a/.github/workflows/deployment-pr-cleanup.yml b/.github/workflows/deployment-pr-cleanup.yml index b13148296a..ea5aeb83b8 100644 --- a/.github/workflows/deployment-pr-cleanup.yml +++ b/.github/workflows/deployment-pr-cleanup.yml @@ -13,7 +13,7 @@ jobs: to-uninstall: ${{ steps.to-uninstall.outputs.list }} never-uninstall: ${{ steps.to-uninstall.outputs.never_uninstall }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Find all open PRs that have a "deploy!" label id: deployment-candidates diff --git a/.github/workflows/deployment-pr.yml b/.github/workflows/deployment-pr.yml index 0fd6e7169c..347a0593fe 100644 --- a/.github/workflows/deployment-pr.yml +++ b/.github/workflows/deployment-pr.yml @@ -3,6 +3,16 @@ name: CD for feature branches on: pull_request_target: types: [opened, reopened, labeled, synchronize] + workflow_dispatch: + inputs: + action: + description: "Choose action" + type: choice + required: true + default: diff + options: + - diff + - deploy concurrency: group: ${{ github.workflow}}-${{ github.event.pull_request.number }} @@ -23,11 +33,12 @@ jobs: upgrade-or-install-deployment: name: Upgrade or install deployment needs: build-and-push - uses: ./.github/workflows/reusable-dev-deployment.yml + uses: ./.github/workflows/reusable-ecamp3-deployment.yml with: name: pr${{ github.event.pull_request.number }} sha: ${{ github.event.pull_request.head.sha }} env: feature-branch pr-number: ${{ github.event.pull_request.number }} dropDBOnUninstall: true + action: ${{ github.event.inputs.action || 'deploy' }} secrets: inherit diff --git a/.github/workflows/deployment-stage-prod.yml b/.github/workflows/deployment-stage-prod.yml index a3f07dce30..a3b528dfe8 100644 --- a/.github/workflows/deployment-stage-prod.yml +++ b/.github/workflows/deployment-stage-prod.yml @@ -9,6 +9,15 @@ on: - staging - prod workflow_dispatch: + inputs: + action: + description: "Choose action" + type: choice + required: true + default: diff + options: + - diff + - deploy jobs: build-and-push: @@ -24,5 +33,9 @@ jobs: upgrade-or-install-deployment: name: Upgrade or install deployment needs: build-and-push - uses: ./.github/workflows/reusable-stage-prod-deployment.yml + uses: ./.github/workflows/reusable-ecamp3-deployment.yml + with: + name: ${{ github.ref_name }} + env: ${{ github.ref_name }} + action: ${{ github.event.inputs.action || 'deploy' }} secrets: inherit diff --git a/.github/workflows/restore-backup-dev-pr.yml b/.github/workflows/restore-backup-dev-pr.yml index 7857db686a..4d567de94f 100644 --- a/.github/workflows/restore-backup-dev-pr.yml +++ b/.github/workflows/restore-backup-dev-pr.yml @@ -21,6 +21,14 @@ on: description: The environment, if name is dev then dev, else feature-branch required: true default: dev + action: + description: "Choose action" + type: choice + required: true + default: diff + options: + - diff + - deploy jobs: @@ -36,7 +44,7 @@ jobs: upgrade-or-install-deployment: name: Upgrade or install deployment needs: build-and-push - uses: ./.github/workflows/reusable-dev-deployment.yml + uses: ./.github/workflows/reusable-ecamp3-deployment.yml with: name: ${{ inputs.pr-number == null && 'dev' || format('pr{0}', inputs.pr-number) }} sha: ${{ github.sha }} @@ -44,4 +52,5 @@ jobs: pr-number: ${{ inputs.pr-number }} dropDBOnUninstall: ${{ inputs.pr-number != null }} restoreSourceFile: ${{ inputs.restoreSourceFile }} + action: ${{ github.event.inputs.action }} secrets: inherit diff --git a/.github/workflows/restore-backup-stage-prod.yml b/.github/workflows/restore-backup-stage-prod.yml index 4e70906b39..f628224145 100644 --- a/.github/workflows/restore-backup-stage-prod.yml +++ b/.github/workflows/restore-backup-stage-prod.yml @@ -18,6 +18,14 @@ on: and restore the database with the given backup file? Repeat the branch name to confirm. (e.g. staging or prod) required: true + action: + description: "Choose action" + type: choice + required: true + default: diff + options: + - diff + - deploy jobs: check-parameters: @@ -46,7 +54,9 @@ jobs: upgrade-or-install-deployment: name: Upgrade or install deployment needs: build-and-push - uses: ./.github/workflows/reusable-stage-prod-deployment.yml + uses: ./.github/workflows/reusable-ecamp3-deployment.yml with: restoreSourceFile: ${{ inputs.restoreSourceFile }} + env: ${{ github.ref_name }} + action: ${{ github.event.inputs.action }} secrets: inherit diff --git a/.github/workflows/reusable-build-and-push.yml b/.github/workflows/reusable-build-and-push.yml index 7e33ecd7dd..d16f61c79c 100644 --- a/.github/workflows/reusable-build-and-push.yml +++ b/.github/workflows/reusable-build-and-push.yml @@ -39,7 +39,7 @@ jobs: script: | return context.repo.owner.toLowerCase() - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: ref: ${{ inputs.sha }} @@ -122,7 +122,7 @@ jobs: tags: ${{ needs.build-info.outputs.tags }} repo-owner: ${{ needs.build-info.outputs.repo-owner }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: ref: ${{ inputs.sha }} fetch-depth: 100 diff --git a/.github/workflows/reusable-dev-deployment.yml b/.github/workflows/reusable-dev-deployment.yml deleted file mode 100644 index fc63a1355f..0000000000 --- a/.github/workflows/reusable-dev-deployment.yml +++ /dev/null @@ -1,190 +0,0 @@ -name: '[reusable only] Development deployment' - -on: - workflow_call: - inputs: - name: - required: true - type: string - sha: - required: false - type: string - default: ${{ github.sha }} - env: - required: true - type: string - pr-number: - required: false - type: string - dropDBOnUninstall: - required: false - type: boolean - default: false - restoreSourceFile: - required: false - type: string - -jobs: - dev-deployment: - name: Deploy to Kubernetes - runs-on: ubuntu-latest - environment: - name: ${{ inputs.env }} - steps: - - name: Get link to currently running job logs - uses: Tiryoh/gha-jobid-action@v1.4.0 - id: job-url - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - job_name: Upgrade or install deployment / Deploy to Kubernetes - - - name: Create a pending GitHub deployment - uses: bobheadxi/deployments@v1.5.0 - id: deployment - with: - step: start - token: ${{ secrets.REPO_ACCESS_TOKEN }} - env: ${{ inputs.name }} - - - name: Comment progress on PR - uses: thollander/actions-comment-pull-request@v3 - if: ${{ inputs.env == 'feature-branch' }} - with: - pr-number: ${{ inputs.pr-number }} - message: | - ### Feature branch deployment in progress - - - | Name | Link | - |---------------------------------|------------------------| - | Latest commit | [${{ inputs.sha }}](https://github.com/${{ github.repository }}/commit/${{ inputs.sha }}) | - | Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) | - comment-tag: feature-branch-deployment-status - - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - with: - ref: ${{ inputs.sha }} - - - name: Upgrade or install helm release - env: - never_uninstall: ${{ needs.find-prs-to-deploy.outputs.never-uninstall }} - run: | - # Setup authentication - mkdir ~/.kube && echo '${{ secrets.KUBECONFIG }}' > ~/.kube/config && chmod go-r ~/.kube/config - # Switch to the helm chart directory - cd .helm/ecamp3 - # Install dependency charts - helm dependency update - # Set the appVersion, workaround from https://github.com/helm/helm/issues/8194 so that we can - # later find out which deployments need to be upgraded - sed -i 's/^appVersion:.*$/appVersion: "${{ inputs.sha }}"/' Chart.yaml - # Install or upgrade the release - helm upgrade --install ecamp3-${{ inputs.name }} . \ - --set imageTag=${{ inputs.sha }} \ - --set frontend.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-frontend' \ - --set print.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-print' \ - --set api.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api' \ - --set apiCache.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-varnish' \ - --set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \ - --set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \ - --set newsLink='https://ecamp3.ch/blog' \ - --set helpLink='https://ecamp3.ch/faq' \ - --set domain=${{ inputs.name }}.${{ vars.DOMAIN }} \ - --set ingress.basicAuth.enabled=${{ vars.BASIC_AUTH_ENABLED || false }} \ - --set ingress.basicAuth.username=${{ secrets.BASIC_AUTH_USERNAME }} \ - --set ingress.basicAuth.password='${{ secrets.BASIC_AUTH_PASSWORD }}' \ - --set apiCache.enabled=${{ vars.API_CACHE_ENABLED || false }} \ - --set apiCache.sendXKeyHeadersDownstream=${{ vars.SEND_XKEY_HEADERS_DOWNSTREAM != null && format('''{0}''', vars.SEND_XKEY_HEADERS_DOWNSTREAM) || null }} \ - --set mail.dummyEnabled=true \ - --set postgresql.url='${{ secrets.POSTGRES_URL }}/ecamp3${{ inputs.name }}?sslmode=require' \ - --set postgresql.adminUrl='${{ secrets.POSTGRES_ADMIN_URL }}/ecamp3${{ inputs.name }}?sslmode=require' \ - --set postgresql.dropDBOnUninstall=${{ inputs.dropDBOnUninstall }} \ - --set postgresql.backup.schedule=${{ vars.BACKUP_SCHEDULE != null && format('''{0}''', vars.BACKUP_SCHEDULE) || null }} \ - --set postgresql.backup.s3.endpoint='${{ vars.BACKUP_S3_ENDPOINT }}' \ - --set postgresql.backup.s3.bucket='${{ vars.BACKUP_S3_BUCKET }}' \ - --set postgresql.backup.s3.accessKeyId='${{ secrets.BACKUP_S3_ACCESS_KEY_ID }}' \ - --set postgresql.backup.s3.accessKey='${{ secrets.BACKUP_S3_ACCESS_KEY }}' \ - --set postgresql.backup.encryptionKey=${{ secrets.BACKUP_ENCRYPTION_KEY != null && format('''{0}''', secrets.BACKUP_ENCRYPTION_KEY) || null }} \ - --set postgresql.restore.sourceFile=${{ inputs.restoreSourceFile != null && format('''{0}''', inputs.restoreSourceFile) || null }} \ - --set postgresql.restore.sourceAppName=${{ vars.RESTORE_SOURCE_APP != null && format('''{0}''', vars.RESTORE_SOURCE_APP) || null }} \ - --set postgresql.restore.s3.endpoint='${{ vars.RESTORE_S3_ENDPOINT }}' \ - --set postgresql.restore.s3.bucket='${{ vars.RESTORE_S3_BUCKET }}' \ - --set postgresql.restore.s3.accessKeyId='${{ secrets.RESTORE_S3_ACCESS_KEY_ID }}' \ - --set postgresql.restore.s3.accessKey='${{ secrets.RESTORE_S3_ACCESS_KEY }}' \ - --set postgresql.restore.encryptionKey=${{ secrets.RESTORE_ENCRYPTION_KEY != null && format('''{0}''', secrets.RESTORE_ENCRYPTION_KEY) || null }} \ - --set api.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \ - --set api.appSecret='${{ secrets.API_APP_SECRET }}' \ - --set api.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \ - --set api.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \ - --set api.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \ - --set api.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \ - --set frontend.sentryDsn='${{ secrets.FRONTEND_SENTRY_DSN }}' \ - --set print.sentryDsn='${{ secrets.PRINT_SENTRY_DSN }}' \ - --set print.browserWsEndpoint='${{ secrets.BROWSER_WS_ENDPOINT }}' \ - --set print.ingress.readTimeoutSeconds='${{ vars.PRINT_INGRESS_READ_TIMEOUT_SECONDS }}' \ - --set print.renderHTMLTimeoutMs='${{ vars.PRINT_RENDER_HTML_TIMEOUT_MS }}' \ - --set print.renderPDFTimeoutMs='${{ vars.PRINT_RENDER_PDF_TIMEOUT_MS }}' \ - --set browserless.connectionTimeout=${{ vars.BROWSERLESS_CONNECTION_TIMEOUT_MS || '30000' }} \ - --set deploymentTime="$(date -u +%s)" \ - --set deployedVersion="$(git rev-parse --short '${{ inputs.sha }}')" \ - --set recaptcha.siteKey='${{ secrets.RECAPTCHA_SITE_KEY }}' \ - --set recaptcha.secret='${{ secrets.RECAPTCHA_SECRET }}' \ - --set frontend.loginInfoTextKey=${{ vars.LOGIN_INFO_TEXT_KEY }} \ - --set featureToggle.developer=true \ - --set featureToggle.checklist=${{ vars.FEATURE_CHECKLIST || 'false' }} \ - --timeout ${{ vars.HELM_TIMEOUT || '5m0s' }} - - - name: Finish the GitHub deployment - uses: bobheadxi/deployments@v1.5.0 - if: always() - with: - step: finish - token: ${{ secrets.REPO_ACCESS_TOKEN }} - status: ${{ job.status }} - deployment_id: ${{ steps.deployment.outputs.deployment_id }} - env_url: https://${{ inputs.name }}.${{ vars.DOMAIN }} - env: ${{ steps.deployment.outputs.env }} - - - name: Get current time - uses: josStorer/get-current-time@v2 - if: always() - id: current-time - with: - timezone: Europe/Zurich - - - name: Comment success on PR - uses: thollander/actions-comment-pull-request@v3 - if: ${{ success() && inputs.env == 'feature-branch' }} - with: - pr-number: ${{ inputs.pr-number }} - message: | - ### Feature branch deployment ready! - - - | Name | Link | - |---------------------------------|------------------------| - | **Deployment** | [https://${{ inputs.name }}.${{ vars.DOMAIN }}/](https://${{ inputs.name }}.${{ vars.DOMAIN }}/) | - | Login | `test@example.com` / `test` | - | Last deployed at | ${{ steps.current-time.outputs.readableTime }} | - | Latest commit | [${{ inputs.sha }}](https://github.com/${{ github.repository }}/commit/${{ inputs.sha }}) | - | Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) | - | Preview on mobile |
Toggle QR Code...

![QR Code](https://api.qrserver.com/v1/create-qr-code/?size=180x180&ecc=H&format=svg&qzone=4&color=5-72-97&data=https://${{ inputs.name }}.${{ vars.DOMAIN }}/)

_Use your smartphone camera to open QR code link._
| - --- - comment-tag: feature-branch-deployment-status - - - name: Comment failure on PR - uses: thollander/actions-comment-pull-request@v3 - if: ${{ failure() && inputs.env == 'feature-branch' }} - with: - pr-number: ${{ inputs.pr-number }} - message: | - ### Feature branch deployment failed - - - | Name | Link | - |---------------------------------|------------------------| - | Last attempted at | ${{ steps.current-time.outputs.readableTime }} | - | Latest commit | [${{ inputs.sha }}](https://github.com/${{ github.repository }}/commit/${{ inputs.sha }}) | - | Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) | - --- - comment-tag: feature-branch-deployment-status diff --git a/.github/workflows/reusable-e2e-tests-build.yml b/.github/workflows/reusable-e2e-tests-build.yml index a7d34f98e2..4fea681fc8 100644 --- a/.github/workflows/reusable-e2e-tests-build.yml +++ b/.github/workflows/reusable-e2e-tests-build.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Set up Docker Buildx id: buildx @@ -30,7 +30,7 @@ jobs: cache-to: type=gha,scope=api,mode=max outputs: type=docker,dest=/tmp/ecamp3-dev-api.tar - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 with: name: e2e-tests-images path: /tmp/ecamp3-dev-*.tar diff --git a/.github/workflows/reusable-e2e-tests-run.yml b/.github/workflows/reusable-e2e-tests-run.yml index 10e387a6a6..5ea259ea44 100644 --- a/.github/workflows/reusable-e2e-tests-run.yml +++ b/.github/workflows/reusable-e2e-tests-run.yml @@ -22,7 +22,7 @@ jobs: - firefox - edge steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - run: cp .env.ci .env @@ -31,7 +31,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Restore tmp folder - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v6 with: name: e2e-tests-images path: /tmp @@ -79,7 +79,7 @@ jobs: if: always() # store screenshots and videos on GitHub as artifacts, for downloading and debugging in case of problems - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v5 if: always() with: name: cypress-output-${{ matrix.browser }}${{ inputs.run-identifier != null && format('-{0}', inputs.run-identifier) }} diff --git a/.github/workflows/reusable-ecamp3-deployment.yml b/.github/workflows/reusable-ecamp3-deployment.yml new file mode 100644 index 0000000000..3fbfff5368 --- /dev/null +++ b/.github/workflows/reusable-ecamp3-deployment.yml @@ -0,0 +1,184 @@ +name: '[reusable only] ecamp3 deployment' + +on: + workflow_call: + inputs: + name: + description: Deployment short name for subdomain (e.g. dev, pr123). + required: false + type: string + sha: + required: false + type: string + default: ${{ github.sha }} + env: + description: Target environment (dev, feature-branch, staging, prod) + required: true + type: string + pr-number: + required: false + type: string + dropDBOnUninstall: + required: false + type: boolean + default: false + restoreSourceFile: + required: false + type: string + action: + description: "Choose action of (diff|deploy)" + type: string + required: true + default: diff + +env: + NAME: ${{ inputs.name }} + IMAGE_TAG: ${{ inputs.sha }} + HELM_TIMEOUT: ${{ vars.HELM_TIMEOUT }} + +jobs: + deploy-ecamp3: + name: Deploy to Kubernetes + runs-on: ubuntu-latest + environment: + name: ${{ inputs.env }} + steps: + - name: Get link to currently running job logs + if: ${{ inputs.env == 'feature-branch' }} + uses: Tiryoh/gha-jobid-action@v1.4.0 + id: job-url + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + job_name: Upgrade or install deployment / Deploy to Kubernetes + + - name: Create a pending GitHub deployment + uses: bobheadxi/deployments@v1.5.0 + id: deployment + with: + step: start + token: ${{ secrets.REPO_ACCESS_TOKEN }} + env: ${{ inputs.env }} + + - name: Comment progress on PR + uses: thollander/actions-comment-pull-request@v3 + if: ${{ inputs.env == 'feature-branch' }} + with: + pr-number: ${{ inputs.pr-number }} + message: | + ### Feature branch deployment in progress + + + | Name | Link | + |---------------------------------|------------------------| + | Latest commit | [${{ inputs.sha }}](https://github.com/${{ github.repository }}/commit/${{ inputs.sha }}) | + | Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) | + comment-tag: feature-branch-deployment-status + + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + with: + ref: ${{ inputs.sha }} + + - name: Dump secrets to /tmp/secrets.json + run: | + cat << 'EOF' | tee /tmp/secrets.json + ${{ toJSON(secrets) }} + EOF + jq '.' /tmp/secrets.json + + - name: Dump variables to /tmp/vars.json + run: | + cat << 'EOF' | tee /tmp/vars.json + ${{ toJSON(vars) }} + EOF + jq '.' /tmp/vars.json + + - name: Merge secrets, variables, and workflow inputs to env.yaml + run: | + jq -n \ + '{ + NAME: "${{ inputs.name }}", + IMAGE_TAG: "${{ inputs.sha }}", + RESTORE_SOURCE_FILE: "${{ inputs.restoreSourceFile || '' }}", + DROP_DB_ON_UNINSTALL: ${{ inputs.dropDBOnUninstall }} + }' > /tmp/additions.json + jq -s '.[0] + .[1] + .[2]' /tmp/secrets.json /tmp/vars.json /tmp/additions.json > .helm/ecamp3/env.yaml + jq '.' .helm/ecamp3/env.yaml + + - name: Setup kubectl authentication + run: | + mkdir -p ~/.kube + echo '${{ secrets.KUBECONFIG }}' > ~/.kube/config + chmod go-r ~/.kube/config + + - uses: ./.github/actions/setup-helmfile + + - name: Diff deployment + run: | + ./.helm/ecamp3/deploy.sh diff || true + + - name: Show values.yaml + run: cat ./.helm/ecamp3/values.yaml + + - name: Deploy + if: ${{ inputs.action == 'deploy' }} + run: | + ./.helm/ecamp3/deploy.sh deploy + + - name: Finish the GitHub deployment + uses: bobheadxi/deployments@v1.5.0 + if: always() + with: + step: finish + token: ${{ secrets.REPO_ACCESS_TOKEN }} + status: ${{ job.status }} + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + env_url: ${{ (inputs.env == 'staging' || inputs.env == 'prod') && format('https://{0}.{1}', vars.SUBDOMAIN, vars.DOMAIN) || format('https://{0}.{1}', inputs.name, vars.DOMAIN) }} + env: ${{ steps.deployment.outputs.env }} + + - name: Get current time + uses: josStorer/get-current-time@v2 + if: always() + id: current-time + with: + timezone: Europe/Zurich + + - name: Comment success on PR + uses: thollander/actions-comment-pull-request@v3 + if: ${{ success() && inputs.env == 'feature-branch' }} + with: + pr-number: ${{ inputs.pr-number }} + message: | + ### Feature branch deployment ready! + + + | Name | Link | + |---------------------------------|------------------------| + | **Deployment** | [https://${{ inputs.name }}.${{ vars.DOMAIN }}/](https://${{ inputs.name }}.${{ vars.DOMAIN }}/) | + | Login | `test@example.com` / `test` | + | Last deployed at | ${{ steps.current-time.outputs.readableTime }} | + | Latest commit | [${{ inputs.sha }}](https://github.com/${{ github.repository }}/commit/${{ inputs.sha }}) | + | Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) | + | Preview on mobile |
Toggle QR Code...

![QR Code](https://api.qrserver.com/v1/create-qr-code/?size=180x180&ecc=H&format=svg&qzone=4&color=5-72-97&data=https://${{ inputs.name }}.${{ vars.DOMAIN }}/)

_Use your smartphone camera to open QR code link._
| + --- + comment-tag: feature-branch-deployment-status + + - name: Comment failure on PR + uses: thollander/actions-comment-pull-request@v3 + if: ${{ failure() && inputs.env == 'feature-branch' }} + with: + pr-number: ${{ inputs.pr-number }} + message: | + ### Feature branch deployment failed + + + | Name | Link | + |---------------------------------|------------------------| + | Last attempted at | ${{ steps.current-time.outputs.readableTime }} | + | Latest commit | [${{ inputs.sha }}](https://github.com/${{ github.repository }}/commit/${{ inputs.sha }}) | + | Latest deploy log | [${{ steps.job-url.outputs.html_url }}](${{ steps.job-url.outputs.html_url }}) | + --- + comment-tag: feature-branch-deployment-status + + - name: Cleanup temp files + if: always() + run: rm -f /tmp/secrets.json /tmp/vars.json .helm/ecamp3/env.yaml diff --git a/.github/workflows/reusable-stage-prod-deployment.yml b/.github/workflows/reusable-stage-prod-deployment.yml deleted file mode 100644 index 7c54c903c4..0000000000 --- a/.github/workflows/reusable-stage-prod-deployment.yml +++ /dev/null @@ -1,126 +0,0 @@ -name: '[reusable only] Staging and Prod deployment ' - -on: - workflow_call: - inputs: - restoreSourceFile: - type: string - required: false - -jobs: - upgrade-or-install-deployment: - name: Upgrade or install deployment - runs-on: ubuntu-latest - environment: ${{ github.ref_name }} - env: - environment: ${{ github.ref_name }} - domain: ${{ vars.SUBDOMAIN }}.${{ vars.DOMAIN }} - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - - name: Create a pending GitHub deployment - uses: bobheadxi/deployments@v1.5.0 - id: deployment - with: - step: start - token: ${{ secrets.REPO_ACCESS_TOKEN }} - env: ${{ env.environment }} - - - name: Upgrade or install helm release - run: | - # Setup authentication - mkdir ~/.kube && echo '${{ secrets.KUBECONFIG }}' > ~/.kube/config && chmod go-r ~/.kube/config - # Switch to the helm chart directory - cd .helm/ecamp3 - # Install dependency charts - helm dependency update - # Set the appVersion, workaround from https://github.com/helm/helm/issues/8194 so that we can - # later find out which deployments need to be upgraded - sed -i 's/^appVersion:.*$/appVersion: "${{ github.sha }}"/' Chart.yaml - # Install or upgrade the release - helm upgrade --install ecamp3-${{ env.environment }} . \ - --set imageTag=${{ github.sha }} \ - --set frontend.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-frontend' \ - --set print.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-print' \ - --set api.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-api' \ - --set apiCache.image.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-varnish' \ - --set postgresql.dbBackupRestoreImage.repository='docker.io/${{ vars.DOCKER_HUB_USERNAME }}/ecamp3-db-backup-restore' \ - --set termsOfServiceLinkTemplate='https://ecamp3.ch/{lang}/tos' \ - --set newsLink='https://ecamp3.ch/blog' \ - --set helpLink='https://ecamp3.ch/faq' \ - --set domain=${{ env.domain }} \ - --set ingress.basicAuth.enabled=${{ vars.BASIC_AUTH_ENABLED || false }} \ - --set ingress.basicAuth.username=${{ secrets.BASIC_AUTH_USERNAME }} \ - --set ingress.basicAuth.password='${{ secrets.BASIC_AUTH_PASSWORD }}' \ - --set apiCache.enabled=${{ vars.API_CACHE_ENABLED || false }} \ - --set mail.dsn=${{ secrets.MAILER_DSN }} \ - --set postgresql.url='${{ secrets.POSTGRES_URL }}/${{ secrets.DB_NAME }}?sslmode=require' \ - --set postgresql.dropDBOnUninstall=false \ - --set postgresql.backup.schedule=${{ vars.BACKUP_SCHEDULE != null && format('''{0}''', vars.BACKUP_SCHEDULE) || null }} \ - --set postgresql.backup.s3.endpoint='${{ vars.BACKUP_S3_ENDPOINT }}' \ - --set postgresql.backup.s3.bucket='${{ vars.BACKUP_S3_BUCKET }}' \ - --set postgresql.backup.s3.accessKeyId='${{ secrets.BACKUP_S3_ACCESS_KEY_ID }}' \ - --set postgresql.backup.s3.accessKey='${{ secrets.BACKUP_S3_ACCESS_KEY }}' \ - --set postgresql.backup.encryptionKey=${{ secrets.BACKUP_ENCRYPTION_KEY != null && format('''{0}''', secrets.BACKUP_ENCRYPTION_KEY) || null }} \ - --set postgresql.restore.sourceFile=${{ inputs.restoreSourceFile != null && format('''{0}''', inputs.restoreSourceFile) || null }} \ - --set postgresql.restore.sourceAppName=${{ vars.RESTORE_SOURCE_APP != null && format('''{0}''', vars.RESTORE_SOURCE_APP) || null }} \ - --set postgresql.restore.s3.endpoint='${{ vars.RESTORE_S3_ENDPOINT }}' \ - --set postgresql.restore.s3.bucket='${{ vars.RESTORE_S3_BUCKET }}' \ - --set postgresql.restore.s3.accessKeyId='${{ secrets.RESTORE_S3_ACCESS_KEY_ID }}' \ - --set postgresql.restore.s3.accessKey='${{ secrets.RESTORE_S3_ACCESS_KEY }}' \ - --set postgresql.restore.encryptionKey=${{ secrets.RESTORE_ENCRYPTION_KEY != null && format('''{0}''', secrets.RESTORE_ENCRYPTION_KEY) || null }} \ - --set postgresql.restore.inviteSupportAccountToInterestingCamps=${{ vars.RESTORE_INVITE_TO_INTERESTING_CAMPS != null && format('''{0}''', vars.RESTORE_INVITE_TO_INTERESTING_CAMPS) || false }} \ - --set api.dataMigrationsDir='${{ vars.DATA_MIGRATIONS_DIR }}' \ - --set api.appSecret='${{ secrets.API_APP_SECRET }}' \ - --set api.sentryDsn='${{ secrets.API_SENTRY_DSN }}' \ - --set api.jwt.passphrase='${{ secrets.JWT_PASSPHRASE }}' \ - --set api.jwt.publicKey='${{ secrets.JWT_PUBLIC_KEY }}' \ - --set api.jwt.privateKey='${{ secrets.JWT_PRIVATE_KEY }}' \ - --set api.oauth.google.clientId='${{ secrets.OAUTH_GOOGLE_CLIENT_ID }}' \ - --set api.oauth.google.clientSecret='${{ secrets.OAUTH_GOOGLE_CLIENT_SECRET }}' \ - --set api.oauth.pbsmidata.clientId='${{ secrets.OAUTH_PBSMIDATA_CLIENT_ID }}' \ - --set api.oauth.pbsmidata.clientSecret='${{ secrets.OAUTH_PBSMIDATA_CLIENT_SECRET }}' \ - --set api.oauth.pbsmidata.baseUrl='${{ secrets.OAUTH_PBSMIDATA_BASE_URL }}' \ - --set api.oauth.cevidb.clientId='${{ secrets.OAUTH_CEVIDB_CLIENT_ID }}' \ - --set api.oauth.cevidb.clientSecret='${{ secrets.OAUTH_CEVIDB_CLIENT_SECRET }}' \ - --set api.oauth.cevidb.baseUrl='${{ secrets.OAUTH_CEVIDB_BASE_URL }}' \ - --set api.oauth.jubladb.clientId='${{ secrets.OAUTH_JUBLADB_CLIENT_ID }}' \ - --set api.oauth.jubladb.clientSecret='${{ secrets.OAUTH_JUBLADB_CLIENT_SECRET }}' \ - --set api.oauth.jubladb.baseUrl='${{ secrets.OAUTH_JUBLADB_BASE_URL }}' \ - --set frontend.sentryDsn='${{ secrets.FRONTEND_SENTRY_DSN }}' \ - --set print.sentryDsn='${{ secrets.PRINT_SENTRY_DSN }}' \ - --set print.ingress.readTimeoutSeconds='${{ vars.PRINT_INGRESS_READ_TIMEOUT_SECONDS }}' \ - --set print.renderHTMLTimeoutMs='${{ vars.PRINT_RENDER_HTML_TIMEOUT_MS }}' \ - --set print.renderPDFTimeoutMs='${{ vars.PRINT_RENDER_PDF_TIMEOUT_MS }}' \ - --set deploymentTime="$(date -u +%s)" \ - --set deployedVersion="$(git rev-parse --short HEAD)" \ - --set recaptcha.siteKey='${{ secrets.RECAPTCHA_SITE_KEY }}' \ - --set recaptcha.secret='${{ secrets.RECAPTCHA_SECRET }}' \ - --set frontend.loginInfoTextKey=${{ vars.LOGIN_INFO_TEXT_KEY }} \ - --set browserless.maxConcurrentSessions=${{ vars.BROWSERLESS_MAXCONCURRENTSESSIONS || 3 }} \ - --set browserless.maxQueueLength=${{ vars.BROWSERLESS_MAXQUEUELENGTH || 9 }} \ - --set browserless.connectionTimeout=${{ vars.BROWSERLESS_CONNECTION_TIMEOUT_MS || '30000' }} \ - --set browserless.resources.requests.cpu=${{ vars.BROWSERLESS_CPU || '500m' }} \ - --set browserless.resources.requests.memory=${{ vars.BROWSERLESS_MEMORY || '800Mi' }} \ - --set api.num_threads=${{ vars.API_NUM_THREADS != null && vars.API_NUM_THREADS || null }} \ - --set api.resources.requests.cpu=${{ vars.PHP_CPU || '1000m' }} \ - --set api.resources.requests.memory=${{ vars.PHP_MEMORY || '500Mi' }} \ - --set api.resources.limits.cpu=${{ vars.PHP_CPULIMIT || '1900m' }} \ - --set frontend.resources.requests.cpu=50m \ - --set print.resources.requests.cpu=${{ vars.PRINT_CPU || '300m' }} \ - --set print.resources.requests.memory=${{ vars.PRINT_MEMORY || '150Mi' }} \ - --set autoscaling.enabled=true \ - --set autoscaling.targetCPUUtilizationPercentage=90 \ - --set featureToggle.checklist=${{ vars.FEATURE_CHECKLIST || 'false' }} \ - --timeout ${{ vars.HELM_TIMEOUT || '5m0s' }} - - - name: Finish the GitHub deployment - uses: bobheadxi/deployments@v1.5.0 - if: always() - with: - step: finish - token: ${{ secrets.REPO_ACCESS_TOKEN }} - status: ${{ job.status }} - deployment_id: ${{ steps.deployment.outputs.deployment_id }} - env_url: https://${{ env.domain }} - env: ${{ steps.deployment.outputs.env }} diff --git a/.github/workflows/summarize-changes-on-staging-and-prod-prs.yml b/.github/workflows/summarize-changes-on-staging-and-prod-prs.yml index 74ba4051b6..2add1a938a 100644 --- a/.github/workflows/summarize-changes-on-staging-and-prod-prs.yml +++ b/.github/workflows/summarize-changes-on-staging-and-prod-prs.yml @@ -9,7 +9,7 @@ jobs: name: Summarize changes runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 diff --git a/.helm/.env-example b/.helm/.env-example deleted file mode 100644 index 40d36b3e65..0000000000 --- a/.helm/.env-example +++ /dev/null @@ -1,36 +0,0 @@ -docker_hub_account= -version=$(git rev-parse HEAD) -instance_name=${USER} -domain=ecamp3.ch -POSTGRES_URL= -POSTGRES_ADMIN_URL= - -API_CACHE_ENABLED=false -#API_NUM_THREADS=16 - -BASIC_AUTH_ENABLED=false -BASIC_AUTH_USERNAME=test -BASIC_AUTH_PASSWORD=test - -API_SENTRY_DSN= -FRONTEND_SENTRY_DSN= -PRINT_SENTRY_DSN= - -SENTRY_AUTH_TOKEN= -SENTRY_RELEASE_NAME=$version - -BACKUP_SCHEDULE=@hourly -BACKUP_S3_ENDPOINT= -BACKUP_S3_BUCKET= -BACKUP_S3_ACCESS_KEY_ID= -BACKUP_S3_ACCESS_KEY= -BACKUP_ENCRYPTION_KEY=test - -#RESTORE_SOURCE_FILE=latest -RESTORE_SOURCE_APP=${instance_name}-1 -RESTORE_S3_ENDPOINT= -RESTORE_S3_BUCKET= -RESTORE_S3_ACCESS_KEY_ID= -RESTORE_S3_ACCESS_KEY= -RESTORE_ENCRYPTION_KEY=test -RESTORE_INVITE_TO_INTERESTING_CAMPS=false diff --git a/.helm/README.md b/.helm/README.md new file mode 100644 index 0000000000..9c23965ade --- /dev/null +++ b/.helm/README.md @@ -0,0 +1,55 @@ +# Helm infrastructure for ecamp3 + +Here you also have some scripts to deploy ecamp3 from your local machine. + +## Prepare + +First you need to have the following dependencies: + +- jq +- kubectl (with a kubeconfig for the cluster you want to deploy to) +- helm +- helmfile +- docker (with a public repository to push images to) +- openssl + +## Setup + +If you don't have JWT Passphrase, public and private key yet, you have to run: + +```shell +./generate-jwt-values.sh +``` +This copies [env.example.yaml](ecamp3/env.example.yaml) to [env.yaml](ecamp3/env.yaml) +if not exists and sets the jwt values. + +Then you have to set the values in [env.yaml](ecamp3/env.yaml which are not set to any value. +(e.g. POSTGRES_URL). + +## Build images + +```shell +./build-images.sh +``` + +## Deploy to cluster + +To diff the deployment + +```shell +./deploy-to-cluster.sh +``` + +To deploy + +```shell +./deploy-to-cluster.sh deploy +``` + +## For convenience + +If you did not build the images for a long time, you have the convenience script: + +```shell +./build-and-deploy.sh +``` diff --git a/.helm/build-images.sh b/.helm/build-images.sh index acad4b3fcc..67209d4cd0 100755 --- a/.helm/build-images.sh +++ b/.helm/build-images.sh @@ -1,20 +1,13 @@ -#!/bin/bash +#!/bin/sh set -e SCRIPT_DIR=$(realpath "$(dirname "$0")") REPO_DIR=$(realpath "$SCRIPT_DIR"/..) -source "$SCRIPT_DIR"/.env - -if [ -z "$docker_hub_account" ] \ - || [ -z "$version" ] \ - ; then - echo "Please specify the needed env variables in $SCRIPT_DIR/.env" - echo "An example can be seen here:" - cat $SCRIPT_DIR/.env-example - exit 1 -fi +version=$(jq -r '.IMAGE_TAG' $SCRIPT_DIR/ecamp3/env.yaml) +docker_hub_account=$(jq -r '.DOCKER_HUB_USERNAME' $SCRIPT_DIR/ecamp3/env.yaml) +SENTRY_AUTH_TOKEN=$(jq -r '.SENTRY_AUTH_TOKEN' $SCRIPT_DIR/ecamp3/env.yaml) sentry_build_args="--build-arg SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN --build-arg SENTRY_ORG=$SENTRY_ORG" sentry_build_args="$sentry_build_args --build-arg SENTRY_RELEASE_NAME=$SENTRY_RELEASE_NAME" diff --git a/.helm/deploy-to-cluster.sh b/.helm/deploy-to-cluster.sh index 5ffc3dece4..2ee1784750 100755 --- a/.helm/deploy-to-cluster.sh +++ b/.helm/deploy-to-cluster.sh @@ -1,111 +1,10 @@ -#!/bin/bash - -set -e +#!/bin/sh SCRIPT_DIR=$(realpath "$(dirname "$0")") REPO_DIR=$(realpath "$SCRIPT_DIR"/..) -source "$SCRIPT_DIR"/.env - -if [ -z "$version" ] \ - || [ -z "$instance_name" ] \ - || [ -z "$POSTGRES_URL" ] \ - || [ -z "$POSTGRES_ADMIN_URL" ] \ - ; then - echo "Please specify the needed env variables in $SCRIPT_DIR/.env" - echo "An example can be seen here:" - cat $SCRIPT_DIR/.env-example - exit 1 -fi - -pull_policy="Always" -domain="${domain:-ecamp3.ch}" -values="--set imageTag=${version}" -migrations_dir="dev-data" - -#generated values -app_secret=$(uuidgen) -app_jwt_passphrase=$(uuidgen) -app_jwt_public_key=$(echo -n "$app_jwt_passphrase" | openssl genpkey -out "$SCRIPT_DIR"/private.pem -pass stdin -aes256 -algorithm rsa -pkeyopt rsa_keygen_bits:4096) -app_jwt_private_key=$(echo -n "$app_jwt_passphrase" | openssl pkey -in "$SCRIPT_DIR"/private.pem -passin stdin -out "$SCRIPT_DIR"/public.pem -pubout) - -#secrets POSTGRES_URL, POSTGRES_ADMIN_URL and sentry dsn are in .env - -#use 1 2 instead of "1" to deploy multiple deployments -for i in 1; do - values="$values --set imageTag=${version}" - values="$values --set termsOfServiceLinkTemplate=https://ecamp3.ch/{lang}/tos" - values="$values --set newsLink=https://ecamp3.ch/blog" - values="$values --set helpLink=https://ecamp3.ch/faq" - values="$values --set domain=$instance_name-"$i".$domain" - values="$values --set mail.dummyEnabled=true" - values="$values --set ingress.basicAuth.enabled=$BASIC_AUTH_ENABLED" - values="$values --set ingress.basicAuth.username=$BASIC_AUTH_USERNAME" - values="$values --set ingress.basicAuth.password=$BASIC_AUTH_PASSWORD" - values="$values --set apiCache.enabled=$API_CACHE_ENABLED" - values="$values --set postgresql.enabled=false" - values="$values --set postgresql.url=$POSTGRES_URL/ecamp3$instance_name-"$i"?sslmode=require" - values="$values --set postgresql.adminUrl=$POSTGRES_ADMIN_URL/ecamp3$instance_name-"$i"?sslmode=require" - values="$values --set postgresql.dropDBOnUninstall=true" - values="$values --set api.dataMigrationsDir=$migrations_dir" - values="$values --set api.appSecret=$app_secret" - if [ -n "$API_SENTRY_DSN" ]; then - values="$values --set api.sentryDsn=$API_SENTRY_DSN" - fi - if [ -n "$API_NUM_THREADS" ]; then - values="$values --set api.num_threads=$API_NUM_THREADS" - fi - if [ -n "$FRONTEND_SENTRY_DSN" ]; then - values="$values --set frontend.sentryDsn=$FRONTEND_SENTRY_DSN" - fi - if [ -n "$PRINT_SENTRY_DSN" ]; then - values="$values --set print.sentryDsn=$PRINT_SENTRY_DSN" - fi - values="$values --set api.jwt.passphrase=$app_jwt_passphrase" - values="$values --set-file api.jwt.publicKey=$SCRIPT_DIR/public.pem" - values="$values --set-file api.jwt.privateKey=$SCRIPT_DIR/private.pem" - values="$values --set deploymentTime=$(date -u +%s)" - values="$values --set deployedVersion=\"$(git rev-parse --short HEAD)\"" - values="$values --set featureToggle.developer=true" - values="$values --set featureToggle.checklist=true" - - if [ -n "$BACKUP_SCHEDULE" ]; then - values="$values --set postgresql.backup.schedule=$BACKUP_SCHEDULE" - values="$values --set postgresql.backup.s3.endpoint=$BACKUP_S3_ENDPOINT" - values="$values --set postgresql.backup.s3.bucket=$BACKUP_S3_BUCKET" - values="$values --set postgresql.backup.s3.accessKeyId=$BACKUP_S3_ACCESS_KEY_ID" - values="$values --set postgresql.backup.s3.accessKey=$BACKUP_S3_ACCESS_KEY" - if [ -n $BACKUP_ENCRYPTION_KEY ]; then - values="$values --set postgresql.backup.encryptionKey=$BACKUP_ENCRYPTION_KEY" - fi - fi - - if [ -n "$RESTORE_SOURCE_FILE" ]; then - values="$values --set postgresql.restore.sourceFile=$RESTORE_SOURCE_FILE" - values="$values --set postgresql.restore.s3.endpoint=$RESTORE_S3_ENDPOINT" - values="$values --set postgresql.restore.s3.bucket=$RESTORE_S3_BUCKET" - values="$values --set postgresql.restore.s3.accessKeyId=$RESTORE_S3_ACCESS_KEY_ID" - values="$values --set postgresql.restore.s3.accessKey=$RESTORE_S3_ACCESS_KEY" - values="$values --set postgresql.restore.sourceAppName=$RESTORE_SOURCE_APP" - if [ -n $RESTORE_ENCRYPTION_KEY ]; then - values="$values --set postgresql.restore.encryptionKey=$RESTORE_ENCRYPTION_KEY" - fi - values="$values --set postgresql.restore.inviteSupportAccountToInterestingCamps=$RESTORE_INVITE_TO_INTERESTING_CAMPS" - fi - - for imagespec in "frontend" "print" "api"; do - values="$values --set $imagespec.image.pullPolicy=$pull_policy" - values="$values --set $imagespec.image.repository=docker.io/${docker_hub_account}/ecamp3-$imagespec" - done - - values="$values --set apiCache.image.repository=docker.io/${docker_hub_account}/ecamp3-varnish" - - values="$values --set postgresql.dbBackupRestoreImage.pullPolicy=$pull_policy" - values="$values --set postgresql.dbBackupRestoreImage.repository=docker.io/${docker_hub_account}/ecamp3-db-backup-restore" +ACTION="${1:-diff}" - helm uninstall ecamp3-"$instance_name"-"$i" || true - helm upgrade --install ecamp3-"$instance_name"-"$i" $SCRIPT_DIR/ecamp3 $values -done +export NAME=$(jq -r '.NAME' $SCRIPT_DIR/ecamp3/env.yaml) -rm -f private.pem -rm -f public.pem +"$REPO_DIR/.helm/ecamp3/deploy.sh" "${ACTION}" diff --git a/.helm/ecamp3/.gitignore b/.helm/ecamp3/.gitignore new file mode 100644 index 0000000000..c5d46b987d --- /dev/null +++ b/.helm/ecamp3/.gitignore @@ -0,0 +1,3 @@ +.env +/env.yaml +/values.yaml diff --git a/.helm/ecamp3/.helmignore b/.helm/ecamp3/.helmignore index 45735c7c00..dcf3784a42 100644 --- a/.helm/ecamp3/.helmignore +++ b/.helm/ecamp3/.helmignore @@ -25,3 +25,8 @@ docker-compose.yml README.md .env .env-example +.env +/deploy.sh +/values.yaml +/values.yaml.gotmpl +/env.yaml \ No newline at end of file diff --git a/.helm/ecamp3/deploy.sh b/.helm/ecamp3/deploy.sh new file mode 100755 index 0000000000..255dfdd7f3 --- /dev/null +++ b/.helm/ecamp3/deploy.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +SCRIPT_DIR=$(realpath "$(dirname "$0")") +REPO_DIR=$(realpath "$SCRIPT_DIR/../..") + +if [ -z "${NAME:-}" ]; then + echo "Please specify the NAME" + exit 1 +fi + +cd "$SCRIPT_DIR" + +helmfile write-values --environment default --output-file-template values.yaml + +HELM_TIMEOUT="${HELM_TIMEOUT:-5m0s}" + +if [ "${1:-}" = "deploy" ]; then + helm upgrade --install ecamp3-$NAME \ + $SCRIPT_DIR \ + --values $SCRIPT_DIR/values.yaml \ + --timeout "$HELM_TIMEOUT" + exit 0 +fi + +if [ "${1:-}" = "diff" ]; then + helm template --no-hooks --skip-tests ecamp3-$NAME \ + $SCRIPT_DIR \ + --values $SCRIPT_DIR/values.yaml | kubectl diff -f - + exit 0 +fi diff --git a/.helm/ecamp3/env.example.yaml b/.helm/ecamp3/env.example.yaml new file mode 100644 index 0000000000..79365f4e3d --- /dev/null +++ b/.helm/ecamp3/env.example.yaml @@ -0,0 +1,45 @@ +{ + "API_CACHE_ENABLED": true, + "API_DATA_MIGRATIONS_DIR": "dev-data", + "API_NUM_THREADS": null, + "API_SENTRY_DSN": null, + "AUTOSCALING_ENABLED": false, + "BACKUP_ENCRYPTION_KEY": null, + "BACKUP_S3_ACCESS_KEY": null, + "BACKUP_S3_ACCESS_KEY_ID": null, + "BACKUP_S3_BUCKET": null, + "BACKUP_S3_ENDPOINT": "https://s3.eu-west-3.amazonaws.com", + "BACKUP_SCHEDULE": null, + "BASIC_AUTH_ENABLED": null, + "BASIC_AUTH_PASSWORD": null, + "BASIC_AUTH_USERNAME": null, + "BROWSERLESS_CPU": "10m", + "BROWSERLESS_MEMORY": "200Mi", + "DOCKER_HUB_USERNAME": , + "DOMAIN": "ecamp3.ch", + "FEATURE_CHECKLIST": true, + "FEATURE_DEVELOPER": true, + "FRONTEND_SENTRY_DSN": null, + "IMAGE_TAG": "my-version", + "JWT_PASSPHRASE": , + "JWT_PRIVATE_KEY": , + "JWT_PUBLIC_KEY": , + "LOGIN_INFO_TEXT_KEY": null, + "NAME": "my-ecamp", + "PHP_CPU": "10m", + "PHP_MEMORY": "120Mi", + "POSTGRES_ADMIN_URL": , + "POSTGRES_URL": , + "PRINT_CPU": "10m", + "PRINT_MEMORY": "150Mi", + "PRINT_SENTRY_DSN": null, + "RESTORE_ENCRYPTION_KEY": null, + "RESTORE_INVITE_TO_INTERESTING_CAMPS": false, + "RESTORE_S3_ACCESS_KEY": null, + "RESTORE_S3_ACCESS_KEY_ID": null, + "RESTORE_S3_BUCKET": null, + "RESTORE_S3_ENDPOINT": null, + "RESTORE_SOURCE_APP": null, + "RESTORE_SOURCE_FILE": null, + "SENTRY_AUTH_TOKEN": null +} diff --git a/.helm/ecamp3/helmfile.yaml b/.helm/ecamp3/helmfile.yaml new file mode 100644 index 0000000000..3d63810b60 --- /dev/null +++ b/.helm/ecamp3/helmfile.yaml @@ -0,0 +1,10 @@ +environments: + default: + values: + - ./env.yaml +--- +releases: + - name: "" + chart: . + values: + - ./values.yaml.gotmpl diff --git a/.helm/ecamp3/templates/frontend_configmap.yaml b/.helm/ecamp3/templates/frontend_configmap.yaml index d58504aa32..589b6aa801 100644 --- a/.helm/ecamp3/templates/frontend_configmap.yaml +++ b/.helm/ecamp3/templates/frontend_configmap.yaml @@ -16,6 +16,7 @@ data: SENTRY_ENVIRONMENT: '{{ .Values.domain }}', {{- else }} SENTRY_FRONTEND_DSN: null, + SENTRY_ENVIRONMENT: '{{ .Values.domain }}', {{- end }} DEPLOYMENT_TIME: '{{ .Values.deploymentTime }}', VERSION: '{{ .Values.deployedVersion }}', diff --git a/.helm/ecamp3/values.yaml b/.helm/ecamp3/values.yaml deleted file mode 100644 index f59ee67a82..0000000000 --- a/.helm/ecamp3/values.yaml +++ /dev/null @@ -1,263 +0,0 @@ -# Default values for ecamp3. -# Declare configuration values to be passed into the templates. - -chartNameOverride: "" -imageTag: "latest" -imagePullSecrets: [] -deploymentTime: "" -domain: -deployedVersion: "devel" -versionLinkTemplate: 'https://github.com/ecamp/ecamp3/commit/{version}' -termsOfServiceLinkTemplate: # 'https://ecamp3.ch/{lang}/tos' -newsLink: # 'https://ecamp3.ch/blog' -helpLink: # 'https://ecamp3.ch/faq' - -# enable/disable feature across the complete deployment -featureToggle: - developer: false # enables various tools/features foreseen for development deployments (language switcher, form controls view, performance measurement view, etc.) - checklist: false # enables checklist feature in frontend - -api: - authenticationTokenTtl: - subpath: "/api" - image: - repository: "docker.io/ecamp/ecamp3-api" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: - service: - type: ClusterIP - port: 3001 - metrics: - port: 2019 - replicaCount: 1 - appEnv: prod - appDebug: "0" - appSecret: "" - corsAllowOrigin: "^https://.*?\\.chart-example\\.local$" - trustedProxies: - - "::1" - - "127.0.0.1" - - "10.0.0.0/8" - - "172.16.0.0/12" - - "192.168.0.0/16" - caddyGlobalOptions: "" - sentryDsn: - jwt: - passphrase: - privateKey: - publicKey: - oauth: - google: - clientId: '889440431087-ueuhpadf2g7h5ucdke92mvfaf4l779m4.apps.googleusercontent.com' - clientSecret: 'HNaD1FNO-a1qliacIrIfcGqO' - pbsmidata: - clientId: '2a955efdaaac73f665b29ec182cd9a114db01675ced710a464d33d10f58be600' - clientSecret: '00a23e48bcb776d453b255428ffe810643db7155a9f3d743d7edf52eac400580' - baseUrl: 'https://pbs.puzzle.ch' - cevidb: - clientId: 'raT1QFf6TOQzpn3yVH-My6YLrmsvOrfMhYypxzjPMWk' - clientSecret: 'fTxMrzjBn3gPGg3eB0bNMmjRqg4ccs3_su7CaTXtljE' - baseUrl: 'https://cevi.puzzle.ch' - jubladb: - clientId: 'WrKABq7GwmC6h1F0W73OGX_fOTHWWXnKXfrPMHOdQWY' - clientSecret: 'oQ164RDMIAocL6PhmCoeT1Ymcg-7WcOJZdxCnIph5gM' - baseUrl: 'https://jubla.puzzle.ch' - num_threads: - resources: - requests: - cpu: 10m - memory: 120Mi - -frontend: - image: - repository: "docker.io/ecamp/ecamp3-frontend" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: - sentryDsn: - service: - type: ClusterIP - port: 3000 - replicaCount: 1 - resources: - requests: - cpu: 10m - memory: 10Mi - loginInfoTextKey: 'prod' - -print: - subpath: "/print" - ingress: - readTimeoutSeconds: - image: - repository: "docker.io/ecamp/ecamp3-print" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: - sentryDsn: - browserWsEndpoint: - service: - type: ClusterIP - port: 3003 - replicaCount: 1 - renderHTMLTimeoutMs: - renderPDFTimeoutMs: - resources: - requests: - cpu: 10m - memory: 150Mi - -browserless: - enabled: true - domain: - image: - repository: "ghcr.io/browserless/chrome" - pullPolicy: IfNotPresent - # renovate: datasource=docker depName=ghcr.io/browserless/chrome - tag: "v2.34.1" - service: - type: ClusterIP - port: 3000 - maxConcurrentSessions: 1 - connectionTimeout: 30000 - maxQueueLength: 5 - resources: - requests: - cpu: 10m - memory: 200Mi - -mail: - dummyEnabled: true - # If using a real mail server, the connection uri to send emails to - dsn: # smtp://myuser:mypass@mymailserver:1025 - # If the dummy mail server is enabled, the domain where the web interface is available - subpath: "/mail" - image: - repository: "docker.io/maildev/maildev" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: "latest" - service: - type: ClusterIP - port: 1080 - resources: - requests: - cpu: 10m - memory: 10Mi - -postgresql: - url: - dropDBOnUninstall: false - # An uri with privileges to create and drop a database for the application. - # Can be left empty if the required database specified in postgresql.url already exists. - adminUrl: - dbBackupRestoreImage: - repository: "docker.io/ecamp/ecamp3-db-backup-restore" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: - backup: - schedule: - s3: - endpoint: - bucket: - accessKeyId: - accessKey: - encryptionKey: - restore: - # null => no restore, latest => restore latest backup, s3 key => restore this backup - sourceFile: - sourceAppName: - s3: - endpoint: - bucket: - accessKeyId: - accessKey: - inviteSupportAccountToInterestingCamps: false - encryptionKey: - -recaptcha: - siteKey: - secret: - -serviceAccount: - # Specifies whether a service account should be created - create: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -ingress: - enabled: true - basicAuth: - enabled: false - username: - password: - annotations: - # kubernetes.io/tls-acme: "true" - className: nginx - tls: - -apiCache: - enabled: false - image: - repository: "docker.io/ecamp/ecamp3-varnish" - pullPolicy: IfNotPresent - # Overrides the image tag whose shared default is .Values.imageTag - tag: - service: - type: ClusterIP - ports: - http: 3000 - purge: 3001 - varnishSize: 50M - varnishHttpPort: 8080 - varnishPurgePort: 8081 - sendXKeyHeadersDownstream: false - resources: - requests: - cpu: 10m - memory: 100Mi - logging: - enabled: true - customOutput: '{ "received_at": "%t", "varnish_side": "%{Varnish:side}x", "method": "%m", "host": "%h", "url": "%U", "query": "%q", "response_bytes": %b, "time_taken": %D, "status": %s, "handling": "%{Varnish:handling}x", "response_reason": "%{VSL:RespReason}x", "fetch_error": "%{VSL:FetchError}x", "httpRequest": { "requestMethod": "%m", "requestUrl": "%{Host}i%U%q", "status": "%s" } }' - customOutputJsonFormat: true - # Timeout before returning error on initial VSM connection. - # If set the VSM connection is retried every 0.5 seconds for this many seconds. - # If zero the connection is attempted only once and will fail immediately if unsuccessful. - # If set to "off", the connection will not fail, allowing the utility to start and wait indefinitely for the Varnish instance to appear. - # Defaults to "off" in this case. - timeout: "off" - resources: - requests: - cpu: 10m - memory: 20Mi - prometheus: - enabled: true - path: "/metrics" - port: 9131 - resources: - requests: - cpu: 10m - memory: 20Mi - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 diff --git a/.helm/ecamp3/values.yaml.gotmpl b/.helm/ecamp3/values.yaml.gotmpl new file mode 100644 index 0000000000..cf4a546790 --- /dev/null +++ b/.helm/ecamp3/values.yaml.gotmpl @@ -0,0 +1,280 @@ +{{- /* Input parameters from helmfile env.yaml */ -}} +{{- $name := .Environment.Values | getOrNil "NAME" | required "NAME is required" -}} +{{- $domain := .Environment.Values | getOrNil "DOMAIN" | required "DOMAIN is required" -}} +{{- $dockerUser := .Environment.Values | getOrNil "DOCKER_HUB_USERNAME" | required "DOCKER_HUB_USERNAME is required" -}} +{{- $imageTag := .Environment.Values | getOrNil "IMAGE_TAG" | required "IMAGE_TAG is required" -}} + +# Default values for ecamp3. +# Declare configuration values to be passed into the templates. + +chartNameOverride: "" +imageTag: {{ $imageTag | quote }} +imagePullSecrets: [] +deploymentTime: {{ exec "date" (list "-u" "+%s") | trim | quote }} +domain: {{ printf "%s.%s" $name $domain | quote }} +deployedVersion: {{ (exec "git" (list "rev-parse" "--short" "HEAD")) | trim | quote }} +versionLinkTemplate: 'https://github.com/ecamp/ecamp3/commit/{version}' +termsOfServiceLinkTemplate: 'https://ecamp3.ch/{lang}/tos' +newsLink: 'https://ecamp3.ch/blog' +helpLink: 'https://ecamp3.ch/faq' + +# enable/disable feature across the complete deployment +featureToggle: + developer: {{ .Environment.Values | getOrNil "FEATURE_DEVELOPER" | default false }} + checklist: {{ .Environment.Values | getOrNil "FEATURE_CHECKLIST" | default false }} + +api: + dataMigrationsDir: {{ .Environment.Values | getOrNil "API_DATA_MIGRATIONS_DIR" | default "prod-data" }} + subpath: "/api" + image: + repository: "docker.io/{{ $dockerUser }}/ecamp3-api" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: + service: + type: ClusterIP + port: 3001 + metrics: + port: 2019 + replicaCount: 1 + appEnv: prod + appDebug: "0" + appSecret: {{ .Environment.Values | getOrNil "API_APP_SECRET" }} + corsAllowOrigin: "^https://.*?\\.chart-example\\.local$" + trustedProxies: + - "::1" + - "127.0.0.1" + - "10.0.0.0/8" + - "172.16.0.0/12" + - "192.168.0.0/16" + caddyGlobalOptions: "" + sentryDsn: {{ .Environment.Values | getOrNil "API_SENTRY_DSN" | quote }} + jwt: + passphrase: {{ .Environment.Values | getOrNil "JWT_PASSPHRASE" | required "JWT_PASSPHRASE is required" }} + privateKey: | + {{- .Environment.Values | getOrNil "JWT_PRIVATE_KEY" | required "JWT_PRIVATE_KEY is required" | nindent 6 }} + publicKey: | + {{- .Environment.Values | getOrNil "JWT_PUBLIC_KEY" | required "JWT_PUBLIC_KEY is required" | nindent 6 }} + oauth: + google: + clientId: {{ .Environment.Values | getOrNil "OAUTH_GOOGLE_CLIENT_ID" | default "889440431087-ueuhpadf2g7h5ucdke92mvfaf4l779m4.apps.googleusercontent.com" | quote }} + clientSecret: {{ .Environment.Values | getOrNil "OAUTH_GOOGLE_CLIENT_SECRET" | default "HNaD1FNO-a1qliacIrIfcGqO" | quote }} + pbsmidata: + clientId: {{ .Environment.Values | getOrNil "OAUTH_PBSMIDATA_CLIENT_ID" | default "2a955efdaaac73f665b29ec182cd9a114db01675ced710a464d33d10f58be600" | quote }} + clientSecret: {{ .Environment.Values | getOrNil "OAUTH_PBSMIDATA_CLIENT_SECRET" | default "00a23e48bcb776d453b255428ffe810643db7155a9f3d743d7edf52eac400580" | quote }} + baseUrl: {{ .Environment.Values | getOrNil "OAUTH_PBSMIDATA_BASE_URL" | default "https://pbs.puzzle.ch" | quote }} + cevidb: + clientId: {{ .Environment.Values | getOrNil "OAUTH_CEVIDB_CLIENT_ID" | default "raT1QFf6TOQzpn3yVH-My6YLrmsvOrfMhYypxzjPMWk" | quote }} + clientSecret: {{ .Environment.Values | getOrNil "OAUTH_CEVIDB_CLIENT_SECRET" | default "fTxMrzjBn3gPGg3eB0bNMmjRqg4ccs3_su7CaTXtljE" | quote }} + baseUrl: {{ .Environment.Values | getOrNil "OAUTH_CEVIDB_BASE_URL" | default "https://cevi.puzzle.ch" | quote }} + jubladb: + clientId: {{ .Environment.Values | getOrNil "OAUTH_JUBLADB_CLIENT_ID" | default "WrKABq7GwmC6h1F0W73OGX_fOTHWWXnKXfrPMHOdQWY" | quote }} + clientSecret: {{ .Environment.Values | getOrNil "OAUTH_JUBLADB_CLIENT_SECRET" | default "oQ164RDMIAocL6PhmCoeT1Ymcg-7WcOJZdxCnIph5gM" | quote }} + baseUrl: {{ .Environment.Values | getOrNil "OAUTH_JUBLADB_BASE_URL" | default "https://jubla.puzzle.ch" | quote }} + num_threads: {{ .Environment.Values | getOrNil "API_NUM_THREADS" | default false }} + resources: + requests: + cpu: {{ .Environment.Values | getOrNil "PHP_CPU" | default "1000m" | quote }} + memory: {{ .Environment.Values | getOrNil "PHP_MEMORY" | default "500Mi" | quote }} + {{- $phpCpuLimit := .Environment.Values | get "PHP_CPULIMIT" "1900m" -}} + {{ if not ( $phpCpuLimit | empty ) }} + limits: + cpu: {{ $phpCpuLimit | quote }} + {{ end }} + +frontend: + image: + repository: "docker.io/{{ $dockerUser }}/ecamp3-frontend" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: + sentryDsn: {{ .Environment.Values | getOrNil "FRONTEND_SENTRY_DSN" | quote }} + service: + type: ClusterIP + port: 3000 + replicaCount: 1 + resources: + requests: + cpu: {{ .Environment.Values | getOrNil "FRONTEND_CPU" | default "50m" | quote }} + memory: {{ .Environment.Values | getOrNil "FRONTEND_MEMORY" | default "10Mi" | quote }} + loginInfoTextKey: {{ .Environment.Values | get "LOGIN_INFO_TEXT_KEY" | default "prod" | quote }} + +print: + subpath: "/print" + ingress: + readTimeoutSeconds: {{ .Environment.Values | getOrNil "PRINT_INGRESS_READ_TIMEOUT_SECONDS" | quote }} + image: + repository: "docker.io/{{ $dockerUser }}/ecamp3-print" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: + sentryDsn: {{ .Environment.Values | getOrNil "PRINT_SENTRY_DSN" | quote }} + browserWsEndpoint: {{ .Environment.Values | getOrNil "BROWSER_WS_ENDPOINT" | quote }} + service: + type: ClusterIP + port: 3003 + replicaCount: 1 + renderHTMLTimeoutMs: {{ .Environment.Values | getOrNil "PRINT_RENDER_HTML_TIMEOUT_MS" }} + renderPDFTimeoutMs: {{ .Environment.Values | getOrNil "PRINT_RENDER_PDF_TIMEOUT_MS" }} + resources: + requests: + cpu: {{ .Environment.Values | getOrNil "PRINT_CPU" | default "300m" | quote }} + memory: {{ .Environment.Values | getOrNil "PRINT_MEMORY" | default "150Mi" | quote }} + +browserless: + enabled: true + domain: + image: + repository: "ghcr.io/browserless/chrome" + pullPolicy: IfNotPresent + # renovate: datasource=docker depName=ghcr.io/browserless/chrome + tag: "v2.34.1" + service: + type: ClusterIP + port: 3000 + maxConcurrentSessions: {{ .Environment.Values | getOrNil "BROWSERLESS_MAXCONCURRENTSESSIONS" | default 1 }} + connectionTimeout: {{ .Environment.Values | getOrNil "BROWSERLESS_CONNECTION_TIMEOUT_MS" | default "30000" | quote }} + maxQueueLength: {{ .Environment.Values | getOrNil "BROWSERLESS_MAXQUEUELENGTH" | default 5 }} + resources: + requests: + cpu: {{ .Environment.Values | getOrNil "BROWSERLESS_CPU" | default "500m" }} + memory: {{ .Environment.Values | getOrNil "BROWSERLESS_MEMORY" | default "800Mi" }} + +mail: + dummyEnabled: {{ not (.Environment.Values | getOrNil "MAILER_DSN") }} + # If using a real mail server, the connection uri to send emails to + dsn: {{ .Environment.Values | getOrNil "MAILER_DSN" | quote }} + # If the dummy mail server is enabled, the domain where the web interface is available + subpath: "/mail" + image: + repository: "docker.io/maildev/maildev" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: "latest" + service: + type: ClusterIP + port: 1080 + resources: + requests: + cpu: 10m + memory: 10Mi + +postgresql: + url: "{{ .Environment.Values | getOrNil "POSTGRES_URL" | required "POSTGRES_URL is required" }}/ecamp3{{ $name }}?sslmode=require" + dropDBOnUninstall: {{ .Environment.Values | getOrNil "DROP_DB_ON_UNINSTALL" | default false }} + # An uri with privileges to create and drop a database for the application. + # Can be left empty if the required database specified in postgresql.url already exists. + {{ if .Environment.Values | getOrNil "POSTGRES_ADMIN_URL" | default false }} + adminUrl: "{{ .Environment.Values | getOrNil "POSTGRES_ADMIN_URL" }}/ecamp3{{ $name }}?sslmode=require" + {{ else }} + adminUrl: + {{ end }} + dbBackupRestoreImage: + repository: "docker.io/{{ $dockerUser }}/ecamp3-db-backup-restore" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: + backup: + schedule: {{ .Environment.Values | getOrNil "BACKUP_SCHEDULE" | quote }} + s3: + endpoint: {{ .Environment.Values | getOrNil "BACKUP_S3_ENDPOINT" | quote }} + bucket: {{ .Environment.Values | getOrNil "BACKUP_S3_BUCKET" | quote }} + accessKeyId: {{ .Environment.Values | getOrNil "BACKUP_S3_ACCESS_KEY_ID" | quote }} + accessKey: {{ .Environment.Values | getOrNil "BACKUP_S3_ACCESS_KEY" | quote }} + encryptionKey: {{ .Environment.Values | getOrNil "BACKUP_ENCRYPTION_KEY" | quote }} + restore: + # null => no restore, latest => restore latest backup, s3 key => restore this backup + sourceFile: {{ .Environment.Values | getOrNil "RESTORE_SOURCE_FILE" | quote }} + sourceAppName: {{ .Environment.Values | getOrNil "RESTORE_SOURCE_APP" | quote }} + s3: + endpoint: {{ .Environment.Values | getOrNil "RESTORE_S3_ENDPOINT" | quote }} + bucket: {{ .Environment.Values | getOrNil "RESTORE_S3_BUCKET" | quote }} + accessKeyId: {{ .Environment.Values | getOrNil "RESTORE_S3_ACCESS_KEY_ID" | quote }} + accessKey: {{ .Environment.Values | getOrNil "RESTORE_S3_ACCESS_KEY" | quote }} + inviteSupportAccountToInterestingCamps: {{ .Environment.Values | get "RESTORE_INVITE_TO_INTERESTING_CAMPS" false }} + encryptionKey: {{ .Environment.Values | getOrNil "RESTORE_ENCRYPTION_KEY" | quote }} + +recaptcha: + siteKey: {{ .Environment.Values | getOrNil "RECAPTCHA_SITE_KEY" | quote }} + secret: {{ .Environment.Values | getOrNil "RECAPTCHA_SECRET" | quote }} + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podSecurityContext: {} +# fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true +# runAsUser: 1000 + +ingress: + enabled: true + basicAuth: + enabled: {{ .Environment.Values | getOrNil "BASIC_AUTH_ENABLED" | default false }} + username: {{ .Environment.Values | getOrNil "BASIC_AUTH_USERNAME" | quote }} + password: {{ .Environment.Values | getOrNil "BASIC_AUTH_PASSWORD" | quote }} + annotations: + # kubernetes.io/tls-acme: "true" + className: nginx + tls: + +apiCache: + enabled: {{ .Environment.Values | get "API_CACHE_ENABLED" false }} + image: + repository: "docker.io/{{ $dockerUser }}/ecamp3-varnish" + pullPolicy: IfNotPresent + # Overrides the image tag whose shared default is .Values.imageTag + tag: + service: + type: ClusterIP + ports: + http: 3000 + purge: 3001 + varnishSize: 50M + varnishHttpPort: 8080 + varnishPurgePort: 8081 + sendXKeyHeadersDownstream: {{ .Environment.Values | get "SEND_XKEY_HEADERS_DOWNSTREAM" false }} + resources: + requests: + cpu: {{ .Environment.Values | getOrNil "API_CACHE_CPU" | default "10m" }} + memory: {{ .Environment.Values | getOrNil "API_CACHE_MEMORY" | default "100Mi" }} + logging: + enabled: true + customOutput: '{ "received_at": "%t", "varnish_side": "%{Varnish:side}x", "method": "%m", "host": "%h", "url": "%U", "query": "%q", "response_bytes": %b, "time_taken": %D, "status": %s, "handling": "%{Varnish:handling}x", "response_reason": "%{VSL:RespReason}x", "fetch_error": "%{VSL:FetchError}x", "httpRequest": { "requestMethod": "%m", "requestUrl": "%{Host}i%U%q", "status": "%s" } }' + customOutputJsonFormat: true + # Timeout before returning error on initial VSM connection. + # If set the VSM connection is retried every 0.5 seconds for this many seconds. + # If zero the connection is attempted only once and will fail immediately if unsuccessful. + # If set to "off", the connection will not fail, allowing the utility to start and wait indefinitely for the Varnish instance to appear. + # Defaults to "off" in this case. + timeout: "off" + resources: + requests: + cpu: 10m + memory: 20Mi + prometheus: + enabled: true + path: "/metrics" + port: 9131 + resources: + requests: + cpu: 10m + memory: 20Mi + +autoscaling: + enabled: {{ .Environment.Values | get "AUTOSCALING_ENABLED" true }} + minReplicas: 1 + maxReplicas: 5 + targetCPUUtilizationPercentage: {{ .Environment.Values | getOrNil "AUTOSCALING_TARGETCPU" | default 90 }} + # targetMemoryUtilizationPercentage: 80 diff --git a/.helm/generate-jwt-values.sh b/.helm/generate-jwt-values.sh new file mode 100755 index 0000000000..439b6bbb52 --- /dev/null +++ b/.helm/generate-jwt-values.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -euo pipefail + +set -e + +SCRIPT_DIR=$(realpath "$(dirname "$0")") +REPO_DIR=$(realpath "$SCRIPT_DIR"/..) + +TMP_DIR=$(mktemp -d) + +jwt_passphrase=$(uuidgen) +echo -n "$jwt_passphrase" | openssl genpkey -out "$TMP_DIR"/private.pem -pass stdin -aes256 -algorithm rsa -pkeyopt rsa_keygen_bits:4096 +echo -n "$jwt_passphrase" | openssl pkey -in "$TMP_DIR"/private.pem -passin stdin -out "$TMP_DIR"/public.pem -pubout + +jwt_public_key=$(cat "$TMP_DIR"/public.pem) +jwt_private_key=$(cat "$TMP_DIR"/private.pem) + +tmp="$TMP_DIR/tmp.yaml" + +json_file="$SCRIPT_DIR/ecamp3/env.yaml" + +if [ ! -f $json_file ]; then + cp "$SCRIPT_DIR/ecamp3/env.example.yaml" $json_file +fi + +jq --arg v "$jwt_passphrase" '.JWT_PASSPHRASE = $v' < $json_file > "$tmp" +mv "$tmp" $json_file + +jq --arg v "$jwt_public_key" '.JWT_PUBLIC_KEY = $v' < $json_file > "$tmp" +mv "$tmp" $json_file + +jq --arg v "$jwt_private_key" '.JWT_PRIVATE_KEY = $v' < $json_file > "$tmp" +mv "$tmp" $json_file + +rm -rf "$TMP_DIR" diff --git a/.nvmrc b/.nvmrc index 21651351e2..9e2934aa34 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24.10.0 +24.11.1 diff --git a/.ops/aws-setup/docker-compose.yml b/.ops/aws-setup/docker-compose.yml index 34e07e5ae8..136ea5d7a7 100644 --- a/.ops/aws-setup/docker-compose.yml +++ b/.ops/aws-setup/docker-compose.yml @@ -1,6 +1,6 @@ services: aws-setup: - image: pulumi/pulumi-nodejs:3.203.0 + image: pulumi/pulumi-nodejs:3.206.0 container_name: 'ecamp3-aws-setup' volumes: - ../../.prettierrc:/.prettierrc:delegated @@ -13,7 +13,7 @@ services: - AWS_DEFAULT_REGION=eu-west-3 aws-cli: - image: amazon/aws-cli:2.31.22 + image: amazon/aws-cli:2.31.33 container_name: 'ecamp3-aws-cli' volumes: - ./.aws:/root/.aws:delegated diff --git a/.ops/aws-setup/package-lock.json b/.ops/aws-setup/package-lock.json index e29b7f8071..ff8d98ba8d 100644 --- a/.ops/aws-setup/package-lock.json +++ b/.ops/aws-setup/package-lock.json @@ -6,21 +6,21 @@ "": { "name": "ecamp-core", "dependencies": { - "@pulumi/aws": "7.8.0", - "@pulumi/awsx": "3.0.0", - "@pulumi/pulumi": "3.203.0" + "@pulumi/aws": "7.11.0", + "@pulumi/awsx": "3.0.1", + "@pulumi/pulumi": "3.206.0" }, "devDependencies": { - "@babel/eslint-parser": "7.28.4", - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", - "@types/node": "24.9.1", - "eslint": "9.38.0", + "@babel/eslint-parser": "7.28.5", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", + "@types/node": "24.10.0", + "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-n": "17.23.1", "eslint-plugin-prettier": "5.5.4", "eslint-plugin-promise": "7.2.1", - "globals": "16.4.0", + "globals": "16.5.0", "prettier": "3.6.2" } }, @@ -150,51 +150,50 @@ } }, "node_modules/@aws-sdk/client-ecs": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.914.0.tgz", - "integrity": "sha512-zPjh4Gqy4JHG+B30rbzR0iteXnSwSgnHyswhO68szURgzh06kPpLJQfPXtoKchgTf8cgCdEgksW0ughsZzQ0hA==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecs/-/client-ecs-3.930.0.tgz", + "integrity": "sha512-F3Y6ikTP5Ui+oYEc2iqNF3Xflarhoyu+lPxJP8BgfRYD6gpszH5/D0uDyVKnPPiXLwqntOiO0WSse0JEJq3BGQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.914.0", - "@aws-sdk/credential-provider-node": "3.914.0", - "@aws-sdk/middleware-host-header": "3.914.0", - "@aws-sdk/middleware-logger": "3.914.0", - "@aws-sdk/middleware-recursion-detection": "3.914.0", - "@aws-sdk/middleware-user-agent": "3.914.0", - "@aws-sdk/region-config-resolver": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@aws-sdk/util-endpoints": "3.914.0", - "@aws-sdk/util-user-agent-browser": "3.914.0", - "@aws-sdk/util-user-agent-node": "3.914.0", - "@smithy/config-resolver": "^4.4.0", - "@smithy/core": "^3.17.0", - "@smithy/fetch-http-handler": "^5.3.4", - "@smithy/hash-node": "^4.2.3", - "@smithy/invalid-dependency": "^4.2.3", - "@smithy/middleware-content-length": "^4.2.3", - "@smithy/middleware-endpoint": "^4.3.4", - "@smithy/middleware-retry": "^4.4.4", - "@smithy/middleware-serde": "^4.2.3", - "@smithy/middleware-stack": "^4.2.3", - "@smithy/node-config-provider": "^4.3.3", - "@smithy/node-http-handler": "^4.4.2", - "@smithy/protocol-http": "^5.3.3", - "@smithy/smithy-client": "^4.9.0", - "@smithy/types": "^4.8.0", - "@smithy/url-parser": "^4.2.3", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/credential-provider-node": "3.930.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.3", - "@smithy/util-defaults-mode-node": "^4.2.5", - "@smithy/util-endpoints": "^3.2.3", - "@smithy/util-middleware": "^4.2.3", - "@smithy/util-retry": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.3", - "@smithy/uuid": "^1.1.0", + "@smithy/util-waiter": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -202,47 +201,47 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.914.0.tgz", - "integrity": "sha512-83Xp8Wl7RDWg/iIYL8dmrN9DN7qu7fcUzDC9LyMhDN8cAEACykN/i4Fk45UHRCejL9Sjxu4wsQzxRYp1smQ95g==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.930.0.tgz", + "integrity": "sha512-sASqgm1iMLcmi+srSH9WJuqaf3GQAKhuB4xIJwkNEPUQ+yGV8HqErOOHJLXXuTUyskcdtK+4uMaBRLT2ESm+QQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.914.0", - "@aws-sdk/middleware-host-header": "3.914.0", - "@aws-sdk/middleware-logger": "3.914.0", - "@aws-sdk/middleware-recursion-detection": "3.914.0", - "@aws-sdk/middleware-user-agent": "3.914.0", - "@aws-sdk/region-config-resolver": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@aws-sdk/util-endpoints": "3.914.0", - "@aws-sdk/util-user-agent-browser": "3.914.0", - "@aws-sdk/util-user-agent-node": "3.914.0", - "@smithy/config-resolver": "^4.4.0", - "@smithy/core": "^3.17.0", - "@smithy/fetch-http-handler": "^5.3.4", - "@smithy/hash-node": "^4.2.3", - "@smithy/invalid-dependency": "^4.2.3", - "@smithy/middleware-content-length": "^4.2.3", - "@smithy/middleware-endpoint": "^4.3.4", - "@smithy/middleware-retry": "^4.4.4", - "@smithy/middleware-serde": "^4.2.3", - "@smithy/middleware-stack": "^4.2.3", - "@smithy/node-config-provider": "^4.3.3", - "@smithy/node-http-handler": "^4.4.2", - "@smithy/protocol-http": "^5.3.3", - "@smithy/smithy-client": "^4.9.0", - "@smithy/types": "^4.8.0", - "@smithy/url-parser": "^4.2.3", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.3", - "@smithy/util-defaults-mode-node": "^4.2.5", - "@smithy/util-endpoints": "^3.2.3", - "@smithy/util-middleware": "^4.2.3", - "@smithy/util-retry": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -251,22 +250,22 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.914.0.tgz", - "integrity": "sha512-QMnWdW7PwxVfi5WBV2a6apM1fIizgBf1UHYbqd3e1sXk8B0d3tpysmLZdIx30OY066zhEo6FyAKLAeTSsGrALg==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.930.0.tgz", + "integrity": "sha512-E95pWT1ayfRWg0AW2KNOCYM7QQcVeOhMRLX5PXLeDKcdxP7s3x0LHG9t7a3nPbAbvYLRrhC7O2lLWzzMCpqjsw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.914.0", - "@aws-sdk/xml-builder": "3.914.0", - "@smithy/core": "^3.17.0", - "@smithy/node-config-provider": "^4.3.3", - "@smithy/property-provider": "^4.2.3", - "@smithy/protocol-http": "^5.3.3", - "@smithy/signature-v4": "^5.3.3", - "@smithy/smithy-client": "^4.9.0", - "@smithy/types": "^4.8.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.3", + "@smithy/util-middleware": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -275,15 +274,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.914.0.tgz", - "integrity": "sha512-v7zeMsLkTB0/ZK6DGbM6QUNIeeEtNBd+4DHihXjsHKBKxBESKIJlWF5Bcj+pgCSWcFGClxmqL6NfWCFQ0WdtjQ==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.930.0.tgz", + "integrity": "sha512-5tJyxNQmm9C1XKeiWt/K67mUHtTiU2FxTkVsqVrzAMjNsF3uyA02kyTK70byh5n29oVR9XNValVEl6jk01ipYg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/property-provider": "^4.2.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -291,20 +290,20 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.914.0.tgz", - "integrity": "sha512-NXS5nBD0Tbk5ltjOAucdcx8EQQcFdVpCGrly56AIbznl0yhuG5Sxq4q2tUSJj9006eEXBK5rt52CdDixCcv3xg==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.930.0.tgz", + "integrity": "sha512-vw565GctpOPoRJyRvgqXM8U/4RG8wYEPfhe6GHvt9dchebw0OaFeW1mmSYpwEPkMhZs9Z808dkSPScwm8WZBKA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/fetch-http-handler": "^5.3.4", - "@smithy/node-http-handler": "^4.4.2", - "@smithy/property-provider": "^4.2.3", - "@smithy/protocol-http": "^5.3.3", - "@smithy/smithy-client": "^4.9.0", - "@smithy/types": "^4.8.0", - "@smithy/util-stream": "^4.5.3", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { @@ -312,23 +311,23 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.914.0.tgz", - "integrity": "sha512-RcL02V3EE8DRuu8qb5zoV+aVWbUIKZRA3NeHsWKWCD25nxQUYF4CrbQizWQ91vda5+e6PysGGLYROOzapX3Xmw==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.930.0.tgz", + "integrity": "sha512-Ua4T5MWjm7QdHi7ZSUvnPBFwBZmLFP/IEGCLacPKbUT1sQO30hlWuB/uQOj0ns4T6p7V4XsM8bz5+xsW2yRYbQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.914.0", - "@aws-sdk/credential-provider-env": "3.914.0", - "@aws-sdk/credential-provider-http": "3.914.0", - "@aws-sdk/credential-provider-process": "3.914.0", - "@aws-sdk/credential-provider-sso": "3.914.0", - "@aws-sdk/credential-provider-web-identity": "3.914.0", - "@aws-sdk/nested-clients": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/credential-provider-imds": "^4.2.3", - "@smithy/property-provider": "^4.2.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/credential-provider-env": "3.930.0", + "@aws-sdk/credential-provider-http": "3.930.0", + "@aws-sdk/credential-provider-process": "3.930.0", + "@aws-sdk/credential-provider-sso": "3.930.0", + "@aws-sdk/credential-provider-web-identity": "3.930.0", + "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -336,22 +335,22 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.914.0.tgz", - "integrity": "sha512-SDUvDKqsJ5UPDkem0rq7/bdZtXKKTnoBeWvRlI20Zuv4CLdYkyIGXU9sSA2mrhsZ/7bt1cduTHpGd1n/UdBQEg==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.930.0.tgz", + "integrity": "sha512-LTx5G0PsL51hNCCzOIdacGPwqnTp3X2Ck8CjLL4Kz9FTR0mfY02qEJB5y5segU1hlge/WdQYxzBBMhtMUR2h8A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.914.0", - "@aws-sdk/credential-provider-http": "3.914.0", - "@aws-sdk/credential-provider-ini": "3.914.0", - "@aws-sdk/credential-provider-process": "3.914.0", - "@aws-sdk/credential-provider-sso": "3.914.0", - "@aws-sdk/credential-provider-web-identity": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/credential-provider-imds": "^4.2.3", - "@smithy/property-provider": "^4.2.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/credential-provider-env": "3.930.0", + "@aws-sdk/credential-provider-http": "3.930.0", + "@aws-sdk/credential-provider-ini": "3.930.0", + "@aws-sdk/credential-provider-process": "3.930.0", + "@aws-sdk/credential-provider-sso": "3.930.0", + "@aws-sdk/credential-provider-web-identity": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -359,16 +358,16 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.914.0.tgz", - "integrity": "sha512-34C3CYM3iAVcSg3cX4UfOwabWeTeowjZkqJbWgDZ+I/HNZ8+9YbVuJcOZL5fVhw242UclxlVlddNPNprluZKGg==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.930.0.tgz", + "integrity": "sha512-lqC4lepxgwR2uZp/JROTRjkHld4/FEpSgofmiIOAfUfDx0OWSg7nkWMMS/DzlMpODqATl9tO0DcvmIJ8tMbh6g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/property-provider": "^4.2.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -376,18 +375,18 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.914.0.tgz", - "integrity": "sha512-LfuSyhwvb1qOWN+oN3zyq5D899RZVA0nUrx6czKpDJYarYG0FCTZPO5aPcyoNGAjUu8l+CYUvXcd9ZdZiwv3/A==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.930.0.tgz", + "integrity": "sha512-LIs2aaVoFfioRokR1R9SpLS9u8CmbHhrV/gpHO1ED41qNCujn23vAxRNQmWzJ2XoCxSTwvToiHD2i6CjPA6rHQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.914.0", - "@aws-sdk/core": "3.914.0", - "@aws-sdk/token-providers": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/property-provider": "^4.2.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/client-sso": "3.930.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/token-providers": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -395,17 +394,17 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.914.0.tgz", - "integrity": "sha512-49zJm5x48eG4kiu7/lUGYicwpOPA3lzkuxZ8tdegKKB9Imya6yxdATx4V5UcapFfX79xgpZr750zYHHqSX53Sw==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.930.0.tgz", + "integrity": "sha512-iIYF8GReLOp16yn2bnRWrc4UOW/vVLifqyRWZ3iAGe8NFzUiHBq+Nok7Edh+2D8zt30QOCOsWCZ31uRrPuXH8w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.914.0", - "@aws-sdk/nested-clients": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/property-provider": "^4.2.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -413,14 +412,14 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.914.0.tgz", - "integrity": "sha512-7r9ToySQ15+iIgXMF/h616PcQStByylVkCshmQqcdeynD/lCn2l667ynckxW4+ql0Q+Bo/URljuhJRxVJzydNA==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", + "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.914.0", - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -428,13 +427,13 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.914.0.tgz", - "integrity": "sha512-/gaW2VENS5vKvJbcE1umV4Ag3NuiVzpsANxtrqISxT3ovyro29o1RezW/Avz/6oJqjnmgz8soe9J1t65jJdiNg==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", + "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.914.0", - "@smithy/types": "^4.8.0", + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -442,15 +441,15 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.914.0.tgz", - "integrity": "sha512-yiAjQKs5S2JKYc+GrkvGMwkUvhepXDigEXpSJqUseR/IrqHhvGNuOxDxq+8LbDhM4ajEW81wkiBbU+Jl9G82yQ==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.930.0.tgz", + "integrity": "sha512-gv0sekNpa2MBsIhm2cjP3nmYSfI4nscx/+K9u9ybrWZBWUIC4kL2sV++bFjjUz4QxUIlvKByow3/a9ARQyCu7Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.914.0", - "@aws/lambda-invoke-store": "^0.0.1", - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/types": "3.930.0", + "@aws/lambda-invoke-store": "^0.1.1", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -458,17 +457,17 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.914.0.tgz", - "integrity": "sha512-+grKWKg+htCpkileNOqm7LO9OrE9nVPv49CYbF7dXefQIdIhfQ0pvm+hdSUnh8GFLx86FKoJs2DZSBCYqgjQFw==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.930.0.tgz", + "integrity": "sha512-UUItqy02biaHoZDd1Z2CskFon3Lej15ZCIZzW4n2lsJmgLWNvz21jtFA8DQny7ZgCLAOOXI8YK3VLZptZWtIcg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@aws-sdk/util-endpoints": "3.914.0", - "@smithy/core": "^3.17.0", - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -476,47 +475,47 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.914.0.tgz", - "integrity": "sha512-cktvDU5qsvtv9HqJ0uoPgqQ87pttRMZe33fdZ3NQmnkaT6O6AI7x9wQNW5bDH3E6rou/jYle9CBSea1Xum69rQ==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.930.0.tgz", + "integrity": "sha512-eEDjTVXNiDkoV0ZV+X+WV40GTpF70xZmDW13CQzQF7rzOC2iFjtTRU+F7MUhy/Vs+e9KvDgiuCDecITtaOXUNw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.914.0", - "@aws-sdk/middleware-host-header": "3.914.0", - "@aws-sdk/middleware-logger": "3.914.0", - "@aws-sdk/middleware-recursion-detection": "3.914.0", - "@aws-sdk/middleware-user-agent": "3.914.0", - "@aws-sdk/region-config-resolver": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@aws-sdk/util-endpoints": "3.914.0", - "@aws-sdk/util-user-agent-browser": "3.914.0", - "@aws-sdk/util-user-agent-node": "3.914.0", - "@smithy/config-resolver": "^4.4.0", - "@smithy/core": "^3.17.0", - "@smithy/fetch-http-handler": "^5.3.4", - "@smithy/hash-node": "^4.2.3", - "@smithy/invalid-dependency": "^4.2.3", - "@smithy/middleware-content-length": "^4.2.3", - "@smithy/middleware-endpoint": "^4.3.4", - "@smithy/middleware-retry": "^4.4.4", - "@smithy/middleware-serde": "^4.2.3", - "@smithy/middleware-stack": "^4.2.3", - "@smithy/node-config-provider": "^4.3.3", - "@smithy/node-http-handler": "^4.4.2", - "@smithy/protocol-http": "^5.3.3", - "@smithy/smithy-client": "^4.9.0", - "@smithy/types": "^4.8.0", - "@smithy/url-parser": "^4.2.3", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.3", - "@smithy/util-defaults-mode-node": "^4.2.5", - "@smithy/util-endpoints": "^3.2.3", - "@smithy/util-middleware": "^4.2.3", - "@smithy/util-retry": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -525,14 +524,15 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.914.0.tgz", - "integrity": "sha512-KlmHhRbn1qdwXUdsdrJ7S/MAkkC1jLpQ11n+XvxUUUCGAJd1gjC7AjxPZUM7ieQ2zcb8bfEzIU7al+Q3ZT0u7Q==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", + "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.914.0", - "@smithy/config-resolver": "^4.4.0", - "@smithy/types": "^4.8.0", + "@aws-sdk/types": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -540,17 +540,17 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.914.0.tgz", - "integrity": "sha512-wX8lL5OnCk/54eUPP1L/dCH+Gp/f3MjnHR6rNp+dbGs7+omUAub4dEbM/JMBE4Jsn5coiVgmgqx97Q5cRxh/EA==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.930.0.tgz", + "integrity": "sha512-K+fJFJXA2Tdx10WhhTm+xQmf1WDHu14rUutByyqx6W0iW2rhtl3YeRr188LWSU3/hpz7BPyvigaAb0QyRti6FQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.914.0", - "@aws-sdk/nested-clients": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/property-provider": "^4.2.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -558,12 +558,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.914.0.tgz", - "integrity": "sha512-kQWPsRDmom4yvAfyG6L1lMmlwnTzm1XwMHOU+G5IFlsP4YEaMtXidDzW/wiivY0QFrhfCz/4TVmu0a2aPU57ug==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", + "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -571,15 +571,15 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.914.0.tgz", - "integrity": "sha512-POUBUTjD7WQ/BVoUGluukCIkIDO12IPdwRAvUgFshfbaUdyXFuBllM/6DmdyeR3rJhXnBqe3Uy5e2eXbz/MBTw==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", + "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.914.0", - "@smithy/types": "^4.8.0", - "@smithy/url-parser": "^4.2.3", - "@smithy/util-endpoints": "^3.2.3", + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", "tslib": "^2.6.2" }, "engines": { @@ -599,27 +599,27 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.914.0.tgz", - "integrity": "sha512-rMQUrM1ECH4kmIwlGl9UB0BtbHy6ZuKdWFrIknu8yGTRI/saAucqNTh5EI1vWBxZ0ElhK5+g7zOnUuhSmVQYUA==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", + "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.914.0", - "@smithy/types": "^4.8.0", + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.914.0.tgz", - "integrity": "sha512-gTkLFUZiNPgJmeFCX8VJRmQWXKfF3Imm5IquFIR5c0sCBfhtMjTXZF0dHDW5BlceZ4tFPwfF9sCqWJ52wbFSBg==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.930.0.tgz", + "integrity": "sha512-tYc5uFKogn0vLukeZ6Zz2dR1/WiTjxZH7+Jjoce6aEYgRVfyrDje1POFb7YxhNZ7Pp1WzHCuwW2KgkmMoYVbxQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.914.0", - "@aws-sdk/types": "3.914.0", - "@smithy/node-config-provider": "^4.3.3", - "@smithy/types": "^4.8.0", + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -635,12 +635,12 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.914.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.914.0.tgz", - "integrity": "sha512-k75evsBD5TcIjedycYS7QXQ98AmOtbnxRJOPtCo0IwYRmy7UvqgS/gBL5SmrIqeV6FDSYRQMgdBxSMp6MLmdew==", + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", + "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, @@ -649,9 +649,9 @@ } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.0.1.tgz", - "integrity": "sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", + "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -715,9 +715,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz", - "integrity": "sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", + "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", "dev": true, "license": "MIT", "dependencies": { @@ -960,13 +960,13 @@ } }, "node_modules/@eslint/compat": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.0.tgz", - "integrity": "sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", + "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1020,22 +1020,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", - "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1101,9 +1101,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -1127,9 +1127,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", - "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -1150,13 +1150,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { @@ -1164,9 +1164,9 @@ } }, "node_modules/@grpc/grpc-js": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.0.tgz", - "integrity": "sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.1.tgz", + "integrity": "sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.8.0", @@ -1981,9 +1981,9 @@ "license": "BSD-3-Clause" }, "node_modules/@pulumi/aws": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-7.8.0.tgz", - "integrity": "sha512-OVdg0dZtzO5qZ/erX4aLZ/9U1AKw9LX+79N3RyZEMSkq5KVUOEBugYBw0xlxJV5kkRrxjzSgMb4LknX7v0tZRw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@pulumi/aws/-/aws-7.11.0.tgz", + "integrity": "sha512-LlK11UZRsN3vExnAAz6XRxTf6bQaeoghe9yK+U3eGUdaL7Fl5ifUBl1TvUHe7UhpGANprJHN406YH/RxKQwOQw==", "license": "Apache-2.0", "dependencies": { "@pulumi/pulumi": "^3.142.0", @@ -1991,15 +1991,15 @@ } }, "node_modules/@pulumi/awsx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@pulumi/awsx/-/awsx-3.0.0.tgz", - "integrity": "sha512-Qce18z2zSSIpeQA+aUKNlDKAZaZIc7h5ioYgmLfmpliRFwzFGN7DbxJuZY+Ja3hbtjpe74UYBjI5VleFM+Ougw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@pulumi/awsx/-/awsx-3.0.1.tgz", + "integrity": "sha512-f5wXbVC6FirgfWhLJx4+ePl9pYOGdp2dx+AWVg3QHRkVLMJBkzmhdcwDybgVIpRY2kty0v3p7Xe9FomOvHRJwQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-ecs": "^3.405.0", - "@pulumi/aws": "^7.0.0", + "@pulumi/aws": "^7.7.0", "@pulumi/docker": "^4.6.0", - "@pulumi/docker-build": "^0.0.8", + "@pulumi/docker-build": "^0.0.14", "@pulumi/pulumi": "^3.142.0", "@types/aws-lambda": "^8.10.23", "docker-classic": "npm:@pulumi/docker@3.6.1", @@ -2017,13 +2017,13 @@ } }, "node_modules/@pulumi/docker-build": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@pulumi/docker-build/-/docker-build-0.0.8.tgz", - "integrity": "sha512-tS6UUgmDjQ+LVekMXGC/6ND7riY75h3oO9fLiVOrvNafCBumxK+Cjm6ZZ9tUChLYvw6H+rZRExZEhfC8F/SQgQ==", + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@pulumi/docker-build/-/docker-build-0.0.14.tgz", + "integrity": "sha512-dLCta3BOrYRxHyp22QnVh06qlSiSORtmIypcQ6yb4+GZ2+ThbML06pINyERc5ClgJXGQFSVTtuWhMSiurTWU2w==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@pulumi/pulumi": "^3.136.0" + "@pulumi/pulumi": "^3.142.0" } }, "node_modules/@pulumi/docker/node_modules/semver": { @@ -2036,9 +2036,9 @@ } }, "node_modules/@pulumi/pulumi": { - "version": "3.203.0", - "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.203.0.tgz", - "integrity": "sha512-wXGzxYC61DF+YtJYwidxrpvRxn2y3+ML5OUuAQWUzPgM0byEgKotHAhadQ9uvfutSE262mmoqv5skXaDJdBGzQ==", + "version": "3.206.0", + "resolved": "https://registry.npmjs.org/@pulumi/pulumi/-/pulumi-3.206.0.tgz", + "integrity": "sha512-xTiAcs7LhVOK2mUvTCUOlS7tTtzSh0T+C9pOAOkbpJuAX0GKw+wg7PZZ3qQbqW63fGfCBHs7h27e9d9iyHEC/w==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.10.1", @@ -2185,12 +2185,12 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.3.tgz", - "integrity": "sha512-xWL9Mf8b7tIFuAlpjKtRPnHrR8XVrwTj5NPYO/QwZPtc0SDLsPxb56V5tzi5yspSMytISHybifez+4jlrx0vkQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2198,16 +2198,16 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.0.tgz", - "integrity": "sha512-Kkmz3Mup2PGp/HNJxhCWkLNdlajJORLSjwkcfrj0E7nu6STAEdcMR1ir5P9/xOmncx8xXfru0fbUYLlZog/cFg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.3", - "@smithy/types": "^4.8.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.3", - "@smithy/util-middleware": "^4.2.3", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -2215,18 +2215,18 @@ } }, "node_modules/@smithy/core": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.17.1.tgz", - "integrity": "sha512-V4Qc2CIb5McABYfaGiIYLTmo/vwNIK7WXI5aGveBd9UcdhbOMwcvIMxIw/DJj1S9QgOMa/7FBkarMdIC0EOTEQ==", + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.3.tgz", + "integrity": "sha512-qqpNskkbHOSfrbFbjhYj5o8VMXO26fvN1K/+HbCzUNlTuxgNcPRouUDNm+7D6CkN244WG7aK533Ne18UtJEgAA==", "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.2.3", - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.3", - "@smithy/util-stream": "^4.5.4", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" @@ -2236,15 +2236,15 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.3.tgz", - "integrity": "sha512-hA1MQ/WAHly4SYltJKitEsIDVsNmXcQfYBRv2e+q04fnqtAX5qXaybxy/fhUeAMCnQIdAjaGDb04fMHQefWRhw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.3", - "@smithy/property-provider": "^4.2.3", - "@smithy/types": "^4.8.0", - "@smithy/url-parser": "^4.2.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -2252,14 +2252,14 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.4.tgz", - "integrity": "sha512-bwigPylvivpRLCm+YK9I5wRIYjFESSVwl8JQ1vVx/XhCw0PtCi558NwTnT2DaVCl5pYlImGuQTSwMsZ+pIavRw==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.3", - "@smithy/querystring-builder": "^4.2.3", - "@smithy/types": "^4.8.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, @@ -2268,12 +2268,12 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.3.tgz", - "integrity": "sha512-6+NOdZDbfuU6s1ISp3UOk5Rg953RJ2aBLNLLBEcamLjHAg1Po9Ha7QIB5ZWhdRUVuOUrT8BVFR+O2KIPmw027g==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -2283,12 +2283,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.3.tgz", - "integrity": "sha512-Cc9W5DwDuebXEDMpOpl4iERo8I0KFjTnomK2RMdhhR87GwrSmUmwMxS4P5JdRf+LsjOdIqumcerwRgYMr/tZ9Q==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2308,13 +2308,13 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.3.tgz", - "integrity": "sha512-/atXLsT88GwKtfp5Jr0Ks1CSa4+lB+IgRnkNrrYP0h1wL4swHNb0YONEvTceNKNdZGJsye+W2HH8W7olbcPUeA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2322,18 +2322,18 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.5.tgz", - "integrity": "sha512-SIzKVTvEudFWJbxAaq7f2GvP3jh2FHDpIFI6/VAf4FOWGFZy0vnYMPSRj8PGYI8Hjt29mvmwSRgKuO3bK4ixDw==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.10.tgz", + "integrity": "sha512-SoAag3QnWBFoXjwa1jenEThkzJYClidZUyqsLKwWZ8kOlZBwehrLBp4ygVDjNEM2a2AamCQ2FBA/HuzKJ/LiTA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.17.1", - "@smithy/middleware-serde": "^4.2.3", - "@smithy/node-config-provider": "^4.3.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", - "@smithy/url-parser": "^4.2.3", - "@smithy/util-middleware": "^4.2.3", + "@smithy/core": "^3.18.3", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -2341,18 +2341,18 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.5.tgz", - "integrity": "sha512-DCaXbQqcZ4tONMvvdz+zccDE21sLcbwWoNqzPLFlZaxt1lDtOE2tlVpRSwcTOJrjJSUThdgEYn7HrX5oLGlK9A==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.10.tgz", + "integrity": "sha512-6fOwX34gXxcqKa3bsG0mR0arc2Cw4ddOS6tp3RgUD2yoTrDTbQ2aVADnDjhUuxaiDZN2iilxndgGDhnpL/XvJA==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.3", - "@smithy/protocol-http": "^5.3.3", - "@smithy/service-error-classification": "^4.2.3", - "@smithy/smithy-client": "^4.9.1", - "@smithy/types": "^4.8.0", - "@smithy/util-middleware": "^4.2.3", - "@smithy/util-retry": "^4.2.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.6", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, @@ -2361,13 +2361,13 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.3.tgz", - "integrity": "sha512-8g4NuUINpYccxiCXM5s1/V+uLtts8NcX4+sPEbvYQDZk4XoJfDpq5y2FQxfmUL89syoldpzNzA0R9nhzdtdKnQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.5.tgz", + "integrity": "sha512-La1ldWTJTZ5NqQyPqnCNeH9B+zjFhrNoQIL1jTh4zuqXRlmXhxYHhMtI1/92OlnoAtp6JoN7kzuwhWoXrBwPqg==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2375,12 +2375,12 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.3.tgz", - "integrity": "sha512-iGuOJkH71faPNgOj/gWuEGS6xvQashpLwWB1HjHq1lNNiVfbiJLpZVbhddPuDbx9l4Cgl0vPLq5ltRfSaHfspA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2388,14 +2388,14 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.3.tgz", - "integrity": "sha512-NzI1eBpBSViOav8NVy1fqOlSfkLgkUjUTlohUSgAEhHaFWA3XJiLditvavIP7OpvTjDp5u2LhtlBhkBlEisMwA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.3", - "@smithy/shared-ini-file-loader": "^4.3.3", - "@smithy/types": "^4.8.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2403,15 +2403,15 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.3.tgz", - "integrity": "sha512-MAwltrDB0lZB/H6/2M5PIsISSwdI5yIh6DaBB9r0Flo9nx3y0dzl/qTMJPd7tJvPdsx6Ks/cwVzheGNYzXyNbQ==", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.3", - "@smithy/protocol-http": "^5.3.3", - "@smithy/querystring-builder": "^4.2.3", - "@smithy/types": "^4.8.0", + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2419,12 +2419,12 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.3.tgz", - "integrity": "sha512-+1EZ+Y+njiefCohjlhyOcy1UNYjT+1PwGFHCxA/gYctjg3DQWAU19WigOXAco/Ql8hZokNehpzLd0/+3uCreqQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2432,12 +2432,12 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.3.tgz", - "integrity": "sha512-Mn7f/1aN2/jecywDcRDvWWWJF4uwg/A0XjFMJtj72DsgHTByfjRltSqcT9NyE9RTdBSN6X1RSXrhn/YWQl8xlw==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2445,12 +2445,12 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.3.tgz", - "integrity": "sha512-LOVCGCmwMahYUM/P0YnU/AlDQFjcu+gWbFJooC417QRB/lDJlWSn8qmPSDp+s4YVAHOgtgbNG4sR+SxF/VOcJQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" }, @@ -2459,12 +2459,12 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.3.tgz", - "integrity": "sha512-cYlSNHcTAX/wc1rpblli3aUlLMGgKZ/Oqn8hhjFASXMCXjIqeuQBei0cnq2JR8t4RtU9FpG6uyl6PxyArTiwKA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2472,24 +2472,24 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.3.tgz", - "integrity": "sha512-NkxsAxFWwsPsQiwFG2MzJ/T7uIR6AQNh1SzcxSUnmmIqIQMlLRQDKhc17M7IYjiuBXhrQRjQTo3CxX+DobS93g==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0" + "@smithy/types": "^4.9.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.3.3.tgz", - "integrity": "sha512-9f9Ixej0hFhroOK2TxZfUUDR13WVa8tQzhSzPDgXe5jGL3KmaM9s8XN7RQwqtEypI82q9KHnKS71CJ+q/1xLtQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2497,16 +2497,16 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.3.tgz", - "integrity": "sha512-CmSlUy+eEYbIEYN5N3vvQTRfqt0lJlQkaQUIf+oizu7BbDut0pozfDjBGecfcfWf7c62Yis4JIEgqQ/TCfodaA==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.3", + "@smithy/util-middleware": "^4.2.5", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -2516,17 +2516,17 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.1.tgz", - "integrity": "sha512-Ngb95ryR5A9xqvQFT5mAmYkCwbXvoLavLFwmi7zVg/IowFPCfiqRfkOKnbc/ZRL8ZKJ4f+Tp6kSu6wjDQb8L/g==", + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.6.tgz", + "integrity": "sha512-hGz42hggqReicRRZUvrKDQiAmoJnx1Q+XfAJnYAGu544gOfxQCAC3hGGD7+Px2gEUUxB/kKtQV7LOtBRNyxteQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.17.1", - "@smithy/middleware-endpoint": "^4.3.5", - "@smithy/middleware-stack": "^4.2.3", - "@smithy/protocol-http": "^5.3.3", - "@smithy/types": "^4.8.0", - "@smithy/util-stream": "^4.5.4", + "@smithy/core": "^3.18.3", + "@smithy/middleware-endpoint": "^4.3.10", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { @@ -2534,9 +2534,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.8.0.tgz", - "integrity": "sha512-QpELEHLO8SsQVtqP+MkEgCYTFW0pleGozfs3cZ183ZBj9z3VC1CX1/wtFMK64p+5bhtZo41SeLK1rBRtd25nHQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -2546,13 +2546,13 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.3.tgz", - "integrity": "sha512-I066AigYvY3d9VlU3zG9XzZg1yT10aNqvCaBTw9EPgu5GrsEl1aUkcMvhkIXascYH1A8W0LQo3B1Kr1cJNcQEw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.3", - "@smithy/types": "^4.8.0", + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2623,14 +2623,14 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.4.tgz", - "integrity": "sha512-qI5PJSW52rnutos8Bln8nwQZRpyoSRN6k2ajyoUHNMUzmWqHnOJCnDELJuV6m5PML0VkHI+XcXzdB+6awiqYUw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.9.tgz", + "integrity": "sha512-Bh5bU40BgdkXE2BcaNazhNtEXi1TC0S+1d84vUwv5srWfvbeRNUKFzwKQgC6p6MXPvEgw+9+HdX3pOwT6ut5aw==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.3", - "@smithy/smithy-client": "^4.9.1", - "@smithy/types": "^4.8.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.6", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2638,17 +2638,17 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.6.tgz", - "integrity": "sha512-c6M/ceBTm31YdcFpgfgQAJaw3KbaLuRKnAz91iMWFLSrgxRpYm03c3bu5cpYojNMfkV9arCUelelKA7XQT36SQ==", + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.12.tgz", + "integrity": "sha512-EHZwe1E9Q7umImIyCKQg/Cm+S+7rjXxCRvfGmKifqwYvn7M8M4ZcowwUOQzvuuxUUmdzCkqL0Eq0z1m74Pq6pw==", "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.0", - "@smithy/credential-provider-imds": "^4.2.3", - "@smithy/node-config-provider": "^4.3.3", - "@smithy/property-provider": "^4.2.3", - "@smithy/smithy-client": "^4.9.1", - "@smithy/types": "^4.8.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.6", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2656,13 +2656,13 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.3.tgz", - "integrity": "sha512-aCfxUOVv0CzBIkU10TubdgKSx5uRvzH064kaiPEWfNIvKOtNpu642P4FP1hgOFkjQIkDObrfIDnKMKkeyrejvQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.3", - "@smithy/types": "^4.8.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2682,12 +2682,12 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.3.tgz", - "integrity": "sha512-v5ObKlSe8PWUHCqEiX2fy1gNv6goiw6E5I/PN2aXg3Fb/hse0xeaAnSpXDiWl7x6LamVKq7senB+m5LOYHUAHw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.8.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2695,13 +2695,13 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.3.tgz", - "integrity": "sha512-lLPWnakjC0q9z+OtiXk+9RPQiYPNAovt2IXD3CP4LkOnd9NpUsxOjMx1SnoUVB7Orb7fZp67cQMtTBKMFDvOGg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.3", - "@smithy/types": "^4.8.0", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2709,14 +2709,14 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.4.tgz", - "integrity": "sha512-+qDxSkiErejw1BAIXUFBSfM5xh3arbz1MmxlbMCKanDDZtVEQ7PSKW9FQS0Vud1eI/kYn0oCTVKyNzRlq+9MUw==", + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.4", - "@smithy/node-http-handler": "^4.4.3", - "@smithy/types": "^4.8.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", @@ -2753,13 +2753,13 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.3.tgz", - "integrity": "sha512-5+nU///E5sAdD7t3hs4uwvCTWQtTR8JwKwOCSJtBRx0bY1isDo1QwH87vRK86vlFLBTISqoDA2V6xvP6nF1isQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.3", - "@smithy/types": "^4.8.0", + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2813,9 +2813,9 @@ } }, "node_modules/@types/aws-lambda": { - "version": "8.10.156", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.156.tgz", - "integrity": "sha512-LElQP+QliVWykC7OF8dNr04z++HJCMO2lF7k9HuKoSDARqhcjHq8MzbrRwujCSDeBHIlvaimbuY/tVZL36KXFQ==", + "version": "8.10.158", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.158.tgz", + "integrity": "sha512-v/n2WsL1ksRKigfqZ9ff7ANobfT3t/T8kI8UOiur98tREwFulv9lRv+pDrocGPWOe3DpD2Y2GKRO+OiyxwgaCQ==", "license": "MIT" }, "node_modules/@types/cacheable-request": { @@ -2866,9 +2866,9 @@ } }, "node_modules/@types/node": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", - "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", + "version": "24.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", + "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -3024,9 +3024,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.20", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz", - "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==", + "version": "2.8.27", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.27.tgz", + "integrity": "sha512-2CXFpkjVnY2FT+B6GrSYxzYf65BJWEqz5tIRHCvNsZZ2F3CmsCB37h8SpYgKG7y9C4YAeTipIPWG7EmFmhAeXA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3064,9 +3064,9 @@ } }, "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -3085,10 +3085,10 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { @@ -3186,9 +3186,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "dev": true, "funding": [ { @@ -3513,9 +3513,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.239", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.239.tgz", - "integrity": "sha512-1y5w0Zsq39MSPmEjHjbizvhYoTaulVtivpxkp5q5kaPmQtsK6/2nvAzGRxNMS9DoYySp9PkW0MAQDwU1m764mg==", + "version": "1.5.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", + "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", "dev": true, "license": "ISC" }, @@ -3596,9 +3596,9 @@ } }, "node_modules/eslint": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", - "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "peer": true, @@ -3606,11 +3606,11 @@ "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.1", - "@eslint/core": "^0.16.0", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.38.0", - "@eslint/plugin-kit": "^0.4.0", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -4295,9 +4295,9 @@ } }, "node_modules/globals": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", - "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "dev": true, "license": "MIT", "engines": { @@ -4537,9 +4537,9 @@ } }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", "engines": { "node": ">= 12" @@ -5135,9 +5135,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz", - "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, @@ -5651,9 +5651,9 @@ } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "license": "MIT", "engines": { "node": ">=12.20" diff --git a/.ops/aws-setup/package.json b/.ops/aws-setup/package.json index 33f0f15a6e..72fa43586c 100644 --- a/.ops/aws-setup/package.json +++ b/.ops/aws-setup/package.json @@ -10,21 +10,21 @@ "lint:check:prettier": "prettier --check --ignore-path .prettierignore **/*.{json,md,mjs,ts}" }, "dependencies": { - "@pulumi/pulumi": "3.203.0", - "@pulumi/aws": "7.8.0", - "@pulumi/awsx": "3.0.0" + "@pulumi/pulumi": "3.206.0", + "@pulumi/aws": "7.11.0", + "@pulumi/awsx": "3.0.1" }, "devDependencies": { - "@babel/eslint-parser": "7.28.4", - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", - "@types/node": "24.9.1", - "eslint": "9.38.0", + "@babel/eslint-parser": "7.28.5", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", + "@types/node": "24.10.0", + "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-n": "17.23.1", "eslint-plugin-prettier": "5.5.4", "eslint-plugin-promise": "7.2.1", - "globals": "16.4.0", + "globals": "16.5.0", "prettier": "3.6.2" } } diff --git a/.ops/ecamp3-logging/Chart.lock b/.ops/ecamp3-logging/Chart.lock index d23a983969..820e08ac15 100644 --- a/.ops/ecamp3-logging/Chart.lock +++ b/.ops/ecamp3-logging/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: fluent-operator repository: https://fluent.github.io/helm-charts - version: 3.4.2 -digest: sha256:c49298a480c72764ee4cd0b6e7e8d837d2c4231d3a8ed634ec84b9ff302f3627 -generated: "2025-07-08T13:55:28.219630056Z" + version: 3.5.0 +digest: sha256:988588f732cf8645a1eb380c66e4683807f49aa08648437c0fd2e2d454db9817 +generated: "2025-11-01T00:12:16.626020606Z" diff --git a/.ops/ecamp3-logging/Chart.yaml b/.ops/ecamp3-logging/Chart.yaml index f11d4103b4..0ab8b1bce0 100644 --- a/.ops/ecamp3-logging/Chart.yaml +++ b/.ops/ecamp3-logging/Chart.yaml @@ -25,5 +25,5 @@ appVersion: 0.1.0 dependencies: - name: fluent-operator - version: 3.4.2 + version: 3.5.0 repository: https://fluent.github.io/helm-charts diff --git a/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml b/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml index e2df05fa4f..a3f0c89c27 100644 --- a/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml +++ b/.ops/ecamp3-logging/files/elasticsearch/remove-old-indexes/docker-compose.yml @@ -1,6 +1,6 @@ services: remove-old-indexes: - image: node:24.10.0 + image: node:24.11.0 volumes: - ./src:/src command: diff --git a/.ops/ingress/Chart.lock b/.ops/ingress/Chart.lock index 6649d1f91d..8528e06808 100644 --- a/.ops/ingress/Chart.lock +++ b/.ops/ingress/Chart.lock @@ -1,6 +1,6 @@ dependencies: - name: ingress-nginx repository: https://kubernetes.github.io/ingress-nginx - version: 4.13.3 -digest: sha256:54c5d642d5a47288d547681ba5ed90d176c1398de29b373bce233071772c6f47 -generated: "2025-10-08T06:18:59.762154986Z" + version: 4.14.0 +digest: sha256:239acfa930d270451d0726b38e890d09e52450247e2f91e5701050f9caadf222 +generated: "2025-11-10T15:57:58.43582842Z" diff --git a/.ops/ingress/Chart.yaml b/.ops/ingress/Chart.yaml index bc214469a2..bcacd6a057 100644 --- a/.ops/ingress/Chart.yaml +++ b/.ops/ingress/Chart.yaml @@ -25,5 +25,5 @@ appVersion: 0.1.0 dependencies: - name: ingress-nginx - version: 4.13.3 + version: 4.14.0 repository: https://kubernetes.github.io/ingress-nginx diff --git a/.ops/ops-dashboard/Chart.lock b/.ops/ops-dashboard/Chart.lock index e87439c7c5..d21e212180 100644 --- a/.ops/ops-dashboard/Chart.lock +++ b/.ops/ops-dashboard/Chart.lock @@ -4,12 +4,12 @@ dependencies: version: 7.18.0 - name: kubernetes-dashboard repository: https://kubernetes.github.io/dashboard/ - version: 7.13.0 + version: 7.14.0 - name: oauth2-proxy repository: https://oauth2-proxy.github.io/manifests version: 7.18.0 - name: oauth2-proxy repository: https://oauth2-proxy.github.io/manifests version: 7.18.0 -digest: sha256:d119e0b8ffb14fc7aee209549ea98ee92c80eefe64a20f4b48a5a7b193efc9c6 -generated: "2025-08-14T11:03:55.532011762Z" +digest: sha256:7ec11af29604ef6739640a976d8276f6d83414bb27287815f0e0472d9bb9604a +generated: "2025-11-06T17:09:52.775601394Z" diff --git a/.ops/ops-dashboard/Chart.yaml b/.ops/ops-dashboard/Chart.yaml index 9dc05450b8..d917638b82 100644 --- a/.ops/ops-dashboard/Chart.yaml +++ b/.ops/ops-dashboard/Chart.yaml @@ -29,7 +29,7 @@ dependencies: version: 7.18.0 repository: https://oauth2-proxy.github.io/manifests - name: kubernetes-dashboard - version: 7.13.0 + version: 7.14.0 repository: https://kubernetes.github.io/dashboard/ - name: oauth2-proxy alias: kubernetes-dashboard-proxy diff --git a/api/.php-cs-fixer.php b/api/.php-cs-fixer.php index cf114d3c8c..4f5953422f 100644 --- a/api/.php-cs-fixer.php +++ b/api/.php-cs-fixer.php @@ -20,4 +20,5 @@ ]) ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect()) ->setFinder($finder) + ->setUnsupportedPhpVersionAllowed(true) ; diff --git a/api/Dockerfile b/api/Dockerfile index b041c8eedc..632e8d876c 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -3,7 +3,7 @@ # Adapted from https://github.com/api-platform/api-platform/blob/fa1c5808305d7cadbf7b8392e0fddb6e80fb2092/api/Dockerfile # Versions -FROM dunglas/frankenphp:1.9-php8.4.13 AS frankenphp_upstream +FROM dunglas/frankenphp:1.9-php8.4.14 AS frankenphp_upstream # the different stages of this Dockerfile are meant to be built into separate images # https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage @@ -69,7 +69,7 @@ RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" COPY --link docker/php/conf.d/api-platform.dev.ini $PHP_INI_DIR/conf.d/ # renovate: datasource=github-tags depName=xdebug/xdebug -ARG XDEBUG_VERSION=3.4.6 +ARG XDEBUG_VERSION=3.4.7 RUN set -eux; \ install-php-extensions \ xdebug-$XDEBUG_VERSION \ diff --git a/api/composer.json b/api/composer.json index 989f0016b5..8b0de83c1a 100644 --- a/api/composer.json +++ b/api/composer.json @@ -5,24 +5,24 @@ "php": ">=8.4.0", "ext-ctype": "*", "ext-iconv": "*", - "api-platform/doctrine-orm": "4.1.24", - "api-platform/doctrine-common": "4.2.0", - "api-platform/documentation": "4.2.0", - "api-platform/http-cache": "4.1.24", - "api-platform/json-api": "4.1.24", - "api-platform/json-hal": "4.1.24", - "api-platform/metadata": "4.1.24", - "api-platform/openapi": "4.1.24", - "api-platform/serializer": "4.1.24", - "api-platform/state": "4.1.24", - "api-platform/symfony": "4.1.23", - "api-platform/validator": "4.2.0", + "api-platform/doctrine-orm": "4.2.3", + "api-platform/doctrine-common": "4.2.3", + "api-platform/documentation": "4.2.3", + "api-platform/http-cache": "4.2.3", + "api-platform/json-api": "4.1.26", + "api-platform/json-hal": "4.1.26", + "api-platform/metadata": "4.1.26", + "api-platform/openapi": "4.1.26", + "api-platform/serializer": "4.1.26", + "api-platform/state": "4.2.3", + "api-platform/symfony": "4.1.24", + "api-platform/validator": "4.2.3", "composer/package-versions-deprecated": "1.11.99", "cweagans/composer-patches": "1.7.3", "doctrine/common": "3.5.0", - "doctrine/doctrine-bundle": "2.18.0", - "doctrine/doctrine-migrations-bundle": "3.5.0", - "doctrine/orm": "3.5.2", + "doctrine/doctrine-bundle": "2.18.1", + "doctrine/doctrine-migrations-bundle": "3.6.0", + "doctrine/orm": "3.5.3", "exercise/htmlpurifier-bundle": "5.1", "friendsofsymfony/http-cache": "3.1.1", "friendsofsymfony/http-cache-bundle": "3.2.0", @@ -32,23 +32,23 @@ "knpuniversity/oauth2-client-bundle": "2.19.0", "league/oauth2-google": "4.0.1", "lexik/jwt-authentication-bundle": "3.1.1", - "nelmio/cors-bundle": "2.5.0", + "nelmio/cors-bundle": "2.6.0", "phpdocumentor/reflection-docblock": "5.6.3", - "phpmyadmin/sql-parser": "5.11.1", + "phpmyadmin/sql-parser": "6.0.0", "ramsey/uuid": "4.9.1", "rize/uri-template": "0.4.0", "sentry/sentry-symfony": "5.6.0", "stof/doctrine-extensions-bundle": "1.14.0", "swaggest/json-schema": "0.12.43", "symfony/asset": "7.3.0", - "symfony/console": "7.3.5", + "symfony/console": "7.3.6", "symfony/dotenv": "7.3.2", "symfony/expression-language": "7.3.2", - "symfony/flex": "2.8.2", - "symfony/framework-bundle": "7.3.5", - "symfony/http-client": "7.3.4", + "symfony/flex": "2.9.0", + "symfony/framework-bundle": "7.3.6", + "symfony/http-client": "7.3.6", "symfony/intl": "7.3.5", - "symfony/mailer": "7.3.4", + "symfony/mailer": "7.3.5", "symfony/monolog-bundle": "3.10.0", "symfony/property-access": "7.3.3", "symfony/property-info": "7.3.5", @@ -57,27 +57,27 @@ "symfony/serializer": "7.3.5", "symfony/translation": "7.3.4", "symfony/twig-bundle": "7.3.4", - "symfony/validator": "7.3.4", + "symfony/validator": "7.3.7", "symfony/yaml": "7.3.5", "twig/cssinliner-extra": "^3.4", - "twig/extra-bundle": "3.21.0", - "webonyx/graphql-php": "15.25.1" + "twig/extra-bundle": "3.22.1", + "webonyx/graphql-php": "15.25.2" }, "require-dev": { - "api-platform/graphql": "4.1.23", - "brianium/paratest": "v7.14.1", - "friendsofphp/php-cs-fixer": "3.89.0", - "hautelook/alice-bundle": "2.15.1", - "justinrainbow/json-schema": "6.6.0", - "php-coveralls/php-coveralls": "2.8.0", + "api-platform/graphql": "4.1.26", + "brianium/paratest": "v7.14.2", + "friendsofphp/php-cs-fixer": "3.89.2", + "hautelook/alice-bundle": "2.16.0", + "justinrainbow/json-schema": "6.6.1", + "php-coveralls/php-coveralls": "2.9.0", "phpspec/prophecy-phpunit": "2.4.0", "phpstan/phpstan": "2.1.31", - "phpunit/phpunit": "12.4.1", - "rector/rector": "2.2.3", + "phpunit/phpunit": "12.4.2", + "rector/rector": "2.2.7", "psalm/phar": "6.13.1", "spatie/phpunit-snapshot-assertions": "5.2.2", - "symfony/browser-kit": "7.3.2", - "symfony/css-selector": "7.3.0", + "symfony/browser-kit": "7.3.6", + "symfony/css-selector": "7.3.6", "symfony/debug-bundle": "7.3.5", "symfony/maker-bundle": "1.64.0", "symfony/stopwatch": "7.3.0", @@ -124,8 +124,8 @@ "symfony/polyfill-php71": "*" }, "scripts": { - "cs-check": "PHP_CS_FIXER_IGNORE_ENV=1 php-cs-fixer fix --dry-run", - "cs-fix": "PHP_CS_FIXER_IGNORE_ENV=1 php-cs-fixer fix", + "cs-check": "php-cs-fixer fix --dry-run", + "cs-fix": "php-cs-fixer fix", "test": [ "Composer\\Config::disableProcessTimeout", "vendor/bin/phpunit -d memory_limit=-1 -c phpunit.xml.dist" diff --git a/api/composer.lock b/api/composer.lock index cf659d03c4..196eacb287 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,11 +4,11 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1e9f4c78675fba13c4e2de7d0a431bd0", + "content-hash": "a28785f190f90a6ec31e167cf957ec53", "packages": [ { "name": "api-platform/doctrine-common", - "version": "v4.2.0", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-common.git", @@ -92,31 +92,31 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.0" + "source": "https://github.com/api-platform/doctrine-common/tree/v4.2.3" }, "time": "2025-08-27T12:34:14+00:00" }, { "name": "api-platform/doctrine-orm", - "version": "v4.1.24", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/doctrine-orm.git", - "reference": "9989d0fd4badfe77fa71fed9ae734d146bc0495d" + "reference": "f30b580379ea16f6de3e27ecf8e474335af011f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/9989d0fd4badfe77fa71fed9ae734d146bc0495d", - "reference": "9989d0fd4badfe77fa71fed9ae734d146bc0495d", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/f30b580379ea16f6de3e27ecf8e474335af011f9", + "reference": "f30b580379ea16f6de3e27ecf8e474335af011f9", "shasum": "" }, "require": { - "api-platform/doctrine-common": "^4.1.11", + "api-platform/doctrine-common": "^4.2.0-alpha.3@alpha", "api-platform/metadata": "^4.1.11", "api-platform/state": "^4.1.11", "doctrine/orm": "^2.17 || ^3.0", "php": ">=8.2", - "symfony/property-info": "^6.4 || ^7.1" + "symfony/type-info": "^7.3" }, "require-dev": { "doctrine/doctrine-bundle": "^2.11", @@ -127,6 +127,7 @@ "symfony/cache": "^6.4 || ^7.0", "symfony/framework-bundle": "^6.4 || ^7.0", "symfony/property-access": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.1", "symfony/serializer": "^6.4 || ^7.0", "symfony/uid": "^6.4 || ^7.0", "symfony/validator": "^6.4 || ^7.0", @@ -144,7 +145,8 @@ "branch-alias": { "dev-3.4": "3.4.x-dev", "dev-4.1": "4.1.x-dev", - "dev-main": "4.2.x-dev" + "dev-4.2": "4.2.x-dev", + "dev-main": "4.3.x-dev" } }, "autoload": { @@ -177,13 +179,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/doctrine-orm/tree/v4.1.24" + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.2.3" }, - "time": "2025-09-15T09:57:10+00:00" + "time": "2025-10-31T11:51:24+00:00" }, { "name": "api-platform/documentation", - "version": "v4.2.0", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/documentation.git", @@ -240,22 +242,22 @@ ], "description": "API Platform documentation controller.", "support": { - "source": "https://github.com/api-platform/documentation/tree/v4.2.0" + "source": "https://github.com/api-platform/documentation/tree/v4.2.3" }, "time": "2025-08-19T08:04:29+00:00" }, { "name": "api-platform/http-cache", - "version": "v4.1.24", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/http-cache.git", - "reference": "3a6b69e57280b30d8db5a25bf3f52edb7f9069fc" + "reference": "aef434b026b861ea451d814c86838b5470b8bfb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/http-cache/zipball/3a6b69e57280b30d8db5a25bf3f52edb7f9069fc", - "reference": "3a6b69e57280b30d8db5a25bf3f52edb7f9069fc", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/aef434b026b861ea451d814c86838b5470b8bfb4", + "reference": "aef434b026b861ea451d814c86838b5470b8bfb4", "shasum": "" }, "require": { @@ -269,7 +271,8 @@ "phpspec/prophecy-phpunit": "^2.2", "phpunit/phpunit": "11.5.x-dev", "symfony/dependency-injection": "^6.4 || ^7.0", - "symfony/http-client": "^6.4 || ^7.0" + "symfony/http-client": "^6.4 || ^7.0", + "symfony/type-info": "^7.3" }, "type": "library", "extra": { @@ -283,7 +286,8 @@ "branch-alias": { "dev-3.4": "3.4.x-dev", "dev-4.1": "4.1.x-dev", - "dev-main": "4.2.x-dev" + "dev-4.2": "4.2.x-dev", + "dev-main": "4.3.x-dev" } }, "autoload": { @@ -318,13 +322,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/http-cache/tree/v4.1.24" + "source": "https://github.com/api-platform/http-cache/tree/v4.2.3" }, - "time": "2025-09-16T07:16:14+00:00" + "time": "2025-09-16T12:51:08+00:00" }, { "name": "api-platform/hydra", - "version": "v4.1.25", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/hydra.git", @@ -403,13 +407,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/hydra/tree/v4.1.25" + "source": "https://github.com/api-platform/hydra/tree/v4.1.26" }, "time": "2025-07-15T14:10:59+00:00" }, { "name": "api-platform/json-api", - "version": "v4.1.24", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/json-api.git", @@ -482,13 +486,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-api/tree/v4.1.24" + "source": "https://github.com/api-platform/json-api/tree/v4.1.26" }, "time": "2025-09-15T09:57:10+00:00" }, { "name": "api-platform/json-hal", - "version": "v4.1.24", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/json-hal.git", @@ -557,14 +561,14 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/json-hal/tree/v4.1.24" + "source": "https://github.com/api-platform/json-hal/tree/v4.1.26" }, "abandoned": "api-platform/hal", "time": "2025-09-15T09:57:10+00:00" }, { "name": "api-platform/json-schema", - "version": "v4.1.25", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/json-schema.git", @@ -637,13 +641,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/json-schema/tree/v4.1.25" + "source": "https://github.com/api-platform/json-schema/tree/v4.1.26" }, "time": "2025-06-29T12:24:14+00:00" }, { "name": "api-platform/jsonld", - "version": "v4.2.2", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/jsonld.git", @@ -717,13 +721,13 @@ "rest" ], "support": { - "source": "https://github.com/api-platform/jsonld/tree/v4.2.2" + "source": "https://github.com/api-platform/jsonld/tree/v4.2.3" }, "time": "2025-09-25T19:30:56+00:00" }, { "name": "api-platform/metadata", - "version": "v4.1.24", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/metadata.git", @@ -814,13 +818,13 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/metadata/tree/v4.1.24" + "source": "https://github.com/api-platform/metadata/tree/v4.1.26" }, "time": "2025-09-15T09:57:10+00:00" }, { "name": "api-platform/openapi", - "version": "v4.1.24", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/openapi.git", @@ -901,22 +905,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/openapi/tree/v4.1.24" + "source": "https://github.com/api-platform/openapi/tree/v4.1.26" }, "time": "2025-07-29T08:53:27+00:00" }, { "name": "api-platform/serializer", - "version": "v4.1.24", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/serializer.git", - "reference": "2327eaa8fc5c0a22f070e9b863cf4833b0c05903" + "reference": "ef803224c5c7c6f44c6cff9ac775e8616a3c5106" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/serializer/zipball/2327eaa8fc5c0a22f070e9b863cf4833b0c05903", - "reference": "2327eaa8fc5c0a22f070e9b863cf4833b0c05903", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/ef803224c5c7c6f44c6cff9ac775e8616a3c5106", + "reference": "ef803224c5c7c6f44c6cff9ac775e8616a3c5106", "shasum": "" }, "require": { @@ -992,22 +996,22 @@ "serializer" ], "support": { - "source": "https://github.com/api-platform/serializer/tree/v4.1.24" + "source": "https://github.com/api-platform/serializer/tree/v4.1.26" }, - "time": "2025-09-15T09:57:10+00:00" + "time": "2025-10-28T10:28:36+00:00" }, { "name": "api-platform/state", - "version": "v4.1.24", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/state.git", - "reference": "056b07285cdc904984fb44c2614f7df8f4620a95" + "reference": "5a74ea2ca36d0651bf637b0da6c10db4383172bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/state/zipball/056b07285cdc904984fb44c2614f7df8f4620a95", - "reference": "056b07285cdc904984fb44c2614f7df8f4620a95", + "url": "https://api.github.com/repos/api-platform/state/zipball/5a74ea2ca36d0651bf637b0da6c10db4383172bf", + "reference": "5a74ea2ca36d0651bf637b0da6c10db4383172bf", "shasum": "" }, "require": { @@ -1019,9 +1023,12 @@ "symfony/translation-contracts": "^3.0" }, "require-dev": { + "api-platform/serializer": "^4.1", "api-platform/validator": "^4.1", "phpunit/phpunit": "11.5.x-dev", "symfony/http-foundation": "^6.4 || ^7.0", + "symfony/object-mapper": "^7.3", + "symfony/type-info": "^7.3", "symfony/web-link": "^6.4 || ^7.1", "willdurand/negotiation": "^3.1" }, @@ -1044,7 +1051,8 @@ "branch-alias": { "dev-3.4": "3.4.x-dev", "dev-4.1": "4.1.x-dev", - "dev-main": "4.2.x-dev" + "dev-4.2": "4.2.x-dev", + "dev-main": "4.3.x-dev" } }, "autoload": { @@ -1084,22 +1092,22 @@ "swagger" ], "support": { - "source": "https://github.com/api-platform/state/tree/v4.1.24" + "source": "https://github.com/api-platform/state/tree/v4.2.3" }, - "time": "2025-07-16T14:01:52+00:00" + "time": "2025-10-31T10:04:25+00:00" }, { "name": "api-platform/symfony", - "version": "v4.1.23", + "version": "v4.1.24", "source": { "type": "git", "url": "https://github.com/api-platform/symfony.git", - "reference": "e35839489b4e76ffc5fc2b0cbadbbaece75b9ad1" + "reference": "bf2b171d067f2a502af202bf3bca30c44ecc8b52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/symfony/zipball/e35839489b4e76ffc5fc2b0cbadbbaece75b9ad1", - "reference": "e35839489b4e76ffc5fc2b0cbadbbaece75b9ad1", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/bf2b171d067f2a502af202bf3bca30c44ecc8b52", + "reference": "bf2b171d067f2a502af202bf3bca30c44ecc8b52", "shasum": "" }, "require": { @@ -1208,22 +1216,22 @@ "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.1.23" + "source": "https://github.com/api-platform/symfony/tree/v4.1.24" }, - "time": "2025-09-05T07:30:37+00:00" + "time": "2025-09-15T09:57:10+00:00" }, { "name": "api-platform/validator", - "version": "v4.2.0", + "version": "v4.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/validator.git", - "reference": "562f97b0acdacef462ff9ececd62158ae4709530" + "reference": "bb8697d3676f9034865dfbf96df9e55734aecad5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/validator/zipball/562f97b0acdacef462ff9ececd62158ae4709530", - "reference": "562f97b0acdacef462ff9ececd62158ae4709530", + "url": "https://api.github.com/repos/api-platform/validator/zipball/bb8697d3676f9034865dfbf96df9e55734aecad5", + "reference": "bb8697d3676f9034865dfbf96df9e55734aecad5", "shasum": "" }, "require": { @@ -1284,9 +1292,9 @@ "validator" ], "support": { - "source": "https://github.com/api-platform/validator/tree/v4.2.0" + "source": "https://github.com/api-platform/validator/tree/v4.2.3" }, - "time": "2025-09-05T08:12:26+00:00" + "time": "2025-10-31T11:51:24+00:00" }, { "name": "brick/math", @@ -1537,16 +1545,16 @@ }, { "name": "doctrine/collections", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d" + "reference": "9acfeea2e8666536edff3d77c531261c63680160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2eb07e5953eed811ce1b309a7478a3b236f2273d", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d", + "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", + "reference": "9acfeea2e8666536edff3d77c531261c63680160", "shasum": "" }, "require": { @@ -1555,11 +1563,11 @@ "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "ext-json": "*", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.5" + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" }, "type": "library", "autoload": { @@ -1603,7 +1611,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.3.0" + "source": "https://github.com/doctrine/collections/tree/2.4.0" }, "funding": [ { @@ -1619,7 +1627,7 @@ "type": "tidelift" } ], - "time": "2025-03-22T10:17:19+00:00" + "time": "2025-10-25T09:18:13+00:00" }, { "name": "doctrine/common", @@ -1868,16 +1876,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.18.0", + "version": "2.18.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95" + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", - "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/b769877014de053da0e5cbbb63d0ea2f3b2fea76", + "reference": "b769877014de053da0e5cbbb63d0ea2f3b2fea76", "shasum": "" }, "require": { @@ -1969,7 +1977,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.1" }, "funding": [ { @@ -1985,20 +1993,20 @@ "type": "tidelift" } ], - "time": "2025-10-11T04:43:27+00:00" + "time": "2025-11-05T14:42:10+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "71c81279ca0e907c3edc718418b93fd63074856c" + "reference": "49ecc564568d7da101779112579e78b677fbc94a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/71c81279ca0e907c3edc718418b93fd63074856c", - "reference": "71c81279ca0e907c3edc718418b93fd63074856c", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49ecc564568d7da101779112579e78b677fbc94a", + "reference": "49ecc564568d7da101779112579e78b677fbc94a", "shasum": "" }, "require": { @@ -2006,7 +2014,7 @@ "doctrine/migrations": "^3.2", "php": "^7.2 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "composer/semver": "^3.0", @@ -2018,8 +2026,8 @@ "phpstan/phpstan-strict-rules": "^1.1 || ^2", "phpstan/phpstan-symfony": "^1.3 || ^2", "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/phpunit-bridge": "^6.3 || ^7", - "symfony/var-exporter": "^5.4 || ^6 || ^7" + "symfony/phpunit-bridge": "^6.3 || ^7 || ^8", + "symfony/var-exporter": "^5.4 || ^6 || ^7 || ^8" }, "type": "symfony-bundle", "autoload": { @@ -2054,7 +2062,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.5.0" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.6.0" }, "funding": [ { @@ -2070,7 +2078,7 @@ "type": "tidelift" } ], - "time": "2025-10-12T17:06:40+00:00" + "time": "2025-11-07T19:40:03+00:00" }, { "name": "doctrine/event-manager", @@ -2505,16 +2513,16 @@ }, { "name": "doctrine/orm", - "version": "3.5.2", + "version": "3.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109" + "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", - "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1220edf9535303feb6dbfcf171beeef842fc9e1c", + "reference": "1220edf9535303feb6dbfcf171beeef842fc9e1c", "shasum": "" }, "require": { @@ -2534,15 +2542,14 @@ "symfony/var-exporter": "^6.3.9 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^13.0", + "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.0.3", + "phpstan/phpstan": "2.1.22", "phpstan/phpstan-deprecation-rules": "^2", - "phpunit/phpunit": "^10.4.0", + "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.12.0", "symfony/cache": "^5.4 || ^6.2 || ^7.0" }, "suggest": { @@ -2589,9 +2596,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.2" + "source": "https://github.com/doctrine/orm/tree/3.5.3" }, - "time": "2025-08-08T17:00:40+00:00" + "time": "2025-10-27T22:06:52+00:00" }, { "name": "doctrine/persistence", @@ -2688,26 +2695,26 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8" + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d6d00aba6fd2957fe5216fe2b7673e9985db20c8", - "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a8af23a8e9d622505baa2997465782cbe8bb7fc7", + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^12", - "ergebnis/phpunit-slow-test-detector": "^2.14", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5" + "doctrine/coding-standard": "^14", + "ergebnis/phpunit-slow-test-detector": "^2.20", + "phpstan/phpstan": "^2.1.31", + "phpunit/phpunit": "^10.5.58" }, "bin": [ "bin/sql-formatter" @@ -2737,9 +2744,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.2" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.3" }, - "time": "2025-01-24T11:45:48+00:00" + "time": "2025-10-26T09:35:14+00:00" }, { "name": "egulias/email-validator", @@ -3823,20 +3830,20 @@ }, { "name": "lcobucci/clock", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/lcobucci/clock.git", - "reference": "f91d84f65cb3e974988bbe872b5da8ca132a155f" + "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/clock/zipball/f91d84f65cb3e974988bbe872b5da8ca132a155f", - "reference": "f91d84f65cb3e974988bbe872b5da8ca132a155f", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/a3139d9e97d47826f27e6a17bb63f13621f86058", + "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058", "shasum": "" }, "require": { - "php": "~8.3.0 || ~8.4.0", + "php": "~8.3.0 || ~8.4.0 || ~8.5.0", "psr/clock": "^1.0" }, "provide": { @@ -3844,7 +3851,7 @@ }, "require-dev": { "infection/infection": "^0.31", - "lcobucci/coding-standard": "^11.1.0", + "lcobucci/coding-standard": "^11.2.0", "phpstan/extension-installer": "^1.3.1", "phpstan/phpstan": "^2.0.0", "phpstan/phpstan-deprecation-rules": "^2.0.0", @@ -3871,7 +3878,7 @@ "description": "Yet another clock abstraction", "support": { "issues": "https://github.com/lcobucci/clock/issues", - "source": "https://github.com/lcobucci/clock/tree/3.4.0" + "source": "https://github.com/lcobucci/clock/tree/3.5.0" }, "funding": [ { @@ -3883,7 +3890,7 @@ "type": "patreon" } ], - "time": "2025-10-08T18:00:48+00:00" + "time": "2025-10-27T09:03:17+00:00" }, { "name": "lcobucci/jwt", @@ -4299,25 +4306,28 @@ }, { "name": "nelmio/cors-bundle", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544" + "reference": "530217472204881cacd3671909f634b960c7b948" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/3a526fe025cd20e04a6a11370cf5ab28dbb5a544", - "reference": "3a526fe025cd20e04a6a11370cf5ab28dbb5a544", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/530217472204881cacd3671909f634b960c7b948", + "reference": "530217472204881cacd3671909f634b960c7b948", "shasum": "" }, "require": { "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { - "mockery/mockery": "^1.3.6", - "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0" + "phpstan/phpstan": "^1.11.5", + "phpstan/phpstan-deprecation-rules": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.4", + "phpstan/phpstan-symfony": "^1.4.4", + "phpunit/phpunit": "^8" }, "type": "symfony-bundle", "extra": { @@ -4355,9 +4365,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.5.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.0" }, - "time": "2024-06-24T21:25:28+00:00" + "time": "2025-10-23T06:57:22+00:00" }, { "name": "php-http/client-common", @@ -4910,51 +4920,52 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.11.1", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "1b70d03526df92bd1e170e2670b7d3510e1b722b" + "reference": "75397801ef687ef6b850e907a40c60b9d6b755db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/1b70d03526df92bd1e170e2670b7d3510e1b722b", - "reference": "1b70d03526df92bd1e170e2670b7d3510e1b722b", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/75397801ef687ef6b850e907a40c60b9d6b755db", + "reference": "75397801ef687ef6b850e907a40c60b9d6b755db", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.16" + "php": "^8.2", + "symfony/polyfill-mbstring": "^1.24" }, "conflict": { - "phpmyadmin/motranslator": "<3.0" + "phpmyadmin/motranslator": "<5.2" }, "require-dev": { - "phpbench/phpbench": "^1.1", - "phpmyadmin/coding-standard": "^3.0", - "phpmyadmin/motranslator": "^4.0 || ^5.0", + "phpbench/phpbench": "^1.2", + "phpmyadmin/coding-standard": "^4.0", + "phpmyadmin/motranslator": "^5.3", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^1.12", - "phpstan/phpstan-deprecation-rules": "^1.2", - "phpstan/phpstan-phpunit": "^1.4", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "^8.5 || ^9.6", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.11", - "zumba/json-serializer": "~3.0.2" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^11.5", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.0", + "zumba/json-serializer": "^3.2" }, "suggest": { "ext-mbstring": "For best performance", "phpmyadmin/motranslator": "Translate messages to your favorite locale" }, "bin": [ - "bin/highlight-query", - "bin/lint-query", - "bin/sql-parser", - "bin/tokenize-query" + "bin/sql-parser" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.0-dev" + } + }, "autoload": { "psr-4": { "PhpMyAdmin\\SqlParser\\": "src" @@ -4995,7 +5006,7 @@ "type": "other" } ], - "time": "2025-07-20T15:49:56+00:00" + "time": "2025-10-31T22:05:33+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -5774,16 +5785,16 @@ }, { "name": "sentry/sentry", - "version": "4.17.1", + "version": "4.18.1", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "5c696b8de57e841a2bf3b6f6eecfd99acfdda80c" + "reference": "04dcf20b39742b731b676f8b8d4f02d1db488af8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/5c696b8de57e841a2bf3b6f6eecfd99acfdda80c", - "reference": "5c696b8de57e841a2bf3b6f6eecfd99acfdda80c", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/04dcf20b39742b731b676f8b8d4f02d1db488af8", + "reference": "04dcf20b39742b731b676f8b8d4f02d1db488af8", "shasum": "" }, "require": { @@ -5794,7 +5805,7 @@ "jean85/pretty-package-versions": "^1.5|^2.0.4", "php": "^7.2|^8.0", "psr/log": "^1.0|^2.0|^3.0", - "symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0" + "symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0|^8.0" }, "conflict": { "raven/raven": "*" @@ -5846,7 +5857,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/4.17.1" + "source": "https://github.com/getsentry/sentry-php/tree/4.18.1" }, "funding": [ { @@ -5858,7 +5869,7 @@ "type": "custom" } ], - "time": "2025-10-23T15:19:24+00:00" + "time": "2025-11-11T09:34:53+00:00" }, { "name": "sentry/sentry-symfony", @@ -6209,16 +6220,16 @@ }, { "name": "symfony/cache", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f" + "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f", - "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f", + "url": "https://api.github.com/repos/symfony/cache/zipball/1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", + "reference": "1277a1ec61c8d93ea61b2a59738f1deb9bfb6701", "shasum": "" }, "require": { @@ -6287,7 +6298,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.4" + "source": "https://github.com/symfony/cache/tree/v7.3.6" }, "funding": [ { @@ -6307,7 +6318,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-30T13:22:58+00:00" }, { "name": "symfony/cache-contracts", @@ -6461,16 +6472,16 @@ }, { "name": "symfony/config", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8a09223170046d2cfda3d2e11af01df2c641e961" + "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8a09223170046d2cfda3d2e11af01df2c641e961", - "reference": "8a09223170046d2cfda3d2e11af01df2c641e961", + "url": "https://api.github.com/repos/symfony/config/zipball/9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", + "reference": "9d18eba95655a3152ae4c1d53c6cc34eb4d4a0b7", "shasum": "" }, "require": { @@ -6516,7 +6527,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.3.4" + "source": "https://github.com/symfony/config/tree/v7.3.6" }, "funding": [ { @@ -6536,20 +6547,20 @@ "type": "tidelift" } ], - "time": "2025-09-22T12:46:16+00:00" + "time": "2025-11-02T08:04:43+00:00" }, { "name": "symfony/console", - "version": "v7.3.5", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7" + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cdb80fa5869653c83cfe1a9084a673b6daf57ea7", - "reference": "cdb80fa5869653c83cfe1a9084a673b6daf57ea7", + "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", "shasum": "" }, "require": { @@ -6614,7 +6625,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.5" + "source": "https://github.com/symfony/console/tree/v7.3.6" }, "funding": [ { @@ -6634,20 +6645,20 @@ "type": "tidelift" } ], - "time": "2025-10-14T15:46:26+00:00" + "time": "2025-11-04T01:21:42+00:00" }, { "name": "symfony/css-selector", - "version": "v7.3.0", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" + "reference": "84321188c4754e64273b46b406081ad9b18e8614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/84321188c4754e64273b46b406081ad9b18e8614", + "reference": "84321188c4754e64273b46b406081ad9b18e8614", "shasum": "" }, "require": { @@ -6683,7 +6694,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.3.0" + "source": "https://github.com/symfony/css-selector/tree/v7.3.6" }, "funding": [ { @@ -6694,25 +6705,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-10-29T17:24:25+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4" + "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/82119812ab0bf3425c1234d413efd1b19bb92ae4", - "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", + "reference": "98af8bb46c56aedd9dd5a7f0414fc72bf2dcfe69", "shasum": "" }, "require": { @@ -6763,7 +6778,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.3.4" + "source": "https://github.com/symfony/dependency-injection/tree/v7.3.6" }, "funding": [ { @@ -6783,7 +6798,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-31T10:11:11+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6854,16 +6869,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888" + "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/21cd48c34a47a0d0e303a590a67c3450fde55888", - "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e7d308bd44ff8673a259e2727d13af6a93a5d83e", + "reference": "e7d308bd44ff8673a259e2727d13af6a93a5d83e", "shasum": "" }, "require": { @@ -6943,7 +6958,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.5" }, "funding": [ { @@ -6963,7 +6978,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T09:56:23+00:00" + "time": "2025-09-27T09:00:46+00:00" }, { "name": "symfony/dotenv", @@ -7045,16 +7060,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8", + "reference": "bbe40bfab84323d99dab491b716ff142410a92a8", "shasum": "" }, "require": { @@ -7102,7 +7117,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.4" + "source": "https://github.com/symfony/error-handler/tree/v7.3.6" }, "funding": [ { @@ -7122,7 +7137,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-31T19:12:50+00:00" }, { "name": "symfony/event-dispatcher", @@ -7354,16 +7369,16 @@ }, { "name": "symfony/filesystem", - "version": "v7.3.2", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd" + "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd", - "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a", + "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a", "shasum": "" }, "require": { @@ -7400,7 +7415,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.2" + "source": "https://github.com/symfony/filesystem/tree/v7.3.6" }, "funding": [ { @@ -7420,20 +7435,20 @@ "type": "tidelift" } ], - "time": "2025-07-07T08:17:47+00:00" + "time": "2025-11-05T09:52:27+00:00" }, { "name": "symfony/finder", - "version": "v7.3.2", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + "reference": "9f696d2f1e340484b4683f7853b273abff94421f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", + "reference": "9f696d2f1e340484b4683f7853b273abff94421f", "shasum": "" }, "require": { @@ -7468,7 +7483,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.2" + "source": "https://github.com/symfony/finder/tree/v7.3.5" }, "funding": [ { @@ -7488,35 +7503,35 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-10-15T18:45:57+00:00" }, { "name": "symfony/flex", - "version": "v2.8.2", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426" + "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/f356aa35f3cf3d2f46c31d344c1098eb2d260426", - "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426", + "url": "https://api.github.com/repos/symfony/flex/zipball/94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", + "reference": "94b37978c9982dc41c5b6a4147892d2d3d1b9ce6", "shasum": "" }, "require": { "composer-plugin-api": "^2.1", - "php": ">=8.0" + "php": ">=8.1" }, "conflict": { "composer/semver": "<1.7.2" }, "require-dev": { "composer/composer": "^2.1", - "symfony/dotenv": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/phpunit-bridge": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" + "symfony/dotenv": "^6.4|^7.4|^8.0", + "symfony/filesystem": "^6.4|^7.4|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.4|^8.0", + "symfony/process": "^6.4|^7.4|^8.0" }, "type": "composer-plugin", "extra": { @@ -7540,7 +7555,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.8.2" + "source": "https://github.com/symfony/flex/tree/v2.9.0" }, "funding": [ { @@ -7560,20 +7575,20 @@ "type": "tidelift" } ], - "time": "2025-08-22T07:17:23+00:00" + "time": "2025-10-31T15:22:50+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.5", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d" + "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ebd42b1fc2652b96d33520195ea0f6e55c36f09d", - "reference": "ebd42b1fc2652b96d33520195ea0f6e55c36f09d", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/cabfdfa82bc4f75d693a329fe263d96937636b77", + "reference": "cabfdfa82bc4f75d693a329fe263d96937636b77", "shasum": "" }, "require": { @@ -7698,7 +7713,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.3.5" + "source": "https://github.com/symfony/framework-bundle/tree/v7.3.6" }, "funding": [ { @@ -7718,20 +7733,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T16:16:53+00:00" + "time": "2025-10-30T09:42:24+00:00" }, { "name": "symfony/http-client", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62" + "reference": "3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/4b62871a01c49457cf2a8e560af7ee8a94b87a62", - "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62", + "url": "https://api.github.com/repos/symfony/http-client/zipball/3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de", + "reference": "3c0a55a2c8e21e30a37022801c11c7ab5a6cb2de", "shasum": "" }, "require": { @@ -7798,7 +7813,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.3.4" + "source": "https://github.com/symfony/http-client/tree/v7.3.6" }, "funding": [ { @@ -7818,7 +7833,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-11-05T17:41:46+00:00" }, { "name": "symfony/http-client-contracts", @@ -7900,16 +7915,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.3.4", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", "shasum": "" }, "require": { @@ -7959,7 +7974,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.7" }, "funding": [ { @@ -7979,20 +7994,20 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-11-08T16:41:12+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.4", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf" + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce", "shasum": "" }, "require": { @@ -8077,7 +8092,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.7" }, "funding": [ { @@ -8097,7 +8112,7 @@ "type": "tidelift" } ], - "time": "2025-09-27T12:32:17+00:00" + "time": "2025-11-12T11:38:40+00:00" }, { "name": "symfony/intl", @@ -8191,16 +8206,16 @@ }, { "name": "symfony/mailer", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d" + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d", + "url": "https://api.github.com/repos/symfony/mailer/zipball/fd497c45ba9c10c37864e19466b090dcb60a50ba", + "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba", "shasum": "" }, "require": { @@ -8251,7 +8266,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.4" + "source": "https://github.com/symfony/mailer/tree/v7.3.5" }, "funding": [ { @@ -8271,7 +8286,7 @@ "type": "tidelift" } ], - "time": "2025-09-17T05:51:54+00:00" + "time": "2025-10-24T14:27:20+00:00" }, { "name": "symfony/mime", @@ -8363,16 +8378,16 @@ }, { "name": "symfony/monolog-bridge", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0" + "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/7acf2abe23e5019451399ba69fc8ed3d61d4d8f0", - "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", + "reference": "48e8542ba35afd2293a8c8fd4bcf8abe46357ddf", "shasum": "" }, "require": { @@ -8421,7 +8436,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.4" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.6" }, "funding": [ { @@ -8441,7 +8456,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T16:45:39+00:00" + "time": "2025-11-01T09:17:24+00:00" }, { "name": "symfony/monolog-bundle", @@ -9172,16 +9187,16 @@ }, { "name": "symfony/routing", - "version": "v7.3.4", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091", + "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091", "shasum": "" }, "require": { @@ -9233,7 +9248,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.4" + "source": "https://github.com/symfony/routing/tree/v7.3.6" }, "funding": [ { @@ -9253,7 +9268,7 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-11-05T07:57:47+00:00" }, { "name": "symfony/runtime", @@ -9450,16 +9465,16 @@ }, { "name": "symfony/security-core", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8" + "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/68b9d3ca57615afde6152a1e1441fa035bea43f8", - "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8", + "url": "https://api.github.com/repos/symfony/security-core/zipball/772a7c1eddd8bf8a977a67e6e8adc59650c604eb", + "reference": "772a7c1eddd8bf8a977a67e6e8adc59650c604eb", "shasum": "" }, "require": { @@ -9517,7 +9532,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.4" + "source": "https://github.com/symfony/security-core/tree/v7.3.5" }, "funding": [ { @@ -9537,7 +9552,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T14:32:13+00:00" + "time": "2025-10-24T14:27:20+00:00" }, { "name": "symfony/security-csrf", @@ -9611,16 +9626,16 @@ }, { "name": "symfony/security-http", - "version": "v7.3.4", + "version": "v7.3.5", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9" + "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/1cf54d0648ebab23bf9b8972617b79f1995e13a9", - "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9", + "url": "https://api.github.com/repos/symfony/security-http/zipball/e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", + "reference": "e79a63fd5dec6e5b1ba31227e98d860a4f8ba95c", "shasum": "" }, "require": { @@ -9679,7 +9694,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.4" + "source": "https://github.com/symfony/security-http/tree/v7.3.5" }, "funding": [ { @@ -9699,7 +9714,7 @@ "type": "tidelift" } ], - "time": "2025-09-09T17:06:44+00:00" + "time": "2025-10-13T09:30:10+00:00" }, { "name": "symfony/serializer", @@ -9806,16 +9821,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -9869,7 +9884,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -9880,12 +9895,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", @@ -10141,16 +10160,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", "shasum": "" }, "require": { @@ -10199,7 +10218,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" }, "funding": [ { @@ -10210,25 +10229,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-27T08:32:26+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/twig-bridge", - "version": "v7.3.3", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "33558f013b7f6ed72805527c8405cae0062e47c5" + "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/33558f013b7f6ed72805527c8405cae0062e47c5", - "reference": "33558f013b7f6ed72805527c8405cae0062e47c5", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d1aaec8eee1f5591f56b9efe00194d73a8e38319", + "reference": "d1aaec8eee1f5591f56b9efe00194d73a8e38319", "shasum": "" }, "require": { @@ -10310,7 +10333,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.3.3" + "source": "https://github.com/symfony/twig-bridge/tree/v7.3.6" }, "funding": [ { @@ -10330,7 +10353,7 @@ "type": "tidelift" } ], - "time": "2025-08-18T13:10:53+00:00" + "time": "2025-11-04T15:37:51+00:00" }, { "name": "symfony/twig-bundle", @@ -10579,16 +10602,16 @@ }, { "name": "symfony/validator", - "version": "v7.3.4", + "version": "v7.3.7", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "5e29a348b5fac2227b6938a54db006d673bb813a" + "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/5e29a348b5fac2227b6938a54db006d673bb813a", - "reference": "5e29a348b5fac2227b6938a54db006d673bb813a", + "url": "https://api.github.com/repos/symfony/validator/zipball/8290a095497c3fe5046db21888d1f75b54ddf39d", + "reference": "8290a095497c3fe5046db21888d1f75b54ddf39d", "shasum": "" }, "require": { @@ -10657,7 +10680,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.4" + "source": "https://github.com/symfony/validator/tree/v7.3.7" }, "funding": [ { @@ -10677,7 +10700,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:32:27+00:00" + "time": "2025-11-08T16:29:29+00:00" }, { "name": "symfony/var-dumper", @@ -11063,16 +11086,16 @@ }, { "name": "twig/cssinliner-extra", - "version": "v3.21.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/cssinliner-extra.git", - "reference": "378d29b61d6406c456e3a4afbd15bbeea0b72ea8" + "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/378d29b61d6406c456e3a4afbd15bbeea0b72ea8", - "reference": "378d29b61d6406c456e3a4afbd15bbeea0b72ea8", + "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", + "reference": "9bcbf04ca515e98fcde479fdceaa1d9d9e76173e", "shasum": "" }, "require": { @@ -11116,7 +11139,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.21.0" + "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.22.0" }, "funding": [ { @@ -11128,30 +11151,30 @@ "type": "tidelift" } ], - "time": "2025-01-31T20:45:36+00:00" + "time": "2025-07-29T08:07:07+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.21.0", + "version": "v3.22.1", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "62d1cf47a1aa009cbd07b21045b97d3d5cb79896" + "reference": "b6534bc925bec930004facca92fccebd0c809247" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/62d1cf47a1aa009cbd07b21045b97d3d5cb79896", - "reference": "62d1cf47a1aa009cbd07b21045b97d3d5cb79896", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/b6534bc925bec930004facca92fccebd0c809247", + "reference": "b6534bc925bec930004facca92fccebd0c809247", "shasum": "" }, "require": { "php": ">=8.1.0", - "symfony/framework-bundle": "^5.4|^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.4|^7.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0|^8.0", "twig/twig": "^3.2|^4.0" }, "require-dev": { - "league/commonmark": "^1.0|^2.0", + "league/commonmark": "^2.7", "symfony/phpunit-bridge": "^6.4|^7.0", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^3.0", @@ -11190,7 +11213,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.21.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.1" }, "funding": [ { @@ -11202,20 +11225,20 @@ "type": "tidelift" } ], - "time": "2025-02-19T14:29:33+00:00" + "time": "2025-11-02T11:00:49+00:00" }, { "name": "twig/twig", - "version": "v3.21.1", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" + "reference": "4509984193026de413baf4ba80f68590a7f2c51d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d", + "reference": "4509984193026de413baf4ba80f68590a7f2c51d", "shasum": "" }, "require": { @@ -11269,7 +11292,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.21.1" + "source": "https://github.com/twigphp/Twig/tree/v3.22.0" }, "funding": [ { @@ -11281,20 +11304,20 @@ "type": "tidelift" } ], - "time": "2025-05-03T07:21:55+00:00" + "time": "2025-10-29T15:56:47+00:00" }, { "name": "webmozart/assert", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "541057574806f942c94662b817a50f63f7345360" + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/541057574806f942c94662b817a50f63f7345360", - "reference": "541057574806f942c94662b817a50f63f7345360", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", "shasum": "" }, "require": { @@ -11337,22 +11360,22 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.12.0" + "source": "https://github.com/webmozarts/assert/tree/1.12.1" }, - "time": "2025-10-20T12:43:39+00:00" + "time": "2025-10-29T15:56:20+00:00" }, { "name": "webonyx/graphql-php", - "version": "v15.25.1", + "version": "v15.25.2", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "60ef919138a171bdca5fc22c1e9aea8bbc59e5b7" + "reference": "da3891cb35fa694ad5a796a6c4acfa6bf987740a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/60ef919138a171bdca5fc22c1e9aea8bbc59e5b7", - "reference": "60ef919138a171bdca5fc22c1e9aea8bbc59e5b7", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/da3891cb35fa694ad5a796a6c4acfa6bf987740a", + "reference": "da3891cb35fa694ad5a796a6c4acfa6bf987740a", "shasum": "" }, "require": { @@ -11365,12 +11388,12 @@ "amphp/http-server": "^2.1", "dms/phpunit-arraysubset-asserts": "dev-master", "ergebnis/composer-normalize": "^2.28", - "friendsofphp/php-cs-fixer": "3.88.2", + "friendsofphp/php-cs-fixer": "3.89.1", "mll-lab/php-cs-fixer-config": "5.11.0", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "2.1.30", + "phpstan/phpstan": "2.1.31", "phpstan/phpstan-phpunit": "2.0.7", "phpstan/phpstan-strict-rules": "2.0.7", "phpunit/phpunit": "^9.5 || ^10.5.21 || ^11", @@ -11406,7 +11429,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.25.1" + "source": "https://github.com/webonyx/graphql-php/tree/v15.25.2" }, "funding": [ { @@ -11414,7 +11437,7 @@ "type": "open_collective" } ], - "time": "2025-10-08T10:29:48+00:00" + "time": "2025-10-25T09:33:47+00:00" }, { "name": "willdurand/negotiation", @@ -11476,16 +11499,16 @@ "packages-dev": [ { "name": "api-platform/graphql", - "version": "v4.1.23", + "version": "v4.1.26", "source": { "type": "git", "url": "https://github.com/api-platform/graphql.git", - "reference": "7125884e7ed88db3d473011f0b41c8e0d0497749" + "reference": "e55e759599ca8a615507ce46c99307af1b4eda43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/graphql/zipball/7125884e7ed88db3d473011f0b41c8e0d0497749", - "reference": "7125884e7ed88db3d473011f0b41c8e0d0497749", + "url": "https://api.github.com/repos/api-platform/graphql/zipball/e55e759599ca8a615507ce46c99307af1b4eda43", + "reference": "e55e759599ca8a615507ce46c99307af1b4eda43", "shasum": "" }, "require": { @@ -11560,22 +11583,22 @@ "graphql" ], "support": { - "source": "https://github.com/api-platform/graphql/tree/v4.1.23" + "source": "https://github.com/api-platform/graphql/tree/v4.1.26" }, - "time": "2025-07-03T13:00:28+00:00" + "time": "2025-10-31T09:47:48+00:00" }, { "name": "brianium/paratest", - "version": "v7.14.1", + "version": "v7.14.2", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "e1a93c38a94f4808faf75552e835666d3a6f8bb2" + "reference": "de06de1ae1203b11976c6ca01d6a9081c8b33d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/e1a93c38a94f4808faf75552e835666d3a6f8bb2", - "reference": "e1a93c38a94f4808faf75552e835666d3a6f8bb2", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/de06de1ae1203b11976c6ca01d6a9081c8b33d45", + "reference": "de06de1ae1203b11976c6ca01d6a9081c8b33d45", "shasum": "" }, "require": { @@ -11589,7 +11612,7 @@ "phpunit/php-code-coverage": "^12.4.0", "phpunit/php-file-iterator": "^6", "phpunit/php-timer": "^8", - "phpunit/phpunit": "^12.4.0", + "phpunit/phpunit": "^12.4.1", "sebastian/environment": "^8.0.3", "symfony/console": "^6.4.20 || ^7.3.4", "symfony/process": "^6.4.20 || ^7.3.4" @@ -11599,7 +11622,7 @@ "ext-pcntl": "*", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan": "^2.1.31", "phpstan/phpstan-deprecation-rules": "^2.0.3", "phpstan/phpstan-phpunit": "^2.0.7", "phpstan/phpstan-strict-rules": "^2.0.7", @@ -11643,7 +11666,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.14.1" + "source": "https://github.com/paratestphp/paratest/tree/v7.14.2" }, "funding": [ { @@ -11655,7 +11678,7 @@ "type": "paypal" } ], - "time": "2025-10-06T08:26:52+00:00" + "time": "2025-10-24T07:20:53+00:00" }, { "name": "clue/ndjson-react", @@ -12199,16 +12222,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.89.0", + "version": "v3.89.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "4dd6768cb7558440d27d18f54909eee417317ce9" + "reference": "7569658f91e475ec93b99bd5964b059ad1336dcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4dd6768cb7558440d27d18f54909eee417317ce9", - "reference": "4dd6768cb7558440d27d18f54909eee417317ce9", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7569658f91e475ec93b99bd5964b059ad1336dcf", + "reference": "7569658f91e475ec93b99bd5964b059ad1336dcf", "shasum": "" }, "require": { @@ -12244,7 +12267,7 @@ "justinrainbow/json-schema": "^6.5", "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.8", + "php-coveralls/php-coveralls": "^2.9", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", @@ -12290,7 +12313,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.89.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.89.2" }, "funding": [ { @@ -12298,25 +12321,25 @@ "type": "github" } ], - "time": "2025-10-18T19:30:16+00:00" + "time": "2025-11-06T21:12:50+00:00" }, { "name": "hautelook/alice-bundle", - "version": "2.15.1", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/theofidry/AliceBundle.git", - "reference": "e33d72e4df48b846dd5fb99039dbcfc5401daf2c" + "reference": "69c9e3e6b85fcb3ed0dd430e8f790489aaa0cbcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/e33d72e4df48b846dd5fb99039dbcfc5401daf2c", - "reference": "e33d72e4df48b846dd5fb99039dbcfc5401daf2c", + "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/69c9e3e6b85fcb3ed0dd430e8f790489aaa0cbcc", + "reference": "69c9e3e6b85fcb3ed0dd430e8f790489aaa0cbcc", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.7 || ^2.0", - "doctrine/doctrine-bundle": "^2.11.3", + "doctrine/doctrine-bundle": "^2.11.3 || ^3.0", "doctrine/orm": "^3.1", "doctrine/persistence": "^3.3.1 || ^4.0", "php": "^8.2", @@ -12370,22 +12393,22 @@ ], "support": { "issues": "https://github.com/theofidry/AliceBundle/issues", - "source": "https://github.com/theofidry/AliceBundle/tree/2.15.1" + "source": "https://github.com/theofidry/AliceBundle/tree/2.16.0" }, - "time": "2025-03-27T09:27:25+00:00" + "time": "2025-10-24T09:03:19+00:00" }, { "name": "justinrainbow/json-schema", - "version": "6.6.0", + "version": "6.6.1", "source": { "type": "git", "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "68ba7677532803cc0c5900dd5a4d730537f2b2f3" + "reference": "fd8e5c6b1badb998844ad34ce0abcd71a0aeb396" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/68ba7677532803cc0c5900dd5a4d730537f2b2f3", - "reference": "68ba7677532803cc0c5900dd5a4d730537f2b2f3", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fd8e5c6b1badb998844ad34ce0abcd71a0aeb396", + "reference": "fd8e5c6b1badb998844ad34ce0abcd71a0aeb396", "shasum": "" }, "require": { @@ -12445,9 +12468,9 @@ ], "support": { "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/6.6.0" + "source": "https://github.com/jsonrainbow/json-schema/tree/6.6.1" }, - "time": "2025-10-10T11:34:09+00:00" + "time": "2025-11-07T18:30:29+00:00" }, { "name": "marc-mabe/php-enum", @@ -12923,33 +12946,32 @@ }, { "name": "php-coveralls/php-coveralls", - "version": "v2.8.0", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/php-coveralls/php-coveralls.git", - "reference": "00b9fce4d785a98760ca02f305c197f5fcfb6004" + "reference": "468f5247e9e36ecc9b34f501cab868e7ac7c1f73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/00b9fce4d785a98760ca02f305c197f5fcfb6004", - "reference": "00b9fce4d785a98760ca02f305c197f5fcfb6004", + "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/468f5247e9e36ecc9b34f501cab868e7ac7c1f73", + "reference": "468f5247e9e36ecc9b34f501cab868e7ac7c1f73", "shasum": "" }, "require": { "ext-json": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.0 || ^7.0", - "php": "^7.0 || ^8.0", - "psr/log": "^1.0 || ^2.0", - "symfony/config": "^2.1 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/console": "^2.1 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/yaml": "^2.0.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + "php": "^7.4 || ^8.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/config": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/console": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/stopwatch": "^5.4 || ^6.4 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0 || ^8.0" }, "require-dev": { - "phpspec/prophecy-phpunit": "^1.1 || ^2.3", - "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0 || ^7.0 || >=8.0 <8.5.29 || >=9.0 <9.5.23", - "sanmai/phpunit-legacy-adapter": "^6.1 || ^8.0" + "phpspec/prophecy-phpunit": "^2.4", + "phpunit/phpunit": "^9.6.29 || ^10.5.58 || ^11.5.43" }, "suggest": { "symfony/http-kernel": "Allows Symfony integration" @@ -13001,22 +13023,22 @@ ], "support": { "issues": "https://github.com/php-coveralls/php-coveralls/issues", - "source": "https://github.com/php-coveralls/php-coveralls/tree/v2.8.0" + "source": "https://github.com/php-coveralls/php-coveralls/tree/v2.9.0" }, - "time": "2025-05-12T08:35:27+00:00" + "time": "2025-11-06T10:39:48+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "8cce4df9a20660cdc671e8f45ac61959ecdde8e8" + "reference": "9500f939e4b22c40c3d5cca5f10837f2a9c87cb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8cce4df9a20660cdc671e8f45ac61959ecdde8e8", - "reference": "8cce4df9a20660cdc671e8f45ac61959ecdde8e8", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/9500f939e4b22c40c3d5cca5f10837f2a9c87cb0", + "reference": "9500f939e4b22c40c3d5cca5f10837f2a9c87cb0", "shasum": "" }, "require": { @@ -13072,9 +13094,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.23.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.23.1" }, - "time": "2025-10-08T08:50:26+00:00" + "time": "2025-10-27T22:44:31+00:00" }, { "name": "phpspec/prophecy-phpunit", @@ -13520,16 +13542,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.4.1", + "version": "12.4.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fc5413a2e6d240d2f6d9317bdf7f0a24e73de194" + "reference": "a94ea4d26d865875803b23aaf78c3c2c670ea2ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc5413a2e6d240d2f6d9317bdf7f0a24e73de194", - "reference": "fc5413a2e6d240d2f6d9317bdf7f0a24e73de194", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a94ea4d26d865875803b23aaf78c3c2c670ea2ea", + "reference": "a94ea4d26d865875803b23aaf78c3c2c670ea2ea", "shasum": "" }, "require": { @@ -13597,7 +13619,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.4.1" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.4.2" }, "funding": [ { @@ -13621,7 +13643,7 @@ "type": "tidelift" } ], - "time": "2025-10-09T14:08:29+00:00" + "time": "2025-10-30T08:41:39+00:00" }, { "name": "psalm/phar", @@ -14186,16 +14208,16 @@ }, { "name": "rector/rector", - "version": "2.2.3", + "version": "2.2.7", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f" + "reference": "022038537838bc8a4e526af86c2d6e38eaeff7ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/d27f976a332a87b5d03553c2e6f04adbe5da034f", - "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/022038537838bc8a4e526af86c2d6e38eaeff7ef", + "reference": "022038537838bc8a4e526af86c2d6e38eaeff7ef", "shasum": "" }, "require": { @@ -14234,7 +14256,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.2.3" + "source": "https://github.com/rectorphp/rector/tree/2.2.7" }, "funding": [ { @@ -14242,7 +14264,7 @@ "type": "github" } ], - "time": "2025-10-11T21:50:23+00:00" + "time": "2025-10-29T15:46:12+00:00" }, { "name": "sebastian/cli-parser", @@ -15272,16 +15294,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.3.2", + "version": "v7.3.6", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419" + "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f0b889b73a845cddef1d25fe207b37fd04cb5419", - "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e9a9fd604296b17bf90939c3647069f1f16ef04e", + "reference": "e9a9fd604296b17bf90939c3647069f1f16ef04e", "shasum": "" }, "require": { @@ -15320,7 +15342,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.3.2" + "source": "https://github.com/symfony/browser-kit/tree/v7.3.6" }, "funding": [ { @@ -15340,7 +15362,7 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:47:49+00:00" + "time": "2025-11-05T07:57:47+00:00" }, { "name": "symfony/debug-bundle", @@ -15898,5 +15920,5 @@ "ext-iconv": "*" }, "platform-dev": {}, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/api/config/bootstrap.php b/api/config/bootstrap.php index e41d0e73f3..5fc9b9393e 100644 --- a/api/config/bootstrap.php +++ b/api/config/bootstrap.php @@ -11,13 +11,13 @@ // Load cached env vars if the .env.local.php file exists // Run "composer dump-env prod" to create it (requires symfony/flex >=1.2) if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { - (new Dotenv())->usePutenv(false)->populate($env); + new Dotenv()->usePutenv(false)->populate($env); } else { // load all the .env files - (new Dotenv())->usePutenv(false)->loadEnv(dirname(__DIR__).'/.env'); + new Dotenv()->usePutenv(false)->loadEnv(dirname(__DIR__).'/.env'); } $_SERVER += $_ENV; $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; -$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; +$_SERVER['APP_DEBUG'] ??= $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; $_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/api/config/services.yaml b/api/config/services.yaml index cc66b59213..b03a0673c9 100644 --- a/api/config/services.yaml +++ b/api/config/services.yaml @@ -96,6 +96,11 @@ services: App\Serializer\SerializerContextBuilder: decorates: 'api_platform.serializer.context_builder' + ApiPlatform\Metadata\Property\Factory\AttributePropertyMetadataFactory: + decorates: 'api_platform.metadata.property.metadata_factory' + # Reverts change here: https://github.com/api-platform/symfony/compare/v4.1.23...v4.1.24 + decoration_priority: 20 + App\Serializer\PreventAutomaticEmbeddingPropertyMetadataFactory: decorates: 'api_platform.metadata.property.metadata_factory' # Priority should be 1 lower than the one of SerializerPropertyMetadataFactory, see diff --git a/api/migrations/dev-data/Version202201230531.php b/api/migrations/dev-data/Version202201230531.php index 9500c6cfec..39b492f909 100644 --- a/api/migrations/dev-data/Version202201230531.php +++ b/api/migrations/dev-data/Version202201230531.php @@ -10,11 +10,13 @@ require_once __DIR__.'/helpers.php'; final class Version202201230531 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } public function up(Schema $schema): void {} + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202202051218.php b/api/migrations/dev-data/Version202202051218.php index 8fb482c47e..bfd25cc74b 100644 --- a/api/migrations/dev-data/Version202202051218.php +++ b/api/migrations/dev-data/Version202202051218.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202202051218 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202209110752PM.php b/api/migrations/dev-data/Version202209110752PM.php index 9ecd7ac3f8..0c64af4be2 100644 --- a/api/migrations/dev-data/Version202209110752PM.php +++ b/api/migrations/dev-data/Version202209110752PM.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202209110752PM extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202211261414.php b/api/migrations/dev-data/Version202211261414.php index eacd587cb0..09d059e601 100644 --- a/api/migrations/dev-data/Version202211261414.php +++ b/api/migrations/dev-data/Version202211261414.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202211261414 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202305011841.php b/api/migrations/dev-data/Version202305011841.php index 85154ca31f..b2ca807f2f 100644 --- a/api/migrations/dev-data/Version202305011841.php +++ b/api/migrations/dev-data/Version202305011841.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202305011841 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202305092233.php b/api/migrations/dev-data/Version202305092233.php index ece3018c4b..215c28ac2d 100644 --- a/api/migrations/dev-data/Version202305092233.php +++ b/api/migrations/dev-data/Version202305092233.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202305092233 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202306250019.php b/api/migrations/dev-data/Version202306250019.php index 459ef5f5fa..a5213ff166 100644 --- a/api/migrations/dev-data/Version202306250019.php +++ b/api/migrations/dev-data/Version202306250019.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202306250019 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202308081601.php b/api/migrations/dev-data/Version202308081601.php index 6854562c93..38fee8cf3b 100644 --- a/api/migrations/dev-data/Version202308081601.php +++ b/api/migrations/dev-data/Version202308081601.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202308081601 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202309300329.php b/api/migrations/dev-data/Version202309300329.php index d391dd334a..4e8c6e745f 100644 --- a/api/migrations/dev-data/Version202309300329.php +++ b/api/migrations/dev-data/Version202309300329.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202309300329 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202311121726.php b/api/migrations/dev-data/Version202311121726.php index 68ceb90e7d..4698814e1f 100644 --- a/api/migrations/dev-data/Version202311121726.php +++ b/api/migrations/dev-data/Version202311121726.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202311121726 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202311121824.php b/api/migrations/dev-data/Version202311121824.php index 9ddc33c3ed..6969c9c3e5 100644 --- a/api/migrations/dev-data/Version202311121824.php +++ b/api/migrations/dev-data/Version202311121824.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202311121824 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202311261457.php b/api/migrations/dev-data/Version202311261457.php index bc3db2c51a..c58bd28814 100644 --- a/api/migrations/dev-data/Version202311261457.php +++ b/api/migrations/dev-data/Version202311261457.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202311261457 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202312032018.php b/api/migrations/dev-data/Version202312032018.php index 26fb9e8ffd..5c5de93651 100644 --- a/api/migrations/dev-data/Version202312032018.php +++ b/api/migrations/dev-data/Version202312032018.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202312032018 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202404012013.php b/api/migrations/dev-data/Version202404012013.php index 5382861002..17b0f26a7b 100644 --- a/api/migrations/dev-data/Version202404012013.php +++ b/api/migrations/dev-data/Version202404012013.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202404012013 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202404031358.php b/api/migrations/dev-data/Version202404031358.php index 91f5a5bb56..2b0c63c698 100644 --- a/api/migrations/dev-data/Version202404031358.php +++ b/api/migrations/dev-data/Version202404031358.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202404031358 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202404121950.php b/api/migrations/dev-data/Version202404121950.php index da25cf7867..16b540aae2 100644 --- a/api/migrations/dev-data/Version202404121950.php +++ b/api/migrations/dev-data/Version202404121950.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202404121950 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202406211251.php b/api/migrations/dev-data/Version202406211251.php index bf523391e2..74ec70ea17 100644 --- a/api/migrations/dev-data/Version202406211251.php +++ b/api/migrations/dev-data/Version202406211251.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202406211251 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Set color & abbreviation to some profiles'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202409281917.php b/api/migrations/dev-data/Version202409281917.php index d966d4c355..36e6a6d580 100644 --- a/api/migrations/dev-data/Version202409281917.php +++ b/api/migrations/dev-data/Version202409281917.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202409281917 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Set color & abbreviation to some profiles'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202409282323.php b/api/migrations/dev-data/Version202409282323.php index cc87feb683..9bb27c3c64 100644 --- a/api/migrations/dev-data/Version202409282323.php +++ b/api/migrations/dev-data/Version202409282323.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202409282323 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Adjust data for some courses'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202409282339.php b/api/migrations/dev-data/Version202409282339.php index 62021a03ed..9ce5b878fd 100644 --- a/api/migrations/dev-data/Version202409282339.php +++ b/api/migrations/dev-data/Version202409282339.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202409282339 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add J+S course prototype.'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202410111836.php b/api/migrations/dev-data/Version202410111836.php index bb8fba2f40..e927592db6 100644 --- a/api/migrations/dev-data/Version202410111836.php +++ b/api/migrations/dev-data/Version202410111836.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202410111836 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Fix J+S course prototype.'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202504121559.php b/api/migrations/dev-data/Version202504121559.php index 1925b4af4c..e7d57e3641 100644 --- a/api/migrations/dev-data/Version202504121559.php +++ b/api/migrations/dev-data/Version202504121559.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202504121559 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Fix J+S course prototype.'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202504130046.php b/api/migrations/dev-data/Version202504130046.php index 0cf6539310..7df8150e9c 100644 --- a/api/migrations/dev-data/Version202504130046.php +++ b/api/migrations/dev-data/Version202504130046.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202504130046 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add 2nd period to Harry Potter camp'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202504252112.php b/api/migrations/dev-data/Version202504252112.php index ab9e2e0a7f..f64639b6de 100644 --- a/api/migrations/dev-data/Version202504252112.php +++ b/api/migrations/dev-data/Version202504252112.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202504252112 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add 2nd period to Harry Potter camp'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202505151020.php b/api/migrations/dev-data/Version202505151020.php index 647506cc67..e8df7fbf91 100644 --- a/api/migrations/dev-data/Version202505151020.php +++ b/api/migrations/dev-data/Version202505151020.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202505151020 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Move dev data camps one year forward'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202505202216.php b/api/migrations/dev-data/Version202505202216.php index 6e67731ea5..03f90efcf8 100644 --- a/api/migrations/dev-data/Version202505202216.php +++ b/api/migrations/dev-data/Version202505202216.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202505202216 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add 2nd period to Harry Potter camp'; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/dev-data/Version202508132053.php b/api/migrations/dev-data/Version202508132053.php index 53d57017ba..4605a9c5ec 100644 --- a/api/migrations/dev-data/Version202508132053.php +++ b/api/migrations/dev-data/Version202508132053.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202508132053 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add 2nd period to Harry Potter camp'; } @@ -27,5 +28,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/prod-data/Version202210081114PM.php b/api/migrations/prod-data/Version202210081114PM.php index 89b5154190..35f416fb8e 100644 --- a/api/migrations/prod-data/Version202210081114PM.php +++ b/api/migrations/prod-data/Version202210081114PM.php @@ -10,6 +10,7 @@ require_once __DIR__.'/helpers.php'; final class Version202210081114PMPMPM extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -26,5 +27,6 @@ public function up(Schema $schema): void { // END PHP CODE } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/schema/Version20211002102059.php b/api/migrations/schema/Version20211002102059.php index dfc95de704..f7bc56262a 100644 --- a/api/migrations/schema/Version20211002102059.php +++ b/api/migrations/schema/Version20211002102059.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211002102059 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -140,6 +141,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE schedule_entry ADD CONSTRAINT FK_D7785D2C1335E2FC FOREIGN KEY (activityId) REFERENCES activity (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE activity DROP CONSTRAINT FK_AC74095ABF396750'); diff --git a/api/migrations/schema/Version20211003081054.php b/api/migrations/schema/Version20211003081054.php index 6fab1d6b00..38c967839b 100644 --- a/api/migrations/schema/Version20211003081054.php +++ b/api/migrations/schema/Version20211003081054.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211003081054 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE content_node_columnlayout ADD columns JSON DEFAULT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE content_node_columnlayout DROP columns'); diff --git a/api/migrations/schema/Version20211010081640.php b/api/migrations/schema/Version20211010081640.php index 1e81994ee6..e7a3d7a91e 100644 --- a/api/migrations/schema/Version20211010081640.php +++ b/api/migrations/schema/Version20211010081640.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211010081640 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE content_node DROP jsonconfig'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE content_node ADD jsonconfig JSON DEFAULT NULL'); diff --git a/api/migrations/schema/Version20211010091358.php b/api/migrations/schema/Version20211010091358.php index 491e8160ca..64c1aed493 100644 --- a/api/migrations/schema/Version20211010091358.php +++ b/api/migrations/schema/Version20211010091358.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211010091358 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE "user" ALTER state TYPE VARCHAR(16)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE "user" ALTER state DROP NOT NULL'); diff --git a/api/migrations/schema/Version20211030082112.php b/api/migrations/schema/Version20211030082112.php index ba38fd9ce6..d592e383eb 100644 --- a/api/migrations/schema/Version20211030082112.php +++ b/api/migrations/schema/Version20211030082112.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211030082112 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE content_node ADD CONSTRAINT FK_481D058010EE4CEE FOREIGN KEY (parentId) REFERENCES content_node (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE content_node DROP CONSTRAINT fk_481d058010ee4cee'); diff --git a/api/migrations/schema/Version20211030110620.php b/api/migrations/schema/Version20211030110620.php index 1a4dc0983b..26a1e0287b 100644 --- a/api/migrations/schema/Version20211030110620.php +++ b/api/migrations/schema/Version20211030110620.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211030110620 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE abstract_content_node_owner ADD CONSTRAINT FK_8E710AB4F886581C FOREIGN KEY (rootContentNodeId) REFERENCES content_node (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE abstract_content_node_owner DROP CONSTRAINT fk_8e710ab4f886581c'); diff --git a/api/migrations/schema/Version20211125144627.php b/api/migrations/schema/Version20211125144627.php index b7af6cc5e3..fdcffcd9c7 100644 --- a/api/migrations/schema/Version20211125144627.php +++ b/api/migrations/schema/Version20211125144627.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211125144627 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE content_node_storyboard_section RENAME COLUMN pos TO position'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE content_node_multiselect_option RENAME COLUMN position TO pos'); diff --git a/api/migrations/schema/Version20211207143737.php b/api/migrations/schema/Version20211207143737.php index 6eaa8f50ce..e7d451980e 100644 --- a/api/migrations/schema/Version20211207143737.php +++ b/api/migrations/schema/Version20211207143737.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211207143737 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -58,6 +59,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE "user" DROP roles'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('ALTER TABLE "user" ADD email VARCHAR(64)'); $this->addSql('ALTER TABLE "user" ADD username VARCHAR(32)'); diff --git a/api/migrations/schema/Version20211213175935.php b/api/migrations/schema/Version20211213175935.php index d91b025d7f..4584ec703a 100644 --- a/api/migrations/schema/Version20211213175935.php +++ b/api/migrations/schema/Version20211213175935.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211213175935 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE content_node ALTER "position" SET NOT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE content_node ALTER position DROP NOT NULL'); diff --git a/api/migrations/schema/Version20211221131558.php b/api/migrations/schema/Version20211221131558.php index 0eec84577c..acdbc310b7 100644 --- a/api/migrations/schema/Version20211221131558.php +++ b/api/migrations/schema/Version20211221131558.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20211221131558 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE UNIQUE INDEX inviteEmail_camp_unique ON camp_collaboration (inviteEmail, campId)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DROP INDEX user_camp_unique'); diff --git a/api/migrations/schema/Version20220118132859.php b/api/migrations/schema/Version20220118132859.php index a13b80a878..3221518341 100644 --- a/api/migrations/schema/Version20220118132859.php +++ b/api/migrations/schema/Version20220118132859.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220118132859 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Adds initial content types'; } @@ -26,6 +27,7 @@ public function up(Schema $schema): void { $this->addSql('INSERT INTO public.content_type (id, name, active, entityclass, jsonconfig, createtime, updatetime) VALUES (\'1a0f84e322c8\', \'LAThematicArea\', true, \'App\Entity\ContentNode\MultiSelect\', \'{"items":["outdoorTechnique","security","natureAndEnvironment","pioneeringTechnique","campsiteAndSurroundings","preventionAndIntegration"]}\', \'2022-01-18 09:12:56\', \'2022-01-18 09:12:56\');'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DELETE FROM public.content_type WHERE id IN (\'44dcc7493c65\', \'318e064ea0c9\', \'4f0c657fecef\', \'f17470519474\', \'cfccaecd4bad\', \'3ef17bd1df72\', \'1a0f84e322c8\')'); diff --git a/api/migrations/schema/Version20220210070753.php b/api/migrations/schema/Version20220210070753.php index 1de4f1f9da..381172fcdb 100644 --- a/api/migrations/schema/Version20220210070753.php +++ b/api/migrations/schema/Version20220210070753.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220210070753 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Adds OAuth provider id properties'; } @@ -24,6 +25,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE "user" ALTER password DROP NOT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE "user" ALTER password SET NOT NULL'); diff --git a/api/migrations/schema/Version20220222211253.php b/api/migrations/schema/Version20220222211253.php index 3d6a03bfb7..97867a36dc 100644 --- a/api/migrations/schema/Version20220222211253.php +++ b/api/migrations/schema/Version20220222211253.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220222211253 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -22,6 +23,7 @@ public function up(Schema $schema): void { $this->addSql('UPDATE schedule_entry SET endOffset = endOffset + startOffset'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE schedule_entry RENAME COLUMN startOffset TO periodOffset'); diff --git a/api/migrations/schema/Version20220319210543.php b/api/migrations/schema/Version20220319210543.php index 7b9aaca3fe..6ab04b91e1 100644 --- a/api/migrations/schema/Version20220319210543.php +++ b/api/migrations/schema/Version20220319210543.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220319210543 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -22,6 +23,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE UNIQUE INDEX inviteKeyHash_unique ON camp_collaboration (inviteKeyHash)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DROP INDEX inviteKeyHash_unique'); diff --git a/api/migrations/schema/Version20220319211452.php b/api/migrations/schema/Version20220319211452.php index 4a96785329..935d22cb9d 100644 --- a/api/migrations/schema/Version20220319211452.php +++ b/api/migrations/schema/Version20220319211452.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220319211452 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add campCollaboration to MaterialList'; } @@ -22,6 +23,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE INDEX IDX_10A0952D56778C5C ON material_list (campCollaborationId)'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('ALTER TABLE material_list ALTER COLUMN name SET NOT NULL'); $this->addSql('ALTER TABLE material_list DROP CONSTRAINT FK_10A0952D56778C5C'); diff --git a/api/migrations/schema/Version20220321202320.php b/api/migrations/schema/Version20220321202320.php index f0aa86db5a..2b8b3f7e2f 100644 --- a/api/migrations/schema/Version20220321202320.php +++ b/api/migrations/schema/Version20220321202320.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220321202320 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE "user" ADD passwordResetKeyHash VARCHAR(255) DEFAULT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE "user" DROP passwordResetKeyHash'); diff --git a/api/migrations/schema/Version20220416125104.php b/api/migrations/schema/Version20220416125104.php index 40770060fa..68ad906d68 100644 --- a/api/migrations/schema/Version20220416125104.php +++ b/api/migrations/schema/Version20220416125104.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220416125104 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'add indexes for searchable properties'; } @@ -23,6 +24,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE INDEX IDX_D7785D2CA501647F ON schedule_entry (endOffset)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DROP INDEX IDX_D7785D2CA1CB398B'); diff --git a/api/migrations/schema/Version20220417142152.php b/api/migrations/schema/Version20220417142152.php index 18ccaebf7a..8d746b1d66 100644 --- a/api/migrations/schema/Version20220417142152.php +++ b/api/migrations/schema/Version20220417142152.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20220417142152 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Fix schema migration for MaterialList'; } @@ -17,6 +18,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE UNIQUE INDEX UNIQ_10A0952D56778C5C ON material_list (campCollaborationId)'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('DROP INDEX UNIQ_10A0952D56778C5C'); $this->addSql('CREATE INDEX idx_10a0952d56778c5c ON material_list (campcollaborationid)'); diff --git a/api/migrations/schema/Version20220501060227.php b/api/migrations/schema/Version20220501060227.php index 71e8c6628c..7755d4c8d7 100644 --- a/api/migrations/schema/Version20220501060227.php +++ b/api/migrations/schema/Version20220501060227.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220501060227 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -29,6 +30,7 @@ public function up(Schema $schema): void { $this->addSql('DROP INDEX idx_d7785d2c9d468a55'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE INDEX idx_c93898a9d468a55 ON camp_collaboration (createtime)'); diff --git a/api/migrations/schema/Version20220501101420.php b/api/migrations/schema/Version20220501101420.php index 064a47ba47..8b2a030616 100644 --- a/api/migrations/schema/Version20220501101420.php +++ b/api/migrations/schema/Version20220501101420.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220501101420 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -51,6 +52,7 @@ public function up(Schema $schema): void { $this->addSql('DROP TABLE abstract_content_node_owner'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE TABLE abstract_content_node_owner (id VARCHAR(16) NOT NULL, rootcontentnodeid VARCHAR(16) NOT NULL, createtime TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updatetime TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, entitytype VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); diff --git a/api/migrations/schema/Version20220605162133.php b/api/migrations/schema/Version20220605162133.php index 1b7f9c5195..2363645546 100644 --- a/api/migrations/schema/Version20220605162133.php +++ b/api/migrations/schema/Version20220605162133.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220605162133 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE profile ADD untrustedEmailKeyHash VARCHAR(255) DEFAULT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20220611193723.php b/api/migrations/schema/Version20220611193723.php index 1b8b2c97ae..16e9ef50e6 100644 --- a/api/migrations/schema/Version20220611193723.php +++ b/api/migrations/schema/Version20220611193723.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220611193723 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'ContentNode: Change inheritance type from JOINED to SINGLE_TABLE'; } @@ -80,6 +81,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE material_item ADD CONSTRAINT FK_4B73482BD2115263 FOREIGN KEY (materialNodeId) REFERENCES content_node (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs diff --git a/api/migrations/schema/Version20220905205508.php b/api/migrations/schema/Version20220905205508.php index 416df57304..ee051ae2ee 100644 --- a/api/migrations/schema/Version20220905205508.php +++ b/api/migrations/schema/Version20220905205508.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20220905205508 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -23,6 +24,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE INDEX IDX_466EF70C55AA53E2 ON o_auth_state (updateTime)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20221001082012.php b/api/migrations/schema/Version20221001082012.php index 31a45a1350..de99636c42 100644 --- a/api/migrations/schema/Version20221001082012.php +++ b/api/migrations/schema/Version20221001082012.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20221001082012 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Remove username from profile'; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE profile DROP username'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE "profile" ADD username VARCHAR(64) NOT NULL'); diff --git a/api/migrations/schema/Version20221020194510.php b/api/migrations/schema/Version20221020194510.php index 70cf4d0f4c..e2bb12c95a 100644 --- a/api/migrations/schema/Version20221020194510.php +++ b/api/migrations/schema/Version20221020194510.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20221020194510 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Migrate SingleText text -> html and Storyboard column2 -> column2Html'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql("UPDATE content_node cn SET data = (REPLACE(data::TEXT, '\"column2\"', '\"column2Html\"'))::JSONB WHERE cn.strategy='storyboard'"); } + #[\Override] public function down(Schema $schema): void { $this->addSql("UPDATE content_node cn SET data = (REPLACE(data::TEXT, '\"html\"', '\"text\"'))::JSONB WHERE cn.strategy='singletext'"); $this->addSql("UPDATE content_node cn SET data = (REPLACE(data::TEXT, '\"column2Html\"', '\"column2\"'))::JSONB WHERE cn.strategy='storyboard'"); diff --git a/api/migrations/schema/Version20221029182700.php b/api/migrations/schema/Version20221029182700.php index ae263ea8c9..3ec2d4e115 100644 --- a/api/migrations/schema/Version20221029182700.php +++ b/api/migrations/schema/Version20221029182700.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20221029182700 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -19,5 +20,6 @@ public function up(Schema $schema): void { $this->addSql('UPDATE content_node SET slot = null WHERE slot = \'\' and parentId IS NULL'); } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/schema/Version20221030095015.php b/api/migrations/schema/Version20221030095015.php index 81d309d871..f9a523ee5d 100644 --- a/api/migrations/schema/Version20221030095015.php +++ b/api/migrations/schema/Version20221030095015.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20221030095015 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add unique constraint on contentnode (parentid, slot, position)'; } @@ -26,6 +27,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { $this->addSql( <<<'EOF' diff --git a/api/migrations/schema/Version20221108193806.php b/api/migrations/schema/Version20221108193806.php index 3174cc6edd..8eb3cfa5ba 100644 --- a/api/migrations/schema/Version20221108193806.php +++ b/api/migrations/schema/Version20221108193806.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20221108193806 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE UNIQUE INDEX couponKey_unique ON camp (couponKey)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20221204135348.php b/api/migrations/schema/Version20221204135348.php index 704f602963..1b9c516ab8 100644 --- a/api/migrations/schema/Version20221204135348.php +++ b/api/migrations/schema/Version20221204135348.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20221204135348 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE profile ADD jubladbId VARCHAR(255) DEFAULT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE "profile" DROP jubladbId'); diff --git a/api/migrations/schema/Version20230204135941.php b/api/migrations/schema/Version20230204135941.php index 9672fda125..3a2b160519 100644 --- a/api/migrations/schema/Version20230204135941.php +++ b/api/migrations/schema/Version20230204135941.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20230204135941 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Make unique constraint offset_period_idx a deferred constraint'; } @@ -27,6 +28,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { $this->addSql( <<<'EOF' diff --git a/api/migrations/schema/Version20230330160108.php b/api/migrations/schema/Version20230330160108.php index e691f52956..30711419dc 100644 --- a/api/migrations/schema/Version20230330160108.php +++ b/api/migrations/schema/Version20230330160108.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20230330160108 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -26,6 +27,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE camp ADD printYSLogoOnPicasso BOOLEAN DEFAULT false NOT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20230408180319.php b/api/migrations/schema/Version20230408180319.php index 752ac690f8..50e2d70f92 100644 --- a/api/migrations/schema/Version20230408180319.php +++ b/api/migrations/schema/Version20230408180319.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20230408180319 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -27,6 +28,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE INDEX IDX_AC74095A5016EA8D ON activity (progressLabelId)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE activity DROP CONSTRAINT FK_AC74095A5016EA8D'); diff --git a/api/migrations/schema/Version20230409164830.php b/api/migrations/schema/Version20230409164830.php index d40c8783eb..967bebb7ef 100644 --- a/api/migrations/schema/Version20230409164830.php +++ b/api/migrations/schema/Version20230409164830.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20230409164830 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Create ActivityProgressLabels for camps from their prototype'; } @@ -114,5 +115,6 @@ public function up(Schema $schema): void { '); } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/schema/Version20230502191133.php b/api/migrations/schema/Version20230502191133.php index cb62efdb36..5a49fa9585 100644 --- a/api/migrations/schema/Version20230502191133.php +++ b/api/migrations/schema/Version20230502191133.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20230502191133 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add unique constraint on activity_progress_label (campid, position)'; } @@ -26,6 +27,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { $this->addSql( <<<'EOF' diff --git a/api/migrations/schema/Version20230731081633.php b/api/migrations/schema/Version20230731081633.php index e08f611f17..d4c20a6374 100644 --- a/api/migrations/schema/Version20230731081633.php +++ b/api/migrations/schema/Version20230731081633.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20230731081633 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add extension pgcrypto'; } @@ -19,6 +20,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE EXTENSION IF NOT EXISTS pgcrypto'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('DROP EXTENSION IF EXISTS pgcrypto'); } diff --git a/api/migrations/schema/Version20231021145933.php b/api/migrations/schema/Version20231021145933.php index d4db1adece..a513be054a 100644 --- a/api/migrations/schema/Version20231021145933.php +++ b/api/migrations/schema/Version20231021145933.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20231021145933 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Remove couponkey from camp'; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE camp DROP couponkey'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('ALTER TABLE camp ADD couponkey TEXT DEFAULT NULL'); $this->addSql('CREATE UNIQUE INDEX couponkey_unique ON camp (couponkey)'); diff --git a/api/migrations/schema/Version20231111000042.php b/api/migrations/schema/Version20231111000042.php index 8af8156ab0..2f08392781 100644 --- a/api/migrations/schema/Version20231111000042.php +++ b/api/migrations/schema/Version20231111000042.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20231111000042 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add ResponsiveLayout content type'; } @@ -27,6 +28,7 @@ public function up(Schema $schema): void { "); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DELETE FROM public.content_type WHERE id IN (\'a4211c112939\')'); diff --git a/api/migrations/schema/Version20240413142253.php b/api/migrations/schema/Version20240413142253.php index df45ba8763..91f3ad72bc 100644 --- a/api/migrations/schema/Version20240413142253.php +++ b/api/migrations/schema/Version20240413142253.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20240413142253 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add View view_camp_root_content_nodes to fast resolve contentNode-Owner'; } @@ -27,6 +28,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DROP VIEW public.view_camp_root_content_nodes'); diff --git a/api/migrations/schema/Version20240413193546.php b/api/migrations/schema/Version20240413193546.php index 6c150de75d..09b51b268d 100644 --- a/api/migrations/schema/Version20240413193546.php +++ b/api/migrations/schema/Version20240413193546.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20240413193546 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add View view_period_material_items to fast resolve materialItem-Owner'; } @@ -35,6 +36,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DROP VIEW public.view_period_material_items'); diff --git a/api/migrations/schema/Version20240414092957.php b/api/migrations/schema/Version20240414092957.php index 019a977af5..c48002c442 100644 --- a/api/migrations/schema/Version20240414092957.php +++ b/api/migrations/schema/Version20240414092957.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20240414092957 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add View view_user_camps to fast resolve visible camps'; } @@ -29,6 +30,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('DROP VIEW public.view_user_camps'); diff --git a/api/migrations/schema/Version20240416120000.php b/api/migrations/schema/Version20240416120000.php index 1dff7dad94..e3688adefb 100644 --- a/api/migrations/schema/Version20240416120000.php +++ b/api/migrations/schema/Version20240416120000.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20240416120000 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Adds new content types'; } @@ -17,6 +18,7 @@ public function up(Schema $schema): void { $this->addSql('INSERT INTO public.content_type (id, name, active, entityclass, jsonconfig, createtime, updatetime) VALUES (\'5e2028c55ee4\', \'LearningTopics\', true, \'App\Entity\ContentNode\SingleText\', \'[]\', \'2024-04-16 12:00:00\', \'2024-04-16 12:00:00\');'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('DELETE FROM public.content_type WHERE id IN (\'c462edd869f3\', \'5e2028c55ee4\')'); } diff --git a/api/migrations/schema/Version20240507154923.php b/api/migrations/schema/Version20240507154923.php index 048dafca53..aa3d46d30f 100644 --- a/api/migrations/schema/Version20240507154923.php +++ b/api/migrations/schema/Version20240507154923.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240507154923 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add color and abbreviation to camp_collaboration'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE camp_collaboration ADD abbreviation TEXT DEFAULT NULL'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('ALTER TABLE camp_collaboration DROP abbreviation'); $this->addSql('ALTER TABLE camp_collaboration DROP color'); diff --git a/api/migrations/schema/Version20240608215345.php b/api/migrations/schema/Version20240608215345.php index f5addee3d0..4db072a8e8 100644 --- a/api/migrations/schema/Version20240608215345.php +++ b/api/migrations/schema/Version20240608215345.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240608215345 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -24,6 +25,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE checklist ADD CONSTRAINT FK_5C696D2F6D299429 FOREIGN KEY (campId) REFERENCES camp (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20240615180024.php b/api/migrations/schema/Version20240615180024.php index 0b3570cb64..37b5c3815f 100644 --- a/api/migrations/schema/Version20240615180024.php +++ b/api/migrations/schema/Version20240615180024.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240615180024 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add checklist_item table'; } @@ -26,6 +27,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE checklist_item ADD CONSTRAINT FK_99EB20F910EE4CEE FOREIGN KEY (parentId) REFERENCES checklist_item (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20240619081247.php b/api/migrations/schema/Version20240619081247.php index e12627e71a..dfb5e02f42 100644 --- a/api/migrations/schema/Version20240619081247.php +++ b/api/migrations/schema/Version20240619081247.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240619081247 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Remove unused column collaborationacceptedby from camp_collaboration'; } @@ -19,6 +20,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE camp_collaboration DROP collaborationacceptedby'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('ALTER TABLE camp_collaboration ADD collaborationacceptedby TEXT DEFAULT NULL'); } diff --git a/api/migrations/schema/Version20240620104153.php b/api/migrations/schema/Version20240620104153.php index 82cfd58b19..6f0ee0dae6 100644 --- a/api/migrations/schema/Version20240620104153.php +++ b/api/migrations/schema/Version20240620104153.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240620104153 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -25,6 +26,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE checklistnode_checklistitem ADD CONSTRAINT FK_5A2B5B318A09A289 FOREIGN KEY (checklistitem_id) REFERENCES checklist_item (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20240620143000.php b/api/migrations/schema/Version20240620143000.php index 1d61764ed0..706cd55971 100644 --- a/api/migrations/schema/Version20240620143000.php +++ b/api/migrations/schema/Version20240620143000.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20240620143000 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add ChecklistNode content type'; } @@ -27,6 +28,7 @@ public function up(Schema $schema): void { "); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql("DELETE FROM public.content_type WHERE id IN ('a4211c11211c')"); diff --git a/api/migrations/schema/Version20240621060047.php b/api/migrations/schema/Version20240621060047.php index 4f04aa3587..e794b7a46d 100644 --- a/api/migrations/schema/Version20240621060047.php +++ b/api/migrations/schema/Version20240621060047.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240621060047 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add color and abbreviation to profile'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE profile ADD abbreviation TEXT DEFAULT NULL'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('ALTER TABLE profile DROP color'); $this->addSql('ALTER TABLE profile DROP abbreviation'); diff --git a/api/migrations/schema/Version20240817112552.php b/api/migrations/schema/Version20240817112552.php index 48661f82b3..b9e891cb70 100644 --- a/api/migrations/schema/Version20240817112552.php +++ b/api/migrations/schema/Version20240817112552.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240817112552 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Rename camp.name to shortTitle and switch shortTitle with title if shortTitle is longer than 16 characters and title is shorter than shortTitle'; } @@ -22,6 +23,7 @@ public function up(Schema $schema): void { $this->addSql('UPDATE camp SET shortTitle = title, title = shortTitle WHERE char_length(shortTitle) > 16 AND char_length(title) < char_length(shortTitle);'); } + #[\Override] public function down(Schema $schema): void { $this->addSql("UPDATE camp SET shortTitle = '' WHERE shortTitle IS NULL"); $this->addSql('ALTER TABLE camp ALTER shortTitle SET NOT NULL, ALTER shortTitle TYPE VARCHAR(32)'); diff --git a/api/migrations/schema/Version20240817181500.php b/api/migrations/schema/Version20240817181500.php index 3b5b724183..8d29550d3c 100644 --- a/api/migrations/schema/Version20240817181500.php +++ b/api/migrations/schema/Version20240817181500.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240817181500 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Renames safety concept to safety considerations'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql("UPDATE content_type SET name = 'SafetyConsiderations' WHERE name = 'SafetyConcept';"); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql("UPDATE content_type SET name = 'SafetyConcept' WHERE name = 'SafetyConsiderations';"); diff --git a/api/migrations/schema/Version20240912183023.php b/api/migrations/schema/Version20240912183023.php index a702781b5e..e7dd2f72d6 100644 --- a/api/migrations/schema/Version20240912183023.php +++ b/api/migrations/schema/Version20240912183023.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240912183023 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Checklist.IsPrototype'; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE checklist ALTER campid DROP NOT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20240928090159.php b/api/migrations/schema/Version20240928090159.php index a085090be9..4b97c941cc 100644 --- a/api/migrations/schema/Version20240928090159.php +++ b/api/migrations/schema/Version20240928090159.php @@ -13,6 +13,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240928090159 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Insert PBS-Checklist'; } @@ -26,5 +27,6 @@ public function up(Schema $schema): void { } } + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/schema/Version20240928105306.php b/api/migrations/schema/Version20240928105306.php index 31e4193564..b20c3bb742 100644 --- a/api/migrations/schema/Version20240928105306.php +++ b/api/migrations/schema/Version20240928105306.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240928105306 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'checklistitem_checklistid_parentid_position_unique deferrable'; } @@ -31,6 +32,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { $this->addSql( <<<'EOF' diff --git a/api/migrations/schema/Version20240928121040.php b/api/migrations/schema/Version20240928121040.php index 1b00490f56..501ec65ead 100644 --- a/api/migrations/schema/Version20240928121040.php +++ b/api/migrations/schema/Version20240928121040.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20240928121040 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'restricts deletion of checklists to ensure no checklist nodes references a checklist when deleting'; } @@ -21,6 +22,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE checklistnode_checklistitem ADD CONSTRAINT FK_5A2B5B318A09A289 FOREIGN KEY (checklistitem_id) REFERENCES checklist_item (id) ON DELETE RESTRICT NOT DEFERRABLE INITIALLY IMMEDIATE'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('CREATE SCHEMA public'); diff --git a/api/migrations/schema/Version20250114202150.php b/api/migrations/schema/Version20250114202150.php index b06d9fc9e0..67e3812526 100644 --- a/api/migrations/schema/Version20250114202150.php +++ b/api/migrations/schema/Version20250114202150.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20250114202150 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add checklistPrototypeId to checklist'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE checklist ADD checklistPrototypeId VARCHAR(16) DEFAULT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE checklist DROP checklistPrototypeId'); diff --git a/api/migrations/schema/Version20250324224924.php b/api/migrations/schema/Version20250324224924.php index 789a1c61a8..88d593ecf6 100644 --- a/api/migrations/schema/Version20250324224924.php +++ b/api/migrations/schema/Version20250324224924.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20250324224924 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'ContentNode.RootId not nullable'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE content_node ALTER rootId SET NOT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE content_node ALTER rootid DROP NOT NULL'); diff --git a/api/migrations/schema/Version20250412165829.php b/api/migrations/schema/Version20250412165829.php index a9e96369f4..e2d879a2f2 100644 --- a/api/migrations/schema/Version20250412165829.php +++ b/api/migrations/schema/Version20250412165829.php @@ -11,11 +11,13 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20250412165829 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'MaterialItem.MaterialList is nullable'; } public function up(Schema $schema): void {} + #[\Override] public function down(Schema $schema): void {} } diff --git a/api/migrations/schema/Version20250520220800.php b/api/migrations/schema/Version20250520220800.php index d17e2cce50..22ec0802d7 100644 --- a/api/migrations/schema/Version20250520220800.php +++ b/api/migrations/schema/Version20250520220800.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20250520220800 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'MaterialItem.MaterialList is nullable'; } @@ -83,6 +84,7 @@ public function up(Schema $schema): void { SQL); } + #[\Override] public function down(Schema $schema): void { $this->addSql(<<<'SQL' ALTER TABLE material_item ALTER materiallistid SET NOT NULL diff --git a/api/migrations/schema/Version20250625090555.php b/api/migrations/schema/Version20250625090555.php index 2aa317efbf..9eb2210d70 100644 --- a/api/migrations/schema/Version20250625090555.php +++ b/api/migrations/schema/Version20250625090555.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20250625090555 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add comment entity'; } @@ -46,6 +47,7 @@ public function up(Schema $schema): void { SQL); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql(<<<'SQL' diff --git a/api/migrations/schema/Version20250809140557.php b/api/migrations/schema/Version20250809140557.php index aaa3db8ce2..e1f39b3873 100644 --- a/api/migrations/schema/Version20250809140557.php +++ b/api/migrations/schema/Version20250809140557.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20250809140557 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add refresh tokens table'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE UNIQUE INDEX UNIQ_9BACE7E1C74F2195 ON refresh_tokens (refresh_token)'); } + #[\Override] public function down(Schema $schema): void { $this->addSql('DROP TABLE refresh_tokens'); } diff --git a/api/migrations/schema/Version20250821113132.php b/api/migrations/schema/Version20250821113132.php index 99bffa3490..f7fa043488 100644 --- a/api/migrations/schema/Version20250821113132.php +++ b/api/migrations/schema/Version20250821113132.php @@ -8,6 +8,7 @@ use Doctrine\Migrations\AbstractMigration; final class Version20250821113132 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add isShared flag on camps'; } @@ -30,6 +31,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { $this->addSql( <<<'EOF' diff --git a/api/migrations/schema/Version20250903125914.php b/api/migrations/schema/Version20250903125914.php index d0122be5c2..34e901bfa8 100644 --- a/api/migrations/schema/Version20250903125914.php +++ b/api/migrations/schema/Version20250903125914.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20250903125914 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Add sharedSince and sharedBy to camp'; } @@ -23,6 +24,7 @@ public function up(Schema $schema): void { $this->addSql('CREATE INDEX IDX_C19442304B2BC976 ON camp (sharedById)'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE camp DROP CONSTRAINT FK_C19442304B2BC976'); diff --git a/api/migrations/schema/Version20251003000000.php b/api/migrations/schema/Version20251003000000.php index b608a55de1..4d738c9032 100644 --- a/api/migrations/schema/Version20251003000000.php +++ b/api/migrations/schema/Version20251003000000.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20251003000000 extends AbstractMigration { + #[\Override] public function getDescription(): string { return 'Done-Column for MaterialItem'; } @@ -20,6 +21,7 @@ public function up(Schema $schema): void { $this->addSql('ALTER TABLE material_item ADD done BOOLEAN DEFAULT false NOT NULL'); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE material_item DROP done'); diff --git a/api/migrations/schema/Version20251004093025.php b/api/migrations/schema/Version20251004093025.php index e1baefa753..3cd0de34b4 100644 --- a/api/migrations/schema/Version20251004093025.php +++ b/api/migrations/schema/Version20251004093025.php @@ -11,6 +11,7 @@ * Auto-generated Migration: Please modify to your needs! */ final class Version20251004093025 extends AbstractMigration { + #[\Override] public function getDescription(): string { return ''; } @@ -36,6 +37,7 @@ public function up(Schema $schema): void { ); } + #[\Override] public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs $this->addSql( diff --git a/api/rector.php b/api/rector.php index d1a5abcf87..3f72e3e576 100644 --- a/api/rector.php +++ b/api/rector.php @@ -13,6 +13,9 @@ use Rector\Config\RectorConfig; use Rector\DeadCode\Rector\If_\RemoveDeadInstanceOfRector; use Rector\Doctrine\Bundle230\Rector\Class_\AddAnnotationToRepositoryRector; +use Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector; +use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector; +use Rector\Php81\Rector\FuncCall\NullToStrictStringFuncCallArgRector; use Rector\PHPUnit\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector; use Rector\PHPUnit\CodeQuality\Rector\ClassMethod\AddInstanceofAssertForNullableInstanceRector; use Rector\PHPUnit\CodeQuality\Rector\MethodCall\AssertEmptyNullableObjectToAssertInstanceofRector; @@ -34,6 +37,7 @@ ->withComposerBased(doctrine: true, phpunit: true, symfony: true) ->withPreparedSets(deadCode: true, codeQuality: true, privatization: true, rectorPreset: true, phpunitCodeQuality: true, symfonyCodeQuality: true) ->withAttributesSets(all: true) + ->withPhpSets(php84: true) ->withConfiguredRule(RenameFunctionRector::class, [ 'implode' => 'join', 'join' => 'join', @@ -42,6 +46,7 @@ AddAnnotationToRepositoryRector::class, AddInstanceofAssertForNullableInstanceRector::class, AssertEmptyNullableObjectToAssertInstanceofRector::class, + ClosureToArrowFunctionRector::class, CombineIfRector::class, ConstraintOptionsToNamedArgumentsRector::class, DeclareStrictTypesRector::class, @@ -50,11 +55,15 @@ FinalizeTestCaseClassRector::class, FlipTypeControlToUseExclusiveTypeRector::class, LocallyCalledStaticMethodToNonStaticRector::class, + NullToStrictStringFuncCallArgRector::class, PreferPHPUnitThisCallRector::class, RemoveDeadInstanceOfRector::class, SimplifyIfElseToTernaryRector::class, SimplifyIfReturnBoolRector::class, ThrowWithPreviousExceptionRector::class, UseIdenticalOverEqualWithSameTypeRector::class, + ClassPropertyAssignToConstructorPromotionRector::class => [ + __DIR__.'/src/DTO/*', + ], ]) ; diff --git a/api/src/Doctrine/Filter/CampCollaboratorFilter.php b/api/src/Doctrine/Filter/CampCollaboratorFilter.php index cc23257575..c398f3dfea 100644 --- a/api/src/Doctrine/Filter/CampCollaboratorFilter.php +++ b/api/src/Doctrine/Filter/CampCollaboratorFilter.php @@ -17,10 +17,10 @@ use Symfony\Component\Serializer\NameConverter\NameConverterInterface; final class CampCollaboratorFilter extends AbstractFilter { - public const QUERY_PARAM_NAME = 'campCollaborator'; + public const string QUERY_PARAM_NAME = 'campCollaborator'; public function __construct( - private IriConverterInterface $iriConverter, + private readonly IriConverterInterface $iriConverter, ManagerRegistry $managerRegistry, ?LoggerInterface $logger = null, ?array $properties = null, diff --git a/api/src/Doctrine/Filter/ContentNodeCampFilter.php b/api/src/Doctrine/Filter/ContentNodeCampFilter.php index 7263a7bb7e..a374f92b71 100644 --- a/api/src/Doctrine/Filter/ContentNodeCampFilter.php +++ b/api/src/Doctrine/Filter/ContentNodeCampFilter.php @@ -15,10 +15,10 @@ use Symfony\Component\TypeInfo\Type; final class ContentNodeCampFilter extends AbstractFilter { - public const CAMP_QUERY_NAME = 'camp'; + public const string CAMP_QUERY_NAME = 'camp'; public function __construct( - private IriConverterInterface $iriConverter, + private readonly IriConverterInterface $iriConverter, ManagerRegistry $managerRegistry, ?LoggerInterface $logger = null, ?array $properties = null, diff --git a/api/src/Doctrine/Filter/ContentNodeIsRootFilter.php b/api/src/Doctrine/Filter/ContentNodeIsRootFilter.php index 4c39390025..efdb1c2250 100644 --- a/api/src/Doctrine/Filter/ContentNodeIsRootFilter.php +++ b/api/src/Doctrine/Filter/ContentNodeIsRootFilter.php @@ -13,7 +13,7 @@ use Symfony\Component\TypeInfo\Type; final class ContentNodeIsRootFilter extends AbstractFilter { - public const IS_ROOT_QUERY_NAME = 'isRoot'; + public const string IS_ROOT_QUERY_NAME = 'isRoot'; public function __construct( ManagerRegistry $managerRegistry, diff --git a/api/src/Doctrine/Filter/ContentNodePeriodFilter.php b/api/src/Doctrine/Filter/ContentNodePeriodFilter.php index 7f3ba0a474..ed568c8385 100644 --- a/api/src/Doctrine/Filter/ContentNodePeriodFilter.php +++ b/api/src/Doctrine/Filter/ContentNodePeriodFilter.php @@ -16,10 +16,10 @@ use Symfony\Component\TypeInfo\Type; final class ContentNodePeriodFilter extends AbstractFilter { - public const PERIOD_QUERY_NAME = 'period'; + public const string PERIOD_QUERY_NAME = 'period'; public function __construct( - private IriConverterInterface $iriConverter, + private readonly IriConverterInterface $iriConverter, ManagerRegistry $managerRegistry, ?LoggerInterface $logger = null, ?array $properties = null, diff --git a/api/src/Doctrine/Filter/ExpressionDateTimeFilter.php b/api/src/Doctrine/Filter/ExpressionDateTimeFilter.php index 7dedbabc8b..13442d8fff 100644 --- a/api/src/Doctrine/Filter/ExpressionDateTimeFilter.php +++ b/api/src/Doctrine/Filter/ExpressionDateTimeFilter.php @@ -134,7 +134,7 @@ protected function addWhere( ) { try { $value = new \DateTime($value); - } catch (\Exception $e) { + } catch (\Exception) { // Silently ignore this filter if it can not be transformed to a \DateTime $this->logger->notice('Invalid filter ignored', [ 'exception' => new InvalidArgumentException(sprintf('The field "%s" has a wrong date format. Use one accepted by the \DateTime constructor', $field)), diff --git a/api/src/Doctrine/Filter/MaterialItemPeriodFilter.php b/api/src/Doctrine/Filter/MaterialItemPeriodFilter.php index 0b6294d073..24f0a7bcaa 100644 --- a/api/src/Doctrine/Filter/MaterialItemPeriodFilter.php +++ b/api/src/Doctrine/Filter/MaterialItemPeriodFilter.php @@ -15,10 +15,10 @@ use Symfony\Component\TypeInfo\Type; final class MaterialItemPeriodFilter extends AbstractFilter { - public const PERIOD_QUERY_NAME = 'period'; + public const string PERIOD_QUERY_NAME = 'period'; public function __construct( - private IriConverterInterface $iriConverter, + private readonly IriConverterInterface $iriConverter, ManagerRegistry $managerRegistry, ?LoggerInterface $logger = null, ?array $properties = null, diff --git a/api/src/Doctrine/FilterByCurrentUserExtension.php b/api/src/Doctrine/FilterByCurrentUserExtension.php index a2b1f65b39..46cb9fddc5 100644 --- a/api/src/Doctrine/FilterByCurrentUserExtension.php +++ b/api/src/Doctrine/FilterByCurrentUserExtension.php @@ -12,14 +12,8 @@ use Doctrine\ORM\QueryBuilder; use Symfony\Bundle\SecurityBundle\Security; -final class FilterByCurrentUserExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface { - private Security $security; - private EntityManagerInterface $entityManager; - - public function __construct(Security $security, EntityManagerInterface $entityManager) { - $this->security = $security; - $this->entityManager = $entityManager; - } +final readonly class FilterByCurrentUserExtension implements QueryCollectionExtensionInterface, QueryItemExtensionInterface { + public function __construct(private Security $security, private EntityManagerInterface $entityManager) {} public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, ?string $resourceClass = null, ?Operation $operation = null, array $context = []): void { $extraProperties = $operation->getExtraProperties(); diff --git a/api/src/Doctrine/Orm/Extension/FilterEagerLoadingsExtension.php b/api/src/Doctrine/Orm/Extension/FilterEagerLoadingsExtension.php index 0f4b6bf45b..5201a8796b 100644 --- a/api/src/Doctrine/Orm/Extension/FilterEagerLoadingsExtension.php +++ b/api/src/Doctrine/Orm/Extension/FilterEagerLoadingsExtension.php @@ -16,7 +16,7 @@ use Doctrine\ORM\Query\Expr\Orx; use Doctrine\ORM\QueryBuilder; -final class FilterEagerLoadingsExtension implements QueryCollectionExtensionInterface { +final readonly class FilterEagerLoadingsExtension implements QueryCollectionExtensionInterface { public function __construct(private QueryCollectionExtensionInterface $decorated) {} public function applyToCollection( @@ -62,7 +62,7 @@ private function buildAliasMap(EntityManagerInterface $em, ClassMetadata $classM foreach ($joins as $join) { // @var Join $join - list($fromAlias, $fromProperty) = explode('.', $join->getJoin(), 2); + [$fromAlias, $fromProperty] = explode('.', $join->getJoin(), 2); $toAlias = $join->getAlias(); $fromClassMetadata = $aliasMap[$fromAlias][0]; @@ -98,23 +98,11 @@ private function usesAnyToMany($toManyAliases, $wherePart) { } private function usesAnyToManyAndx($toManyAliases, Andx $and) { - foreach ($and->getParts() as $part) { - if ($this->usesAnyToMany($toManyAliases, $part)) { - return true; - } - } - - return false; + return array_any($and->getParts(), fn ($part) => $this->usesAnyToMany($toManyAliases, $part)); } private function usesAnyToManyOrx($toManyAliases, Orx $or) { - foreach ($or->getParts() as $part) { - if ($this->usesAnyToMany($toManyAliases, $part)) { - return true; - } - } - - return false; + return array_any($or->getParts(), fn ($part) => $this->usesAnyToMany($toManyAliases, $part)); } private function usesAnyToManyComparison($toManyAliases, Comparison $comparison) { @@ -124,13 +112,7 @@ private function usesAnyToManyComparison($toManyAliases, Comparison $comparison) } private function usesAnyToManyFunc($toManyAliases, Func $func) { - foreach ($func->getArguments() as $argument) { - if ($this->usesAnyToMany($toManyAliases, $argument)) { - return true; - } - } - - return false; + return array_any($func->getArguments(), fn ($argument) => $this->usesAnyToMany($toManyAliases, $argument)); } private function usesAnyToManyString($toManyAliases, string $comparison) { diff --git a/api/src/Entity/Activity.php b/api/src/Entity/Activity.php index 203ed4a8f7..a8fd58bbcf 100644 --- a/api/src/Entity/Activity.php +++ b/api/src/Entity/Activity.php @@ -144,7 +144,7 @@ class Activity extends BaseEntity implements BelongsToCampInterface { */ #[ApiProperty(example: '/activities/1a2b3c4d')] #[Groups(['create'])] - public ?Activity $copyActivitySource; + public ?Activity $copyActivitySource = null; /** * The current assigned ProgressLabel. diff --git a/api/src/Entity/Camp.php b/api/src/Entity/Camp.php index befb6e2488..8facd686eb 100644 --- a/api/src/Entity/Camp.php +++ b/api/src/Entity/Camp.php @@ -246,7 +246,7 @@ class Camp extends BaseEntity implements BelongsToCampInterface, CopyFromPrototy #[ApiProperty(example: 'SoLa 2022')] #[Groups(['read', 'write'])] #[ORM\Column(type: 'text', nullable: true)] - public ?string $shortTitle; + public ?string $shortTitle = null; /** * The full title of the camp. Used for identifying the camp in lists of camps, so diff --git a/api/src/Entity/Category.php b/api/src/Entity/Category.php index 132f985b6e..32208329ba 100644 --- a/api/src/Entity/Category.php +++ b/api/src/Entity/Category.php @@ -140,7 +140,7 @@ class Category extends BaseEntity implements BelongsToCampInterface, CopyFromPro */ #[ApiProperty(example: '/categories/1a2b3c4d')] #[Groups(['create'])] - public Activity|Category|null $copyCategorySource; + public Activity|Category|null $copyCategorySource = null; /** * The id of the category that was used as a template for creating this category. Internal for now, is @@ -257,25 +257,14 @@ public function removeActivity(Activity $activity): void { } public function getStyledNumber(int $num): string { - switch ($this->numberingStyle) { - case 'a': - return strtolower($this->getAlphaNum($num)); - - case 'A': - return strtoupper($this->getAlphaNum($num)); - - case 'i': - return strtolower($this->getRomanNum($num)); - - case 'I': - return strtoupper($this->getRomanNum($num)); - - case '-': - return ''; - - default: - return strval($num); - } + return match ($this->numberingStyle) { + 'a' => strtolower($this->getAlphaNum($num)), + 'A' => strtoupper($this->getAlphaNum($num)), + 'i' => strtolower($this->getRomanNum($num)), + 'I' => strtoupper($this->getRomanNum($num)), + '-' => '', + default => strval($num), + }; } /** diff --git a/api/src/Entity/Checklist.php b/api/src/Entity/Checklist.php index f5bfb23ea1..5f88870e73 100644 --- a/api/src/Entity/Checklist.php +++ b/api/src/Entity/Checklist.php @@ -96,7 +96,7 @@ class Checklist extends BaseEntity implements BelongsToCampInterface, CopyFromPr */ #[ApiProperty(example: '/checklists/1a2b3c4d')] #[Groups(['create'])] - public ?Checklist $copyChecklistSource; + public ?Checklist $copyChecklistSource = null; /** * All ChecklistItems that belong to this Checklist. diff --git a/api/src/Entity/ContentNode/ChecklistNode.php b/api/src/Entity/ContentNode/ChecklistNode.php index 20da316c49..bfe7baec4a 100644 --- a/api/src/Entity/ContentNode/ChecklistNode.php +++ b/api/src/Entity/ContentNode/ChecklistNode.php @@ -98,6 +98,7 @@ public function removeChecklistItem(ChecklistItem $checklistItem) { * @param ChecklistNode $prototype * @param EntityMap $entityMap */ + #[\Override] public function copyFromPrototype($prototype, $entityMap): void { parent::copyFromPrototype($prototype, $entityMap); diff --git a/api/src/Entity/ContentNode/ColumnLayout.php b/api/src/Entity/ContentNode/ColumnLayout.php index ff52d04a69..1419ac099c 100644 --- a/api/src/Entity/ContentNode/ColumnLayout.php +++ b/api/src/Entity/ContentNode/ColumnLayout.php @@ -112,6 +112,7 @@ public function __construct() { new AssertNoOrphanChildren(), ])] #[Assert\NotNull] + #[\Override] public function getData(): ?array { return parent::getData(); } @@ -143,6 +144,7 @@ public function removeRootDescendant(ContentNode $rootDescendant): self { return $this; } + #[\Override] public function getSupportedSlotNames(): array { $columns = new ArrayCollection($this->getData()['columns']); diff --git a/api/src/Entity/ContentNode/MaterialNode.php b/api/src/Entity/ContentNode/MaterialNode.php index 7259e70ac3..207246030b 100644 --- a/api/src/Entity/ContentNode/MaterialNode.php +++ b/api/src/Entity/ContentNode/MaterialNode.php @@ -70,6 +70,7 @@ public function __construct() { #[ApiProperty(example: null)] #[Groups(['read', 'write'])] #[Assert\IsNull] + #[\Override] public function getData(): ?array { return $this->data; } @@ -104,6 +105,7 @@ public function removeMaterialItem(MaterialItem $materialItem): self { * @param MaterialNode $prototype * @param EntityMap $entityMap */ + #[\Override] public function copyFromPrototype($prototype, $entityMap): void { parent::copyFromPrototype($prototype, $entityMap); diff --git a/api/src/Entity/ContentNode/MultiSelect.php b/api/src/Entity/ContentNode/MultiSelect.php index 0cd381612e..c1b433fab4 100644 --- a/api/src/Entity/ContentNode/MultiSelect.php +++ b/api/src/Entity/ContentNode/MultiSelect.php @@ -87,6 +87,7 @@ class MultiSelect extends ContentNode { #[Assert\IsNull(groups: ['create'])] // create with empty data; default value is populated by data persister #[Assert\NotNull(groups: ['update'])] #[AssertJsonSchema(schema: self::JSON_SCHEMA, groups: ['update'])] + #[\Override] public function getData(): ?array { return $this->data; } diff --git a/api/src/Entity/ContentNode/ResponsiveLayout.php b/api/src/Entity/ContentNode/ResponsiveLayout.php index c3d0fbfc90..8370c2a8d0 100644 --- a/api/src/Entity/ContentNode/ResponsiveLayout.php +++ b/api/src/Entity/ContentNode/ResponsiveLayout.php @@ -105,10 +105,12 @@ public function __construct() { new AssertNoOrphanChildren(), ])] #[Assert\NotNull] + #[\Override] public function getData(): ?array { return parent::getData(); } + #[\Override] public function getSupportedSlotNames(): array { $items = new ArrayCollection($this->getData()['items']); diff --git a/api/src/Entity/ContentNode/SingleText.php b/api/src/Entity/ContentNode/SingleText.php index a98e0b75df..4eaa447bb2 100644 --- a/api/src/Entity/ContentNode/SingleText.php +++ b/api/src/Entity/ContentNode/SingleText.php @@ -79,6 +79,7 @@ public function __construct() { #[Groups(['read', 'write'])] #[AssertJsonSchema(schema: self::JSON_SCHEMA)] #[Assert\NotNull] + #[\Override] public function getData(): ?array { return $this->data; } diff --git a/api/src/Entity/ContentNode/Storyboard.php b/api/src/Entity/ContentNode/Storyboard.php index d4b8eca6e1..b227cf6478 100644 --- a/api/src/Entity/ContentNode/Storyboard.php +++ b/api/src/Entity/ContentNode/Storyboard.php @@ -103,7 +103,8 @@ class Storyboard extends ContentNode { 'position' => 0, ], ]])] #[Groups(['read', 'write'])] #[AssertJsonSchema(schema: self::JSON_SCHEMA)] - #[Assert\NotNull(groups: ['update'])] // if created with empty data, then default value is populated in data persister + #[Assert\NotNull(groups: ['update'])] + #[\Override] // if created with empty data, then default value is populated in data persister public function getData(): ?array { return $this->data; } diff --git a/api/src/Entity/Day.php b/api/src/Entity/Day.php index dae1cb98b3..a52a979482 100644 --- a/api/src/Entity/Day.php +++ b/api/src/Entity/Day.php @@ -157,7 +157,7 @@ public function getStart(): ?\DateTime { $start?->add(new \DateInterval('P'.$this->dayOffset.'D')); return $start; - } catch (\Exception $e) { + } catch (\Exception) { return null; } } @@ -173,7 +173,7 @@ public function getEnd(): ?\DateTime { $end?->add(new \DateInterval('P'.($this->dayOffset + 1).'D')); return $end; - } catch (\Exception $e) { + } catch (\Exception) { return null; } } diff --git a/api/src/EventListener/JWTCreatedListener.php b/api/src/EventListener/JWTCreatedListener.php index 10a14cc343..1cc3243b4a 100644 --- a/api/src/EventListener/JWTCreatedListener.php +++ b/api/src/EventListener/JWTCreatedListener.php @@ -11,7 +11,7 @@ * to know where to fetch personal profile information. */ class JWTCreatedListener { - public function __construct(private Security $security, private IriConverterInterface $iriConverter) {} + public function __construct(private readonly Security $security, private readonly IriConverterInterface $iriConverter) {} public function onJWTCreated(JWTCreatedEvent $event) { $payload = $event->getData(); diff --git a/api/src/EventListener/RequestTransactionListener.php b/api/src/EventListener/RequestTransactionListener.php index c6ba263a36..0310909ff5 100644 --- a/api/src/EventListener/RequestTransactionListener.php +++ b/api/src/EventListener/RequestTransactionListener.php @@ -14,12 +14,12 @@ /** * Wraps a database transaction around all SQL statements in the whole request. */ -final class RequestTransactionListener implements EventSubscriberInterface { +final readonly class RequestTransactionListener implements EventSubscriberInterface { private \SplStack $transactionLevelStack; public function __construct( - private readonly EntityManagerInterface $entityManager, - private readonly LoggerInterface $logger + private EntityManagerInterface $entityManager, + private LoggerInterface $logger ) { $this->transactionLevelStack = new \SplStack(); } diff --git a/api/src/HttpCache/CacheControlListener.php b/api/src/HttpCache/CacheControlListener.php index 494c533494..4c2a58d594 100644 --- a/api/src/HttpCache/CacheControlListener.php +++ b/api/src/HttpCache/CacheControlListener.php @@ -11,7 +11,7 @@ * - caching is disabled (configurable via environment variable API_CACHE_ENABLED) * - total header size is too large to be handled by Varnish (configurable via parameter app.httpCache.maxHeaderSize). */ -final class CacheControlListener { +final readonly class CacheControlListener { private bool $apiCacheEnabled; private int $maxHeaderSize; diff --git a/api/src/HttpCache/PurgeHttpCacheListener.php b/api/src/HttpCache/PurgeHttpCacheListener.php index b4fbff668e..15ad968647 100644 --- a/api/src/HttpCache/PurgeHttpCacheListener.php +++ b/api/src/HttpCache/PurgeHttpCacheListener.php @@ -41,7 +41,7 @@ final readonly class PurgeHttpCacheListener { use ClassInfoTrait; - public const IRI_RELATION_DELIMITER = '#'; + public const string IRI_RELATION_DELIMITER = '#'; public function __construct( private IriConverterInterface $iriConverter, diff --git a/api/src/HttpCache/ResponseTagger.php b/api/src/HttpCache/ResponseTagger.php index 73f6c34a56..bdc5e6c996 100644 --- a/api/src/HttpCache/ResponseTagger.php +++ b/api/src/HttpCache/ResponseTagger.php @@ -14,9 +14,9 @@ */ class ResponseTagger { public function __construct( - private string $matchPath, - private SymfonyResponseTagger $responseTagger, - private RequestStack $requestStack + private readonly string $matchPath, + private readonly SymfonyResponseTagger $responseTagger, + private readonly RequestStack $requestStack ) {} /** diff --git a/api/src/HttpCache/TagCollector.php b/api/src/HttpCache/TagCollector.php index d1e1c84119..f33f4e2fa3 100644 --- a/api/src/HttpCache/TagCollector.php +++ b/api/src/HttpCache/TagCollector.php @@ -17,7 +17,7 @@ class TagCollector implements TagCollectorInterface { public const IRI_RELATION_DELIMITER = '#'; - public function __construct(private ResponseTagger $responseTagger) {} + public function __construct(private readonly ResponseTagger $responseTagger) {} /** * Collect cache tags for cache invalidation. diff --git a/api/src/HttpCache/VarnishProxyClient.php b/api/src/HttpCache/VarnishProxyClient.php index 93206a2829..3ebbbc9270 100644 --- a/api/src/HttpCache/VarnishProxyClient.php +++ b/api/src/HttpCache/VarnishProxyClient.php @@ -12,9 +12,9 @@ * Implementing FOS\HttpCache\ProxyClient\Noop, if caching is disabled or no Varnish URL is set. */ final class VarnishProxyClient extends Varnish { - private bool $apiCacheEnabled; + private readonly bool $apiCacheEnabled; - public function __construct(string $apiCacheEnabled, private string $varnishApiUrl) { + public function __construct(string $apiCacheEnabled, private readonly string $varnishApiUrl) { $this->apiCacheEnabled = filter_var($apiCacheEnabled, FILTER_VALIDATE_BOOLEAN); if ($this->isCacheEnabled()) { @@ -28,6 +28,7 @@ public function __construct(string $apiCacheEnabled, private string $varnishApiU } } + #[\Override] public function ban(array $headers): static { if ($this->isCacheEnabled()) { return parent::ban($headers); @@ -36,6 +37,7 @@ public function ban(array $headers): static { return $this; } + #[\Override] public function banPath($path, $contentType = null, $hosts = null): static { if ($this->isCacheEnabled()) { return parent::banPath($path, $contentType, $hosts); @@ -44,6 +46,7 @@ public function banPath($path, $contentType = null, $hosts = null): static { return $this; } + #[\Override] public function invalidateTags(array $tags): static { if ($this->isCacheEnabled()) { return parent::invalidateTags($tags); @@ -52,6 +55,7 @@ public function invalidateTags(array $tags): static { return $this; } + #[\Override] public function purge($url, array $headers = []): static { if ($this->isCacheEnabled()) { return parent::purge($url, $headers); @@ -60,6 +64,7 @@ public function purge($url, array $headers = []): static { return $this; } + #[\Override] public function refresh($url, array $headers = []): static { if ($this->isCacheEnabled()) { return parent::refresh(${$url}, $headers); @@ -68,6 +73,7 @@ public function refresh($url, array $headers = []): static { return $this; } + #[\Override] public function flush(): int { if ($this->isCacheEnabled()) { return parent::flush(); diff --git a/api/src/InputFilter/CleanHTMLFilter.php b/api/src/InputFilter/CleanHTMLFilter.php index 9eb69724c4..5d3c6b0ff0 100644 --- a/api/src/InputFilter/CleanHTMLFilter.php +++ b/api/src/InputFilter/CleanHTMLFilter.php @@ -3,11 +3,7 @@ namespace App\InputFilter; class CleanHTMLFilter extends InputFilter { - private \HTMLPurifier $htmlPurifier; - - public function __construct(\HTMLPurifier $htmlPurifier) { - $this->htmlPurifier = $htmlPurifier; - } + public function __construct(private readonly \HTMLPurifier $htmlPurifier) {} /** * {@inheritdoc} diff --git a/api/src/InputFilter/FilterAttribute.php b/api/src/InputFilter/FilterAttribute.php index 99a136825c..e55813cc82 100644 --- a/api/src/InputFilter/FilterAttribute.php +++ b/api/src/InputFilter/FilterAttribute.php @@ -12,8 +12,6 @@ * FilterAttribute instances are immutable and serializable. */ abstract class FilterAttribute { - protected int $priority; - /** * Initializes the input filter with options. * @@ -25,9 +23,7 @@ abstract class FilterAttribute { * @param int $priority The priority of this input filter. Higher priorities are executed first. * Priorities are evaluated for the whole entity class at once. */ - public function __construct(array $options = [], int $priority = 0) { - $this->priority = $priority; - + public function __construct(array $options = [], protected int $priority = 0) { foreach ($options as $name => $value) { $this->{$name} = $value; } diff --git a/api/src/InputFilter/InvalidOptionsException.php b/api/src/InputFilter/InvalidOptionsException.php index 2464857995..4857cc84c1 100644 --- a/api/src/InputFilter/InvalidOptionsException.php +++ b/api/src/InputFilter/InvalidOptionsException.php @@ -3,12 +3,8 @@ namespace App\InputFilter; class InvalidOptionsException extends \RuntimeException { - private array $options; - - public function __construct(string $message, array $options) { + public function __construct(string $message, private readonly array $options) { parent::__construct($message); - - $this->options = $options; } public function getOptions() { diff --git a/api/src/Metadata/Resource/Factory/UriTemplateFactory.php b/api/src/Metadata/Resource/Factory/UriTemplateFactory.php index 90dc29c0f9..fc1f953199 100644 --- a/api/src/Metadata/Resource/Factory/UriTemplateFactory.php +++ b/api/src/Metadata/Resource/Factory/UriTemplateFactory.php @@ -25,11 +25,11 @@ class UriTemplateFactory { protected ?array $resourceNameMapping = []; public function __construct( - private ContainerInterface $filterLocator, - private ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, + private readonly ContainerInterface $filterLocator, + private readonly ResourceMetadataCollectionFactoryInterface $resourceMetadataCollectionFactory, ResourceNameCollectionFactoryInterface $resourceNameCollectionFactory, - private IriConverterInterface $iriConverter, - private PaginationOptions $paginationOptions, + private readonly IriConverterInterface $iriConverter, + private readonly PaginationOptions $paginationOptions, ) { foreach ($resourceNameCollectionFactory->create() as $className) { $shortName = $this->resourceMetadataCollectionFactory->create($className)[0]->getShortName(); diff --git a/api/src/OAuth/Hitobito.php b/api/src/OAuth/Hitobito.php index 6fcd1d4f7d..8b038f2d6d 100644 --- a/api/src/OAuth/Hitobito.php +++ b/api/src/OAuth/Hitobito.php @@ -30,10 +30,12 @@ protected function getDefaultScopes(): array { ]; } + #[\Override] protected function getScopeSeparator(): string { return ' '; } + #[\Override] protected function fetchResourceOwnerDetails(AccessToken $token): mixed { $url = $this->getResourceOwnerDetailsUrl($token); @@ -61,6 +63,7 @@ protected function checkResponse(ResponseInterface $response, $data): void { } } + #[\Override] protected function getDefaultHeaders(): array { return [ 'Accept' => 'application/json', diff --git a/api/src/OAuth/JWTStateOAuth2Client.php b/api/src/OAuth/JWTStateOAuth2Client.php index 063f28de8d..153e86f9f8 100644 --- a/api/src/OAuth/JWTStateOAuth2Client.php +++ b/api/src/OAuth/JWTStateOAuth2Client.php @@ -35,12 +35,12 @@ class JWTStateOAuth2Client extends OAuth2Client implements OAuth2ClientInterface public function __construct( AbstractProvider $provider, - private RequestStack $requestStack, - private string $cookiePrefix, - private string $appEnv, - private JWTEncoderInterface $jwtEncoder, - private EntityManagerInterface $entityManager, - private OAuthStateRepository $stateRepository, + private readonly RequestStack $requestStack, + private readonly string $cookiePrefix, + private readonly string $appEnv, + private readonly JWTEncoderInterface $jwtEncoder, + private readonly EntityManagerInterface $entityManager, + private readonly OAuthStateRepository $stateRepository, ) { parent::__construct($provider, $requestStack); @@ -63,6 +63,7 @@ public static function getCookieName($cookiePrefix): string { * * @throws \Exception */ + #[\Override] public function redirect(array $scopes = [], array $options = []): RedirectResponse { $state = bin2hex(random_bytes(16)); $now = time(); @@ -72,7 +73,7 @@ public function redirect(array $scopes = [], array $options = []): RedirectRespo try { $response->headers->setCookie( - Cookie::create($this->getCookieName($this->cookiePrefix)) + Cookie::create(static::getCookieName($this->cookiePrefix)) ->withValue($this->encodeStateJWT(array_merge($options['additionalData'] ?? [], [ 'state' => $state, 'iat' => $now, @@ -83,7 +84,7 @@ public function redirect(array $scopes = [], array $options = []): RedirectRespo ->withSecure('dev' !== $this->appEnv) // in local development, we don't use https ->withExpires($expires) ); - } catch (JWTEncodeFailureException $e) { + } catch (JWTEncodeFailureException) { throw new \LogicException('Could not create a JWT token for storing the state parameter securely'); } @@ -107,8 +108,9 @@ public function redirect(array $scopes = [], array $options = []): RedirectRespo * * @throws IdentityProviderException */ + #[\Override] public function getAccessToken(array $options = []): AccessTokenInterface { - $jwt = $this->getCurrentRequest()->cookies->get($this->getCookieName($this->cookiePrefix)); + $jwt = $this->getCurrentRequest()->cookies->get(static::getCookieName($this->cookiePrefix)); if (null === $jwt) { throw new InvalidStateException('Expired state'); } @@ -122,7 +124,7 @@ public function getAccessToken(array $options = []): AccessTokenInterface { $now = new \DateTime('@'.time()); $persistedState = $this->stateRepository->findOneUnexpiredBy($actualState, $now); - } catch (JWTDecodeFailureException|NonUniqueResultException|NoResultException $e) { + } catch (JWTDecodeFailureException|NonUniqueResultException|NoResultException) { throw new InvalidStateException('Invalid state'); } diff --git a/api/src/OAuth/UrlGeneratorDecorator.php b/api/src/OAuth/UrlGeneratorDecorator.php index f66fb63210..e6fb215991 100644 --- a/api/src/OAuth/UrlGeneratorDecorator.php +++ b/api/src/OAuth/UrlGeneratorDecorator.php @@ -7,8 +7,8 @@ class UrlGeneratorDecorator implements UrlGeneratorInterface { public function __construct( - private UrlGeneratorInterface $decorated, - private string $env + private readonly UrlGeneratorInterface $decorated, + private readonly string $env ) {} public function setContext(RequestContext $context): void { diff --git a/api/src/OpenApi/JwtDecorator.php b/api/src/OpenApi/JwtDecorator.php index 07d97f9a77..757cd893bb 100644 --- a/api/src/OpenApi/JwtDecorator.php +++ b/api/src/OpenApi/JwtDecorator.php @@ -9,7 +9,7 @@ /** * Decorates the OpenApi factory to add API docs for the login endpoint. */ -final class JwtDecorator implements OpenApiFactoryInterface { +final readonly class JwtDecorator implements OpenApiFactoryInterface { public function __construct(private OpenApiFactoryInterface $decorated, private string $cookiePrefix) {} public function __invoke(array $context = []): OpenApi { diff --git a/api/src/OpenApi/OAuthDecorator.php b/api/src/OpenApi/OAuthDecorator.php index cdaea0f5e4..181107eb4b 100644 --- a/api/src/OpenApi/OAuthDecorator.php +++ b/api/src/OpenApi/OAuthDecorator.php @@ -9,7 +9,7 @@ /** * Decorates the OpenApi factory to add API docs for the oauth endpoints. */ -final class OAuthDecorator implements OpenApiFactoryInterface { +final readonly class OAuthDecorator implements OpenApiFactoryInterface { public function __construct(private OpenApiFactoryInterface $decorated) {} public function __invoke(array $context = []): OpenApi { diff --git a/api/src/OpenApi/RefreshTokenDecorator.php b/api/src/OpenApi/RefreshTokenDecorator.php index d65e24416b..177336f817 100644 --- a/api/src/OpenApi/RefreshTokenDecorator.php +++ b/api/src/OpenApi/RefreshTokenDecorator.php @@ -6,7 +6,7 @@ use ApiPlatform\OpenApi\Model; use ApiPlatform\OpenApi\OpenApi; -final class RefreshTokenDecorator implements OpenApiFactoryInterface { +final readonly class RefreshTokenDecorator implements OpenApiFactoryInterface { public function __construct(private OpenApiFactoryInterface $decorated, private string $cookiePrefix) {} public function __invoke(array $context = []): OpenApi { diff --git a/api/src/Repository/ScheduleEntryRepository.php b/api/src/Repository/ScheduleEntryRepository.php index f9cc7f217f..87a87195e2 100644 --- a/api/src/Repository/ScheduleEntryRepository.php +++ b/api/src/Repository/ScheduleEntryRepository.php @@ -23,6 +23,7 @@ public function __construct(ManagerRegistry $registry) { parent::__construct($registry, ScheduleEntry::class); } + #[\Override] public function createQueryBuilder($alias, $indexBy = null): QueryBuilder { $qb = parent::createQueryBuilder($alias, $indexBy); $qb->orderBy($alias.'.period', 'ASC') diff --git a/api/src/Repository/UserRepository.php b/api/src/Repository/UserRepository.php index 0829c2a014..72fd1ff80b 100644 --- a/api/src/Repository/UserRepository.php +++ b/api/src/Repository/UserRepository.php @@ -28,7 +28,7 @@ public function __construct(ManagerRegistry $registry) { */ public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newHashedPassword): void { if (!$user instanceof User) { - throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', \get_class($user))); + throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $user::class)); } $user->password = $newHashedPassword; diff --git a/api/src/Security/OAuth/GoogleAuthenticator.php b/api/src/Security/OAuth/GoogleAuthenticator.php index f9830f4512..69fcfdd668 100644 --- a/api/src/Security/OAuth/GoogleAuthenticator.php +++ b/api/src/Security/OAuth/GoogleAuthenticator.php @@ -25,13 +25,13 @@ class GoogleAuthenticator extends OAuth2Authenticator { public function __construct( - private AuthenticationSuccessHandler $authenticationSuccessHandler, - private string $cookiePrefix, - private ClientRegistry $clientRegistry, - private EntityManagerInterface $entityManager, - private Security $security, - private JWTEncoderInterface $jwtDecoder, - private ClaimInvitationService $claimInvitationService, + private readonly AuthenticationSuccessHandler $authenticationSuccessHandler, + private readonly string $cookiePrefix, + private readonly ClientRegistry $clientRegistry, + private readonly EntityManagerInterface $entityManager, + private readonly Security $security, + private readonly JWTEncoderInterface $jwtDecoder, + private readonly ClaimInvitationService $claimInvitationService, ) {} public function supports(Request $request): ?bool { diff --git a/api/src/Security/OAuth/HitobitoAuthenticator.php b/api/src/Security/OAuth/HitobitoAuthenticator.php index caf28c6fea..a0e6e8f490 100644 --- a/api/src/Security/OAuth/HitobitoAuthenticator.php +++ b/api/src/Security/OAuth/HitobitoAuthenticator.php @@ -26,13 +26,13 @@ class HitobitoAuthenticator extends OAuth2Authenticator { public function __construct( - private AuthenticationSuccessHandler $authenticationSuccessHandler, - private string $cookiePrefix, - private ClientRegistry $clientRegistry, - private EntityManagerInterface $entityManager, - private Security $security, - private JWTEncoderInterface $jwtDecoder, - private ClaimInvitationService $claimInvitationService, + private readonly AuthenticationSuccessHandler $authenticationSuccessHandler, + private readonly string $cookiePrefix, + private readonly ClientRegistry $clientRegistry, + private readonly EntityManagerInterface $entityManager, + private readonly Security $security, + private readonly JWTEncoderInterface $jwtDecoder, + private readonly ClaimInvitationService $claimInvitationService, ) {} public function supports(Request $request): ?bool { diff --git a/api/src/Security/ReCaptcha/ReCaptchaWrapper.php b/api/src/Security/ReCaptcha/ReCaptchaWrapper.php index 1e08abbcee..feb62c0245 100644 --- a/api/src/Security/ReCaptcha/ReCaptchaWrapper.php +++ b/api/src/Security/ReCaptcha/ReCaptchaWrapper.php @@ -7,8 +7,8 @@ class ReCaptchaWrapper { public function __construct( - private string $reCaptchaSecret, - private ReCaptcha $reCaptcha, + private readonly string $reCaptchaSecret, + private readonly ReCaptcha $reCaptcha, ) {} public function verify($response, $remoteIp = null) { diff --git a/api/src/Serializer/Denormalizer/InputFilterDenormalizer.php b/api/src/Serializer/Denormalizer/InputFilterDenormalizer.php index 26ccb8634c..df67d5be69 100644 --- a/api/src/Serializer/Denormalizer/InputFilterDenormalizer.php +++ b/api/src/Serializer/Denormalizer/InputFilterDenormalizer.php @@ -20,7 +20,7 @@ class InputFilterDenormalizer implements DenormalizerInterface, DenormalizerAwar use DenormalizerAwareTrait; use NoCachingSupportTrait; - private const ALREADY_CALLED = 'INPUT_FILTER_DENORMALIZER_ALREADY_CALLED'; + private const string ALREADY_CALLED = 'INPUT_FILTER_DENORMALIZER_ALREADY_CALLED'; private ServiceLocator $inputFilterLocator; diff --git a/api/src/Serializer/Denormalizer/MaterialItemDenormalizer.php b/api/src/Serializer/Denormalizer/MaterialItemDenormalizer.php index 67cf6369d6..b8154e8b3d 100644 --- a/api/src/Serializer/Denormalizer/MaterialItemDenormalizer.php +++ b/api/src/Serializer/Denormalizer/MaterialItemDenormalizer.php @@ -18,7 +18,7 @@ class MaterialItemDenormalizer implements DenormalizerInterface, DenormalizerAwa use DenormalizerAwareTrait; use NoCachingSupportTrait; - private const ALREADY_CALLED = 'MATERIAL_ITEM_DENORMALIZER_ALREADY_CALLED'; + private const string ALREADY_CALLED = 'MATERIAL_ITEM_DENORMALIZER_ALREADY_CALLED'; public function __construct(public RequestStack $requestStack) {} diff --git a/api/src/Serializer/Normalizer/CollectionItemsNormalizer.php b/api/src/Serializer/Normalizer/CollectionItemsNormalizer.php index 88a5c89cc5..bab5ad2b60 100644 --- a/api/src/Serializer/Normalizer/CollectionItemsNormalizer.php +++ b/api/src/Serializer/Normalizer/CollectionItemsNormalizer.php @@ -10,11 +10,7 @@ * under the relation name `items` instead of `item`. */ class CollectionItemsNormalizer implements NormalizerInterface, NormalizerAwareInterface { - private NormalizerInterface $decorated; - - public function __construct(NormalizerInterface $decorated) { - $this->decorated = $decorated; - } + public function __construct(private readonly NormalizerInterface $decorated) {} public function supportsNormalization($data, $format = null, array $context = []): bool { return $this->decorated->supportsNormalization($data, $format, $context); diff --git a/api/src/Serializer/Normalizer/ContentTypeNormalizer.php b/api/src/Serializer/Normalizer/ContentTypeNormalizer.php index 9e434022c2..7620f9bc8d 100644 --- a/api/src/Serializer/Normalizer/ContentTypeNormalizer.php +++ b/api/src/Serializer/Normalizer/ContentTypeNormalizer.php @@ -15,10 +15,10 @@ */ class ContentTypeNormalizer implements NormalizerInterface, SerializerAwareInterface { public function __construct( - private NormalizerInterface $decorated, - private UriTemplate $uriTemplate, - private UriTemplateFactory $uriTemplateFactory, - private IriConverterInterface $iriConverter, + private readonly NormalizerInterface $decorated, + private readonly UriTemplate $uriTemplate, + private readonly UriTemplateFactory $uriTemplateFactory, + private readonly IriConverterInterface $iriConverter, ) {} public function supportsNormalization($data, $format = null, array $context = []): bool { diff --git a/api/src/Serializer/Normalizer/Error/TranslationInfoOfConstraintViolation.php b/api/src/Serializer/Normalizer/Error/TranslationInfoOfConstraintViolation.php index dcedc8f96d..d798f63f81 100644 --- a/api/src/Serializer/Normalizer/Error/TranslationInfoOfConstraintViolation.php +++ b/api/src/Serializer/Normalizer/Error/TranslationInfoOfConstraintViolation.php @@ -7,7 +7,7 @@ class TranslationInfoOfConstraintViolation { public function extract(ConstraintViolationInterface $constraintViolation): TranslationInfo { $constraint = $constraintViolation->getConstraint(); - $constraintClass = get_class($constraint); + $constraintClass = null !== $constraint ? $constraint::class : self::class; $key = str_replace('\\', '.', $constraintClass); $key = strtolower($key); $paramsWithoutCurlyBraces = self::removeCurlyBraces($constraintViolation->getParameters()); diff --git a/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php b/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php index 830f9f8e25..94309845b4 100644 --- a/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php +++ b/api/src/Serializer/Normalizer/RelatedCollectionLinkNormalizer.php @@ -223,7 +223,7 @@ protected function getRelatedCollectionLinkAnnotation(string $className, string $attributes = $method->getAttributes(RelatedCollectionLink::class); return ($attributes[0] ?? null)?->newInstance(); - } catch (\ReflectionException $e) { + } catch (\ReflectionException) { return null; } } diff --git a/api/src/Serializer/Normalizer/UriTemplateNormalizer.php b/api/src/Serializer/Normalizer/UriTemplateNormalizer.php index 0790886f28..abbaa5cd95 100644 --- a/api/src/Serializer/Normalizer/UriTemplateNormalizer.php +++ b/api/src/Serializer/Normalizer/UriTemplateNormalizer.php @@ -13,10 +13,10 @@ */ class UriTemplateNormalizer implements NormalizerInterface { public function __construct( - private NormalizerInterface $decorated, - private EnglishInflector $inflector, - private UriTemplateFactory $uriTemplateFactory, - private UrlGeneratorInterface $urlGenerator, + private readonly NormalizerInterface $decorated, + private readonly EnglishInflector $inflector, + private readonly UriTemplateFactory $uriTemplateFactory, + private readonly UrlGeneratorInterface $urlGenerator, ) {} public function supportsNormalization($data, $format = null, array $context = []): bool { diff --git a/api/src/Serializer/PreventAutomaticEmbeddingPropertyMetadataFactory.php b/api/src/Serializer/PreventAutomaticEmbeddingPropertyMetadataFactory.php index affd0c9cfa..e639246c02 100644 --- a/api/src/Serializer/PreventAutomaticEmbeddingPropertyMetadataFactory.php +++ b/api/src/Serializer/PreventAutomaticEmbeddingPropertyMetadataFactory.php @@ -51,7 +51,7 @@ * 30, so this class should be assigned a priority of 29. * https://github.com/api-platform/core/blob/main/src/Bridge/Symfony/Bundle/Resources/config/metadata/metadata.xml#L65 */ -final class PreventAutomaticEmbeddingPropertyMetadataFactory implements PropertyMetadataFactoryInterface { +final readonly class PreventAutomaticEmbeddingPropertyMetadataFactory implements PropertyMetadataFactoryInterface { public function __construct(private PropertyMetadataFactoryInterface $decorated) {} /** diff --git a/api/src/Serializer/SerializerContextBuilder.php b/api/src/Serializer/SerializerContextBuilder.php index 1d0c370f04..de43e42478 100644 --- a/api/src/Serializer/SerializerContextBuilder.php +++ b/api/src/Serializer/SerializerContextBuilder.php @@ -15,12 +15,8 @@ * settings such as groups are not, because the groups need to be taken into account when * building the payload schemas for the API documentation. */ -final class SerializerContextBuilder implements SerializerContextBuilderInterface { - private SerializerContextBuilderInterface $decorated; - - public function __construct(SerializerContextBuilderInterface $decorated) { - $this->decorated = $decorated; - } +final readonly class SerializerContextBuilder implements SerializerContextBuilderInterface { + public function __construct(private SerializerContextBuilderInterface $decorated) {} public function createFromRequest(Request $request, bool $normalization, ?array $extractedAttributes = null): array { $context = $this->decorated->createFromRequest($request, $normalization, $extractedAttributes); diff --git a/api/src/Service/ClaimInvitationService.php b/api/src/Service/ClaimInvitationService.php index 3e4afa7eb5..536d9ecbdd 100644 --- a/api/src/Service/ClaimInvitationService.php +++ b/api/src/Service/ClaimInvitationService.php @@ -46,7 +46,7 @@ public function claimInvitations(User $user, string $email): void { $invitation->user = $user; $this->em->persist($invitation); $this->em->flush(); - } catch (UniqueConstraintViolationException $e) { + } catch (UniqueConstraintViolationException) { // Even though we already handle this case above, it could still happen due // to race conditions. Just ignore it. $this->em->clear(); diff --git a/api/src/Service/MailService.php b/api/src/Service/MailService.php index dfaa8c0cff..35e14e259b 100644 --- a/api/src/Service/MailService.php +++ b/api/src/Service/MailService.php @@ -7,6 +7,7 @@ use App\Entity\Profile; use App\Entity\User; use Symfony\Bridge\Twig\Mime\TemplatedEmail; +use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Mailer\Exception\TransportExceptionInterface; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Address; @@ -22,13 +23,19 @@ public function __construct( private readonly Environment $twigEnironment, private readonly string $frontendBaseUrl, private readonly string $senderEmail, - private readonly string $senderName = '' + private readonly string $senderName, + private readonly Security $security, ) {} public function sendInviteToCampMail(User $byUser, Camp $camp, string $key, string $emailToInvite): void { - $email = (new TemplatedEmail()) + /** @var User $originator */ + $originator = $this->security->getUser(); + $originatorEmail = $originator->getEmail(); + $originatorName = $originator->getDisplayName(); + $email = new TemplatedEmail() ->from(new Address($this->senderEmail, $this->senderName)) ->to(new Address($emailToInvite)) + ->replyTo(new Address($originatorEmail, $originatorName)) ->subject($this->translator->trans('inviteToCamp.subject', ['campTitle' => $camp->title], self::TRANSLATE_DOMAIN, $byUser->profile->language)) ->htmlTemplate($this->getTemplate('emails/campCollaborationInvite.{language}.html.twig', $byUser)) ->textTemplate($this->getTemplate('emails/campCollaborationInvite.{language}.text.twig', $byUser)) @@ -48,7 +55,7 @@ public function sendInviteToCampMail(User $byUser, Camp $camp, string $key, stri } public function sendUserActivationMail(User $user, string $key): void { - $email = (new TemplatedEmail()) + $email = new TemplatedEmail() ->from(new Address($this->senderEmail, $this->senderName)) ->to(new Address($user->getEmail())) ->subject($this->translator->trans('userActivation.subject', [], self::TRANSLATE_DOMAIN, $user->profile->language)) @@ -68,7 +75,7 @@ public function sendUserActivationMail(User $user, string $key): void { } public function sendPasswordResetLink(User $user, ResetPassword $data): void { - $email = (new TemplatedEmail()) + $email = new TemplatedEmail() ->from(new Address($this->senderEmail, $this->senderName)) ->to(new Address($user->getEmail())) ->subject($this->translator->trans('passwordReset.subject', [], self::TRANSLATE_DOMAIN, $user->profile->language)) @@ -88,7 +95,7 @@ public function sendPasswordResetLink(User $user, ResetPassword $data): void { } public function sendEmailVerificationMail(User $user, Profile $data): void { - $email = (new TemplatedEmail()) + $email = new TemplatedEmail() ->from(new Address($this->senderEmail, $this->senderName)) ->to(new Address($data->untrustedEmail)) ->subject($this->translator->trans('emailVerification.subject', [], self::TRANSLATE_DOMAIN, $user->profile->language)) diff --git a/api/src/State/ActivityCreateProcessor.php b/api/src/State/ActivityCreateProcessor.php index 4906a9007c..703308895f 100644 --- a/api/src/State/ActivityCreateProcessor.php +++ b/api/src/State/ActivityCreateProcessor.php @@ -17,7 +17,7 @@ class ActivityCreateProcessor extends AbstractPersistProcessor { public function __construct( ProcessorInterface $decorated, - private EntityManagerInterface $em + private readonly EntityManagerInterface $em ) { parent::__construct($decorated); } @@ -25,6 +25,7 @@ public function __construct( /** * @param Activity $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): Activity { // @phpstan-ignore nullsafe.neverNull if (!isset($data->category?->rootContentNode)) { @@ -38,7 +39,7 @@ public function onBefore($data, Operation $operation, array $uriVariables = [], $data->camp = $data->category->camp; $rootContentNodePrototype = $data->category->rootContentNode; - if (isset($data->copyActivitySource)) { + if (null !== $data->copyActivitySource) { // CopyActivity Source is set -> copy it's content (rootContentNode) $rootContentNodePrototype = $data->copyActivitySource->rootContentNode; } diff --git a/api/src/State/ActivityRemoveProcessor.php b/api/src/State/ActivityRemoveProcessor.php index b58ea1c405..3faa162bcc 100644 --- a/api/src/State/ActivityRemoveProcessor.php +++ b/api/src/State/ActivityRemoveProcessor.php @@ -15,7 +15,7 @@ class ActivityRemoveProcessor extends AbstractRemoveProcessor { public function __construct( ProcessorInterface $decorated, - private EntityManagerInterface $em, + private readonly EntityManagerInterface $em, ) { parent::__construct($decorated); } diff --git a/api/src/State/CampCollaborationCreateProcessor.php b/api/src/State/CampCollaborationCreateProcessor.php index 172f0a9176..66bd4ef8e3 100644 --- a/api/src/State/CampCollaborationCreateProcessor.php +++ b/api/src/State/CampCollaborationCreateProcessor.php @@ -36,6 +36,7 @@ public function __construct( /** * @param CampCollaboration $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): CampCollaboration { /** @var CampCollaboration $data */ $inviteEmail = $data->user?->getEmail() ?? $data->inviteEmail; diff --git a/api/src/State/CampCollaborationResendInvitationProcessor.php b/api/src/State/CampCollaborationResendInvitationProcessor.php index bd9d259042..14043e800d 100644 --- a/api/src/State/CampCollaborationResendInvitationProcessor.php +++ b/api/src/State/CampCollaborationResendInvitationProcessor.php @@ -29,6 +29,7 @@ public function __construct( /** * @param CampCollaboration $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): CampCollaboration { if (CampCollaboration::STATUS_INVITED == $data->status && $data->getEmail()) { $data->inviteKey = IdGenerator::generateRandomHexString(64); diff --git a/api/src/State/CampCollaborationUpdateProcessor.php b/api/src/State/CampCollaborationUpdateProcessor.php index 6c185be03f..d771fecc44 100644 --- a/api/src/State/CampCollaborationUpdateProcessor.php +++ b/api/src/State/CampCollaborationUpdateProcessor.php @@ -27,13 +27,13 @@ public function __construct( ) { $statusChangeListener = PropertyChangeListener::of( extractProperty: fn (CampCollaboration $data) => $data->status, - beforeAction: fn (CampCollaboration $data) => $this->onBeforeStatusChange($data), - afterAction: fn (CampCollaboration $data) => $this->onAfterStatusChange($data) + beforeAction: $this->onBeforeStatusChange(...), + afterAction: $this->onAfterStatusChange(...) ); $roleChangeListener = PropertyChangeListener::of( extractProperty: fn (CampCollaboration $data) => $data->role, - beforeAction: fn (CampCollaboration $data, CampCollaboration $previous) => $this->onBeforeRoleChange($data, $previous), + beforeAction: $this->onBeforeRoleChange(...), ); parent::__construct( diff --git a/api/src/State/CampCreateProcessor.php b/api/src/State/CampCreateProcessor.php index 10dd6462e4..1f6ff9dabe 100644 --- a/api/src/State/CampCreateProcessor.php +++ b/api/src/State/CampCreateProcessor.php @@ -20,8 +20,8 @@ class CampCreateProcessor extends AbstractPersistProcessor { public function __construct( ProcessorInterface $decorated, - private Security $security, - private EntityManagerInterface $em + private readonly Security $security, + private readonly EntityManagerInterface $em ) { parent::__construct($decorated); } @@ -29,6 +29,7 @@ public function __construct( /** * @param Camp $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): BaseEntity { /** @var User $user */ $user = $this->security->getUser(); diff --git a/api/src/State/CampRemoveProcessor.php b/api/src/State/CampRemoveProcessor.php index 18456b8fdb..2dcfe4be89 100644 --- a/api/src/State/CampRemoveProcessor.php +++ b/api/src/State/CampRemoveProcessor.php @@ -14,7 +14,7 @@ class CampRemoveProcessor extends AbstractRemoveProcessor { public function __construct( ProcessorInterface $decorated, - private EntityManagerInterface $em, + private readonly EntityManagerInterface $em, ) { parent::__construct($decorated); } diff --git a/api/src/State/CampUpdateProcessor.php b/api/src/State/CampUpdateProcessor.php index c1f171df67..7f0fd119ac 100644 --- a/api/src/State/CampUpdateProcessor.php +++ b/api/src/State/CampUpdateProcessor.php @@ -16,11 +16,11 @@ class CampUpdateProcessor extends AbstractPersistProcessor { public function __construct( ProcessorInterface $decorated, - private Security $security, + private readonly Security $security, ) { $sharingChangeListener = PropertyChangeListener::of( extractProperty: fn (Camp $data) => $data->isShared, - beforeAction: fn (Camp $data) => $this->onBeforeSharingStatusChange($data), + beforeAction: $this->onBeforeSharingStatusChange(...), ); parent::__construct( diff --git a/api/src/State/CategoryCreateProcessor.php b/api/src/State/CategoryCreateProcessor.php index 60e3edbc84..54d1013d76 100644 --- a/api/src/State/CategoryCreateProcessor.php +++ b/api/src/State/CategoryCreateProcessor.php @@ -17,7 +17,7 @@ class CategoryCreateProcessor extends AbstractPersistProcessor { public function __construct( ProcessorInterface $decorated, - private EntityManagerInterface $em, + private readonly EntityManagerInterface $em, ) { parent::__construct($decorated); } @@ -25,6 +25,7 @@ public function __construct( /** * @param Category $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): Category { // TODO implement actual prototype cloning and strategy classes, this is just a dummy implementation to // fill the non-nullable field for Doctrine @@ -36,7 +37,7 @@ public function onBefore($data, Operation $operation, array $uriVariables = [], $rootContentNode->data = ['columns' => [['slot' => '1', 'width' => 12]]]; $data->setRootContentNode($rootContentNode); - if (isset($data->copyCategorySource)) { + if (null !== $data->copyCategorySource) { // CopyActivity Source is set -> copy it's content (rootContentNode) $entityMap = new EntityMap($data->camp); $rootContentNode->copyFromPrototype($data->copyCategorySource->getRootContentNode(), $entityMap); diff --git a/api/src/State/CategoryRemoveProcessor.php b/api/src/State/CategoryRemoveProcessor.php index 49fc4d26f7..102149395f 100644 --- a/api/src/State/CategoryRemoveProcessor.php +++ b/api/src/State/CategoryRemoveProcessor.php @@ -14,7 +14,7 @@ class CategoryRemoveProcessor extends AbstractRemoveProcessor { public function __construct( ProcessorInterface $decorated, - private EntityManagerInterface $em, + private readonly EntityManagerInterface $em, ) { parent::__construct($decorated); } diff --git a/api/src/State/ChecklistCreateProcessor.php b/api/src/State/ChecklistCreateProcessor.php index 0e477ab22f..ac94d46830 100644 --- a/api/src/State/ChecklistCreateProcessor.php +++ b/api/src/State/ChecklistCreateProcessor.php @@ -19,8 +19,9 @@ public function __construct(ProcessorInterface $decorated) { /** * @param Checklist $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): Checklist { - if (isset($data->copyChecklistSource)) { + if (null !== $data->copyChecklistSource) { // CopyChecklist Source is set -> copy it's content $entityMap = new EntityMap($data->camp); $data->copyFromPrototype($data->copyChecklistSource, $entityMap); diff --git a/api/src/State/ChecklistItemCollectionProvider.php b/api/src/State/ChecklistItemCollectionProvider.php index 72d3b58732..c244e758d7 100644 --- a/api/src/State/ChecklistItemCollectionProvider.php +++ b/api/src/State/ChecklistItemCollectionProvider.php @@ -13,8 +13,8 @@ */ class ChecklistItemCollectionProvider implements ProviderInterface { public function __construct( - private ProviderInterface $decorated, - private RequestStack $requestStack + private readonly ProviderInterface $decorated, + private readonly RequestStack $requestStack ) {} public function provide(Operation $operation, array $uriVariables = [], array $context = []): array|object|null { diff --git a/api/src/State/CommentCreateProcessor.php b/api/src/State/CommentCreateProcessor.php index cb0fc3273a..8cfb7c50b2 100644 --- a/api/src/State/CommentCreateProcessor.php +++ b/api/src/State/CommentCreateProcessor.php @@ -13,16 +13,14 @@ * @template-extends AbstractPersistProcessor */ class CommentCreateProcessor extends AbstractPersistProcessor { - private Security $security; - - public function __construct(ProcessorInterface $decorated, Security $security) { + public function __construct(ProcessorInterface $decorated, private readonly Security $security) { parent::__construct($decorated); - $this->security = $security; } /** * @param Comment $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): Comment { /** @var User $user */ $user = $this->security->getUser(); diff --git a/api/src/State/ContentNode/ChecklistNodePersistProcessor.php b/api/src/State/ContentNode/ChecklistNodePersistProcessor.php index bdbe6a9f34..fd8b10e95e 100644 --- a/api/src/State/ContentNode/ChecklistNodePersistProcessor.php +++ b/api/src/State/ContentNode/ChecklistNodePersistProcessor.php @@ -13,11 +13,12 @@ class ChecklistNodePersistProcessor extends ContentNodePersistProcessor { public function __construct( ProcessorInterface $decorated, - private ChecklistItemRepository $checklistItemRepository, + private readonly ChecklistItemRepository $checklistItemRepository, ) { parent::__construct($decorated); } + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): ChecklistNode { /** @var ChecklistNode $data */ $data = parent::onBefore($data, $operation, $uriVariables, $context); diff --git a/api/src/State/ContentNode/ContentNodePersistProcessor.php b/api/src/State/ContentNode/ContentNodePersistProcessor.php index c4bdba5c2c..4308e12164 100644 --- a/api/src/State/ContentNode/ContentNodePersistProcessor.php +++ b/api/src/State/ContentNode/ContentNodePersistProcessor.php @@ -16,6 +16,7 @@ class ContentNodePersistProcessor extends AbstractPersistProcessor { /** * @param T $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): ContentNode { /** @var ContentNode $data */ $data = parent::onBefore($data, $operation, $uriVariables, $context); diff --git a/api/src/State/ContentNode/MultiSelectCreateProcessor.php b/api/src/State/ContentNode/MultiSelectCreateProcessor.php index 4fde653b32..9e7dd993f5 100644 --- a/api/src/State/ContentNode/MultiSelectCreateProcessor.php +++ b/api/src/State/ContentNode/MultiSelectCreateProcessor.php @@ -12,6 +12,7 @@ class MultiSelectCreateProcessor extends ContentNodePersistProcessor { /** * @param MultiSelect $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): MultiSelect { $data = parent::onBefore($data, $operation, $uriVariables, $context); diff --git a/api/src/State/ContentNode/SingleTextPersistProcessor.php b/api/src/State/ContentNode/SingleTextPersistProcessor.php index 48327d2821..874d9322ab 100644 --- a/api/src/State/ContentNode/SingleTextPersistProcessor.php +++ b/api/src/State/ContentNode/SingleTextPersistProcessor.php @@ -13,7 +13,7 @@ class SingleTextPersistProcessor extends ContentNodePersistProcessor { public function __construct( ProcessorInterface $decorated, - private CleanHTMLFilter $cleanHTMLFilter, + private readonly CleanHTMLFilter $cleanHTMLFilter, ) { parent::__construct($decorated); } @@ -21,6 +21,7 @@ public function __construct( /** * @param SingleText $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): SingleText { $data = parent::onBefore($data, $operation, $uriVariables, $context); diff --git a/api/src/State/ContentNode/StoryboardPersistProcessor.php b/api/src/State/ContentNode/StoryboardPersistProcessor.php index 23079f61f6..c6f1378eaf 100644 --- a/api/src/State/ContentNode/StoryboardPersistProcessor.php +++ b/api/src/State/ContentNode/StoryboardPersistProcessor.php @@ -16,8 +16,8 @@ class StoryboardPersistProcessor extends ContentNodePersistProcessor { public function __construct( ProcessorInterface $decorated, - private CleanHTMLFilter $cleanHTMLFilter, - private CleanTextFilter $cleanTextFilter + private readonly CleanHTMLFilter $cleanHTMLFilter, + private readonly CleanTextFilter $cleanTextFilter ) { parent::__construct($decorated); } @@ -25,6 +25,7 @@ public function __construct( /** * @param Storyboard $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): Storyboard { $data = parent::onBefore($data, $operation, $uriVariables, $context); diff --git a/api/src/State/ContentNodeCollectionProvider.php b/api/src/State/ContentNodeCollectionProvider.php index 77bdbd1982..b17f616f7d 100644 --- a/api/src/State/ContentNodeCollectionProvider.php +++ b/api/src/State/ContentNodeCollectionProvider.php @@ -13,8 +13,8 @@ */ class ContentNodeCollectionProvider implements ProviderInterface { public function __construct( - private ProviderInterface $decorated, - private RequestStack $requestStack + private readonly ProviderInterface $decorated, + private readonly RequestStack $requestStack ) {} public function provide(Operation $operation, array $uriVariables = [], array $context = []): array|object|null { diff --git a/api/src/State/InvitationAcceptProcessor.php b/api/src/State/InvitationAcceptProcessor.php index acd58a9609..c350fa4162 100644 --- a/api/src/State/InvitationAcceptProcessor.php +++ b/api/src/State/InvitationAcceptProcessor.php @@ -16,10 +16,10 @@ */ class InvitationAcceptProcessor implements ProcessorInterface { public function __construct( - private PasswordHasherFactoryInterface $passwordHasherFactory, - private CampCollaborationRepository $campCollaborationRepository, - private Security $security, - private EntityManagerInterface $em, + private readonly PasswordHasherFactoryInterface $passwordHasherFactory, + private readonly CampCollaborationRepository $campCollaborationRepository, + private readonly Security $security, + private readonly EntityManagerInterface $em, ) {} /** diff --git a/api/src/State/InvitationProvider.php b/api/src/State/InvitationProvider.php index 2179822493..5dece415d6 100644 --- a/api/src/State/InvitationProvider.php +++ b/api/src/State/InvitationProvider.php @@ -18,10 +18,10 @@ */ class InvitationProvider implements ProviderInterface { public function __construct( - private Security $security, - private PasswordHasherFactoryInterface $passwordHasherFactory, - private UserRepository $userRepository, - private CampCollaborationRepository $campCollaborationRepository + private readonly Security $security, + private readonly PasswordHasherFactoryInterface $passwordHasherFactory, + private readonly UserRepository $userRepository, + private readonly CampCollaborationRepository $campCollaborationRepository ) {} /** diff --git a/api/src/State/InvitationRejectProcessor.php b/api/src/State/InvitationRejectProcessor.php index acd65a2acd..bd94040c31 100644 --- a/api/src/State/InvitationRejectProcessor.php +++ b/api/src/State/InvitationRejectProcessor.php @@ -15,9 +15,9 @@ */ class InvitationRejectProcessor implements ProcessorInterface { public function __construct( - private PasswordHasherFactoryInterface $passwordHasherFactory, - private CampCollaborationRepository $campCollaborationRepository, - private EntityManagerInterface $em, + private readonly PasswordHasherFactoryInterface $passwordHasherFactory, + private readonly CampCollaborationRepository $campCollaborationRepository, + private readonly EntityManagerInterface $em, ) {} /** diff --git a/api/src/State/MaterialItemCollectionProvider.php b/api/src/State/MaterialItemCollectionProvider.php index e30c93bbb7..3927e9f592 100644 --- a/api/src/State/MaterialItemCollectionProvider.php +++ b/api/src/State/MaterialItemCollectionProvider.php @@ -13,8 +13,8 @@ */ class MaterialItemCollectionProvider implements ProviderInterface { public function __construct( - private ProviderInterface $decorated, - private RequestStack $requestStack + private readonly ProviderInterface $decorated, + private readonly RequestStack $requestStack ) {} public function provide(Operation $operation, array $uriVariables = [], array $context = []): array|object|null { diff --git a/api/src/State/MaterialItemCreateProcessor.php b/api/src/State/MaterialItemCreateProcessor.php index c77fa47dcd..6401576e90 100644 --- a/api/src/State/MaterialItemCreateProcessor.php +++ b/api/src/State/MaterialItemCreateProcessor.php @@ -18,6 +18,7 @@ public function __construct(ProcessorInterface $decorated) { /** * @param MaterialItem $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): MaterialItem { $data->camp = $data->getCamp(); diff --git a/api/src/State/PeriodPersistProcessor.php b/api/src/State/PeriodPersistProcessor.php index 632b30ba02..d0877e8034 100644 --- a/api/src/State/PeriodPersistProcessor.php +++ b/api/src/State/PeriodPersistProcessor.php @@ -22,6 +22,7 @@ public function __construct( /** * @param Period $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): Period { self::moveDaysAndScheduleEntries($data, $context['previous_data'] ?? null); self::removeExtraDays($data); diff --git a/api/src/State/PersonalInvitationProvider.php b/api/src/State/PersonalInvitationProvider.php index ce62da2af1..61f316f30b 100644 --- a/api/src/State/PersonalInvitationProvider.php +++ b/api/src/State/PersonalInvitationProvider.php @@ -50,9 +50,7 @@ private function provideCollection(): array { } $campCollaborations = $this->campCollaborationRepository->findAllByPersonallyInvitedUser($user); - return array_map(function (CampCollaboration $campCollaboration) { - return $this->toInvitation($campCollaboration); - }, $campCollaborations); + return array_map($this->toInvitation(...), $campCollaborations); } /** diff --git a/api/src/State/ProfileUpdateProcessor.php b/api/src/State/ProfileUpdateProcessor.php index a3360c32c8..a39ea99822 100644 --- a/api/src/State/ProfileUpdateProcessor.php +++ b/api/src/State/ProfileUpdateProcessor.php @@ -27,8 +27,8 @@ class ProfileUpdateProcessor extends AbstractPersistProcessor { public function __construct( ProcessorInterface $decorated, - private PasswordHasherFactoryInterface $pwHasherFactory, - private MailService $mailService, + private readonly PasswordHasherFactoryInterface $pwHasherFactory, + private readonly MailService $mailService, private readonly Security $security, private readonly UserRepository $userRepository, private readonly ClaimInvitationService $claimInvitationService, @@ -39,6 +39,7 @@ public function __construct( /** * @param Profile $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): Profile { $this->emailAddressVerificationPerformed = false; diff --git a/api/src/State/ResetPasswordCreateProcessor.php b/api/src/State/ResetPasswordCreateProcessor.php index ffabb57e39..38f865ca7a 100644 --- a/api/src/State/ResetPasswordCreateProcessor.php +++ b/api/src/State/ResetPasswordCreateProcessor.php @@ -19,11 +19,11 @@ */ class ResetPasswordCreateProcessor implements ProcessorInterface { public function __construct( - private ReCaptchaWrapper $reCaptcha, - private EntityManagerInterface $em, - private UserRepository $userRepository, - private PasswordHasherFactoryInterface $pwHasherFactory, - private MailService $mailService + private readonly ReCaptchaWrapper $reCaptcha, + private readonly EntityManagerInterface $em, + private readonly UserRepository $userRepository, + private readonly PasswordHasherFactoryInterface $pwHasherFactory, + private readonly MailService $mailService ) {} /** diff --git a/api/src/State/ResetPasswordProvider.php b/api/src/State/ResetPasswordProvider.php index 44b0d73381..0f699905f4 100644 --- a/api/src/State/ResetPasswordProvider.php +++ b/api/src/State/ResetPasswordProvider.php @@ -14,8 +14,8 @@ */ class ResetPasswordProvider implements ProviderInterface { public function __construct( - private UserRepository $userRepository, - private PasswordHasherFactoryInterface $pwHasherFactory, + private readonly UserRepository $userRepository, + private readonly PasswordHasherFactoryInterface $pwHasherFactory, ) {} public function provide(Operation $operation, array $uriVariables = [], array $context = []): ?ResetPassword { diff --git a/api/src/State/ResetPasswordUpdateProcessor.php b/api/src/State/ResetPasswordUpdateProcessor.php index 147148a70f..fca4bf9595 100644 --- a/api/src/State/ResetPasswordUpdateProcessor.php +++ b/api/src/State/ResetPasswordUpdateProcessor.php @@ -18,10 +18,10 @@ */ class ResetPasswordUpdateProcessor implements ProcessorInterface { public function __construct( - private ReCaptchaWrapper $reCaptcha, - private EntityManagerInterface $em, - private UserRepository $userRepository, - private PasswordHasherFactoryInterface $pwHasherFactory, + private readonly ReCaptchaWrapper $reCaptcha, + private readonly EntityManagerInterface $em, + private readonly UserRepository $userRepository, + private readonly PasswordHasherFactoryInterface $pwHasherFactory, ) {} /** diff --git a/api/src/State/UserActivateProcessor.php b/api/src/State/UserActivateProcessor.php index 0777a4026b..0d32a3b918 100644 --- a/api/src/State/UserActivateProcessor.php +++ b/api/src/State/UserActivateProcessor.php @@ -23,6 +23,7 @@ public function __construct( /** * @param User $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): User { if ($data->activationKeyHash === md5($data->activationKey)) { $data->state = User::STATE_ACTIVATED; diff --git a/api/src/State/UserCreateProcessor.php b/api/src/State/UserCreateProcessor.php index 7db9ea572f..262ef6f83e 100644 --- a/api/src/State/UserCreateProcessor.php +++ b/api/src/State/UserCreateProcessor.php @@ -18,9 +18,9 @@ class UserCreateProcessor extends AbstractPersistProcessor { public function __construct( ProcessorInterface $decorated, - private ReCaptchaWrapper $reCaptcha, - private UserPasswordHasherInterface $userPasswordHasher, - private MailService $mailService + private readonly ReCaptchaWrapper $reCaptcha, + private readonly UserPasswordHasherInterface $userPasswordHasher, + private readonly MailService $mailService ) { parent::__construct($decorated); } @@ -28,6 +28,7 @@ public function __construct( /** * @param User $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): User { $resp = $this->reCaptcha->verify($data->recaptchaToken); if (!$resp->isSuccess()) { diff --git a/api/src/State/UserUpdateProcessor.php b/api/src/State/UserUpdateProcessor.php index 41361c6b62..d4da84bee7 100644 --- a/api/src/State/UserUpdateProcessor.php +++ b/api/src/State/UserUpdateProcessor.php @@ -14,7 +14,7 @@ class UserUpdateProcessor extends AbstractPersistProcessor { public function __construct( ProcessorInterface $decorated, - private UserPasswordHasherInterface $userPasswordHasher + private readonly UserPasswordHasherInterface $userPasswordHasher ) { parent::__construct($decorated); } @@ -22,6 +22,7 @@ public function __construct( /** * @param User $data */ + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []): User { if ($data->plainPassword) { $data->password = $this->userPasswordHasher->hashPassword($data, $data->plainPassword); diff --git a/api/src/State/Util/AbstractPersistProcessor.php b/api/src/State/Util/AbstractPersistProcessor.php index ba0e70feed..68a809f6c7 100644 --- a/api/src/State/Util/AbstractPersistProcessor.php +++ b/api/src/State/Util/AbstractPersistProcessor.php @@ -15,8 +15,8 @@ abstract class AbstractPersistProcessor implements ProcessorInterface { * @param PropertyChangeListener[] $propertyChangeListeners */ public function __construct( - private ProcessorInterface $decorated, - private array $propertyChangeListeners = [] + private readonly ProcessorInterface $decorated, + private readonly array $propertyChangeListeners = [] ) { foreach ($propertyChangeListeners as $listener) { if (!$listener instanceof PropertyChangeListener) { diff --git a/api/src/State/Util/AbstractRemoveProcessor.php b/api/src/State/Util/AbstractRemoveProcessor.php index 4fbe692625..a443023efb 100644 --- a/api/src/State/Util/AbstractRemoveProcessor.php +++ b/api/src/State/Util/AbstractRemoveProcessor.php @@ -12,7 +12,7 @@ */ abstract class AbstractRemoveProcessor implements ProcessorInterface { public function __construct( - private ProcessorInterface $decorated, + private readonly ProcessorInterface $decorated, ) {} public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []): void { diff --git a/api/src/State/Util/PropertyChangeListener.php b/api/src/State/Util/PropertyChangeListener.php index 702dd0a0d0..b0c6895e58 100644 --- a/api/src/State/Util/PropertyChangeListener.php +++ b/api/src/State/Util/PropertyChangeListener.php @@ -4,9 +4,9 @@ class PropertyChangeListener { private function __construct( - private \Closure $extractProperty, - private \Closure $beforeAction, - private \Closure $afterAction + private readonly \Closure $extractProperty, + private readonly \Closure $beforeAction, + private readonly \Closure $afterAction ) {} /** diff --git a/api/src/Types/Doctrine/UTCDateTimeType.php b/api/src/Types/Doctrine/UTCDateTimeType.php index f7fbe7a38f..6db0ec507d 100644 --- a/api/src/Types/Doctrine/UTCDateTimeType.php +++ b/api/src/Types/Doctrine/UTCDateTimeType.php @@ -34,6 +34,7 @@ class UTCDateTimeType extends DateTimeType { * * @template T */ + #[\Override] public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): ?string { if (null === $value) { return null; @@ -43,7 +44,7 @@ public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform) $value = $value->setTimeZone(self::getUtc()); if ($value instanceof \DateTimeImmutable) { - return (new DateTimeImmutableType())->convertToDatabaseValue($value, $platform); + return new DateTimeImmutableType()->convertToDatabaseValue($value, $platform); } return parent::convertToDatabaseValue($value, $platform); @@ -67,6 +68,7 @@ public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform) * * @template T */ + #[\Override] public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?\DateTime { if (null === $value || $value instanceof \DateTime) { return $value; diff --git a/api/src/Types/Doctrine/UTCDateType.php b/api/src/Types/Doctrine/UTCDateType.php index a3b6054ccd..6b686ac778 100644 --- a/api/src/Types/Doctrine/UTCDateType.php +++ b/api/src/Types/Doctrine/UTCDateType.php @@ -20,13 +20,14 @@ class UTCDateType extends DateType { * * @template T */ + #[\Override] public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform): ?string { if ($value instanceof \DateTime || $value instanceof \DateTimeImmutable) { $value = $value->setTimezone(self::getUtc()); } if ($value instanceof \DateTimeImmutable) { - return (new DateImmutableType())->convertToDatabaseValue($value, $platform); + return new DateImmutableType()->convertToDatabaseValue($value, $platform); } return parent::convertToDatabaseValue($value, $platform); @@ -43,6 +44,7 @@ public function convertToDatabaseValue(mixed $value, AbstractPlatform $platform) * * @template T */ + #[\Override] public function convertToPHPValue(mixed $value, AbstractPlatform $platform): ?\DateTime { if (null === $value || $value instanceof \DateTime) { return $value; diff --git a/api/src/Util/ArrayDeepSort.php b/api/src/Util/ArrayDeepSort.php index 4549a66e97..9397004e4a 100644 --- a/api/src/Util/ArrayDeepSort.php +++ b/api/src/Util/ArrayDeepSort.php @@ -18,7 +18,7 @@ public static function sort(mixed $input): mixed { if (!is_array($input)) { return $input; } - $sorted_children = array_map([ArrayDeepSort::class, 'sort'], $input); + $sorted_children = array_map(ArrayDeepSort::sort(...), $input); if (array_is_list($sorted_children)) { uasort($sorted_children, function ($a, $b) { diff --git a/api/src/Util/CamelPascalNamingStrategy.php b/api/src/Util/CamelPascalNamingStrategy.php index 2d103e8527..2c7d9e58cb 100644 --- a/api/src/Util/CamelPascalNamingStrategy.php +++ b/api/src/Util/CamelPascalNamingStrategy.php @@ -11,6 +11,7 @@ class CamelPascalNamingStrategy extends DefaultNamingStrategy { * * @param string $className the fully-qualified class name */ + #[\Override] public function classToTableName($className): string { return $this->classToSnakeCase($className); } @@ -23,6 +24,7 @@ public function classToTableName($className): string { * @param null|string $className * @param null|string $embeddedClassName */ + #[\Override] public function embeddedFieldToColumnName($propertyName, $embeddedColumnName, $className = null, $embeddedClassName = null): string { return $propertyName.ucfirst($embeddedColumnName); } @@ -33,6 +35,7 @@ public function embeddedFieldToColumnName($propertyName, $embeddedColumnName, $c * @param string $propertyName a property name * @param null|mixed $className */ + #[\Override] public function joinColumnName($propertyName, $className = null): string { return $propertyName.ucfirst($this->referenceColumnName()); } @@ -43,6 +46,7 @@ public function joinColumnName($propertyName, $className = null): string { * @param string $entityName an entity * @param null|string $referencedColumnName a property */ + #[\Override] public function joinKeyColumnName($entityName, $referencedColumnName = null): string { return $this->classToCamelCase($entityName) .ucfirst($referencedColumnName ?: $this->referenceColumnName()); @@ -55,7 +59,7 @@ public function joinKeyColumnName($entityName, $referencedColumnName = null): st * @param string $className */ private function unqualifiedClassName($className): string { - if (false !== strpos($className, '\\')) { + if (str_contains($className, '\\')) { return substr($className, strrpos($className, '\\') + 1); } diff --git a/api/src/Validator/AllowTransition/AssertAllowTransitionsValidator.php b/api/src/Validator/AllowTransition/AssertAllowTransitionsValidator.php index c9c06dbbf0..7c6e8bb9e7 100644 --- a/api/src/Validator/AllowTransition/AssertAllowTransitionsValidator.php +++ b/api/src/Validator/AllowTransition/AssertAllowTransitionsValidator.php @@ -29,7 +29,7 @@ public function validate($value, Constraint $constraint): void { $allFrom = $transitions->map(fn (array $elem) => $elem['from'])->toArray(); $allTo = $transitions->map(fn (array $elem) => $elem['to'])->toArray(); $allTo = array_merge(...array_values($allTo)); - if (!(new ArrayCollection($allTo))->forAll(fn ($_, $to) => in_array($to, $allFrom, true))) { + if (!new ArrayCollection($allTo)->forAll(fn ($_, $to) => in_array($to, $allFrom, true))) { throw new InvalidArgumentException('All to must appear in a from again'); } diff --git a/api/src/Validator/AssertBelongsToSameCamp.php b/api/src/Validator/AssertBelongsToSameCamp.php index d8021caa8e..ca9063cace 100644 --- a/api/src/Validator/AssertBelongsToSameCamp.php +++ b/api/src/Validator/AssertBelongsToSameCamp.php @@ -7,17 +7,15 @@ #[\Attribute] class AssertBelongsToSameCamp extends Constraint { public string $message = 'Must belong to the same camp.'; - public bool $compareToPrevious = false; /** * AssertBelongsToSameCamp constructor. * * @param bool $compareToPrevious in case the camp getter considers the annotated property, use this option (only when updating) */ - public function __construct(?array $options = null, bool $compareToPrevious = false, ?string $message = null, ?array $groups = null, mixed $payload = null) { + public function __construct(?array $options = null, public bool $compareToPrevious = false, ?string $message = null, ?array $groups = null, mixed $payload = null) { parent::__construct($options ?? [], $groups, $payload); $this->message = $message ?? $this->message; - $this->compareToPrevious = $compareToPrevious; } } diff --git a/api/src/Validator/AssertLastCollectionItemIsNotDeletedValidator.php b/api/src/Validator/AssertLastCollectionItemIsNotDeletedValidator.php index 5c430efab5..f2ddddbb91 100644 --- a/api/src/Validator/AssertLastCollectionItemIsNotDeletedValidator.php +++ b/api/src/Validator/AssertLastCollectionItemIsNotDeletedValidator.php @@ -12,8 +12,8 @@ class AssertLastCollectionItemIsNotDeletedValidator extends ConstraintValidator { public function __construct( - private RequestStack $requestStack, - private EntityManagerInterface $em + private readonly RequestStack $requestStack, + private readonly EntityManagerInterface $em ) {} public function validate(mixed $value, Constraint $constraint): void { diff --git a/api/src/Validator/ColumnLayout/AssertColumWidthsSumTo12Validator.php b/api/src/Validator/ColumnLayout/AssertColumWidthsSumTo12Validator.php index 873e06afe2..4c95ed1f89 100644 --- a/api/src/Validator/ColumnLayout/AssertColumWidthsSumTo12Validator.php +++ b/api/src/Validator/ColumnLayout/AssertColumWidthsSumTo12Validator.php @@ -17,11 +17,7 @@ public function validate($value, Constraint $constraint): void { } $columnWidths = array_sum(array_map(function ($col) { - if (isset($col['width'])) { - return $col['width']; - } - - return 0; + return $col['width'] ?? 0; }, $value['columns'])); if (12 !== $columnWidths) { diff --git a/api/src/Validator/ColumnLayout/AssertNoOrphanChildrenValidator.php b/api/src/Validator/ColumnLayout/AssertNoOrphanChildrenValidator.php index 97429936e7..66ee3e112b 100644 --- a/api/src/Validator/ColumnLayout/AssertNoOrphanChildrenValidator.php +++ b/api/src/Validator/ColumnLayout/AssertNoOrphanChildrenValidator.php @@ -36,11 +36,7 @@ public function validate($value, Constraint $constraint): void { } $slots = array_map(function ($col) { - if (isset($col['slot'])) { - return $col['slot']; - } - - return null; + return $col['slot'] ?? null; }, $array); $childSlots = $layout->children->map(function (ContentNode $child) { diff --git a/api/src/Validator/Period/AssertGreaterThanOrEqualToLastScheduleEntryEndValidator.php b/api/src/Validator/Period/AssertGreaterThanOrEqualToLastScheduleEntryEndValidator.php index 77192aa3e0..c5311c914d 100644 --- a/api/src/Validator/Period/AssertGreaterThanOrEqualToLastScheduleEntryEndValidator.php +++ b/api/src/Validator/Period/AssertGreaterThanOrEqualToLastScheduleEntryEndValidator.php @@ -10,7 +10,7 @@ use Symfony\Component\Validator\Exception\UnexpectedValueException; class AssertGreaterThanOrEqualToLastScheduleEntryEndValidator extends ConstraintValidator { - public function __construct(private EntityManagerInterface $em) {} + public function __construct(private readonly EntityManagerInterface $em) {} public function validate($value, Constraint $constraint): void { if (!$constraint instanceof AssertGreaterThanOrEqualToLastScheduleEntryEnd) { diff --git a/api/src/Validator/Period/AssertLessThanOrEqualToEarliestScheduleEntryStartValidator.php b/api/src/Validator/Period/AssertLessThanOrEqualToEarliestScheduleEntryStartValidator.php index 010350087a..e567a9b85e 100644 --- a/api/src/Validator/Period/AssertLessThanOrEqualToEarliestScheduleEntryStartValidator.php +++ b/api/src/Validator/Period/AssertLessThanOrEqualToEarliestScheduleEntryStartValidator.php @@ -10,7 +10,7 @@ use Symfony\Component\Validator\Exception\UnexpectedValueException; class AssertLessThanOrEqualToEarliestScheduleEntryStartValidator extends ConstraintValidator { - public function __construct(private EntityManagerInterface $em) {} + public function __construct(private readonly EntityManagerInterface $em) {} public function validate($value, Constraint $constraint): void { if (!$constraint instanceof AssertLessThanOrEqualToEarliestScheduleEntryStart) { diff --git a/api/src/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidator.php b/api/src/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidator.php index 66fe27c417..f4a59ca800 100644 --- a/api/src/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidator.php +++ b/api/src/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidator.php @@ -34,7 +34,7 @@ public function validate(mixed $value, Constraint $constraint): void { return; } $periods = $camp->getPeriods(); - $overlappingExists = (new ArrayCollection($periods)) + $overlappingExists = new ArrayCollection($periods) ->filter(fn (Period $p) => $p !== $object) ->exists(fn ($_, Period $p) => self::overlaps($value, $p)) ; diff --git a/api/tests/Api/Activities/CreateActivityTest.php b/api/tests/Api/Activities/CreateActivityTest.php index be753bd2e4..8c69667c8e 100644 --- a/api/tests/Api/Activities/CreateActivityTest.php +++ b/api/tests/Api/Activities/CreateActivityTest.php @@ -666,6 +666,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( Activity::class, diff --git a/api/tests/Api/ActivityProgressLabels/CreateActivityProgressLabelTest.php b/api/tests/Api/ActivityProgressLabels/CreateActivityProgressLabelTest.php index 413127b09c..0c1742d050 100644 --- a/api/tests/Api/ActivityProgressLabels/CreateActivityProgressLabelTest.php +++ b/api/tests/Api/ActivityProgressLabels/CreateActivityProgressLabelTest.php @@ -248,6 +248,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( ActivityProgressLabel::class, diff --git a/api/tests/Api/ActivityResponsibles/CreateActivityResponsibleTest.php b/api/tests/Api/ActivityResponsibles/CreateActivityResponsibleTest.php index dc95258860..1f1a4d95a2 100644 --- a/api/tests/Api/ActivityResponsibles/CreateActivityResponsibleTest.php +++ b/api/tests/Api/ActivityResponsibles/CreateActivityResponsibleTest.php @@ -206,6 +206,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( ActivityResponsible::class, diff --git a/api/tests/Api/BaseEntity/CreateBaseEntityTest.php b/api/tests/Api/BaseEntity/CreateBaseEntityTest.php index a626e0161a..e6a9fe69ce 100644 --- a/api/tests/Api/BaseEntity/CreateBaseEntityTest.php +++ b/api/tests/Api/BaseEntity/CreateBaseEntityTest.php @@ -90,6 +90,7 @@ public function testUpdateTimeTimeIsNotWritable() { ]); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []): array { return $this->getExamplePayload(Camp::class, Post::class, $attributes, ['campPrototype'], $except); } diff --git a/api/tests/Api/CampCollaborations/CreateCampCollaborationTest.php b/api/tests/Api/CampCollaborations/CreateCampCollaborationTest.php index be0ea4827b..92b31c2162 100644 --- a/api/tests/Api/CampCollaborations/CreateCampCollaborationTest.php +++ b/api/tests/Api/CampCollaborations/CreateCampCollaborationTest.php @@ -610,6 +610,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( CampCollaboration::class, diff --git a/api/tests/Api/Camps/CreateCampTest.php b/api/tests/Api/Camps/CreateCampTest.php index 15af72536d..625e9851e3 100644 --- a/api/tests/Api/Camps/CreateCampTest.php +++ b/api/tests/Api/Camps/CreateCampTest.php @@ -823,6 +823,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload(Camp::class, Post::class, $attributes, ['campPrototype'], $except); } diff --git a/api/tests/Api/Categories/CreateCategoryTest.php b/api/tests/Api/Categories/CreateCategoryTest.php index e45904e9d0..a604760c2f 100644 --- a/api/tests/Api/Categories/CreateCategoryTest.php +++ b/api/tests/Api/Categories/CreateCategoryTest.php @@ -628,6 +628,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( Category::class, diff --git a/api/tests/Api/ChecklistItems/CreateChecklistItemTest.php b/api/tests/Api/ChecklistItems/CreateChecklistItemTest.php index 5aa5e1b4cc..f4bbccf558 100644 --- a/api/tests/Api/ChecklistItems/CreateChecklistItemTest.php +++ b/api/tests/Api/ChecklistItems/CreateChecklistItemTest.php @@ -293,6 +293,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( ChecklistItem::class, diff --git a/api/tests/Api/Checklists/CreateChecklistTest.php b/api/tests/Api/Checklists/CreateChecklistTest.php index b7e531bbac..0bf26319b0 100644 --- a/api/tests/Api/Checklists/CreateChecklistTest.php +++ b/api/tests/Api/Checklists/CreateChecklistTest.php @@ -373,6 +373,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( Checklist::class, diff --git a/api/tests/Api/Comments/CreateCommentTest.php b/api/tests/Api/Comments/CreateCommentTest.php index ca5d55ac8d..8227d33eaa 100644 --- a/api/tests/Api/Comments/CreateCommentTest.php +++ b/api/tests/Api/Comments/CreateCommentTest.php @@ -164,6 +164,7 @@ public function testCreateCommentFiltersMaliciousHtml() { $this->assertJsonContains($this->getExampleReadPayload(['textHtml' => 'testText'])); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( Comment::class, diff --git a/api/tests/Api/ContentNodes/ChecklistNode/CreateChecklistNodeTest.php b/api/tests/Api/ContentNodes/ChecklistNode/CreateChecklistNodeTest.php index 8d0fd4d8f8..d6783d327b 100644 --- a/api/tests/Api/ContentNodes/ChecklistNode/CreateChecklistNodeTest.php +++ b/api/tests/Api/ContentNodes/ChecklistNode/CreateChecklistNodeTest.php @@ -9,6 +9,7 @@ * @internal */ class CreateChecklistNodeTest extends CreateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); @@ -20,6 +21,7 @@ public function setUp(): void { /** * payload set up. */ + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return parent::getExampleWritePayload( $attributes, diff --git a/api/tests/Api/ContentNodes/ChecklistNode/DeleteChecklistNodeTest.php b/api/tests/Api/ContentNodes/ChecklistNode/DeleteChecklistNodeTest.php index 5089124bcb..833e45aee1 100644 --- a/api/tests/Api/ContentNodes/ChecklistNode/DeleteChecklistNodeTest.php +++ b/api/tests/Api/ContentNodes/ChecklistNode/DeleteChecklistNodeTest.php @@ -8,6 +8,7 @@ * @internal */ class DeleteChecklistNodeTest extends DeleteContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ChecklistNode/ListChecklistNodeTest.php b/api/tests/Api/ContentNodes/ChecklistNode/ListChecklistNodeTest.php index 7a17e87c2c..7cdf36de33 100644 --- a/api/tests/Api/ContentNodes/ChecklistNode/ListChecklistNodeTest.php +++ b/api/tests/Api/ContentNodes/ChecklistNode/ListChecklistNodeTest.php @@ -8,6 +8,7 @@ * @internal */ class ListChecklistNodeTest extends ListContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ChecklistNode/ReadChecklistNodeTest.php b/api/tests/Api/ContentNodes/ChecklistNode/ReadChecklistNodeTest.php index 8f3a806524..b6dd0e6350 100644 --- a/api/tests/Api/ContentNodes/ChecklistNode/ReadChecklistNodeTest.php +++ b/api/tests/Api/ContentNodes/ChecklistNode/ReadChecklistNodeTest.php @@ -8,6 +8,7 @@ * @internal */ class ReadChecklistNodeTest extends ReadContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ChecklistNode/UpdateChecklistNodeTest.php b/api/tests/Api/ContentNodes/ChecklistNode/UpdateChecklistNodeTest.php index 59d0acd2b0..6a09aaecf3 100644 --- a/api/tests/Api/ContentNodes/ChecklistNode/UpdateChecklistNodeTest.php +++ b/api/tests/Api/ContentNodes/ChecklistNode/UpdateChecklistNodeTest.php @@ -9,6 +9,7 @@ * @internal */ class UpdateChecklistNodeTest extends UpdateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ColumnLayout/CreateColumnLayoutTest.php b/api/tests/Api/ContentNodes/ColumnLayout/CreateColumnLayoutTest.php index 5447912374..c79469faa9 100644 --- a/api/tests/Api/ContentNodes/ColumnLayout/CreateColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/ColumnLayout/CreateColumnLayoutTest.php @@ -9,6 +9,7 @@ * @internal */ class CreateColumnLayoutTest extends CreateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); @@ -82,6 +83,7 @@ public function testCreateColumnLayoutRejectsInvalidWidth() { /** * payload set up. */ + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return parent::getExampleWritePayload( array_merge( diff --git a/api/tests/Api/ContentNodes/ColumnLayout/DeleteColumnLayoutTest.php b/api/tests/Api/ContentNodes/ColumnLayout/DeleteColumnLayoutTest.php index 45d49b8a94..f224e25585 100644 --- a/api/tests/Api/ContentNodes/ColumnLayout/DeleteColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/ColumnLayout/DeleteColumnLayoutTest.php @@ -8,6 +8,7 @@ * @internal */ class DeleteColumnLayoutTest extends DeleteContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ColumnLayout/ListColumnLayoutTest.php b/api/tests/Api/ContentNodes/ColumnLayout/ListColumnLayoutTest.php index 0e615e7f04..d4c886041d 100644 --- a/api/tests/Api/ContentNodes/ColumnLayout/ListColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/ColumnLayout/ListColumnLayoutTest.php @@ -8,6 +8,7 @@ * @internal */ class ListColumnLayoutTest extends ListContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ColumnLayout/ReadColumnLayoutTest.php b/api/tests/Api/ContentNodes/ColumnLayout/ReadColumnLayoutTest.php index 14ad4fb44e..08cee388d7 100644 --- a/api/tests/Api/ContentNodes/ColumnLayout/ReadColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/ColumnLayout/ReadColumnLayoutTest.php @@ -9,6 +9,7 @@ * @internal */ class ReadColumnLayoutTest extends ReadContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ColumnLayout/UpdateColumnLayoutTest.php b/api/tests/Api/ContentNodes/ColumnLayout/UpdateColumnLayoutTest.php index 2581c3299e..8197ef72f4 100644 --- a/api/tests/Api/ContentNodes/ColumnLayout/UpdateColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/ColumnLayout/UpdateColumnLayoutTest.php @@ -8,6 +8,7 @@ * @internal */ class UpdateColumnLayoutTest extends UpdateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php b/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php index 951b84ca0d..9f002dec78 100644 --- a/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php +++ b/api/tests/Api/ContentNodes/CreateContentNodeTestCase.php @@ -28,6 +28,7 @@ abstract class CreateContentNodeTestCase extends ECampApiTestCase { protected ContentNode $defaultParent; + #[\Override] public function setUp(): void { parent::setUp(); @@ -314,6 +315,7 @@ public function testCreatePurgesCacheTags() { ], $cacheManager->getInvalidatedTags()); } + #[\Override] protected function getExampleWritePayload($attributes = [], $except = []) { return parent::getExampleWritePayload( array_merge([ diff --git a/api/tests/Api/ContentNodes/DeleteContentNodeTestCase.php b/api/tests/Api/ContentNodes/DeleteContentNodeTestCase.php index c2c32d53da..2ec59807ea 100644 --- a/api/tests/Api/ContentNodes/DeleteContentNodeTestCase.php +++ b/api/tests/Api/ContentNodes/DeleteContentNodeTestCase.php @@ -17,6 +17,7 @@ abstract class DeleteContentNodeTestCase extends ECampApiTestCase { protected BaseEntity $campPrototypeEntity; protected BaseEntity $sharedCampEntity; + #[\Override] public function setUp(): void { parent::setUp(); } diff --git a/api/tests/Api/ContentNodes/ListContentNodeTestCase.php b/api/tests/Api/ContentNodes/ListContentNodeTestCase.php index 5afbe666b1..d61604a75b 100644 --- a/api/tests/Api/ContentNodes/ListContentNodeTestCase.php +++ b/api/tests/Api/ContentNodes/ListContentNodeTestCase.php @@ -26,6 +26,7 @@ abstract class ListContentNodeTestCase extends ECampApiTestCase { protected array $contentNodesCampPrototype = []; protected array $contentNodesCampShared = []; + #[\Override] public function setUp(): void { parent::setUp(); } diff --git a/api/tests/Api/ContentNodes/MaterialNode/CreateMaterialNodeTest.php b/api/tests/Api/ContentNodes/MaterialNode/CreateMaterialNodeTest.php index f6a10b4bb1..09021eedc1 100644 --- a/api/tests/Api/ContentNodes/MaterialNode/CreateMaterialNodeTest.php +++ b/api/tests/Api/ContentNodes/MaterialNode/CreateMaterialNodeTest.php @@ -9,6 +9,7 @@ * @internal */ class CreateMaterialNodeTest extends CreateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MaterialNode/DeleteMaterialNodeTest.php b/api/tests/Api/ContentNodes/MaterialNode/DeleteMaterialNodeTest.php index 54700284a8..09a9fb2065 100644 --- a/api/tests/Api/ContentNodes/MaterialNode/DeleteMaterialNodeTest.php +++ b/api/tests/Api/ContentNodes/MaterialNode/DeleteMaterialNodeTest.php @@ -8,6 +8,7 @@ * @internal */ class DeleteMaterialNodeTest extends DeleteContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MaterialNode/ListMaterialNodeTest.php b/api/tests/Api/ContentNodes/MaterialNode/ListMaterialNodeTest.php index 4b1fc4849d..b50313ef51 100644 --- a/api/tests/Api/ContentNodes/MaterialNode/ListMaterialNodeTest.php +++ b/api/tests/Api/ContentNodes/MaterialNode/ListMaterialNodeTest.php @@ -8,6 +8,7 @@ * @internal */ class ListMaterialNodeTest extends ListContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MaterialNode/ReadMaterialNodeTest.php b/api/tests/Api/ContentNodes/MaterialNode/ReadMaterialNodeTest.php index 99a56e61eb..302063f947 100644 --- a/api/tests/Api/ContentNodes/MaterialNode/ReadMaterialNodeTest.php +++ b/api/tests/Api/ContentNodes/MaterialNode/ReadMaterialNodeTest.php @@ -10,6 +10,7 @@ * @internal */ class ReadMaterialNodeTest extends ReadContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MaterialNode/UpdateMaterialNodeTest.php b/api/tests/Api/ContentNodes/MaterialNode/UpdateMaterialNodeTest.php index f23e5c5fa6..831ec08f86 100644 --- a/api/tests/Api/ContentNodes/MaterialNode/UpdateMaterialNodeTest.php +++ b/api/tests/Api/ContentNodes/MaterialNode/UpdateMaterialNodeTest.php @@ -8,6 +8,7 @@ * @internal */ class UpdateMaterialNodeTest extends UpdateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MultiSelect/CreateMultiSelectTest.php b/api/tests/Api/ContentNodes/MultiSelect/CreateMultiSelectTest.php index 42d60df2c8..b6a613d64e 100644 --- a/api/tests/Api/ContentNodes/MultiSelect/CreateMultiSelectTest.php +++ b/api/tests/Api/ContentNodes/MultiSelect/CreateMultiSelectTest.php @@ -9,6 +9,7 @@ * @internal */ class CreateMultiSelectTest extends CreateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); @@ -56,6 +57,7 @@ public function testCreateDoesNotAcceptOptions() { ]); } + #[\Override] protected function getExampleWritePayload($attributes = [], $except = []) { return parent::getExampleWritePayload( array_merge([ diff --git a/api/tests/Api/ContentNodes/MultiSelect/DeleteMultiSelectTest.php b/api/tests/Api/ContentNodes/MultiSelect/DeleteMultiSelectTest.php index ccdec1b75a..2eeb57852e 100644 --- a/api/tests/Api/ContentNodes/MultiSelect/DeleteMultiSelectTest.php +++ b/api/tests/Api/ContentNodes/MultiSelect/DeleteMultiSelectTest.php @@ -8,6 +8,7 @@ * @internal */ class DeleteMultiSelectTest extends DeleteContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MultiSelect/ListMultiSelectTest.php b/api/tests/Api/ContentNodes/MultiSelect/ListMultiSelectTest.php index d7daa12ea4..9dc6e7efd5 100644 --- a/api/tests/Api/ContentNodes/MultiSelect/ListMultiSelectTest.php +++ b/api/tests/Api/ContentNodes/MultiSelect/ListMultiSelectTest.php @@ -8,6 +8,7 @@ * @internal */ class ListMultiSelectTest extends ListContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MultiSelect/ReadMultiSelectTest.php b/api/tests/Api/ContentNodes/MultiSelect/ReadMultiSelectTest.php index a0781fd9a4..63ebd5c80e 100644 --- a/api/tests/Api/ContentNodes/MultiSelect/ReadMultiSelectTest.php +++ b/api/tests/Api/ContentNodes/MultiSelect/ReadMultiSelectTest.php @@ -9,6 +9,7 @@ * @internal */ class ReadMultiSelectTest extends ReadContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/MultiSelect/UpdateMultiSelectTest.php b/api/tests/Api/ContentNodes/MultiSelect/UpdateMultiSelectTest.php index 87d89a8cf8..fa83055525 100644 --- a/api/tests/Api/ContentNodes/MultiSelect/UpdateMultiSelectTest.php +++ b/api/tests/Api/ContentNodes/MultiSelect/UpdateMultiSelectTest.php @@ -8,6 +8,7 @@ * @internal */ class UpdateMultiSelectTest extends UpdateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ReadContentNodeTestCase.php b/api/tests/Api/ContentNodes/ReadContentNodeTestCase.php index 3300307e44..b692aece64 100644 --- a/api/tests/Api/ContentNodes/ReadContentNodeTestCase.php +++ b/api/tests/Api/ContentNodes/ReadContentNodeTestCase.php @@ -17,6 +17,7 @@ abstract class ReadContentNodeTestCase extends ECampApiTestCase { protected BaseEntity $campPrototypeEntity; protected BaseEntity $sharedCampEntity; + #[\Override] public function setUp(): void { parent::setUp(); } diff --git a/api/tests/Api/ContentNodes/ResponsiveLayout/CreateResponsiveLayoutTest.php b/api/tests/Api/ContentNodes/ResponsiveLayout/CreateResponsiveLayoutTest.php index 0f28a337fc..c43c081e82 100644 --- a/api/tests/Api/ContentNodes/ResponsiveLayout/CreateResponsiveLayoutTest.php +++ b/api/tests/Api/ContentNodes/ResponsiveLayout/CreateResponsiveLayoutTest.php @@ -9,6 +9,7 @@ * @internal */ class CreateResponsiveLayoutTest extends CreateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); @@ -64,6 +65,7 @@ public function testCreateResponsiveLayoutRejectsInvalidJson() { /** * payload set up. */ + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return parent::getExampleWritePayload( array_merge( diff --git a/api/tests/Api/ContentNodes/ResponsiveLayout/DeleteResponsiveLayoutTest.php b/api/tests/Api/ContentNodes/ResponsiveLayout/DeleteResponsiveLayoutTest.php index 336e7b5b29..8cb39c9669 100644 --- a/api/tests/Api/ContentNodes/ResponsiveLayout/DeleteResponsiveLayoutTest.php +++ b/api/tests/Api/ContentNodes/ResponsiveLayout/DeleteResponsiveLayoutTest.php @@ -8,6 +8,7 @@ * @internal */ class DeleteResponsiveLayoutTest extends DeleteContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ResponsiveLayout/ListResponsiveLayoutTest.php b/api/tests/Api/ContentNodes/ResponsiveLayout/ListResponsiveLayoutTest.php index faefe405a9..c448f63684 100644 --- a/api/tests/Api/ContentNodes/ResponsiveLayout/ListResponsiveLayoutTest.php +++ b/api/tests/Api/ContentNodes/ResponsiveLayout/ListResponsiveLayoutTest.php @@ -8,6 +8,7 @@ * @internal */ class ListResponsiveLayoutTest extends ListContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ResponsiveLayout/ReadResponsiveLayoutTest.php b/api/tests/Api/ContentNodes/ResponsiveLayout/ReadResponsiveLayoutTest.php index b5986404e3..0bc798c7ad 100644 --- a/api/tests/Api/ContentNodes/ResponsiveLayout/ReadResponsiveLayoutTest.php +++ b/api/tests/Api/ContentNodes/ResponsiveLayout/ReadResponsiveLayoutTest.php @@ -9,6 +9,7 @@ * @internal */ class ReadResponsiveLayoutTest extends ReadContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/ResponsiveLayout/UpdateResponsiveLayoutTest.php b/api/tests/Api/ContentNodes/ResponsiveLayout/UpdateResponsiveLayoutTest.php index 5ea57fa5b6..787f805060 100644 --- a/api/tests/Api/ContentNodes/ResponsiveLayout/UpdateResponsiveLayoutTest.php +++ b/api/tests/Api/ContentNodes/ResponsiveLayout/UpdateResponsiveLayoutTest.php @@ -8,6 +8,7 @@ * @internal */ class UpdateResponsiveLayoutTest extends UpdateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/RootColumnLayout/CreateRootColumnLayoutTest.php b/api/tests/Api/ContentNodes/RootColumnLayout/CreateRootColumnLayoutTest.php index 213500543d..52f915a403 100644 --- a/api/tests/Api/ContentNodes/RootColumnLayout/CreateRootColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/RootColumnLayout/CreateRootColumnLayoutTest.php @@ -17,6 +17,7 @@ class CreateRootColumnLayoutTest extends ECampApiTestCase { protected ContentNode $defaultParent; + #[\Override] public function setUp(): void { parent::setUp(); @@ -80,6 +81,7 @@ public function testCreateColumnLayoutValidatesMissingContentType() { /** * payload set up. */ + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return parent::getExampleWritePayload( array_merge( diff --git a/api/tests/Api/ContentNodes/RootColumnLayout/DeleteRootColumnLayoutTest.php b/api/tests/Api/ContentNodes/RootColumnLayout/DeleteRootColumnLayoutTest.php index 1451099d61..556aa5b129 100644 --- a/api/tests/Api/ContentNodes/RootColumnLayout/DeleteRootColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/RootColumnLayout/DeleteRootColumnLayoutTest.php @@ -10,6 +10,7 @@ * @internal */ class DeleteRootColumnLayoutTest extends ECampApiTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php b/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php index 5a232b45f6..203ef0e685 100644 --- a/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php +++ b/api/tests/Api/ContentNodes/RootColumnLayout/UpdateRootColumnLayoutTest.php @@ -10,6 +10,7 @@ * @internal */ class UpdateRootColumnLayoutTest extends ECampApiTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/SingleText/CreateSingleTextTest.php b/api/tests/Api/ContentNodes/SingleText/CreateSingleTextTest.php index 7567b77516..46596e14db 100644 --- a/api/tests/Api/ContentNodes/SingleText/CreateSingleTextTest.php +++ b/api/tests/Api/ContentNodes/SingleText/CreateSingleTextTest.php @@ -9,6 +9,7 @@ * @internal */ class CreateSingleTextTest extends CreateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/SingleText/DeleteSingleTextTest.php b/api/tests/Api/ContentNodes/SingleText/DeleteSingleTextTest.php index bbbd5558b1..7b2316c301 100644 --- a/api/tests/Api/ContentNodes/SingleText/DeleteSingleTextTest.php +++ b/api/tests/Api/ContentNodes/SingleText/DeleteSingleTextTest.php @@ -8,6 +8,7 @@ * @internal */ class DeleteSingleTextTest extends DeleteContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/SingleText/ListSingleTextTest.php b/api/tests/Api/ContentNodes/SingleText/ListSingleTextTest.php index 597971c30d..66b0525cc8 100644 --- a/api/tests/Api/ContentNodes/SingleText/ListSingleTextTest.php +++ b/api/tests/Api/ContentNodes/SingleText/ListSingleTextTest.php @@ -8,6 +8,7 @@ * @internal */ class ListSingleTextTest extends ListContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/SingleText/ReadSingleTextTest.php b/api/tests/Api/ContentNodes/SingleText/ReadSingleTextTest.php index 30386e075d..b38d785997 100644 --- a/api/tests/Api/ContentNodes/SingleText/ReadSingleTextTest.php +++ b/api/tests/Api/ContentNodes/SingleText/ReadSingleTextTest.php @@ -9,6 +9,7 @@ * @internal */ class ReadSingleTextTest extends ReadContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/SingleText/UpdateSingleTextTest.php b/api/tests/Api/ContentNodes/SingleText/UpdateSingleTextTest.php index 0696287a4e..c126c01621 100644 --- a/api/tests/Api/ContentNodes/SingleText/UpdateSingleTextTest.php +++ b/api/tests/Api/ContentNodes/SingleText/UpdateSingleTextTest.php @@ -8,6 +8,7 @@ * @internal */ class UpdateSingleTextTest extends UpdateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/Storyboard/CreateStoryboardTest.php b/api/tests/Api/ContentNodes/Storyboard/CreateStoryboardTest.php index 436c78d695..b65d4d7298 100644 --- a/api/tests/Api/ContentNodes/Storyboard/CreateStoryboardTest.php +++ b/api/tests/Api/ContentNodes/Storyboard/CreateStoryboardTest.php @@ -9,6 +9,7 @@ * @internal */ class CreateStoryboardTest extends CreateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/Storyboard/DeleteStoryboardTest.php b/api/tests/Api/ContentNodes/Storyboard/DeleteStoryboardTest.php index a5a7d80f45..f10a83fd21 100644 --- a/api/tests/Api/ContentNodes/Storyboard/DeleteStoryboardTest.php +++ b/api/tests/Api/ContentNodes/Storyboard/DeleteStoryboardTest.php @@ -8,6 +8,7 @@ * @internal */ class DeleteStoryboardTest extends DeleteContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/Storyboard/ListStoryboardTest.php b/api/tests/Api/ContentNodes/Storyboard/ListStoryboardTest.php index fa6adbb725..26f3efd738 100644 --- a/api/tests/Api/ContentNodes/Storyboard/ListStoryboardTest.php +++ b/api/tests/Api/ContentNodes/Storyboard/ListStoryboardTest.php @@ -8,6 +8,7 @@ * @internal */ class ListStoryboardTest extends ListContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/Storyboard/ReadStoryboardTest.php b/api/tests/Api/ContentNodes/Storyboard/ReadStoryboardTest.php index 0d0accfa39..7a83cf948a 100644 --- a/api/tests/Api/ContentNodes/Storyboard/ReadStoryboardTest.php +++ b/api/tests/Api/ContentNodes/Storyboard/ReadStoryboardTest.php @@ -9,6 +9,7 @@ * @internal */ class ReadStoryboardTest extends ReadContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/Storyboard/UpdateStoryboardTest.php b/api/tests/Api/ContentNodes/Storyboard/UpdateStoryboardTest.php index 4211916a80..470ce22215 100644 --- a/api/tests/Api/ContentNodes/Storyboard/UpdateStoryboardTest.php +++ b/api/tests/Api/ContentNodes/Storyboard/UpdateStoryboardTest.php @@ -8,6 +8,7 @@ * @internal */ class UpdateStoryboardTest extends UpdateContentNodeTestCase { + #[\Override] public function setUp(): void { parent::setUp(); diff --git a/api/tests/Api/ContentNodes/UpdateContentNodeTestCase.php b/api/tests/Api/ContentNodes/UpdateContentNodeTestCase.php index f84ec05f75..997b9413c3 100644 --- a/api/tests/Api/ContentNodes/UpdateContentNodeTestCase.php +++ b/api/tests/Api/ContentNodes/UpdateContentNodeTestCase.php @@ -20,6 +20,7 @@ abstract class UpdateContentNodeTestCase extends ECampApiTestCase { protected BaseEntity $campPrototypeEntity; protected BaseEntity $sharedCampEntity; + #[\Override] public function setUp(): void { parent::setUp(); } diff --git a/api/tests/Api/DayResponsibles/CreateDayResponsibleTest.php b/api/tests/Api/DayResponsibles/CreateDayResponsibleTest.php index 28d4a4ceb4..8a216c1b19 100644 --- a/api/tests/Api/DayResponsibles/CreateDayResponsibleTest.php +++ b/api/tests/Api/DayResponsibles/CreateDayResponsibleTest.php @@ -206,6 +206,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( DayResponsible::class, diff --git a/api/tests/Api/ECampApiTestCase.php b/api/tests/Api/ECampApiTestCase.php index 83ca5267ae..03a8e1e05a 100644 --- a/api/tests/Api/ECampApiTestCase.php +++ b/api/tests/Api/ECampApiTestCase.php @@ -59,6 +59,7 @@ public function setUp(): void { $this->currentTimezone = date_default_timezone_get(); } + #[\Override] protected function tearDown(): void { date_default_timezone_set($this->currentTimezone); @@ -190,13 +191,13 @@ protected function getExamplePayload(string $resourceClass, string $operationCla $decoded = json_decode($example, true, 512, JSON_THROW_ON_ERROR); return is_array($decoded) || is_null($decoded) ? $decoded : $example; - } catch (\JsonException|\TypeError $e) { + } catch (\JsonException|\TypeError) { return $example; } }, $examples); return array_diff_key(array_merge(array_diff_key($examples, array_flip($exceptExamples)), $attributes), array_flip($exceptAttributes)); - } catch (\Exception $e) { + } catch (\Exception) { return []; } } @@ -272,13 +273,13 @@ protected function getExampleWritePayload($attributes = [], $except = []) { protected function assertEntityWasRemoved(?BaseEntity $entity = null) { $entity ??= $this->defaultEntity; - $this->assertNull($this->getEntityManager()->getRepository(get_class($entity))->find($entity->getId())); + $this->assertNull($this->getEntityManager()->getRepository($entity::class)->find($entity->getId())); } protected function assertEntityStillExists(?BaseEntity $entity = null) { $entity ??= $this->defaultEntity; - $this->assertNotNull($this->getEntityManager()->getRepository(get_class($entity))->find($entity->getId())); + $this->assertNotNull($this->getEntityManager()->getRepository($entity::class)->find($entity->getId())); } /** diff --git a/api/tests/Api/FirewallTest.php b/api/tests/Api/FirewallTest.php index 360fd16a86..9964931543 100644 --- a/api/tests/Api/FirewallTest.php +++ b/api/tests/Api/FirewallTest.php @@ -46,9 +46,7 @@ public function testProtectedEndpointsDontResultInQuery(string $endpoint) { } public static function getProtectedEndpoints(): array { - $protectedEndpoints = array_filter(self::getEndPoints(), function (string $endpoint) { - return self::isProtectedByFirewall($endpoint); - }); + $protectedEndpoints = array_filter(self::getEndPoints(), self::isProtectedByFirewall(...)); return ParametrizedTestHelper::asParameterTestSets($protectedEndpoints); } diff --git a/api/tests/Api/MaterialItems/CreateMaterialItemTest.php b/api/tests/Api/MaterialItems/CreateMaterialItemTest.php index 259858f516..64069e1964 100644 --- a/api/tests/Api/MaterialItems/CreateMaterialItemTest.php +++ b/api/tests/Api/MaterialItems/CreateMaterialItemTest.php @@ -501,6 +501,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( MaterialItem::class, diff --git a/api/tests/Api/MaterialLists/CreateMaterialListTest.php b/api/tests/Api/MaterialLists/CreateMaterialListTest.php index b27ef14902..bf10d1752a 100644 --- a/api/tests/Api/MaterialLists/CreateMaterialListTest.php +++ b/api/tests/Api/MaterialLists/CreateMaterialListTest.php @@ -263,6 +263,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( MaterialList::class, diff --git a/api/tests/Api/Periods/CreatePeriodTest.php b/api/tests/Api/Periods/CreatePeriodTest.php index 1cf5da4b9c..4b40dc7820 100644 --- a/api/tests/Api/Periods/CreatePeriodTest.php +++ b/api/tests/Api/Periods/CreatePeriodTest.php @@ -377,6 +377,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getPeriodResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( Period::class, diff --git a/api/tests/Api/ResetPassword/UpdatePasswordTest.php b/api/tests/Api/ResetPassword/UpdatePasswordTest.php index b06c6efc94..e98db68574 100644 --- a/api/tests/Api/ResetPassword/UpdatePasswordTest.php +++ b/api/tests/Api/ResetPassword/UpdatePasswordTest.php @@ -23,6 +23,7 @@ class UpdatePasswordTest extends ECampApiTestCase { private ?string $passwordResetKey; private $client; + #[\Override] public function setUp(): void { parent::setUp(); $this->client = static::createBasicClient(); diff --git a/api/tests/Api/ScheduleEntries/CreateScheduleEntryTest.php b/api/tests/Api/ScheduleEntries/CreateScheduleEntryTest.php index 542b04372b..a5be4e5441 100644 --- a/api/tests/Api/ScheduleEntries/CreateScheduleEntryTest.php +++ b/api/tests/Api/ScheduleEntries/CreateScheduleEntryTest.php @@ -291,6 +291,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = []) { return $this->getExamplePayload( ScheduleEntry::class, diff --git a/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php b/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php index b7e5dde291..6769c8af04 100644 --- a/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php +++ b/api/tests/Api/SnapshotTests/EndpointPerformanceTest.php @@ -38,7 +38,7 @@ public function testPerformanceDidNotChangeForStableEndpoints() { $collectionEndpoints = self::getCollectionEndpoints(); foreach ($collectionEndpoints as $collectionEndpoint) { if ('/users' !== $collectionEndpoint && !str_contains($collectionEndpoint, '/content_node')) { - list($statusCode, $queryCount, $executionTimeSeconds) = $this->measurePerformanceFor($collectionEndpoint); + [$statusCode, $queryCount, $executionTimeSeconds] = $this->measurePerformanceFor($collectionEndpoint); $responseCodes[$collectionEndpoint] = $statusCode; $numberOfQueries[$collectionEndpoint] = $queryCount; $queryExecutionTime[$collectionEndpoint] = $executionTimeSeconds; @@ -46,7 +46,7 @@ public function testPerformanceDidNotChangeForStableEndpoints() { if (!str_contains($collectionEndpoint, '/content_node')) { $fixtureFor = self::getFixtureFor($collectionEndpoint); - list($statusCode, $queryCount, $executionTimeSeconds) = $this->measurePerformanceFor("{$collectionEndpoint}/{$fixtureFor->getId()}"); + [$statusCode, $queryCount, $executionTimeSeconds] = $this->measurePerformanceFor("{$collectionEndpoint}/{$fixtureFor->getId()}"); $responseCodes["{$collectionEndpoint}/item"] = $statusCode; $numberOfQueries["{$collectionEndpoint}/item"] = $queryCount; $queryExecutionTime["{$collectionEndpoint}/item"] = $executionTimeSeconds; @@ -54,14 +54,14 @@ public function testPerformanceDidNotChangeForStableEndpoints() { } foreach ($this->getPerformanceCriticalUrls() as $url => $id) { - list($statusCode, $queryCount, $executionTimeSeconds) = $this->measurePerformanceFor($url.$id); + [$statusCode, $queryCount, $executionTimeSeconds] = $this->measurePerformanceFor($url.$id); $responseCodes[$url] = $statusCode; $numberOfQueries[$url] = $queryCount; $queryExecutionTime[$url] = $executionTimeSeconds; } foreach ($this->getSubresourceUrls() as $url => $id) { - list($statusCode, $queryCount, $executionTimeSeconds) = $this->measurePerformanceFor(preg_replace('/\{id}/', $id, $url)); + [$statusCode, $queryCount, $executionTimeSeconds] = $this->measurePerformanceFor(preg_replace('/\{id}/', $id, $url)); $responseCodes[$url] = $statusCode; $numberOfQueries[$url] = $queryCount; $queryExecutionTime[$url] = $executionTimeSeconds; @@ -94,7 +94,7 @@ public function testNumberOfQueriesDidNotChangeForContentNodeCollectionEndpoints if ('test' !== $this->getEnvironment()) { self::markTestSkipped(__FUNCTION__.' is only run in test environment, not in '.$this->getEnvironment()); } - list($statusCode, $queryCount, $executionTimeSeconds) + [$statusCode, $queryCount, $executionTimeSeconds] = $this->measurePerformanceFor($collectionEndpoint.'?camp=/camps/'.self::getFixtureFor('/camps')->getId()); assertThat($statusCode, equalTo(200)); @@ -129,7 +129,7 @@ public function testNumberOfQueriesDidNotChangeForContentNodeItemEndpoints(strin self::markTestSkipped("{$collectionEndpoint} does not support get item endpoint"); } $fixtureFor = self::getFixtureFor($collectionEndpoint); - list($statusCode, $queryCount, $executionTimeSeconds) = $this->measurePerformanceFor("{$collectionEndpoint}/{$fixtureFor->getId()}"); + [$statusCode, $queryCount, $executionTimeSeconds] = $this->measurePerformanceFor("{$collectionEndpoint}/{$fixtureFor->getId()}"); assertThat($statusCode, equalTo(200)); diff --git a/api/tests/Api/SnapshotTests/Extension/FilterEagerLoadingExtensionIntegrationTest.php b/api/tests/Api/SnapshotTests/Extension/FilterEagerLoadingExtensionIntegrationTest.php index 8c7cfb6718..25b76b1ba7 100644 --- a/api/tests/Api/SnapshotTests/Extension/FilterEagerLoadingExtensionIntegrationTest.php +++ b/api/tests/Api/SnapshotTests/Extension/FilterEagerLoadingExtensionIntegrationTest.php @@ -24,6 +24,7 @@ class FilterEagerLoadingExtensionIntegrationTest extends ECampApiTestCase { private array $context = []; private FilterEagerLoadingsExtension $filterEagerLoadingExtension; + #[\Override] public function setUp(): void { parent::setUp(); $container = static::getContainer(); diff --git a/api/tests/Api/Users/CreateUserTest.php b/api/tests/Api/Users/CreateUserTest.php index d49870ae47..86475a9ae0 100644 --- a/api/tests/Api/Users/CreateUserTest.php +++ b/api/tests/Api/Users/CreateUserTest.php @@ -941,6 +941,7 @@ public function testCreateResponseStructureMatchesReadResponseStructure() { assertThat($createArray, CompatibleHalResponse::isHalCompatibleWith($getItemResponse->toArray())); } + #[\Override] public function getExampleWritePayload($attributes = [], $except = [], $mergeEmbeddedAttributes = []) { $examplePayload = $this->getExamplePayload( User::class, diff --git a/api/tests/Constraints/CompatibleHalResponse.php b/api/tests/Constraints/CompatibleHalResponse.php index 99b7af7c9f..dd816265ce 100644 --- a/api/tests/Constraints/CompatibleHalResponse.php +++ b/api/tests/Constraints/CompatibleHalResponse.php @@ -15,6 +15,7 @@ public function toString(): string { return 'is hal compatible with '.$this->exporter()->export($this->halResponse); } + #[\Override] protected function matches($other): bool { if (!is_array($other)) { return false; @@ -27,7 +28,7 @@ protected function matches($other): bool { sort($otherKeys); $otherKeysWithoutEmbedded = array_diff($otherKeys, ['_embedded']); - if (join($halResponseKeysWithoutEmbedded) !== join($otherKeysWithoutEmbedded)) { + if (join('', $halResponseKeysWithoutEmbedded) !== join('', $otherKeysWithoutEmbedded)) { return false; } @@ -41,7 +42,7 @@ protected function matches($other): bool { $otherRelationKeys = array_unique(array_merge($otherLinksKeys, $otherEmbeddedKeys)); sort($otherRelationKeys); - if (join($halResponseRelationKeys) !== join($otherRelationKeys)) { + if (join('', $halResponseRelationKeys) !== join('', $otherRelationKeys)) { return false; } diff --git a/api/tests/Entity/ScheduleEntryTest.php b/api/tests/Entity/ScheduleEntryTest.php index a3be4c480a..05fffc2581 100644 --- a/api/tests/Entity/ScheduleEntryTest.php +++ b/api/tests/Entity/ScheduleEntryTest.php @@ -164,9 +164,7 @@ public function testGetDayReturnsNullIfDayEntityIsMissing() { } protected function setCreateTime(ScheduleEntry $scheduleEntry, \DateTime $createTime) { - $createTimeProperty = (new \ReflectionClass(ScheduleEntry::class))->getProperty('createTime'); - $createTimeProperty->setAccessible(true); + $createTimeProperty = new \ReflectionClass(ScheduleEntry::class)->getProperty('createTime'); $createTimeProperty->setValue($scheduleEntry, $createTime); - $createTimeProperty->setAccessible(false); } } diff --git a/api/tests/HttpCache/CacheManagerMock.php b/api/tests/HttpCache/CacheManagerMock.php index 035c64d99d..8a841111e5 100644 --- a/api/tests/HttpCache/CacheManagerMock.php +++ b/api/tests/HttpCache/CacheManagerMock.php @@ -10,6 +10,7 @@ class CacheManagerMock extends CacheManager { public function __construct( ) {} + #[\Override] public function flush(): int { return 0; } @@ -17,6 +18,7 @@ public function flush(): int { /** * @param string[] $tags Tags that should be removed/expired from the cache. An empty tag list is ignored. */ + #[\Override] public function invalidateTags(array $tags): static { if (!$tags) { return $this; diff --git a/api/tests/HttpCache/PurgeHttpCacheListenerTest.php b/api/tests/HttpCache/PurgeHttpCacheListenerTest.php index 17d9580638..225f6ba8ef 100644 --- a/api/tests/HttpCache/PurgeHttpCacheListenerTest.php +++ b/api/tests/HttpCache/PurgeHttpCacheListenerTest.php @@ -75,13 +75,13 @@ protected function setUp(): void { $classMetadataProphecy = $this->prophesize(ClassMetadata::class); $classMetadataProphecy->getAssociationMappings()->willReturn([ 'relatedDummy' => [ - 'targetEntity' => 'App\Tests\HttpCache\Entity\RelatedDummy', + 'targetEntity' => RelatedDummy::class, 'isOwningSide' => true, 'inversedBy' => 'dummies', 'mappedBy' => null, ], 'relatedOwningDummy' => [ - 'targetEntity' => 'App\Tests\HttpCache\Entity\RelatedOwningDummy', + 'targetEntity' => RelatedOwningDummy::class, 'isOwningSide' => true, 'inversedBy' => 'ownedDummy', 'mappedBy' => null, @@ -102,10 +102,10 @@ protected function setUp(): void { $this->propertyAccessorProphecy->getValue(Argument::type(Dummy::class), 'relatedOwningDummy')->willReturn(null); $this->metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); - $operation = (new GetCollection())->withShortName('Dummy')->withClass(Dummy::class); - $operation2 = (new GetCollection())->withShortName('DummyAsSubresource')->withClass(Dummy::class); + $operation = new GetCollection()->withShortName('Dummy')->withClass(Dummy::class); + $operation2 = new GetCollection()->withShortName('DummyAsSubresource')->withClass(Dummy::class); $this->metadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadataCollection('Dummy', [ - (new ApiResource('Dummy')) + new ApiResource('Dummy') ->withShortName('Dummy') ->withOperations(new Operations([ 'get_collection' => $operation, @@ -143,16 +143,16 @@ public function testOnFlush(): void { $cacheManagerProphecy->flush()->willReturn(0); $metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); - $operation = (new GetCollection())->withShortName('Dummy')->withClass(Dummy::class); + $operation = new GetCollection()->withShortName('Dummy')->withClass(Dummy::class); $metadataFactoryProphecy->create(Dummy::class)->willReturn(new ResourceMetadataCollection('Dummy', [ - (new ApiResource('Dummy')) + new ApiResource('Dummy') ->withShortName('Dummy') ->withOperations(new Operations([ 'get' => $operation, ])), ]))->shouldBeCalled(); $metadataFactoryProphecy->create(DummyNoGetOperation::class)->willReturn(new ResourceMetadataCollection('DummyNoGetOperation', [ - (new ApiResource('DummyNoGetOperation')) + new ApiResource('DummyNoGetOperation') ->withShortName('DummyNoGetOperation'), ]))->shouldBeCalled(); @@ -345,7 +345,7 @@ public function testPropertyIsNotAResourceClass(): void { $metadataFactoryProphecy = $this->prophesize(ResourceMetadataCollectionFactoryInterface::class); $metadataFactoryProphecy->create(ContainNonResource::class)->willReturn(new ResourceMetadataCollection('ContainNonResource', [ - (new ApiResource('ContainNonResource')) + new ApiResource('ContainNonResource') ->withShortName('ContainNonResource'), ]))->shouldBeCalled(); diff --git a/api/tests/Integration/State/ValidationErrorProviderIntegrationTest.php b/api/tests/Integration/State/ValidationErrorProviderIntegrationTest.php index 6e56519933..98f4e60eaa 100644 --- a/api/tests/Integration/State/ValidationErrorProviderIntegrationTest.php +++ b/api/tests/Integration/State/ValidationErrorProviderIntegrationTest.php @@ -32,7 +32,7 @@ protected function setUp(): void { parent::setUp(); /** @var ValidationErrorProvider $obj */ - $obj = self::getContainer()->get('App\State\ValidationErrorProvider'); + $obj = self::getContainer()->get(ValidationErrorProvider::class); $this->validationErrorProvider = $obj; } diff --git a/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php b/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php index 5baffa74b2..344a6b932d 100644 --- a/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php +++ b/api/tests/Metadata/Resource/Factory/UriTemplateFactoryTest.php @@ -42,7 +42,7 @@ protected function setUp(): void { $this->resourceNameCollection = new ResourceNameCollection(['Dummy']); $this->resourceMetadataCollection = new ResourceMetadataCollection('Dummy'); - $this->apiResource = (new ApiResource())->withShortName('Dummy')->withOperations(new Operations([ + $this->apiResource = new ApiResource()->withShortName('Dummy')->withOperations(new Operations([ new Get( name: '_api_/dummys/{id}{._format}_get' ), @@ -81,7 +81,7 @@ public function testCreatesNonTemplatedUri() { name: '_api_/dummys{._format}_get_collection' ), ]); - $apiResource = (new ApiResource())->withShortName('Dummy')->withOperations($operations); + $apiResource = new ApiResource()->withShortName('Dummy')->withOperations($operations); $this->resourceMetadataCollection->append($apiResource); $this->createFactory(); @@ -111,7 +111,7 @@ public function testCreatesTemplatedUriWithIdPathParameter() { public function testCreatesTemplatedUriWithFilterQueryParameter() { // given $resource = 'Dummy'; - $this->resourceMetadataCollection->append((new ApiResource())->withShortName('Dummy')->withOperations(new Operations([ + $this->resourceMetadataCollection->append(new ApiResource()->withShortName('Dummy')->withOperations(new Operations([ new Get( name: '_api_/dummys/{id}{._format}_get' ), @@ -152,7 +152,7 @@ public function testCreatesTemplatedUriWithAdvancedPaginationQueryParameters() { // given $resource = 'Dummy'; $this->paginationOptions = new PaginationOptions(true); - $this->resourceMetadataCollection->append((new ApiResource())->withShortName('Dummy')->withOperations(new Operations([ + $this->resourceMetadataCollection->append(new ApiResource()->withShortName('Dummy')->withOperations(new Operations([ new Get( name: '_api_/dummys/{id}{._format}_get' ), @@ -176,7 +176,7 @@ public function testCreatesTemplatedUriWithActionPathParameters() { // given $resource = 'Dummy'; - $this->resourceMetadataCollection->append((new ApiResource())->withShortName('Dummy')->withOperations(new Operations([ + $this->resourceMetadataCollection->append(new ApiResource()->withShortName('Dummy')->withOperations(new Operations([ new Get( name: '_api_/dummys/{id}{._format}_get' ), @@ -202,7 +202,7 @@ public function testCreatesTemplatedUriWithActionPathParameters() { public function testIgnoresRoutesWithNoSlashAtEnd() { // given $resource = 'Dummy'; - $this->resourceMetadataCollection->append((new ApiResource())->withShortName('Dummy')->withOperations(new Operations([ + $this->resourceMetadataCollection->append(new ApiResource()->withShortName('Dummy')->withOperations(new Operations([ new Get( name: '_api_/dummys/{id}{._format}_get' ), @@ -223,7 +223,7 @@ public function testIgnoresRoutesWithNoSlashAtEnd() { public function testIgnoreActionPathsOfOtherRouteStarts() { // given $resource = 'Dummy'; - $this->resourceMetadataCollection->append((new ApiResource())->withShortName('Dummy')->withOperations(new Operations([ + $this->resourceMetadataCollection->append(new ApiResource()->withShortName('Dummy')->withOperations(new Operations([ new Get( name: '_api_/dummys/{id}{._format}_get' ), diff --git a/api/tests/Metadata/Resource/OperationHelperTest.php b/api/tests/Metadata/Resource/OperationHelperTest.php index 45b056a332..af10ca4560 100644 --- a/api/tests/Metadata/Resource/OperationHelperTest.php +++ b/api/tests/Metadata/Resource/OperationHelperTest.php @@ -25,7 +25,7 @@ protected function setUp(): void { public function testFindGet() { // given - $apiResource = (new ApiResource())->withOperations(new Operations([ + $apiResource = new ApiResource()->withOperations(new Operations([ new Get( name: 'get' ), @@ -44,7 +44,7 @@ public function testFindGet() { public function testReturnsNullForMissingOperation() { // given - $apiResource = (new ApiResource())->withOperations(new Operations([ + $apiResource = new ApiResource()->withOperations(new Operations([ new Get( name: 'get' ), @@ -61,7 +61,7 @@ public function testReturnsNullForMissingOperation() { public function testFindsFirstOperation() { // given - $apiResource = (new ApiResource())->withOperations(new Operations([ + $apiResource = new ApiResource()->withOperations(new Operations([ new Get( name: 'get1' ), @@ -80,12 +80,12 @@ public function testFindsFirstOperation() { public function testFindsOperationInMultipleResources() { // given - $apiResource1 = (new ApiResource())->withOperations(new Operations([ + $apiResource1 = new ApiResource()->withOperations(new Operations([ new GetCollection( name: 'get_collection' ), ])); - $apiResource2 = (new ApiResource())->withOperations(new Operations([ + $apiResource2 = new ApiResource()->withOperations(new Operations([ new Get( name: 'get1' ), @@ -105,7 +105,7 @@ public function testFindsOperationInMultipleResources() { public function testFindGraphQlOperation() { // given - $apiResource = (new ApiResource())->withGraphQlOperations([ + $apiResource = new ApiResource()->withGraphQlOperations([ new Query(name: 'query'), new QueryCollection(name: 'queryCollection'), ]); diff --git a/api/tests/Serializer/Denormalizer/InputFilterDenormalizerTest.php b/api/tests/Serializer/Denormalizer/InputFilterDenormalizerTest.php index 53ead6b80b..7bdace7ac1 100644 --- a/api/tests/Serializer/Denormalizer/InputFilterDenormalizerTest.php +++ b/api/tests/Serializer/Denormalizer/InputFilterDenormalizerTest.php @@ -315,13 +315,6 @@ public function applyTo(array $data, string $propertyName): array { } class DummyEntity { - #[Dummy] - public $foo; - - // other attribute which is not an input filter - #[Valid] - public $bar; - #[AppendA(priority: 10)] #[AppendB(priority: 0)] public $ab; @@ -339,10 +332,12 @@ class DummyEntity { #[ORM\Embedded(class: 'EmbeddableEntity')] public EmbeddableEntity $embeddableEntity; - public function __construct($foo, $bar) { - $this->foo = $foo; - $this->bar = $bar; - } + public function __construct( + #[Dummy] + public $foo, + #[Valid] + public $bar + ) {} } class RelatedEntity extends BaseEntity { diff --git a/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php b/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php index 32fbebbf2a..09d242ad6f 100644 --- a/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php +++ b/api/tests/Serializer/Normalizer/RelatedCollectionLinkNormalizerTest.php @@ -48,7 +48,7 @@ class RelatedCollectionLinkNormalizerTest extends TestCase { private MockObject|PropertyAccessorInterface $propertyAccessor; private EntityManagerInterface|MockObject $entityManager; - private DateFilter|SearchFilterInterface|null $filterInstance; + private DateFilter|SearchFilterInterface|null $filterInstance = null; protected function setUp(): void { $filterLocatorMock = $this->createMock(ServiceLocator::class); @@ -446,7 +446,7 @@ public function testNormalizeDoesntReplaceWhenMissingGetCollectionOperation() { ])); $metadataCollection = new ResourceMetadataCollection('Dummy'); - $metadataCollection->append((new ApiResource())->withOperations(new Operations([new Get()]))); + $metadataCollection->append(new ApiResource()->withOperations(new Operations([new Get()]))); $this->resourceMetadataCollectionFactoryMock->method('create')->willReturn($metadataCollection); $this->mockGeneratedRoute(); @@ -484,7 +484,7 @@ protected function mockRelatedResourceMetadata($collectionOperationMetadata) { $collectionOperationMetadata['name'] = '_api_/dummys{._format}_get_collection'; $metadataCollection = new ResourceMetadataCollection('Dummy'); - $metadataCollection->append((new ApiResource())->withOperations(new Operations([ + $metadataCollection->append(new ApiResource()->withOperations(new Operations([ new GetCollection( ...$collectionOperationMetadata ), @@ -531,14 +531,14 @@ protected function mockGeneratedRoute($generated = '/children?parent=%2Fparents% class ParentEntity { #[ORM\OneToMany(targetEntity: Child::class, mappedBy: 'parent')] - private Collection $children; + private readonly Collection $children; #[ORM\OneToOne(targetEntity: Child::class)] - private ?Child $firstBorn; + private ?Child $firstBorn = null; #[SerializedName('childrenWithSerializedName')] #[ORM\OneToMany(targetEntity: Child::class, mappedBy: 'parent')] - private Collection $renamedChildren; + private readonly Collection $renamedChildren; public function getFilterValue(): string { return ''; @@ -553,5 +553,5 @@ public function getRelatedEntities(): array { #[ApiFilter(SearchFilter::class, properties: ['parent'])] class Child { #[ORM\ManyToOne(targetEntity: ParentEntity::class, inversedBy: 'children')] - private ?ParentEntity $parent; + private ?ParentEntity $parent = null; } diff --git a/api/tests/Serializer/Normalizer/UriTemplateNormalizerTest.php b/api/tests/Serializer/Normalizer/UriTemplateNormalizerTest.php index e788a5410d..21a4e46722 100644 --- a/api/tests/Serializer/Normalizer/UriTemplateNormalizerTest.php +++ b/api/tests/Serializer/Normalizer/UriTemplateNormalizerTest.php @@ -29,34 +29,17 @@ protected function setUp(): void { $englishInflector = new EnglishInflector(); $urlGenerator = $this->createMock(UrlGeneratorInterface::class); $urlGenerator->method('generate')->willReturnCallback(function (string $arg): string { - switch ($arg) { - case 'authentication_token': - return '/authentication_token'; - - case 'connect_google_start': - return '/auth/google'; - - case 'connect_pbsmidata_start': - return '/auth/pbsmidata'; - - case 'connect_cevidb_start': - return '/auth/cevidb'; - - case 'connect_jubladb_start': - return '/auth/jubladb'; - - case 'api_refresh_token': - return '/token/refresh'; - - case '_api_/auth/resend_activation{._format}_post': - return '/auth/resend_activation'; - - case '_api_/auth/reset_password{._format}_post': - return '/auth/reset_password'; - - default: - return null; - } + return match ($arg) { + 'authentication_token' => '/authentication_token', + 'connect_google_start' => '/auth/google', + 'connect_pbsmidata_start' => '/auth/pbsmidata', + 'connect_cevidb_start' => '/auth/cevidb', + 'connect_jubladb_start' => '/auth/jubladb', + 'api_refresh_token' => '/token/refresh', + '_api_/auth/resend_activation{._format}_post' => '/auth/resend_activation', + '_api_/auth/reset_password{._format}_post' => '/auth/reset_password', + default => null, + }; }); $this->uriTemplateNormalizer = new UriTemplateNormalizer( diff --git a/api/tests/Service/MailServiceTest.php b/api/tests/Service/MailServiceTest.php index 714dcb69cc..b1f48b26f2 100644 --- a/api/tests/Service/MailServiceTest.php +++ b/api/tests/Service/MailServiceTest.php @@ -10,6 +10,7 @@ use App\Service\MailService; use PHPUnit\Framework\Attributes\DataProvider; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; +use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Mailer\MailerInterface; use Symfony\Contracts\Translation\TranslatorInterface; use Twig\Environment; @@ -23,6 +24,7 @@ class MailServiceTest extends KernelTestCase { private Camp $camp; private User $user; + private Security $security; private MailService $mailer; @@ -33,7 +35,15 @@ protected function setUp(): void { $translator = self::getContainer()->get(TranslatorInterface::class); $twigEnvironment = self::getContainer()->get(Environment::class); - $this->mailer = new MailService($mailer, $translator, $twigEnvironment, 'frontend.example.com', 'sender@example.com', 'SenderName'); + $this->security = $this->createMock(Security::class); + $profile = new Profile(); + $profile->nickname = 'Linux'; + $profile->email = 'sender@ecamp3.ch'; + $user = new User(); + $user->profile = $profile; + $this->security->method('getUser')->willReturn($user); + + $this->mailer = new MailService($mailer, $translator, $twigEnvironment, 'frontend.example.com', 'sender@example.com', 'SenderName', $this->security); $this->user = new User(); $profile = new Profile(); @@ -52,6 +62,7 @@ public function testSendInviteToCampMailDeChScout() { self::assertEmailCount(1); $mailerMessage = self::getMailerMessage(0); self::assertEmailAddressContains($mailerMessage, 'To', self::INVITE_MAIL); + self::assertEmailAddressContains($mailerMessage, 'reply-to', 'sender@ecamp3.ch'); self::assertEmailHeaderSame($mailerMessage, 'subject', '[eCamp v3] Du wurdest ins Lager "some camp title" eingeladen'); self::assertEmailHtmlBodyContains($mailerMessage, $this->camp->title); @@ -71,6 +82,7 @@ public function testSendInvitationMailDoesNotCrashForAllLanguages(string $langua self::assertEmailCount(1); $mailerMessage = self::getMailerMessage(0); self::assertEmailAddressContains($mailerMessage, 'To', self::INVITE_MAIL); + self::assertEmailAddressContains($mailerMessage, 'reply-to', 'sender@ecamp3.ch'); self::assertEmailHtmlBodyContains($mailerMessage, $this->camp->title); self::assertEmailHtmlBodyContains($mailerMessage, $this->user->getDisplayName()); diff --git a/api/tests/State/ProfileUpdateProcessorTest.php b/api/tests/State/ProfileUpdateProcessorTest.php index a19d6c8cbc..56d5d8e392 100644 --- a/api/tests/State/ProfileUpdateProcessorTest.php +++ b/api/tests/State/ProfileUpdateProcessorTest.php @@ -56,7 +56,7 @@ public function testSetNewEmail() { // given $this->pwHasher->expects(self::once()) ->method('hash') - ->willReturnCallback(fn ($raw) => md5($raw)) + ->willReturnCallback(md5(...)) ; $this->profile->newEmail = 'new@mail.com'; diff --git a/api/tests/State/ResetPasswordCreateProcessorTest.php b/api/tests/State/ResetPasswordCreateProcessorTest.php index 547d25329a..8ad68bf37d 100644 --- a/api/tests/State/ResetPasswordCreateProcessorTest.php +++ b/api/tests/State/ResetPasswordCreateProcessorTest.php @@ -109,7 +109,7 @@ public function testCreateWithKnowneMailCreatesResetKey() { $this->pwHasher->expects(self::once()) ->method('hash') - ->willReturnCallback(fn ($raw) => md5($raw)) + ->willReturnCallback(md5(...)) ; $this->mailService->expects(self::once()) diff --git a/api/tests/State/ResetPasswordUpdateProcessorTest.php b/api/tests/State/ResetPasswordUpdateProcessorTest.php index 8c6ccc1e5b..c7f17b912a 100644 --- a/api/tests/State/ResetPasswordUpdateProcessorTest.php +++ b/api/tests/State/ResetPasswordUpdateProcessorTest.php @@ -153,7 +153,7 @@ public function testUpdateWithCorrectResetKey() { ; $this->pwHasher->expects(self::once()) ->method('hash') - ->willReturnCallback(fn ($raw) => md5($raw)) + ->willReturnCallback(md5(...)) ; $this->resetPassword->id = base64_encode(self::EMAIL.'#myKey'); @@ -189,7 +189,7 @@ public function testUpdateWithCorrectResetKeyDoesNotChangeActivatedOrDeletedUser ; $this->pwHasher->expects(self::once()) ->method('hash') - ->willReturnCallback(fn ($raw) => md5($raw)) + ->willReturnCallback(md5(...)) ; $this->resetPassword->id = base64_encode(self::EMAIL.'#myKey'); diff --git a/api/tests/State/Util/AbstractPersistProcessorTest.php b/api/tests/State/Util/AbstractPersistProcessorTest.php index 72f2a51cce..f01b9c6210 100644 --- a/api/tests/State/Util/AbstractPersistProcessorTest.php +++ b/api/tests/State/Util/AbstractPersistProcessorTest.php @@ -37,8 +37,8 @@ protected function setUp(): void { $this->propertyChangeListener = PropertyChangeListener::of( extractProperty: fn ($data) => $data->name, - beforeAction: fn ($data) => $this->closure->call($data), - afterAction: fn ($data) => $this->closure->call($data), + beforeAction: $this->closure->call(...), + afterAction: $this->closure->call(...), ); $this->onBefore = $this->createMock(MockableClosure::class); @@ -98,8 +98,8 @@ public function testNotCallPropertyChangeListenerIfDataWasNullBefore() { $context = ['previous_data' => null]; $this->propertyChangeListener = PropertyChangeListener::of( extractProperty: fn ($data) => $data->name, - beforeAction: fn ($data) => $this->closure->call($data), - afterAction: fn ($data) => $this->closure->call($data), + beforeAction: $this->closure->call(...), + afterAction: $this->closure->call(...), ); $this->closure->expects(self::never())->method('call'); @@ -115,7 +115,7 @@ public function testThrowErrorIfExtractPropertyFails() { $context = ['previous_data' => $toPersist]; $this->propertyChangeListener = PropertyChangeListener::of( extractProperty: fn ($data) => $data->name, - afterAction: fn ($data) => $this->closure->call($data) + afterAction: $this->closure->call(...) ); $this->closure->expects(self::never())->method('call'); @@ -133,8 +133,8 @@ public function testNotCallPropertyChangeListenerIfPropertyDidNotChange() { $context = ['previous_data' => $toPersist]; $this->propertyChangeListener = PropertyChangeListener::of( extractProperty: fn ($data) => $data->name, - beforeAction: fn ($data) => $this->closure->call($data), - afterAction: fn ($data) => $this->closure->call($data), + beforeAction: $this->closure->call(...), + afterAction: $this->closure->call(...), ); $this->closure->expects(self::never())->method('call'); @@ -154,8 +154,8 @@ public function testCallPropertyChangeListenerIfPropertyDidChange() { $this->propertyChangeListener = PropertyChangeListener::of( extractProperty: fn ($data) => $data->name, - beforeAction: fn ($data) => $this->closure->call($data), - afterAction: fn ($data) => $this->closure->call($data), + beforeAction: $this->closure->call(...), + afterAction: $this->closure->call(...), ); $this->decoratedProcessor->expects(self::once()) ->method('process') @@ -181,6 +181,7 @@ public function __construct( parent::__construct($decorated, $propertyChangeListeners); } + #[\Override] public function onBefore($data, Operation $operation, array $uriVariables = [], array $context = []) { // @noinspection PhpMethodParametersCountMismatchInspection return $this->onBefore->call($data, $operation, $uriVariables, $context); diff --git a/api/tests/Types/Doctrine/UTCDateTimeTypeTest.php b/api/tests/Types/Doctrine/UTCDateTimeTypeTest.php index c44bcfd650..f53276f310 100644 --- a/api/tests/Types/Doctrine/UTCDateTimeTypeTest.php +++ b/api/tests/Types/Doctrine/UTCDateTimeTypeTest.php @@ -13,6 +13,7 @@ * @internal */ class UTCDateTimeTypeTest extends BaseDateTypeTestCase { + #[\Override] protected function setUp(): void { $this->type = new UTCDateTimeType(); diff --git a/api/tests/Types/Doctrine/UTCDateTypeTest.php b/api/tests/Types/Doctrine/UTCDateTypeTest.php index ed733e7d4b..065c030e39 100644 --- a/api/tests/Types/Doctrine/UTCDateTypeTest.php +++ b/api/tests/Types/Doctrine/UTCDateTypeTest.php @@ -13,6 +13,7 @@ * @internal */ class UTCDateTypeTest extends BaseDateTypeTestCase { + #[\Override] protected function setUp(): void { $this->type = new UTCDateType(); diff --git a/api/tests/Validator/AllowTransitions/AssertAllowTransitionTest.php b/api/tests/Validator/AllowTransitions/AssertAllowTransitionTest.php index 70c724d1de..1e78f26e49 100644 --- a/api/tests/Validator/AllowTransitions/AssertAllowTransitionTest.php +++ b/api/tests/Validator/AllowTransitions/AssertAllowTransitionTest.php @@ -18,7 +18,7 @@ * @internal */ class AssertAllowTransitionTest extends ConstraintValidatorTestCase { - private const TRANSITIONS = [ + private const array TRANSITIONS = [ ['from' => '1', 'to' => ['2', '3']], ['from' => '2', 'to' => ['3']], ['from' => '3', 'to' => ['1']], @@ -26,6 +26,7 @@ class AssertAllowTransitionTest extends ConstraintValidatorTestCase { private MockObject|RequestStack $requestStack; private TestClass $before; + #[\Override] protected function setUp(): void { $this->before = new TestClass('2'); @@ -44,7 +45,7 @@ public function testNotValidWhenPreviousValueIsNotInFrom() { $this->validator->validate($testClass->a, new AssertAllowTransitions(self::TRANSITIONS)); - $allFrom = (new ArrayCollection(self::TRANSITIONS))->map(fn ($elem) => $elem['from'])->toArray(); + $allFrom = new ArrayCollection(self::TRANSITIONS)->map(fn ($elem) => $elem['from'])->toArray(); $this->buildViolation(AssertAllowTransitionsValidator::FROM_VIOLATION_MESSAGE) ->setParameter('{{ from }}', join(',', $allFrom)) ->setParameter('{{ previousValue }}', $this->before->a) @@ -107,16 +108,14 @@ protected function createValidator(): AssertAllowTransitionsValidator { } class TestClass { - #[AssertAllowTransitions([ - ['from' => '1', 'to' => ['2', '3']], - ['from' => '2', 'to' => ['3']], - ['from' => '3', 'to' => ['1']], - ])] - public string $a; - - public function __construct($a) { - $this->a = $a; - } + public function __construct( + #[AssertAllowTransitions([ + ['from' => '1', 'to' => ['2', '3']], + ['from' => '2', 'to' => ['3']], + ['from' => '3', 'to' => ['1']], + ])] + public string $a + ) {} public function setA(string $a): TestClass { $this->a = $a; diff --git a/api/tests/Validator/AssertBelongsToSameCampValidatorTest.php b/api/tests/Validator/AssertBelongsToSameCampValidatorTest.php index 3f5a492104..63e2a25198 100644 --- a/api/tests/Validator/AssertBelongsToSameCampValidatorTest.php +++ b/api/tests/Validator/AssertBelongsToSameCampValidatorTest.php @@ -175,7 +175,7 @@ public function getCamp(): ?Camp { class ParentTestClass extends BaseEntity implements BelongsToCampInterface { #[AssertBelongsToSameCamp] - public ?ChildTestClass $child; + public ?ChildTestClass $child = null; public function __construct(public Camp $camp) {} diff --git a/api/tests/Validator/AssertEitherIsNullValidatorTest.php b/api/tests/Validator/AssertEitherIsNullValidatorTest.php index 58d0bba840..ae33470bef 100644 --- a/api/tests/Validator/AssertEitherIsNullValidatorTest.php +++ b/api/tests/Validator/AssertEitherIsNullValidatorTest.php @@ -85,13 +85,9 @@ protected function createValidator(): ConstraintValidatorInterface { } class AssertEitherIsNullValidatorTestClass { - #[AssertEitherIsNull(other: 'b')] - public $a; - - public $b; - - public function __construct($a, $b) { - $this->a = $a; - $this->b = $b; - } + public function __construct( + #[AssertEitherIsNull(other: 'b')] + public $a, + public $b + ) {} } diff --git a/api/tests/Validator/AssertJsonSchemaValidatorTest.php b/api/tests/Validator/AssertJsonSchemaValidatorTest.php index f8d16eb1e1..2388cfbb83 100644 --- a/api/tests/Validator/AssertJsonSchemaValidatorTest.php +++ b/api/tests/Validator/AssertJsonSchemaValidatorTest.php @@ -15,9 +15,9 @@ * @internal */ class AssertJsonSchemaValidatorTest extends ConstraintValidatorTestCase { - private const message = "Provided JSON doesn't match required schema ({{ schemaError }})."; + private const string message = "Provided JSON doesn't match required schema ({{ schemaError }})."; - private const testSchema = [ + private const array testSchema = [ 'type' => 'object', 'properties' => [ 'id' => [ diff --git a/api/tests/Validator/AssertLastCollectionItemIsNotDeletedValidatorTest.php b/api/tests/Validator/AssertLastCollectionItemIsNotDeletedValidatorTest.php index 5a58a476e3..756a125f72 100644 --- a/api/tests/Validator/AssertLastCollectionItemIsNotDeletedValidatorTest.php +++ b/api/tests/Validator/AssertLastCollectionItemIsNotDeletedValidatorTest.php @@ -107,10 +107,8 @@ protected function createValidator(): ConstraintValidatorInterface { } class AssertLastCollectionItemNotDeletedValidatorTestClass { - #[AssertLastCollectionItemIsNotDeleted()] - public $a; - - public function __construct($a) { - $this->a = $a; - } + public function __construct( + #[AssertLastCollectionItemIsNotDeleted()] + public $a + ) {} } diff --git a/api/tests/Validator/ColumnLayout/AssertColumWidthsSumTo12ValidatorTest.php b/api/tests/Validator/ColumnLayout/AssertColumWidthsSumTo12ValidatorTest.php index caaf4fa0c9..9fd490fac2 100644 --- a/api/tests/Validator/ColumnLayout/AssertColumWidthsSumTo12ValidatorTest.php +++ b/api/tests/Validator/ColumnLayout/AssertColumWidthsSumTo12ValidatorTest.php @@ -15,7 +15,7 @@ * @internal */ class AssertColumWidthsSumTo12ValidatorTest extends ConstraintValidatorTestCase { - private const message = 'Expected column widths to sum to 12, but got a sum of {{ sum }}'; + private const string message = 'Expected column widths to sum to 12, but got a sum of {{ sum }}'; private MockObject|RequestStack $requestStack; diff --git a/api/tests/Validator/ColumnLayout/AssertNoOrphanChildrenValidatorTest.php b/api/tests/Validator/ColumnLayout/AssertNoOrphanChildrenValidatorTest.php index 01f23e4ec7..0f76858c2a 100644 --- a/api/tests/Validator/ColumnLayout/AssertNoOrphanChildrenValidatorTest.php +++ b/api/tests/Validator/ColumnLayout/AssertNoOrphanChildrenValidatorTest.php @@ -16,7 +16,7 @@ * @internal */ class AssertNoOrphanChildrenValidatorTest extends ConstraintValidatorTestCase { - private const message = 'The following slots still have child contents and should be present in the columns: {{ slots }}'; + private const string message = 'The following slots still have child contents and should be present in the columns: {{ slots }}'; private MockObject|RequestStack $requestStack; diff --git a/api/tests/Validator/ContentNode/AssertSlotSupportedByParentValidatorTest.php b/api/tests/Validator/ContentNode/AssertSlotSupportedByParentValidatorTest.php index 020e7494bc..e359ae21e1 100644 --- a/api/tests/Validator/ContentNode/AssertSlotSupportedByParentValidatorTest.php +++ b/api/tests/Validator/ContentNode/AssertSlotSupportedByParentValidatorTest.php @@ -109,6 +109,7 @@ public function testExpectsContentNodeAsObject() { $this->validator->validate(null, new AssertSlotSupportedByParent()); } + #[\Override] protected function createContext(): ExecutionContext { $this->parent = new ColumnLayout(); $this->parent->setData([ diff --git a/api/tests/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidatorTest.php b/api/tests/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidatorTest.php index c7ac0883bb..7748c0fb88 100644 --- a/api/tests/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidatorTest.php +++ b/api/tests/Validator/Period/AssertNotOverlappingWithOtherPeriodsValidatorTest.php @@ -23,6 +23,7 @@ class AssertNotOverlappingWithOtherPeriodsValidatorTest extends ConstraintValida private \DateTime $period3End; + #[\Override] protected function setUp(): void { parent::setUp(); $this->period1Start = new \DateTime('2022-01-01'); diff --git a/api/tests/bootstrap.php b/api/tests/bootstrap.php index b9d732f97b..0125a136fe 100644 --- a/api/tests/bootstrap.php +++ b/api/tests/bootstrap.php @@ -6,7 +6,7 @@ require dirname(__DIR__).'/vendor/autoload.php'; if (method_exists(Dotenv::class, 'bootEnv')) { - (new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); + new Dotenv()->bootEnv(dirname(__DIR__).'/.env'); } if ($_SERVER['APP_DEBUG']) { diff --git a/docker-compose.yml b/docker-compose.yml index 005d8c34fd..62db7db9f3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: frontend: - image: node:24.10.0 + image: node:24.11.0 container_name: 'ecamp3-frontend' ports: - '9229:9229' # jest debug @@ -53,6 +53,7 @@ services: timeout: 3s retries: 3 start_period: 30s + restart: on-failure extra_hosts: - 'host.docker.internal:host-gateway' @@ -80,7 +81,7 @@ services: command: varnishncsa pdf: - image: node:24.10.0 + image: node:24.11.0 container_name: 'ecamp3-pdf' stdin_open: true tty: true @@ -100,7 +101,7 @@ services: - CI=${CI} print: - image: node:24.10.0 + image: node:24.11.0 container_name: 'ecamp3-print' user: ${USER_ID:-1000} volumes: @@ -169,7 +170,7 @@ services: restart: on-failure browserless: - image: ghcr.io/browserless/chrome:v2.34.1 + image: ghcr.io/browserless/chrome:v2.38.2 container_name: 'ecamp3-browserless' ports: - '3010:3000' @@ -181,7 +182,7 @@ services: - ENABLE_DEBUGGER=false e2e: - image: cypress/included:15.4.0@sha256:2039347f99ef06ba66f8365361b7e869b7ba00e5d9437958f1df4c499909ec14 + image: cypress/included:15.6.0@sha256:46bb4de6756baa895c41c671a0538cffea9e93300313e343138101048585d637 profiles: ['e2e'] container_name: 'ecamp3-e2e' environment: @@ -211,7 +212,7 @@ services: stop_signal: SIGKILL translation: - image: node:24.10.0 + image: node:24.11.0 profiles: ['translation'] container_name: 'ecamp3-translation' volumes: diff --git a/e2e/package-lock.json b/e2e/package-lock.json index acf543b1ae..0646664bbc 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -6,18 +6,18 @@ "": { "name": "@ecamp3/e2e", "devDependencies": { - "@babel/eslint-parser": "7.28.4", - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", - "cypress": "15.5.0", + "@babel/eslint-parser": "7.28.5", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", + "cypress": "15.6.0", "cypress-terminal-report": "7.3.3", "cypress-wait-until": "3.0.2", - "eslint": "9.38.0", + "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-cypress": "5.2.0", "eslint-plugin-prettier": "5.5.4", - "globals": "16.4.0", - "pdfjs-dist": "5.4.296", + "globals": "16.5.0", + "pdfjs-dist": "5.4.394", "prettier": "3.6.2" } }, @@ -79,9 +79,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz", - "integrity": "sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", + "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", "dev": true, "license": "MIT", "dependencies": { @@ -375,13 +375,13 @@ } }, "node_modules/@eslint/compat": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.0.tgz", - "integrity": "sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", + "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -411,22 +411,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", - "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -474,9 +474,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", - "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -497,13 +497,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { @@ -613,9 +613,9 @@ } }, "node_modules/@napi-rs/canvas": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.80.tgz", - "integrity": "sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.82.tgz", + "integrity": "sha512-FGjyUBoF0sl1EenSiE4UV2WYu76q6F9GSYedq5EiOCOyGYoQ/Owulcv6rd7v/tWOpljDDtefXXIaOCJrVKem4w==", "dev": true, "license": "MIT", "optional": true, @@ -626,22 +626,22 @@ "node": ">= 10" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.80", - "@napi-rs/canvas-darwin-arm64": "0.1.80", - "@napi-rs/canvas-darwin-x64": "0.1.80", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.80", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.80", - "@napi-rs/canvas-linux-arm64-musl": "0.1.80", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.80", - "@napi-rs/canvas-linux-x64-gnu": "0.1.80", - "@napi-rs/canvas-linux-x64-musl": "0.1.80", - "@napi-rs/canvas-win32-x64-msvc": "0.1.80" + "@napi-rs/canvas-android-arm64": "0.1.82", + "@napi-rs/canvas-darwin-arm64": "0.1.82", + "@napi-rs/canvas-darwin-x64": "0.1.82", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.82", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.82", + "@napi-rs/canvas-linux-arm64-musl": "0.1.82", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.82", + "@napi-rs/canvas-linux-x64-gnu": "0.1.82", + "@napi-rs/canvas-linux-x64-musl": "0.1.82", + "@napi-rs/canvas-win32-x64-msvc": "0.1.82" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.80.tgz", - "integrity": "sha512-sk7xhN/MoXeuExlggf91pNziBxLPVUqF2CAVnB57KLG/pz7+U5TKG8eXdc3pm0d7Od0WreB6ZKLj37sX9muGOQ==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.82.tgz", + "integrity": "sha512-bvZhN0iI54ouaQOrgJV96H2q7J3ZoufnHf4E1fUaERwW29Rz4rgicohnAg4venwBJZYjGl5Yl3CGmlAl1LZowQ==", "cpu": [ "arm64" ], @@ -656,9 +656,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.80.tgz", - "integrity": "sha512-O64APRTXRUiAz0P8gErkfEr3lipLJgM6pjATwavZ22ebhjYl/SUbpgM0xcWPQBNMP1n29afAC/Us5PX1vg+JNQ==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.82.tgz", + "integrity": "sha512-InuBHKCyuFqhNwNr4gpqazo5Xp6ltKflqOLiROn4hqAS8u21xAHyYCJRgHwd+a5NKmutFTaRWeUIT/vxWbU/iw==", "cpu": [ "arm64" ], @@ -673,9 +673,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.80.tgz", - "integrity": "sha512-FqqSU7qFce0Cp3pwnTjVkKjjOtxMqRe6lmINxpIZYaZNnVI0H5FtsaraZJ36SiTHNjZlUB69/HhxNDT1Aaa9vA==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.82.tgz", + "integrity": "sha512-aQGV5Ynn96onSXcuvYb2y7TRXD/t4CL2EGmnGqvLyeJX1JLSNisKQlWN/1bPDDXymZYSdUqbXehj5qzBlOx+RQ==", "cpu": [ "x64" ], @@ -690,9 +690,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.80.tgz", - "integrity": "sha512-eyWz0ddBDQc7/JbAtY4OtZ5SpK8tR4JsCYEZjCE3dI8pqoWUC8oMwYSBGCYfsx2w47cQgQCgMVRVTFiiO38hHQ==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.82.tgz", + "integrity": "sha512-YIUpmHWeHGGRhWitT1KJkgj/JPXPfc9ox8oUoyaGPxolLGPp5AxJkq8wIg8CdFGtutget968dtwmx71m8o3h5g==", "cpu": [ "arm" ], @@ -707,9 +707,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.80.tgz", - "integrity": "sha512-qwA63t8A86bnxhuA/GwOkK3jvb+XTQaTiVML0vAWoHyoZYTjNs7BzoOONDgTnNtr8/yHrq64XXzUoLqDzU+Uuw==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.82.tgz", + "integrity": "sha512-AwLzwLBgmvk7kWeUgItOUor/QyG31xqtD26w1tLpf4yE0hiXTGp23yc669aawjB6FzgIkjh1NKaNS52B7/qEBQ==", "cpu": [ "arm64" ], @@ -724,9 +724,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.80.tgz", - "integrity": "sha512-1XbCOz/ymhj24lFaIXtWnwv/6eFHXDrjP0jYkc6iHQ9q8oXKzUX1Lc6bu+wuGiLhGh2GS/2JlfORC5ZcXimRcg==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.82.tgz", + "integrity": "sha512-moZWuqepAwWBffdF4JDadt8TgBD02iMhG6I1FHZf8xO20AsIp9rB+p0B8Zma2h2vAF/YMjeFCDmW5un6+zZz9g==", "cpu": [ "arm64" ], @@ -741,9 +741,9 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.80.tgz", - "integrity": "sha512-XTzR125w5ZMs0lJcxRlS1K3P5RaZ9RmUsPtd1uGt+EfDyYMu4c6SEROYsxyatbbu/2+lPe7MPHOO/0a0x7L/gw==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.82.tgz", + "integrity": "sha512-w9++2df2kG9eC9LWYIHIlMLuhIrKGQYfUxs97CwgxYjITeFakIRazI9LYWgVzEc98QZ9x9GQvlicFsrROV59MQ==", "cpu": [ "riscv64" ], @@ -758,9 +758,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.80.tgz", - "integrity": "sha512-BeXAmhKg1kX3UCrJsYbdQd3hIMDH/K6HnP/pG2LuITaXhXBiNdh//TVVVVCBbJzVQaV5gK/4ZOCMrQW9mvuTqA==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.82.tgz", + "integrity": "sha512-lZulOPwrRi6hEg/17CaqdwWEUfOlIJuhXxincx1aVzsVOCmyHf+xFq4i6liJl1P+x2v6Iz2Z/H5zHvXJCC7Bwg==", "cpu": [ "x64" ], @@ -775,9 +775,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.80.tgz", - "integrity": "sha512-x0XvZWdHbkgdgucJsRxprX/4o4sEed7qo9rCQA9ugiS9qE2QvP0RIiEugtZhfLH3cyI+jIRFJHV4Fuz+1BHHMg==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.82.tgz", + "integrity": "sha512-Be9Wf5RTv1w6GXlTph55K3PH3vsAh1Ax4T1FQY1UYM0QfD0yrwGdnJ8/fhqw7dEgMjd59zIbjJQC8C3msbGn5g==", "cpu": [ "x64" ], @@ -792,9 +792,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.80", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.80.tgz", - "integrity": "sha512-Z8jPsM6df5V8B1HrCHB05+bDiCxjE9QA//3YrkKIdVDEwn5RKaqOxCJDRJkl48cJbylcrJbW4HxZbTte8juuPg==", + "version": "0.1.82", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.82.tgz", + "integrity": "sha512-LN/i8VrvxTDmEEK1c10z2cdOTkWT76LlTGtyZe5Kr1sqoSomKeExAjbilnu1+oee5lZUgS5yfZ2LNlVhCeARuw==", "cpu": [ "x64" ], @@ -846,9 +846,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", - "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "dev": true, "license": "MIT", "optional": true, @@ -1129,9 +1129,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.20", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz", - "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==", + "version": "2.8.27", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.27.tgz", + "integrity": "sha512-2CXFpkjVnY2FT+B6GrSYxzYf65BJWEqz5tIRHCvNsZZ2F3CmsCB37h8SpYgKG7y9C4YAeTipIPWG7EmFmhAeXA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1174,9 +1174,9 @@ } }, "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -1195,10 +1195,10 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { @@ -1295,9 +1295,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "dev": true, "funding": [ { @@ -1539,9 +1539,9 @@ } }, "node_modules/cypress": { - "version": "15.5.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.5.0.tgz", - "integrity": "sha512-7jXBsh5hTfjxr9QQONC2IbdTj0nxSyU8x4eiarMZBzXzCj3pedKviUx8JnLcE4vL8e0TsOzp70WSLRORjEssRA==", + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.6.0.tgz", + "integrity": "sha512-Vqo66GG1vpxZ7H1oDX9umfmzA3nF7Wy80QAc3VjwPREO5zTY4d1xfQFNPpOWleQl9vpdmR2z1liliOcYlRX6rQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1649,9 +1649,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.18", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", - "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", "dev": true, "license": "MIT" }, @@ -1717,9 +1717,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.239", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.239.tgz", - "integrity": "sha512-1y5w0Zsq39MSPmEjHjbizvhYoTaulVtivpxkp5q5kaPmQtsK6/2nvAzGRxNMS9DoYySp9PkW0MAQDwU1m764mg==", + "version": "1.5.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", + "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", "dev": true, "license": "ISC" }, @@ -1828,9 +1828,9 @@ } }, "node_modules/eslint": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", - "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "peer": true, @@ -1838,11 +1838,11 @@ "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.1", - "@eslint/core": "^0.16.0", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.38.0", - "@eslint/plugin-kit": "^0.4.0", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -2465,9 +2465,9 @@ } }, "node_modules/globals": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", - "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "dev": true, "license": "MIT", "engines": { @@ -2784,9 +2784,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -3149,9 +3149,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz", - "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, @@ -3314,16 +3314,16 @@ } }, "node_modules/pdfjs-dist": { - "version": "5.4.296", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.4.296.tgz", - "integrity": "sha512-DlOzet0HO7OEnmUmB6wWGJrrdvbyJKftI1bhMitK7O2N8W2gc757yyYBbINy9IDafXAV9wmKr9t7xsTaNKRG5Q==", + "version": "5.4.394", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-5.4.394.tgz", + "integrity": "sha512-9ariAYGqUJzx+V/1W4jHyiyCep6IZALmDzoaTLZ6VNu8q9LWi1/ukhzHgE2Xsx96AZi0mbZuK4/ttIbqSbLypg==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=20.16.0 || >=22.3.0" }, "optionalDependencies": { - "@napi-rs/canvas": "^0.1.80" + "@napi-rs/canvas": "^0.1.81" } }, "node_modules/pend": { diff --git a/e2e/package.json b/e2e/package.json index abd4fe6682..5e7c8a18f0 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -12,18 +12,18 @@ "lint:check:prettier": "prettier --check --ignore-path .gitignore **/*.{js,mjs,json,md}" }, "devDependencies": { - "@babel/eslint-parser": "7.28.4", - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", - "cypress": "15.5.0", + "@babel/eslint-parser": "7.28.5", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", + "cypress": "15.6.0", "cypress-terminal-report": "7.3.3", "cypress-wait-until": "3.0.2", - "eslint": "9.38.0", + "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-cypress": "5.2.0", "eslint-plugin-prettier": "5.5.4", - "globals": "16.4.0", - "pdfjs-dist": "5.4.296", + "globals": "16.5.0", + "pdfjs-dist": "5.4.394", "prettier": "3.6.2" }, "overrides": { diff --git a/pdf/package-lock.json b/pdf/package-lock.json index 331ecc79e6..8e2206f051 100644 --- a/pdf/package-lock.json +++ b/pdf/package-lock.json @@ -6,36 +6,36 @@ "": { "name": "@ecamp3/client-pdf", "dependencies": { - "@vue/runtime-core": "3.5.22", + "@vue/runtime-core": "3.5.24", "html-entities": "2.6.0", "html-parse-stringify": "3.0.1" }, "devDependencies": { - "@babel/eslint-parser": "7.28.4", - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", + "@babel/eslint-parser": "7.28.5", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", "@intlify/core": "11.1.12", - "@rushstack/eslint-patch": "1.14.0", + "@rushstack/eslint-patch": "1.14.1", "@vitejs/plugin-vue": "6.0.1", "@vitest/coverage-v8": "3.2.4", "@vue/babel-preset-app": "5.0.9", - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-sfc": "3.5.22", + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-sfc": "3.5.24", "@vue/eslint-config-prettier": "10.2.0", - "@vue/runtime-dom": "3.5.22", - "@vue/server-renderer": "3.5.22", - "@vue/shared": "3.5.22", + "@vue/runtime-dom": "3.5.24", + "@vue/server-renderer": "3.5.24", + "@vue/shared": "3.5.24", "@vue/test-utils": "2.4.6", "css": "3.0.0", - "dayjs": "1.11.18", - "eslint": "9.38.0", + "dayjs": "1.11.19", + "eslint": "9.39.1", "eslint-plugin-local-rules": "3.0.2", "eslint-plugin-vue": "10.5.1", - "globals": "16.4.0", - "jsdom": "27.0.1", + "globals": "16.5.0", + "jsdom": "27.1.0", "prettier": "3.6.2", "url-template": "3.1.1", - "vite": "7.1.11", + "vite": "7.2.2", "vitest": "3.2.4" }, "peerDependencies": { @@ -48,6 +48,13 @@ "runes": "0.4.3" } }, + "node_modules/@acemir/cssom": { + "version": "0.9.23", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.23.tgz", + "integrity": "sha512-2kJ1HxBKzPLbmhZpxBiTZggjtgCwKg1ma5RHShxvd6zgqhDEdEkzpiwe7jLkI2p2BrZvFCXIihdoMkl1H39VnA==", + "dev": true, + "license": "MIT" + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -87,9 +94,9 @@ } }, "node_modules/@asamuzakjp/dom-selector": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.2.tgz", - "integrity": "sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.4.tgz", + "integrity": "sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==", "dev": true, "license": "MIT", "dependencies": { @@ -175,9 +182,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.4.tgz", - "integrity": "sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz", + "integrity": "sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==", "dev": true, "license": "MIT", "dependencies": { @@ -1869,9 +1876,9 @@ } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz", - "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.16.tgz", + "integrity": "sha512-2SpS4/UaWQaGpBINyG5ZuCHnUDeVByOhvbkARwfmnfxDvTaj80yOI1cD8Tw93ICV5Fx4fnyDKWQZI1CDtcWyUg==", "dev": true, "funding": [ { @@ -1886,9 +1893,6 @@ "license": "MIT-0", "engines": { "node": ">=18" - }, - "peerDependencies": { - "postcss": "^8.4" } }, "node_modules/@csstools/css-tokenizer": { @@ -1913,9 +1917,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", - "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -1930,9 +1934,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", - "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -1947,9 +1951,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", - "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -1964,9 +1968,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", - "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -1981,9 +1985,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", - "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -1998,9 +2002,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", - "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -2015,9 +2019,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", - "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -2032,9 +2036,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", - "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -2049,9 +2053,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", - "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -2066,9 +2070,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", - "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -2083,9 +2087,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", - "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -2100,9 +2104,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", - "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -2117,9 +2121,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", - "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -2134,9 +2138,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", - "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -2151,9 +2155,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", - "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -2168,9 +2172,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", - "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -2185,9 +2189,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", - "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -2202,9 +2206,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", - "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -2219,9 +2223,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", - "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -2236,9 +2240,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", - "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -2253,9 +2257,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", - "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -2270,9 +2274,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", - "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "cpu": [ "arm64" ], @@ -2287,9 +2291,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", - "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -2304,9 +2308,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", - "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -2321,9 +2325,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", - "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -2338,9 +2342,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", - "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -2397,13 +2401,13 @@ } }, "node_modules/@eslint/compat": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.0.tgz", - "integrity": "sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", + "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2433,22 +2437,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", - "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2496,9 +2500,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", - "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -2519,13 +2523,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { @@ -2910,9 +2914,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", "cpu": [ "arm" ], @@ -2924,9 +2928,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", "cpu": [ "arm64" ], @@ -2938,9 +2942,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", "cpu": [ "arm64" ], @@ -2952,9 +2956,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", "cpu": [ "x64" ], @@ -2966,9 +2970,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", "cpu": [ "arm64" ], @@ -2980,9 +2984,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", "cpu": [ "x64" ], @@ -2994,9 +2998,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", "cpu": [ "arm" ], @@ -3008,9 +3012,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", "cpu": [ "arm" ], @@ -3022,9 +3026,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", "cpu": [ "arm64" ], @@ -3036,9 +3040,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", "cpu": [ "arm64" ], @@ -3050,9 +3054,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", "cpu": [ "loong64" ], @@ -3064,9 +3068,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", "cpu": [ "ppc64" ], @@ -3078,9 +3082,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", "cpu": [ "riscv64" ], @@ -3092,9 +3096,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", "cpu": [ "riscv64" ], @@ -3106,9 +3110,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", "cpu": [ "s390x" ], @@ -3120,9 +3124,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", "cpu": [ "x64" ], @@ -3134,9 +3138,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", "cpu": [ "x64" ], @@ -3148,9 +3152,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", "cpu": [ "arm64" ], @@ -3162,9 +3166,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", "cpu": [ "arm64" ], @@ -3176,9 +3180,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", "cpu": [ "ia32" ], @@ -3190,9 +3194,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", "cpu": [ "x64" ], @@ -3204,9 +3208,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", "cpu": [ "x64" ], @@ -3218,9 +3222,9 @@ ] }, "node_modules/@rushstack/eslint-patch": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.14.0.tgz", - "integrity": "sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.14.1.tgz", + "integrity": "sha512-jGTk8UD/RdjsNZW8qq10r0RBvxL8OWtoT+kImlzPDFilmozzM+9QmIJsmze9UiSBrFU45ZxhTYBypn9q9z/VfQ==", "dev": true, "license": "MIT" }, @@ -3682,57 +3686,57 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz", - "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.24.tgz", + "integrity": "sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.4", - "@vue/shared": "3.5.22", + "@babel/parser": "^7.28.5", + "@vue/shared": "3.5.24", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz", - "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.24.tgz", + "integrity": "sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-core": "3.5.24", + "@vue/shared": "3.5.24" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz", - "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.24.tgz", + "integrity": "sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.4", - "@vue/compiler-core": "3.5.22", - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-ssr": "3.5.22", - "@vue/shared": "3.5.22", + "@babel/parser": "^7.28.5", + "@vue/compiler-core": "3.5.24", + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-ssr": "3.5.24", + "@vue/shared": "3.5.24", "estree-walker": "^2.0.2", - "magic-string": "^0.30.19", + "magic-string": "^0.30.21", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz", - "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.24.tgz", + "integrity": "sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-dom": "3.5.24", + "@vue/shared": "3.5.24" } }, "node_modules/@vue/eslint-config-prettier": { @@ -3751,55 +3755,55 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.22.tgz", - "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.24.tgz", + "integrity": "sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.22" + "@vue/shared": "3.5.24" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.22.tgz", - "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.24.tgz", + "integrity": "sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/reactivity": "3.5.24", + "@vue/shared": "3.5.24" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz", - "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.24.tgz", + "integrity": "sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.22", - "@vue/runtime-core": "3.5.22", - "@vue/shared": "3.5.22", + "@vue/reactivity": "3.5.24", + "@vue/runtime-core": "3.5.24", + "@vue/shared": "3.5.24", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.22.tgz", - "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.24.tgz", + "integrity": "sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-ssr": "3.5.24", + "@vue/shared": "3.5.24" }, "peerDependencies": { - "vue": "3.5.22" + "vue": "3.5.24" } }, "node_modules/@vue/shared": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz", - "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.24.tgz", + "integrity": "sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==", "license": "MIT" }, "node_modules/@vue/test-utils": { @@ -3927,9 +3931,9 @@ } }, "node_modules/ast-v8-to-istanbul": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.7.tgz", - "integrity": "sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz", + "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4048,9 +4052,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.20", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz", - "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==", + "version": "2.8.27", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.27.tgz", + "integrity": "sha512-2CXFpkjVnY2FT+B6GrSYxzYf65BJWEqz5tIRHCvNsZZ2F3CmsCB37h8SpYgKG7y9C4YAeTipIPWG7EmFmhAeXA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4103,9 +4107,9 @@ } }, "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -4124,10 +4128,10 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { @@ -4218,9 +4222,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "dev": true, "funding": [ { @@ -4449,9 +4453,9 @@ } }, "node_modules/cssstyle": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz", - "integrity": "sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.3.tgz", + "integrity": "sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==", "dev": true, "license": "MIT", "dependencies": { @@ -4485,9 +4489,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.18", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", - "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", "dev": true, "license": "MIT" }, @@ -4666,9 +4670,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.239", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.239.tgz", - "integrity": "sha512-1y5w0Zsq39MSPmEjHjbizvhYoTaulVtivpxkp5q5kaPmQtsK6/2nvAzGRxNMS9DoYySp9PkW0MAQDwU1m764mg==", + "version": "1.5.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", + "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", "dev": true, "license": "ISC" }, @@ -4739,9 +4743,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", - "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4752,32 +4756,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.11", - "@esbuild/android-arm": "0.25.11", - "@esbuild/android-arm64": "0.25.11", - "@esbuild/android-x64": "0.25.11", - "@esbuild/darwin-arm64": "0.25.11", - "@esbuild/darwin-x64": "0.25.11", - "@esbuild/freebsd-arm64": "0.25.11", - "@esbuild/freebsd-x64": "0.25.11", - "@esbuild/linux-arm": "0.25.11", - "@esbuild/linux-arm64": "0.25.11", - "@esbuild/linux-ia32": "0.25.11", - "@esbuild/linux-loong64": "0.25.11", - "@esbuild/linux-mips64el": "0.25.11", - "@esbuild/linux-ppc64": "0.25.11", - "@esbuild/linux-riscv64": "0.25.11", - "@esbuild/linux-s390x": "0.25.11", - "@esbuild/linux-x64": "0.25.11", - "@esbuild/netbsd-arm64": "0.25.11", - "@esbuild/netbsd-x64": "0.25.11", - "@esbuild/openbsd-arm64": "0.25.11", - "@esbuild/openbsd-x64": "0.25.11", - "@esbuild/openharmony-arm64": "0.25.11", - "@esbuild/sunos-x64": "0.25.11", - "@esbuild/win32-arm64": "0.25.11", - "@esbuild/win32-ia32": "0.25.11", - "@esbuild/win32-x64": "0.25.11" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { @@ -4804,9 +4808,9 @@ } }, "node_modules/eslint": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", - "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "peer": true, @@ -4814,11 +4818,11 @@ "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.1", - "@eslint/core": "^0.16.0", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.38.0", - "@eslint/plugin-kit": "^0.4.0", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -5407,9 +5411,9 @@ } }, "node_modules/globals": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", - "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "dev": true, "license": "MIT", "engines": { @@ -5842,9 +5846,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -5855,14 +5859,15 @@ } }, "node_modules/jsdom": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.1.tgz", - "integrity": "sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==", + "version": "27.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.1.0.tgz", + "integrity": "sha512-Pcfm3eZ+eO4JdZCXthW9tCDT3nF4K+9dmeZ+5X39n+Kqz0DDIABRP5CAEOHRFZk8RGuC2efksTJxrjp8EXCunQ==", "dev": true, "license": "MIT", "dependencies": { - "@asamuzakjp/dom-selector": "^6.7.2", - "cssstyle": "^5.3.1", + "@acemir/cssom": "^0.9.19", + "@asamuzakjp/dom-selector": "^6.7.3", + "cssstyle": "^5.3.2", "data-urls": "^6.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^4.0.0", @@ -5870,7 +5875,6 @@ "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", "parse5": "^8.0.0", - "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^6.0.0", @@ -5883,7 +5887,7 @@ "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=20" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { "canvas": "^3.0.0" @@ -6056,9 +6060,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6186,9 +6190,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz", - "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, @@ -6478,7 +6482,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -6679,9 +6682,9 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", "dev": true, "license": "MIT", "dependencies": { @@ -6695,38 +6698,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", "fsevents": "~2.3.2" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, "node_modules/runes": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/runes/-/runes-0.4.3.tgz", @@ -7409,9 +7405,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", - "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "dev": true, "license": "MIT", "peer": true, @@ -7605,18 +7601,18 @@ } }, "node_modules/vue": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz", - "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.24.tgz", + "integrity": "sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-sfc": "3.5.22", - "@vue/runtime-dom": "3.5.22", - "@vue/server-renderer": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-sfc": "3.5.24", + "@vue/runtime-dom": "3.5.24", + "@vue/server-renderer": "3.5.24", + "@vue/shared": "3.5.24" }, "peerDependencies": { "typescript": "*" diff --git a/pdf/package.json b/pdf/package.json index d8d4534c76..c17c850e77 100644 --- a/pdf/package.json +++ b/pdf/package.json @@ -18,7 +18,7 @@ "lint:check:prettier": "prettier --check --ignore-path .prettierignore **/*.{css,scss,json,mjs}" }, "dependencies": { - "@vue/runtime-core": "3.5.22", + "@vue/runtime-core": "3.5.24", "html-entities": "2.6.0", "html-parse-stringify": "3.0.1" }, @@ -32,31 +32,31 @@ "runes": "0.4.3" }, "devDependencies": { - "@babel/eslint-parser": "7.28.4", - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", + "@babel/eslint-parser": "7.28.5", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", "@intlify/core": "11.1.12", - "@rushstack/eslint-patch": "1.14.0", + "@rushstack/eslint-patch": "1.14.1", "@vitejs/plugin-vue": "6.0.1", "@vitest/coverage-v8": "3.2.4", "@vue/babel-preset-app": "5.0.9", - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-sfc": "3.5.22", + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-sfc": "3.5.24", "@vue/eslint-config-prettier": "10.2.0", - "@vue/runtime-dom": "3.5.22", - "@vue/server-renderer": "3.5.22", - "@vue/shared": "3.5.22", + "@vue/runtime-dom": "3.5.24", + "@vue/server-renderer": "3.5.24", + "@vue/shared": "3.5.24", "@vue/test-utils": "2.4.6", "css": "3.0.0", - "dayjs": "1.11.18", - "eslint": "9.38.0", + "dayjs": "1.11.19", + "eslint": "9.39.1", "eslint-plugin-local-rules": "3.0.2", "eslint-plugin-vue": "10.5.1", - "globals": "16.4.0", - "jsdom": "27.0.1", + "globals": "16.5.0", + "jsdom": "27.1.0", "prettier": "3.6.2", "url-template": "3.1.1", - "vite": "7.1.11", + "vite": "7.2.2", "vitest": "3.2.4" }, "overrides": { diff --git a/print/package-lock.json b/print/package-lock.json index 9881f669be..6a0811f9c9 100644 --- a/print/package-lock.json +++ b/print/package-lock.json @@ -8,50 +8,56 @@ "dependencies": { "@jamescoyle/vue-icon": "0.1.2", "@mdi/js": "7.4.47", - "@sentry/node": "10.20.0", - "axios": "1.12.2", + "@sentry/node": "10.23.0", + "axios": "1.13.2", "colorjs.io": "0.5.2", - "dayjs": "1.11.18", + "dayjs": "1.11.19", "deepmerge": "4.3.1", "hal-json-vuex": "3.0.0-alpha.10", - "isomorphic-dompurify": "2.29.0", + "isomorphic-dompurify": "2.31.0", "lodash-es": "4.17.21", - "puppeteer-core": "24.25.0", + "puppeteer-core": "24.29.1", "runes": "0.4.3", "vuex": "4.1.0" }, "devDependencies": { - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", - "@nuxt/eslint": "1.9.0", - "@nuxt/eslint-config": "1.9.0", - "@nuxtjs/i18n": "10.1.1", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", + "@nuxt/eslint": "1.10.0", + "@nuxt/eslint-config": "1.10.0", + "@nuxtjs/i18n": "10.2.0", "@nuxtjs/tailwindcss": "6.14.0", "@tailwindcss/typography": "0.5.19", - "@typescript-eslint/eslint-plugin": "8.46.2", + "@typescript-eslint/eslint-plugin": "8.46.4", "@vitest/coverage-v8": "3.2.4", - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-sfc": "3.5.22", - "@vue/runtime-dom": "3.5.22", - "@vue/server-renderer": "3.5.22", - "@vue/shared": "3.5.22", + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-sfc": "3.5.24", + "@vue/runtime-dom": "3.5.24", + "@vue/server-renderer": "3.5.24", + "@vue/shared": "3.5.24", "@vue/test-utils": "2.4.6", - "eslint": "9.38.0", + "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-local-rules": "3.0.2", "eslint-plugin-prettier": "5.5.4", "eslint-plugin-vue": "10.5.1", "eslint-plugin-vue-scoped-css": "2.12.0", - "globals": "16.4.0", - "nuxt": "4.1.3", + "globals": "16.5.0", + "nuxt": "4.2.1", "prettier": "3.6.2", "sass": "1.82.0", "vite-plugin-eslint2": "5.0.4", "vite-svg-loader": "5.1.0", "vitest": "3.2.4", - "vue": "3.5.22" + "vue": "3.5.24" } }, + "node_modules/@acemir/cssom": { + "version": "0.9.23", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.23.tgz", + "integrity": "sha512-2kJ1HxBKzPLbmhZpxBiTZggjtgCwKg1ma5RHShxvd6zgqhDEdEkzpiwe7jLkI2p2BrZvFCXIihdoMkl1H39VnA==", + "license": "MIT" + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -143,9 +149,9 @@ } }, "node_modules/@asamuzakjp/dom-selector": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.2.tgz", - "integrity": "sha512-ccKogJI+0aiDhOahdjANIc9SDixSud1gbwdVrhn7kMopAtLXqsz9MKmQQtIl6Y5aC2IYq+j4dz/oedL2AVMmVQ==", + "version": "6.7.4", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.4.tgz", + "integrity": "sha512-buQDjkm+wDPXd6c13534URWZqbz0RP5PAhXZ+LIoa5LgwInT9HVJvGIJivg75vi8I13CxDGdTnz+aY5YUJlIAA==", "license": "MIT", "dependencies": { "@asamuzakjp/nwsapi": "^2.3.9", @@ -760,9 +766,9 @@ } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz", - "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.16.tgz", + "integrity": "sha512-2SpS4/UaWQaGpBINyG5ZuCHnUDeVByOhvbkARwfmnfxDvTaj80yOI1cD8Tw93ICV5Fx4fnyDKWQZI1CDtcWyUg==", "funding": [ { "type": "github", @@ -776,9 +782,6 @@ "license": "MIT-0", "engines": { "node": ">=18" - }, - "peerDependencies": { - "postcss": "^8.4" } }, "node_modules/@csstools/css-tokenizer": { @@ -801,10 +804,31 @@ "node": ">=18" } }, + "node_modules/@dxup/nuxt": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@dxup/nuxt/-/nuxt-0.2.2.tgz", + "integrity": "sha512-RNpJjDZs9+JcT9N87AnOuHsNM75DEd58itADNd/s1LIF6BZbTLZV0xxilJZb55lntn4TYvscTaXLCBX2fq9CXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@dxup/unimport": "^0.1.2", + "@nuxt/kit": "^4.2.1", + "chokidar": "^4.0.3", + "pathe": "^2.0.3", + "tinyglobby": "^0.2.15" + } + }, + "node_modules/@dxup/unimport": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@dxup/unimport/-/unimport-0.1.2.tgz", + "integrity": "sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@emnapi/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.6.0.tgz", - "integrity": "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.0.tgz", + "integrity": "sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==", "dev": true, "license": "MIT", "optional": true, @@ -814,9 +838,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", - "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.0.tgz", + "integrity": "sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==", "dev": true, "license": "MIT", "optional": true, @@ -836,26 +860,36 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.56.0.tgz", - "integrity": "sha512-c6EW+aA1w2rjqOMjbL93nZlwxp6c1Ln06vTYs5FjRRhmJXK8V/OrSXdT+pUr4aRYgjCgu8/OkiZr0tzeVrRSbw==", + "version": "0.76.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz", + "integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.8", - "@typescript-eslint/types": "^8.42.0", + "@typescript-eslint/types": "^8.46.0", "comment-parser": "1.4.1", "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~5.1.0" + "jsdoc-type-pratt-parser": "~6.10.0" }, "engines": { "node": ">=20.11.0" } }, + "node_modules/@es-joy/resolve.exports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", - "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -870,9 +904,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", - "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -887,9 +921,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", - "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -904,9 +938,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", - "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -921,9 +955,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", - "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -938,9 +972,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", - "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -955,9 +989,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", - "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -972,9 +1006,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", - "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -989,9 +1023,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", - "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -1006,9 +1040,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", - "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -1023,9 +1057,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", - "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -1040,9 +1074,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", - "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -1057,9 +1091,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", - "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -1074,9 +1108,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", - "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -1091,9 +1125,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", - "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -1108,9 +1142,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", - "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -1125,9 +1159,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", - "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -1142,9 +1176,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", - "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -1159,9 +1193,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", - "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -1176,9 +1210,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", - "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -1193,9 +1227,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", - "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -1210,9 +1244,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", - "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "cpu": [ "arm64" ], @@ -1227,9 +1261,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", - "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -1244,9 +1278,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", - "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -1261,9 +1295,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", - "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -1278,9 +1312,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", - "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -1324,13 +1358,13 @@ } }, "node_modules/@eslint/compat": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.0.tgz", - "integrity": "sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.1.tgz", + "integrity": "sha512-cfO82V9zxxGBxcQDr1lfaYB7wykTa0b00mGa36FrJl7iTFd0Z2cHfEYuxcBRP/iNijCsWsEkA+jzT8hGYmv33w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1384,13 +1418,13 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.1.tgz", - "integrity": "sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1430,10 +1464,57 @@ "eslint": "^8.50.0 || ^9.0.0" } }, + "node_modules/@eslint/config-inspector/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/config-inspector/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/config-inspector/node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/core": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", - "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1515,9 +1596,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", - "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -1538,13 +1619,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", - "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { @@ -1667,13 +1748,13 @@ } }, "node_modules/@intlify/h3": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@intlify/h3/-/h3-0.7.1.tgz", - "integrity": "sha512-D/9+L7IzPrOa7e6R/ztepXayAq+snfzBYIwAk3RbaQsLEXwVNjC5c+WKXjni1boc/plGRegw4/m33SaFwvdEpg==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@intlify/h3/-/h3-0.7.4.tgz", + "integrity": "sha512-BtL5+U3Dd9Qz6so+ArOMQWZ+nV21rOqqYUXnqwvW6J3VUXr66A9+9+vUFb/NAQvOU4kdfkO3c/9LMRGU9WZ8vw==", "dev": true, "license": "MIT", "dependencies": { - "@intlify/core": "^11.0.0", + "@intlify/core": "^11.1.12", "@intlify/utils": "^0.13.0" }, "engines": { @@ -2146,39 +2227,36 @@ } }, "node_modules/@nuxt/cli": { - "version": "3.29.3", - "resolved": "https://registry.npmjs.org/@nuxt/cli/-/cli-3.29.3.tgz", - "integrity": "sha512-48GYmH4SyzR5pqd02UXVzBfrvEGaurPKMjSWxlHgqnpI5buwOYCvH+OqvHOmvnLrDP2bxR9hbDod/UIphOjMhg==", + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/@nuxt/cli/-/cli-3.30.0.tgz", + "integrity": "sha512-nBNEkvOwqzxgvfTBUKPX0zN4h85dWjjkW+kP4OFnVaN3C3kdsbScNtYPIZyp0+ArabL5t4RT93Gyx0IZMRNzAQ==", "dev": true, "license": "MIT", "dependencies": { - "c12": "^3.3.0", + "c12": "^3.3.1", "citty": "^0.1.6", - "clipboardy": "^5.0.0", "confbox": "^0.2.2", "consola": "^3.4.2", + "copy-paste": "^2.2.0", "defu": "^6.1.4", "exsolve": "^1.0.7", "fuse.js": "^7.1.0", - "get-port-please": "^3.2.0", "giget": "^2.0.0", - "h3": "^1.15.4", "jiti": "^2.6.1", "listhen": "^1.9.0", "nypm": "^0.6.2", - "ofetch": "^1.4.1", + "ofetch": "^1.5.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.0.0", "pkg-types": "^2.3.0", "scule": "^1.3.0", - "semver": "^7.7.2", - "srvx": "^0.8.9", - "std-env": "^3.9.0", + "semver": "^7.7.3", + "srvx": "^0.9.4", + "std-env": "^3.10.0", "tinyexec": "^1.0.1", "ufo": "^1.6.1", - "undici": "^7.16.0", - "youch": "^4.1.0-beta.11" + "youch": "^4.1.0-beta.12" }, "bin": { "nuxi": "bin/nuxi.mjs", @@ -2198,42 +2276,42 @@ "license": "MIT" }, "node_modules/@nuxt/devtools": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-2.6.5.tgz", - "integrity": "sha512-Xh9XF1SzCTL5Zj6EULqsN2UjiNj4zWuUpS69rGAy5C55UTaj+Wn46IkDc6Q0+EKkGI279zlG6SzPRFawqPPUEw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-3.1.0.tgz", + "integrity": "sha512-aPH5V3j6h8bprMTR7oDqJ1AfHl0FL2JHcGlbrCA5DXLLhLL+D4L8pLgiJLEvYMo3Onk56TT7aXgPX54g/eDetg==", "dev": true, "license": "MIT", "dependencies": { - "@nuxt/devtools-kit": "2.6.5", - "@nuxt/devtools-wizard": "2.6.5", - "@nuxt/kit": "^3.19.2", - "@vue/devtools-core": "^7.7.7", - "@vue/devtools-kit": "^7.7.7", - "birpc": "^2.5.0", + "@nuxt/devtools-kit": "3.1.0", + "@nuxt/devtools-wizard": "3.1.0", + "@nuxt/kit": "^4.2.1", + "@vue/devtools-core": "^8.0.3", + "@vue/devtools-kit": "^8.0.3", + "birpc": "^2.7.0", "consola": "^3.4.2", "destr": "^2.0.5", "error-stack-parser-es": "^1.0.5", "execa": "^8.0.1", - "fast-npm-meta": "^0.4.6", + "fast-npm-meta": "^0.4.7", "get-port-please": "^3.2.0", "hookable": "^5.5.3", - "image-meta": "^0.2.1", + "image-meta": "^0.2.2", "is-installed-globally": "^1.0.0", - "launch-editor": "^2.11.1", + "launch-editor": "^2.12.0", "local-pkg": "^1.1.2", - "magicast": "^0.3.5", + "magicast": "^0.5.1", "nypm": "^0.6.2", "ohash": "^2.0.11", "pathe": "^2.0.3", - "perfect-debounce": "^1.0.0", + "perfect-debounce": "^2.0.0", "pkg-types": "^2.3.0", - "semver": "^7.7.2", - "simple-git": "^3.28.0", + "semver": "^7.7.3", + "simple-git": "^3.30.0", "sirv": "^3.0.2", "structured-clone-es": "^1.0.0", "tinyglobby": "^0.2.15", "vite-plugin-inspect": "^11.3.3", - "vite-plugin-vue-tracer": "^1.0.0", + "vite-plugin-vue-tracer": "^1.1.1", "which": "^5.0.0", "ws": "^8.18.3" }, @@ -2241,111 +2319,59 @@ "devtools": "cli.mjs" }, "peerDependencies": { + "@vitejs/devtools": "*", "vite": ">=6.0" + }, + "peerDependenciesMeta": { + "@vitejs/devtools": { + "optional": true + } } }, "node_modules/@nuxt/devtools-kit": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-2.6.5.tgz", - "integrity": "sha512-t+NxoENyzJ8KZDrnbVYv3FJI5VXqSi6X4w6ZsuIIh0aKABu6+6k9nR/LoEhrM0oekn/2LDhA0NmsRZyzCXt2xQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-3.1.0.tgz", + "integrity": "sha512-1AEZS6ge8G9X3sJauw6hTWqTpUIVqs5Uq9d7Z9cjUAinXjE+pGliVQ+i8xWCNnGLaZCCSqX/I/M/EByD3v2JIA==", "dev": true, "license": "MIT", "dependencies": { - "@nuxt/kit": "^3.19.2", + "@nuxt/kit": "^4.2.1", "execa": "^8.0.1" }, "peerDependencies": { "vite": ">=6.0" } }, - "node_modules/@nuxt/devtools-kit/node_modules/@nuxt/kit": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.19.3.tgz", - "integrity": "sha512-ze46EW5xW+UxDvinvPkYt2MzR355Az1lA3bpX8KDialgnCwr+IbkBij/udbUEC6ZFbidPkfK1eKl4ESN7gMY+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "c12": "^3.3.0", - "consola": "^3.4.2", - "defu": "^6.1.4", - "destr": "^2.0.5", - "errx": "^0.1.0", - "exsolve": "^1.0.7", - "ignore": "^7.0.5", - "jiti": "^2.6.1", - "klona": "^2.0.6", - "knitwork": "^1.2.0", - "mlly": "^1.8.0", - "ohash": "^2.0.11", - "pathe": "^2.0.3", - "pkg-types": "^2.3.0", - "rc9": "^2.1.2", - "scule": "^1.3.0", - "semver": "^7.7.2", - "std-env": "^3.9.0", - "tinyglobby": "^0.2.15", - "ufo": "^1.6.1", - "unctx": "^2.4.1", - "unimport": "^5.4.1", - "untyped": "^2.0.0" - }, - "engines": { - "node": ">=18.12.0" - } - }, "node_modules/@nuxt/devtools-wizard": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-2.6.5.tgz", - "integrity": "sha512-nYYGxT4lmQDvfHL6qolNWLu0QTavsdN/98F57falPuvdgs5ev1NuYsC12hXun+5ENcnigEcoM9Ij92qopBgqmQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-3.1.0.tgz", + "integrity": "sha512-XYYWnG6SAvALCdXbM+xklqv7sEiVZbKgGparv8jFE5Tt6l8sg80Eb+vM40+Xpdu2KE3VlFKj4F4oFwDXMvAkgA==", "dev": true, "license": "MIT", "dependencies": { "consola": "^3.4.2", "diff": "^8.0.2", "execa": "^8.0.1", - "magicast": "^0.3.5", + "magicast": "^0.5.1", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "prompts": "^2.4.2", - "semver": "^7.7.2" + "semver": "^7.7.3" }, "bin": { "devtools-wizard": "cli.mjs" } }, - "node_modules/@nuxt/devtools/node_modules/@nuxt/kit": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.19.3.tgz", - "integrity": "sha512-ze46EW5xW+UxDvinvPkYt2MzR355Az1lA3bpX8KDialgnCwr+IbkBij/udbUEC6ZFbidPkfK1eKl4ESN7gMY+w==", + "node_modules/@nuxt/devtools-wizard/node_modules/magicast": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", "dev": true, "license": "MIT", "dependencies": { - "c12": "^3.3.0", - "consola": "^3.4.2", - "defu": "^6.1.4", - "destr": "^2.0.5", - "errx": "^0.1.0", - "exsolve": "^1.0.7", - "ignore": "^7.0.5", - "jiti": "^2.6.1", - "klona": "^2.0.6", - "knitwork": "^1.2.0", - "mlly": "^1.8.0", - "ohash": "^2.0.11", - "pathe": "^2.0.3", - "pkg-types": "^2.3.0", - "rc9": "^2.1.2", - "scule": "^1.3.0", - "semver": "^7.7.2", - "std-env": "^3.9.0", - "tinyglobby": "^0.2.15", - "ufo": "^1.6.1", - "unctx": "^2.4.1", - "unimport": "^5.4.1", - "untyped": "^2.0.0" - }, - "engines": { - "node": ">=18.12.0" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" } }, "node_modules/@nuxt/devtools/node_modules/isexe": { @@ -2358,12 +2384,17 @@ "node": ">=16" } }, - "node_modules/@nuxt/devtools/node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "node_modules/@nuxt/devtools/node_modules/magicast": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" + } }, "node_modules/@nuxt/devtools/node_modules/which": { "version": "5.0.0", @@ -2382,25 +2413,25 @@ } }, "node_modules/@nuxt/eslint": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@nuxt/eslint/-/eslint-1.9.0.tgz", - "integrity": "sha512-8Wm2fDD9za+vJOOhRS2jj+MzyjCNvDhS+04Y55q9W1Ai5hFjTZ1a94jlgSwaqI1B3Zt7y5fqFoEb4wKpZ3ycWg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@nuxt/eslint/-/eslint-1.10.0.tgz", + "integrity": "sha512-cuq7jRdhVtnqrU5vcy+jW8u/2A7BHwczPkrr/5XIRB10WOA1NLC9Jo+ts4NlWbCdLy/+9jCHcOV0U94pn9SQUw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint/config-inspector": "^1.2.0", - "@nuxt/devtools-kit": "^2.6.2", - "@nuxt/eslint-config": "1.9.0", - "@nuxt/eslint-plugin": "1.9.0", - "@nuxt/kit": "^4.0.3", + "@eslint/config-inspector": "^1.3.0", + "@nuxt/devtools-kit": "^3.0.0", + "@nuxt/eslint-config": "1.10.0", + "@nuxt/eslint-plugin": "1.10.0", + "@nuxt/kit": "^4.2.0", "chokidar": "^4.0.3", - "eslint-flat-config-utils": "^2.1.1", + "eslint-flat-config-utils": "^2.1.4", "eslint-typegen": "^2.3.0", - "find-up": "^7.0.0", + "find-up": "^8.0.0", "get-port-please": "^3.2.0", - "mlly": "^1.7.4", + "mlly": "^1.8.0", "pathe": "^2.0.3", - "unimport": "^5.2.0" + "unimport": "^5.5.0" }, "peerDependencies": { "eslint": "^9.0.0", @@ -2417,31 +2448,31 @@ } }, "node_modules/@nuxt/eslint-config": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@nuxt/eslint-config/-/eslint-config-1.9.0.tgz", - "integrity": "sha512-KLiYlX/MmWR9dhC0u7GSZQl6wyVLGAHme5aAL5fAUT1PLYgcFiJIUg1Z+b296LmwHGTa+oGPRBIk3yoDmX9/9Q==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@nuxt/eslint-config/-/eslint-config-1.10.0.tgz", + "integrity": "sha512-6Ry+sV5FaTBg3a0l+4gcxuz0IsQG5dSF6OxHNDlDx2yTygMOxeCn6vdc2Cz/e4LtYGvwZIlhH9wVlnWnD3+G+Q==", "dev": true, "license": "MIT", "dependencies": { "@antfu/install-pkg": "^1.1.0", "@clack/prompts": "^0.11.0", - "@eslint/js": "^9.33.0", - "@nuxt/eslint-plugin": "1.9.0", - "@stylistic/eslint-plugin": "^5.2.3", - "@typescript-eslint/eslint-plugin": "^8.39.1", - "@typescript-eslint/parser": "^8.39.1", + "@eslint/js": "^9.38.0", + "@nuxt/eslint-plugin": "1.10.0", + "@stylistic/eslint-plugin": "^5.5.0", + "@typescript-eslint/eslint-plugin": "^8.46.2", + "@typescript-eslint/parser": "^8.46.2", "eslint-config-flat-gitignore": "^2.1.0", - "eslint-flat-config-utils": "^2.1.1", + "eslint-flat-config-utils": "^2.1.4", "eslint-merge-processors": "^2.0.0", "eslint-plugin-import-lite": "^0.3.0", "eslint-plugin-import-x": "^4.16.1", - "eslint-plugin-jsdoc": "^54.1.0", + "eslint-plugin-jsdoc": "^61.1.10", "eslint-plugin-regexp": "^2.10.0", - "eslint-plugin-unicorn": "^60.0.0", - "eslint-plugin-vue": "^10.4.0", + "eslint-plugin-unicorn": "^62.0.0", + "eslint-plugin-vue": "^10.5.1", "eslint-processor-vue-blocks": "^2.0.0", - "globals": "^16.3.0", - "local-pkg": "^1.1.1", + "globals": "^16.4.0", + "local-pkg": "^1.1.2", "pathe": "^2.0.3", "vue-eslint-parser": "^10.2.0" }, @@ -2456,27 +2487,27 @@ } }, "node_modules/@nuxt/eslint-plugin": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@nuxt/eslint-plugin/-/eslint-plugin-1.9.0.tgz", - "integrity": "sha512-DY4ZSavgFyKQxI/NCOpSCUHg3dpS2O4lAdic5UmvP2NWj1xwtvmA9UwEZQ2nW2/f/Km6N+Q53UsgFSIBjz8jDQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@nuxt/eslint-plugin/-/eslint-plugin-1.10.0.tgz", + "integrity": "sha512-KL8eCdYGuEIVlts/B+MLgL7FCpaPt2HU6m3XBsUdl+LXPI7/eCMSLlFDmDmfz+PuMx0PCGo7ayyDN6cid12Rlw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.39.1", - "@typescript-eslint/utils": "^8.39.1" + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2" }, "peerDependencies": { "eslint": "^9.0.0" } }, "node_modules/@nuxt/kit": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.1.3.tgz", - "integrity": "sha512-WK0yPIqcb3GQ8r4GutF6p/2fsyXnmmmkuwVLzN4YaJHrpA2tjEagjbxdjkWYeHW8o4XIKJ4micah4wPOVK49Mg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.2.1.tgz", + "integrity": "sha512-lLt8KLHyl7IClc3RqRpRikz15eCfTRlAWL9leVzPyg5N87FfKE/7EWgWvpiL/z4Tf3dQCIqQb88TmHE0JTIDvA==", "dev": true, "license": "MIT", "dependencies": { - "c12": "^3.3.0", + "c12": "^3.3.1", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", @@ -2491,32 +2522,82 @@ "pkg-types": "^2.3.0", "rc9": "^2.1.2", "scule": "^1.3.0", - "semver": "^7.7.2", - "std-env": "^3.9.0", + "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ufo": "^1.6.1", "unctx": "^2.4.1", - "unimport": "^5.4.1", "untyped": "^2.0.0" }, "engines": { "node": ">=18.12.0" } }, - "node_modules/@nuxt/schema": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-4.1.3.tgz", - "integrity": "sha512-ZLkIfleKHQF0PqTDEwuVVnnE/hyMdfY4m2zX8vRC0XMSbFS1I0MFcKkzWnJaMC13NYmGPnT3sX0o3lznweKHJQ==", + "node_modules/@nuxt/nitro-server": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@nuxt/nitro-server/-/nitro-server-4.2.1.tgz", + "integrity": "sha512-P6zGvKgbjwDO28A4QnRuhL0riNSxcw317nGSYfP9Z+V+GyCNVc9yCcAEuzRIvm+dv4PB6VC708my8Jq30VM9Ow==", "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "^3.5.22", + "@nuxt/devalue": "^2.0.2", + "@nuxt/kit": "4.2.1", + "@unhead/vue": "^2.0.19", + "@vue/shared": "^3.5.23", "consola": "^3.4.2", "defu": "^6.1.4", + "destr": "^2.0.5", + "devalue": "^5.4.2", + "errx": "^0.1.0", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.7", + "h3": "^1.15.4", + "impound": "^1.0.0", + "klona": "^2.0.6", + "mocked-exports": "^0.1.1", + "nitropack": "^2.12.9", "pathe": "^2.0.3", "pkg-types": "^2.3.0", - "std-env": "^3.9.0", - "ufo": "1.6.1" + "radix3": "^1.1.2", + "std-env": "^3.10.0", + "ufo": "^1.6.1", + "unctx": "^2.4.1", + "unstorage": "^1.17.2", + "vue": "^3.5.23", + "vue-bundle-renderer": "^2.2.0", + "vue-devtools-stub": "^0.1.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "nuxt": "^4.2.1" + } + }, + "node_modules/@nuxt/nitro-server/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nuxt/schema": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-4.2.1.tgz", + "integrity": "sha512-kSuma7UztDVyw8eAmN3rKFoaWjNRkJE9+kqwEurpuxG7nCwFPS7sUPSGzovzaofP+xV30tl6wveBEcDRWyQvgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "^3.5.23", + "defu": "^6.1.4", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "std-env": "^3.10.0" }, "engines": { "node": "^14.18.0 || >=16.10.0" @@ -2550,13 +2631,13 @@ } }, "node_modules/@nuxt/telemetry/node_modules/@nuxt/kit": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.19.3.tgz", - "integrity": "sha512-ze46EW5xW+UxDvinvPkYt2MzR355Az1lA3bpX8KDialgnCwr+IbkBij/udbUEC6ZFbidPkfK1eKl4ESN7gMY+w==", + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.20.1.tgz", + "integrity": "sha512-TIslaylfI5kd3AxX5qts0qyrIQ9Uq3HAA1bgIIJ+c+zpDfK338YS+YrCWxBBzDMECRCbAS58mqAd2MtJfG1ENA==", "dev": true, "license": "MIT", "dependencies": { - "c12": "^3.3.0", + "c12": "^3.3.1", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", @@ -2572,12 +2653,10 @@ "pkg-types": "^2.3.0", "rc9": "^2.1.2", "scule": "^1.3.0", - "semver": "^7.7.2", - "std-env": "^3.9.0", + "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ufo": "^1.6.1", "unctx": "^2.4.1", - "unimport": "^5.4.1", "untyped": "^2.0.0" }, "engines": { @@ -2598,39 +2677,40 @@ } }, "node_modules/@nuxt/vite-builder": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-4.1.3.tgz", - "integrity": "sha512-yrblLSpGW6h9k+sDZa+vtevQz/6JLrPAj3n97HrEmVa6qB+4sE4HWtkMNUtWsOPe60sAm9usRsjDUkkiHZ0DpA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-4.2.1.tgz", + "integrity": "sha512-SuBxCtGrHcbgrtzHwJgLe0pBXWw2T9RFQx9JQ7A3dE9RjBhzjaxtmjVHx7vtq6DCGi0d0WlW1Z1lBZUDaXy8WA==", "dev": true, "license": "MIT", "dependencies": { - "@nuxt/kit": "4.1.3", - "@rollup/plugin-replace": "^6.0.2", + "@nuxt/kit": "4.2.1", + "@rollup/plugin-replace": "^6.0.3", "@vitejs/plugin-vue": "^6.0.1", "@vitejs/plugin-vue-jsx": "^5.1.1", "autoprefixer": "^10.4.21", "consola": "^3.4.2", - "cssnano": "^7.1.1", + "cssnano": "^7.1.2", "defu": "^6.1.4", - "esbuild": "^0.25.10", + "esbuild": "^0.25.12", "escape-string-regexp": "^5.0.0", "exsolve": "^1.0.7", "get-port-please": "^3.2.0", "h3": "^1.15.4", "jiti": "^2.6.1", "knitwork": "^1.2.0", - "magic-string": "^0.30.19", + "magic-string": "^0.30.21", "mlly": "^1.8.0", "mocked-exports": "^0.1.1", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "postcss": "^8.5.6", - "rollup-plugin-visualizer": "^6.0.4", - "std-env": "^3.9.0", + "rollup-plugin-visualizer": "^6.0.5", + "seroval": "^1.3.2", + "std-env": "^3.10.0", "ufo": "^1.6.1", - "unenv": "^2.0.0-rc.21", - "vite": "^7.1.9", - "vite-node": "^3.2.4", + "unenv": "^2.0.0-rc.24", + "vite": "^7.2.1", + "vite-node": "^5.0.0", "vite-plugin-checker": "^0.11.0", "vue-bundle-renderer": "^2.2.0" }, @@ -2638,6 +2718,7 @@ "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { + "nuxt": "4.2.1", "rolldown": "^1.0.0-beta.38", "vue": "^3.3.4" }, @@ -2660,10 +2741,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@nuxt/vite-builder/node_modules/vite-node": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-5.0.0.tgz", + "integrity": "sha512-nJINVH7lHBKoyDFYnwrXbNUrmTJ2ssBHTd/mXVZfLq/O5K7ksv4CayQOA5KkbOSrsgSQg8antcVPgQmzBWWn/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.3", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^7.2.0" + }, + "bin": { + "vite-node": "vite-node.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/antfu" + } + }, "node_modules/@nuxtjs/i18n": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@nuxtjs/i18n/-/i18n-10.1.1.tgz", - "integrity": "sha512-/NpJkXZ0jP7K3h+Z6JV2miv+9GzeM27aLjLKKMW5J6jM3FzaR5hKpu9m3wNW0DkHftyg8y4bQ0xzbaQ8RXZG9g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@nuxtjs/i18n/-/i18n-10.2.0.tgz", + "integrity": "sha512-noQTJICmiWLgi6QgF26n//IwBT0p4ntEV+CALhj+/4EFGEoBxl5/AEm1Ved6WSLBWHodrayMk3dRGVfQdRP2nQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2676,26 +2780,25 @@ "@nuxt/kit": "^4.1.2", "@rollup/plugin-yaml": "^4.1.2", "@vue/compiler-sfc": "^3.5.22", - "cookie-es": "^2.0.0", "defu": "^6.1.4", "devalue": "^5.1.1", "h3": "^1.15.4", "knitwork": "^1.2.0", - "magic-string": "^0.30.19", + "magic-string": "^0.30.21", "mlly": "^1.7.4", "nuxt-define": "^1.0.0", "ohash": "^2.0.11", - "oxc-parser": "^0.93.0", - "oxc-transform": "^0.93.0", + "oxc-parser": "^0.95.0", + "oxc-transform": "^0.95.0", "oxc-walker": "^0.5.2", "pathe": "^2.0.3", "typescript": "^5.9.2", "ufo": "^1.6.1", "unplugin": "^2.3.5", - "unplugin-vue-router": "^0.15.0", + "unplugin-vue-router": "^0.16.0", "unstorage": "^1.16.1", "vue-i18n": "^11.1.11", - "vue-router": "^4.5.1" + "vue-router": "^4.6.3" }, "engines": { "node": ">=20.11.1" @@ -2730,13 +2833,13 @@ } }, "node_modules/@nuxtjs/tailwindcss/node_modules/@nuxt/kit": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.19.3.tgz", - "integrity": "sha512-ze46EW5xW+UxDvinvPkYt2MzR355Az1lA3bpX8KDialgnCwr+IbkBij/udbUEC6ZFbidPkfK1eKl4ESN7gMY+w==", + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.20.1.tgz", + "integrity": "sha512-TIslaylfI5kd3AxX5qts0qyrIQ9Uq3HAA1bgIIJ+c+zpDfK338YS+YrCWxBBzDMECRCbAS58mqAd2MtJfG1ENA==", "dev": true, "license": "MIT", "dependencies": { - "c12": "^3.3.0", + "c12": "^3.3.1", "consola": "^3.4.2", "defu": "^6.1.4", "destr": "^2.0.5", @@ -2752,12 +2855,10 @@ "pkg-types": "^2.3.0", "rc9": "^2.1.2", "scule": "^1.3.0", - "semver": "^7.7.2", - "std-env": "^3.9.0", + "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ufo": "^1.6.1", "unctx": "^2.4.1", - "unimport": "^5.4.1", "untyped": "^2.0.0" }, "engines": { @@ -3266,9 +3367,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", - "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", + "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", "license": "Apache-2.0", "peer": true, "engines": { @@ -3291,9 +3392,9 @@ } }, "node_modules/@oxc-minify/binding-android-arm64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm64/-/binding-android-arm64-0.94.0.tgz", - "integrity": "sha512-7VEBFFFAi4cYqlW/ziVs5XmNM/0IqAp7duBuTM/zus/EOc3Q2zhS9ApJo0zIwbRUZMlIm1RHe8Hths//xE7K1A==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm64/-/binding-android-arm64-0.96.0.tgz", + "integrity": "sha512-lzeIEMu/v6Y+La5JSesq4hvyKtKBq84cgQpKYTYM/yGuNk2tfd5Ha31hnC+mTh48lp/5vZH+WBfjVUjjINCfug==", "cpu": [ "arm64" ], @@ -3308,9 +3409,9 @@ } }, "node_modules/@oxc-minify/binding-darwin-arm64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-arm64/-/binding-darwin-arm64-0.94.0.tgz", - "integrity": "sha512-T0k3pG/izIutpl8cQl9Xeb0TikBILGd3rglCgRhhG5G5xsk/AAAp/qsSdzBm/8yMXksfRWqE0teh7XDWKmzOXw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-arm64/-/binding-darwin-arm64-0.96.0.tgz", + "integrity": "sha512-i0LkJAUXb4BeBFrJQbMKQPoxf8+cFEffDyLSb7NEzzKuPcH8qrVsnEItoOzeAdYam8Sr6qCHVwmBNEQzl7PWpw==", "cpu": [ "arm64" ], @@ -3325,9 +3426,9 @@ } }, "node_modules/@oxc-minify/binding-darwin-x64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-x64/-/binding-darwin-x64-0.94.0.tgz", - "integrity": "sha512-1gJeYcQf0Mmnu9Gxld2dLJGXTm9EzOQKRAjCVT2xGciKrNeekkJntDb+NdzxcSNPTjchkvbDwY6lCGZbcJx2lg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-x64/-/binding-darwin-x64-0.96.0.tgz", + "integrity": "sha512-C5vI0WPR+KPIFAD5LMOJk2J8iiT+Nv65vDXmemzXEXouzfEOLYNqnW+u6NSsccpuZHHWAiLyPFkYvKFduveAUQ==", "cpu": [ "x64" ], @@ -3342,9 +3443,9 @@ } }, "node_modules/@oxc-minify/binding-freebsd-x64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-freebsd-x64/-/binding-freebsd-x64-0.94.0.tgz", - "integrity": "sha512-LvaxVkEVLgBNQO2RUYwbmRC0cLpq5WHPsM7B4xsojwqpJNsK5l2VnTAuExvPthC1gKWlsoQsVoT03Ex/SZ4FOw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-freebsd-x64/-/binding-freebsd-x64-0.96.0.tgz", + "integrity": "sha512-3//5DNx+xUjVBMLLk2sl6hfe4fwfENJtjVQUBXjxzwPuv8xgZUqASG4cRG3WqG5Qe8dV6SbCI4EgKQFjO4KCZA==", "cpu": [ "x64" ], @@ -3359,9 +3460,9 @@ } }, "node_modules/@oxc-minify/binding-linux-arm-gnueabihf": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.94.0.tgz", - "integrity": "sha512-o/IEdJKl7Y78fIvIRPeA4ccgmOAzeMS8tsjpO7XlENWPzS3cA/6Iy4BqMqYyqUZewgt0a2ggw0zAioIwKPiDmw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.96.0.tgz", + "integrity": "sha512-WXChFKV7VdDk1NePDK1J31cpSvxACAVztJ7f7lJVYBTkH+iz5D0lCqPcE7a9eb7nC3xvz4yk7DM6dA9wlUQkQg==", "cpu": [ "arm" ], @@ -3376,9 +3477,9 @@ } }, "node_modules/@oxc-minify/binding-linux-arm-musleabihf": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.94.0.tgz", - "integrity": "sha512-hFCeIV/eCASCW/F2t/DR4JUKUNxn2pr4hAIBEBYDaGPvdOVMlMh+eMbg401ZiaQLwM26Dj53b5XWALwit0mGAw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.96.0.tgz", + "integrity": "sha512-7B18glYMX4Z/YoqgE3VRLs/2YhVLxlxNKSgrtsRpuR8xv58xca+hEhiFwZN1Rn+NSMZ29Z33LWD7iYWnqYFvRA==", "cpu": [ "arm" ], @@ -3393,9 +3494,9 @@ } }, "node_modules/@oxc-minify/binding-linux-arm64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.94.0.tgz", - "integrity": "sha512-so/XF1XdJdpWVUkyz45F3iNJgzoXgeNBoYfmDTuLFIXE2U7vAtE8DHkA87LlbC6Ry7KIM4Ehw7hP4Z4h7M51fA==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.96.0.tgz", + "integrity": "sha512-Yl+KcTldsEJNcaYxxonwAXZ2q3gxIzn3kXYQWgKWdaGIpNhOCWqF+KE5WLsldoh5Ro5SHtomvb8GM6cXrIBMog==", "cpu": [ "arm64" ], @@ -3410,9 +3511,9 @@ } }, "node_modules/@oxc-minify/binding-linux-arm64-musl": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.94.0.tgz", - "integrity": "sha512-IMi2Sq3Z3xvA06Otit/D6Vo2BATZJcDHu6dHcaznBwnpO0z0+N9i3TKprIVizBHW77wq8QBLIbQaWQn4go1WwQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.96.0.tgz", + "integrity": "sha512-rNqoFWOWaxwMmUY5fspd/h5HfvgUlA3sv9CUdA2MpnHFiyoJNovR7WU8tGh+Yn0qOAs0SNH0a05gIthHig14IA==", "cpu": [ "arm64" ], @@ -3427,9 +3528,9 @@ } }, "node_modules/@oxc-minify/binding-linux-riscv64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.94.0.tgz", - "integrity": "sha512-1QWSK1CcmGwlJZBWCF+NpzpQ5c3WybtgVqeQX8FRIhlApBtvMsifZe4tz1FIoBoQeCKwCQzyvpIA71cpCpY/xg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.96.0.tgz", + "integrity": "sha512-3paajIuzGnukHwSI3YBjYVqbd72pZd8NJxaayaNFR0AByIm8rmIT5RqFXbq8j2uhtpmNdZRXiu0em1zOmIScWA==", "cpu": [ "riscv64" ], @@ -3444,9 +3545,9 @@ } }, "node_modules/@oxc-minify/binding-linux-s390x-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.94.0.tgz", - "integrity": "sha512-UfIuYWcs1tb/vwGwZPPVaO38OubKfi+MkySl2ZP/3Vk4InxtQ+BxxgNqiQbhyvx14GZtkFphH3I2FZaDUsvfYg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.96.0.tgz", + "integrity": "sha512-9ESrpkB2XG0lQ89JlsxlZa86iQCOs+jkDZLl6O+u5wb7ynUy21bpJJ1joauCOSYIOUlSy3+LbtJLiqi7oSQt5Q==", "cpu": [ "s390x" ], @@ -3461,9 +3562,9 @@ } }, "node_modules/@oxc-minify/binding-linux-x64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.94.0.tgz", - "integrity": "sha512-Iokd1dfneOcNHBJH8o5cMgDkII8R7dzOFSaMrZiSZkLr+woT3Ed7uLqTKwleNKq52z5+XwmgcvO00c6ywStCpA==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.96.0.tgz", + "integrity": "sha512-UMM1jkns+p+WwwmdjC5giI3SfR2BCTga18x3C0cAu6vDVf4W37uTZeTtSIGmwatTBbgiq++Te24/DE0oCdm1iQ==", "cpu": [ "x64" ], @@ -3478,9 +3579,9 @@ } }, "node_modules/@oxc-minify/binding-linux-x64-musl": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-musl/-/binding-linux-x64-musl-0.94.0.tgz", - "integrity": "sha512-W4hFq/e21o2cOKx9xltJuVo/xgXnn4SsUioo/86pk5vCmUXg++J0PMML/oOZTSbevlklg/Vxo8slRUSU4/0PzA==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-musl/-/binding-linux-x64-musl-0.96.0.tgz", + "integrity": "sha512-8b1naiC7MdP7xeMi7cQ5tb9W1rZAP9Qz/jBRqp1Y5EOZ1yhSGnf1QWuZ/0pCc+XiB9vEHXEY3Aki/H+86m2eOg==", "cpu": [ "x64" ], @@ -3495,9 +3596,9 @@ } }, "node_modules/@oxc-minify/binding-wasm32-wasi": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-wasm32-wasi/-/binding-wasm32-wasi-0.94.0.tgz", - "integrity": "sha512-0bOaEuh7QX8MfqyrRjNPOWhcsYl0IGoHX1nPtFIFGm0f/AJsJ+3wbyI9WvkAOXZmRgI9DMKGbDJdU6J59JxA7w==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-wasm32-wasi/-/binding-wasm32-wasi-0.96.0.tgz", + "integrity": "sha512-bjGDjkGzo3GWU9Vg2qiFUrfoo5QxojPNV/2RHTlbIB5FWkkV4ExVjsfyqihFiAuj0NXIZqd2SAiEq9htVd3RFw==", "cpu": [ "wasm32" ], @@ -3505,16 +3606,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.6" + "@napi-rs/wasm-runtime": "^1.0.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@oxc-minify/binding-win32-arm64-msvc": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.94.0.tgz", - "integrity": "sha512-qXuSuUmLn7v79R0noaRlJES7m0BLfBWwPAmPjzu553eJObvKS15TfHH4uxr0h31Bmy4jqWX2r+oirz/Pg+hSEg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.96.0.tgz", + "integrity": "sha512-4L4DlHUT47qMWQuTyUghpncR3NZHWtxvd0G1KgSjVgXf+cXzFdWQCWZZtCU0yrmOoVCNUf4S04IFCJyAe+Ie7A==", "cpu": [ "arm64" ], @@ -3529,9 +3630,9 @@ } }, "node_modules/@oxc-minify/binding-win32-x64-msvc": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.94.0.tgz", - "integrity": "sha512-DtnN623PGZlNLRyyWtUQPEATeiGVnv9l8TMV9wCdd3AFNA9bmeFzmojcpwBFj/a5DOY5mds7cwC+Z+rjTPn+OQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.96.0.tgz", + "integrity": "sha512-T2ijfqZLpV2bgGGocXV4SXTuMoouqN0asYTIm+7jVOLvT5XgDogf3ZvCmiEnSWmxl21+r5wHcs8voU2iUROXAg==", "cpu": [ "x64" ], @@ -3546,9 +3647,9 @@ } }, "node_modules/@oxc-parser/binding-android-arm64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.93.0.tgz", - "integrity": "sha512-hTxegqGaVA5py2XCNV3Ry6e0tJNl32ZlB5TNOL9YuxvzTY3y3ySJovhufaubtOr/qW/FYmA5l+UC78gbtRTLEw==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.95.0.tgz", + "integrity": "sha512-dZyxhhvJigwWL1wgnLlqyEiSeuqO0WdDH9H+if0dPcBM4fKa5fjVkaUcJT1jBMcBTnkjxMwTXYZy5TK60N0fjg==", "cpu": [ "arm64" ], @@ -3563,9 +3664,9 @@ } }, "node_modules/@oxc-parser/binding-darwin-arm64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.93.0.tgz", - "integrity": "sha512-8Er+e4+0BX3hc+Ajuq/60p4qA4/dW8XGUdbE1LBEwx6z1anKv4lAc/J2GfPWLUAhJLZIaM/waGBSxhoWDrZD9A==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.95.0.tgz", + "integrity": "sha512-zun9+V33kyCtNec9oUSWwb0qi3fB8pXwum1yGFECPEr55g/CrWju6/Jv4hwwNBeW2tK9Ch/PRstEtYmOLMhHpg==", "cpu": [ "arm64" ], @@ -3580,9 +3681,9 @@ } }, "node_modules/@oxc-parser/binding-darwin-x64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.93.0.tgz", - "integrity": "sha512-pRLB9uEgTj/P4eNrQlKJX6Ey5pelhaQnywdF4uIFPWLVGjRoS8IEuRVE9+FxUjnikXBIJceDgtRd16/EArgAKQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.95.0.tgz", + "integrity": "sha512-9djMQ/t6Ns/UXtziwUe562uVJMbhtuLtCj+Xav+HMVT/rhV9gWO8PQOG7AwDLUBjJanItsrfqrGtqhNxtZ701w==", "cpu": [ "x64" ], @@ -3597,9 +3698,9 @@ } }, "node_modules/@oxc-parser/binding-freebsd-x64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.93.0.tgz", - "integrity": "sha512-aH2kMXL+60rhBbHYWU5cICo6HufTAWs1/8Ztu0nI4rr0Facp/mK2Ft6pGeuDxCJeKGyYIC21GIxVA7BHrGk9TQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.95.0.tgz", + "integrity": "sha512-GK6k0PgCVkkeRZtHgcosCYbXIRySpJpuPw/OInfLGFh8f3x9gp2l8Fbcfx+YO+ZOHFBCd2NNedGqw8wMgouxfA==", "cpu": [ "x64" ], @@ -3614,9 +3715,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.93.0.tgz", - "integrity": "sha512-vk1nZchv1hH2yf6hE5Nbs8DliRGEoDtAwonxpz/yBaAvUsKFZHHwx0hXdJdWr+8EfSfgbWfk4YT6rUadz9N7hQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.95.0.tgz", + "integrity": "sha512-+g/lFITtyHHEk69cunOHuiT5cX+mpUTcbGYNe8suguZ7FqgNwai+PnGv0ctCvtgxBPVfckfUK8c3RvFKo+vi/w==", "cpu": [ "arm" ], @@ -3631,9 +3732,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.93.0.tgz", - "integrity": "sha512-xDrvQ23KUGWi7hPfGrFTrGLiwSeb9W1IEVpMPsRKmlvLP+zJS9Ht+RaPaLJwwQgdlNYI9f05oE6opAH5sw7MTQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.95.0.tgz", + "integrity": "sha512-SXNasDtPw8ycNV7VEvFxb4LETmykvWKUhHR7K3us818coXYpDj54P8WEx8hJobP/9skuuiFuKHmtYLdjX8wntA==", "cpu": [ "arm" ], @@ -3648,9 +3749,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm64-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.93.0.tgz", - "integrity": "sha512-NoB7BJmwVGrcS/J5XXn362lBsIyeTqZF70rCFij3/XwQ2kcELfGMALY9AUulFYauLTY2AG4vcmctJQxn9Lj85g==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.95.0.tgz", + "integrity": "sha512-0LzebARTU0ROfD6pDK4h1pFn+09meErCZ0MA2TaW08G72+GNneEsksPufOuI+9AxVSRa+jKE3fu0wavvhZgSkg==", "cpu": [ "arm64" ], @@ -3665,9 +3766,9 @@ } }, "node_modules/@oxc-parser/binding-linux-arm64-musl": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.93.0.tgz", - "integrity": "sha512-s+nraJJR9SuHsgsr42nbOBpAsaSAE6MhK7HGbz01svLJzDsk3Ylh9cbVUPLaS3gOlTq5WC6VjPBkQuInLo0hvQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.95.0.tgz", + "integrity": "sha512-Pvi1lGe/G+mJZ3hUojMP/aAHAzHA25AEtVr8/iuz7UV72t/15NOgJYr9kELMUMNjPqpr3vKUgXTFmTtAxp11Qw==", "cpu": [ "arm64" ], @@ -3682,9 +3783,9 @@ } }, "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.93.0.tgz", - "integrity": "sha512-oNIQb/7HGxVNeVgtkoqNcDS1hjfxArLDuMI72V+Slp67yfBdxgvfmM2JSWE7kGR5gyiZQeTjRbG89VrRwPDtww==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.95.0.tgz", + "integrity": "sha512-pUEVHIOVNDfhk4sTlLhn6mrNENhE4/dAwemxIfqpcSyBlYG0xYZND1F3jjR2yWY6DakXZ6VSuDbtiv1LPNlOLw==", "cpu": [ "riscv64" ], @@ -3699,9 +3800,9 @@ } }, "node_modules/@oxc-parser/binding-linux-s390x-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.93.0.tgz", - "integrity": "sha512-YyzhzAoq5WpRtAGOngpJUu+4jKagSbknORejmpeW48vu8/+XjrVZFc/1Qe4i72EsPzLorDwCxWVkU8VftpM4iA==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.95.0.tgz", + "integrity": "sha512-5+olaepHTE3J/+w7g0tr3nocvv5BKilAJnzj4L8tWBCLEZbL6olJcGVoldUO+3cgg1SO1xJywP5BuLhT0mDUDw==", "cpu": [ "s390x" ], @@ -3716,9 +3817,9 @@ } }, "node_modules/@oxc-parser/binding-linux-x64-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.93.0.tgz", - "integrity": "sha512-UMXsE6c0MIlvtqDe5t5K8qwC6HqNb3wmy8zKxONo42dIx0WAhVV9ydG2Xlznt1/RhD6nLLtHVaq4yWJXRjUxcg==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.95.0.tgz", + "integrity": "sha512-8huzHlK/N98wrnYKxIcYsK8ZGBWomQchu/Mzi6m+CtbhjWOv9DmK0jQ2fUWImtluQVpTwS0uZT06d3g7XIkJrA==", "cpu": [ "x64" ], @@ -3733,9 +3834,9 @@ } }, "node_modules/@oxc-parser/binding-linux-x64-musl": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.93.0.tgz", - "integrity": "sha512-0Vd0yFUq129VW+Cpcj/gJOqub4EMN5hUWnVk8UfAvUZ+lxZBFeXbYNI5483SLwzvw5umzlMmkKpYWw5OTwYFaA==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.95.0.tgz", + "integrity": "sha512-bWnrLfGDcx/fab0+UQnFbVFbiykof/btImbYf+cI2pU/1Egb2x+OKSmM5Qt0nEUiIpM5fgJmYXxTopybSZOKYA==", "cpu": [ "x64" ], @@ -3750,9 +3851,9 @@ } }, "node_modules/@oxc-parser/binding-wasm32-wasi": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.93.0.tgz", - "integrity": "sha512-EXyCyY4GJO+SNTQJPPmJJwYbPkPOzw2nxSRMmUlwG19WKO7QHzHyL6u+4hXpp5IwgIWvgQgoix2/pB9JF+EA7w==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.95.0.tgz", + "integrity": "sha512-0JLyqkZu1HnQIZ4e5LBGOtzqua1QwFEUOoMSycdoerXqayd4LK2b7WMfAx8eCIf+jGm1Uj6f3R00nlsx8g1faQ==", "cpu": [ "wasm32" ], @@ -3760,16 +3861,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.5" + "@napi-rs/wasm-runtime": "^1.0.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@oxc-parser/binding-win32-arm64-msvc": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.93.0.tgz", - "integrity": "sha512-LiWj6Yp91YnN8QptfP/+s2nfvQrbYXuaU53w9Pkyceimx0msQboddW3Dud4fbbmp3xzvNkw13+bMkGz5BLHO1w==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.95.0.tgz", + "integrity": "sha512-RWvaA6s1SYlBj9CxwHfNn0CRlkPdv9fEUAXfZkGQPdP5e1ppIaO2KYE0sUov/zzp9hPTMMsTMHl4dcIbb+pHCQ==", "cpu": [ "arm64" ], @@ -3784,9 +3885,9 @@ } }, "node_modules/@oxc-parser/binding-win32-x64-msvc": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.93.0.tgz", - "integrity": "sha512-e3XD808kQLxvTD1x4xJ4p73x9idhHtSgtgcXjgo3L4hgvoRSwT1+Mu9ddZ9BLuV4wo49tmKZpp2exfxhZx1vhQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.95.0.tgz", + "integrity": "sha512-BQpgl7rDjFvCIHudmUR0dCwc4ylBYZl4CPVinlD3NhkMif4WD5dADckoo5ES/KOpFyvwcbKZX+grP63cjHi26g==", "cpu": [ "x64" ], @@ -3801,9 +3902,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.93.0.tgz", - "integrity": "sha512-yNtwmWZIBtJsMr5TEfoZFDxIWV6OdScOpza/f5YxbqUMJk+j6QX3Cf3jgZShGEFYWQJ5j9mJ6jM0tZHu2J9Yrg==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.95.0.tgz", + "integrity": "sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==", "dev": true, "license": "MIT", "funding": { @@ -3811,9 +3912,9 @@ } }, "node_modules/@oxc-transform/binding-android-arm64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.93.0.tgz", - "integrity": "sha512-sjmbt7SbsIgHC9luOLgwoFTI2zbTDesZlfiSFrSYNZv6S6o4zfR2Q/OLhRQqmar15JtxP8NVPuiPyqyx0mqHyg==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.95.0.tgz", + "integrity": "sha512-eW+BCgRWOsMrDiz7FEV7BjAmaF9lGIc2ueGdRUYjRUMq4f5FSGS7gMBTYDxajdoIB3L5Gnksh1CWkIlgg95UVA==", "cpu": [ "arm64" ], @@ -3828,9 +3929,9 @@ } }, "node_modules/@oxc-transform/binding-darwin-arm64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.93.0.tgz", - "integrity": "sha512-XhYYdSU1Oz1UFeMm8fbfdPrODDQkLz2USDjKmfGuoOQRFKXlq0YTktfzF6z1bxn+T8pc9jIlBDr7f+cyy2CCjg==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.95.0.tgz", + "integrity": "sha512-OUUaYZVss8tyDZZ7TGr2vnH3+i3Ouwsx0frQRGkiePNatXxaJJ3NS5+Kwgi9hh3WryXaQz2hWji4AM2RHYE7Cg==", "cpu": [ "arm64" ], @@ -3845,9 +3946,9 @@ } }, "node_modules/@oxc-transform/binding-darwin-x64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.93.0.tgz", - "integrity": "sha512-cRQE9cWmP1cLPqGKqbr453nio1uIgv2LAfIfdx1fQSClG6PvzfTWTqujM0bJpKquodkm4k07ug35+tp0aIkl0w==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.95.0.tgz", + "integrity": "sha512-49UPEgIlgWUndwcP3LH6dvmOewZ92DxCMpFMo11JhUlmNJxA3sjVImEBRB56/tJ+XF+xnya9kB1oCW4yRY+mRw==", "cpu": [ "x64" ], @@ -3862,9 +3963,9 @@ } }, "node_modules/@oxc-transform/binding-freebsd-x64": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.93.0.tgz", - "integrity": "sha512-m2vojbIELwBwX4ehbEs+7gXx4ooBn2mpR8MkxjZdhucMTj7P38W+jSdW+04pX+/bf2vYxP2madTEZXSX6mseLg==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.95.0.tgz", + "integrity": "sha512-lNKrHKaDEm8pbKlVbn0rv2L97O0lbA0Tsrxx4GF/HhmdW+NgwGU1pMzZ4tB2QcylbqgKxOB+v9luebHyh1jfgA==", "cpu": [ "x64" ], @@ -3879,9 +3980,9 @@ } }, "node_modules/@oxc-transform/binding-linux-arm-gnueabihf": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.93.0.tgz", - "integrity": "sha512-NEoI0t9b8NHzvXuBIADYubKUbfsuDsY9g/uOTiVNoP+r16vpOdiY3avoqP2x2WPSiuprYVFM3Olq3WVngSg+IA==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.95.0.tgz", + "integrity": "sha512-+VWcLeeizI8IjU+V+o8AmzPuIMiTrGr0vrmXU3CEsV05MrywCuJU+f6ilPs3JBKno9VIwqvRpHB/z39sQabHWg==", "cpu": [ "arm" ], @@ -3896,9 +3997,9 @@ } }, "node_modules/@oxc-transform/binding-linux-arm-musleabihf": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.93.0.tgz", - "integrity": "sha512-gzhgsb/o+V2PBElu2aMD7H1ZYOntr4lzuXDyVq/RbwwzF3G3jjFMB5hddbcjky8rdtmVzEaqqESI2h5kWkZUAw==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.95.0.tgz", + "integrity": "sha512-a59xPw84t6VwlvNEGcmuw3feGcKcWOC7uB8oePJ/BVSAV1yayLoB3k6JASwLTZ7N/PNPNUhcw1jDxowgAfBJfg==", "cpu": [ "arm" ], @@ -3913,9 +4014,9 @@ } }, "node_modules/@oxc-transform/binding-linux-arm64-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.93.0.tgz", - "integrity": "sha512-4PdTqvMzLeMLbkwpHvj2ovQoIKaK8i1OnUGW7XzhZKPBGhkcdt/H3oa5FhZ2uoqSIM1KnKKP80MSC1OYqK+w0Q==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.95.0.tgz", + "integrity": "sha512-NLdrFuEHlmbiC1M1WESFV4luUcB/84GXi+cbnRXhgMjIW/CThRVJ989eTJy59QivkVlLcJSKTiKiKCt0O6TTlQ==", "cpu": [ "arm64" ], @@ -3930,9 +4031,9 @@ } }, "node_modules/@oxc-transform/binding-linux-arm64-musl": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.93.0.tgz", - "integrity": "sha512-c+CrpmFv32Z1WfR2V8sEKPI4XLewK9hQUq57RUDXj3P99IZ9eA0qIq/2Azle4YGbHdeEywAvqEDlbGa7o3ZFNQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.95.0.tgz", + "integrity": "sha512-GL0ffCPW8JlFI0/jeSgCY665yDdojHxA0pbYG+k8oEHOWCYZUZK9AXL+r0oerNEWYJ8CRB+L5Yq87ZtU/YUitw==", "cpu": [ "arm64" ], @@ -3947,9 +4048,9 @@ } }, "node_modules/@oxc-transform/binding-linux-riscv64-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.93.0.tgz", - "integrity": "sha512-9rkciYe67g/uuVU4bFst96c7Xc2rk2fhzWTsBySUjTvxpgEeBXPsx78OLNwFVZoGf0lGNMXU/oSxr8OImEgvcw==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.95.0.tgz", + "integrity": "sha512-tbH7LaClSmN3YFVo1UjMSe7D6gkb5f+CMIbj9i873UUZomVRmAjC4ygioObfzM+sj/tX0WoTXx5L1YOfQkHL6Q==", "cpu": [ "riscv64" ], @@ -3964,9 +4065,9 @@ } }, "node_modules/@oxc-transform/binding-linux-s390x-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.93.0.tgz", - "integrity": "sha512-b/3he7qO4It9bTZbKWNvYMVNyoNldgWVDsTleWiRSskDZPTP6CggpcxVolltn8Eegiq4GycKSN1riInTngR6+w==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.95.0.tgz", + "integrity": "sha512-8jMqiURWa0iTiPMg7BWaln89VdhhWzNlPyKM90NaFVVhBIKCr2UEhrQWdpBw/E9C8uWf/4VabBEhfPMK+0yS4w==", "cpu": [ "s390x" ], @@ -3981,9 +4082,9 @@ } }, "node_modules/@oxc-transform/binding-linux-x64-gnu": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.93.0.tgz", - "integrity": "sha512-PeKWwubXPza6JGYjZGRt3sleTAaxTac4SG3Nd/VF9WGCY7ljAb6Q0t/gIuyjLm7tgB2E4luFezJogqkAW/b1ng==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.95.0.tgz", + "integrity": "sha512-D5ULJ2uWipsTgfvHIvqmnGkCtB3Fyt2ZN7APRjVO+wLr+HtmnaWddKsLdrRWX/m/6nQ2xQdoQekdJrokYK9LtQ==", "cpu": [ "x64" ], @@ -3998,9 +4099,9 @@ } }, "node_modules/@oxc-transform/binding-linux-x64-musl": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.93.0.tgz", - "integrity": "sha512-UjeqejYo3ynOimHKKPdqtryD0iCWiYHRnNNl5sxzK4GPA/JcxNnRGejAbLH6gkPOFtAi2k4Y5ujc2nU8cX8LSw==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.95.0.tgz", + "integrity": "sha512-DmCGU+FzRezES5wVAGVimZGzYIjMOapXbWpxuz8M8p3nMrfdBEQ5/tpwBp2vRlIohhABy4vhHJByl4c64ENCGQ==", "cpu": [ "x64" ], @@ -4015,9 +4116,9 @@ } }, "node_modules/@oxc-transform/binding-wasm32-wasi": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.93.0.tgz", - "integrity": "sha512-pMUgg0Mm5ASd8oEPf/yiZmHCqH5WMC0mjCK3CccEvfpUf+WC8WYiKiLkPz+0e7AyPW/Kb+MDI9FaYDKQ5QgyoQ==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.95.0.tgz", + "integrity": "sha512-tSo1EU4Whd1gXyae7cwSDouhppkuz6Jkd5LY8Uch9VKsHVSRhDLDW19Mq6VSwtyPxDPTJnJ2jYJWm+n8SYXiXQ==", "cpu": [ "wasm32" ], @@ -4025,16 +4126,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.5" + "@napi-rs/wasm-runtime": "^1.0.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@oxc-transform/binding-win32-arm64-msvc": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.93.0.tgz", - "integrity": "sha512-RR30xNVMIEe5PWSD26uGEZp6yH7fkLKznvPSebVOVl2IWW8Sjnd59i6Ws08FmBKH9QP3jW30MypL6ESdlE5yWw==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.95.0.tgz", + "integrity": "sha512-6eaxlgj+J5n8zgJTSugqdPLBtKGRqvxYLcvHN8b+U9hVhF/2HG/JCOrcSYV/XgWGNPQiaRVzpR3hGhmFro9QTw==", "cpu": [ "arm64" ], @@ -4049,9 +4150,9 @@ } }, "node_modules/@oxc-transform/binding-win32-x64-msvc": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.93.0.tgz", - "integrity": "sha512-6QN3DEaEw3eWioWEFRgNsTvYq8czYSnpkjB2za+/WdLN0g5FzOl2ZEfNiPrBWIPnSmjUmDWtWVWcSjwY7fX5/Q==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.95.0.tgz", + "integrity": "sha512-Y8JY79A7fTuBjEXZFu+mHbHzgsV3uJDUuUKeGffpOwI1ayOGCKeBJTiMhksYkiir1xS+DkGLEz73+xse9Is9rw==", "cpu": [ "x64" ], @@ -4454,9 +4555,9 @@ } }, "node_modules/@poppinss/dumper": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.4.tgz", - "integrity": "sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.6.5.tgz", + "integrity": "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==", "dev": true, "license": "MIT", "dependencies": { @@ -4530,9 +4631,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.10.12", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.12.tgz", - "integrity": "sha512-mP9iLFZwH+FapKJLeA7/fLqOlSUwYpMwjR1P5J23qd4e7qGJwecJccJqHYrjw33jmIZYV4dtiTHPD/J+1e7cEw==", + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.13.tgz", + "integrity": "sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==", "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", @@ -4576,9 +4677,9 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "28.0.8", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.8.tgz", - "integrity": "sha512-o1Ug9PxYsF61R7/NXO/GgMZZproLd/WH2XA53Tp9ppf6bU1lMlTtC/gUM6zM3mesi2E0rypk+PNtVrELREyWEQ==", + "version": "28.0.9", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.9.tgz", + "integrity": "sha512-PIR4/OHZ79romx0BVVll/PkwWpJ7e5lsqFa3gFfcrFPWwLXLV39JVUzQV9RKjWerE7B845Hqjj9VYlQeieZ2dA==", "dev": true, "license": "MIT", "dependencies": { @@ -4672,9 +4773,9 @@ } }, "node_modules/@rollup/plugin-replace": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz", - "integrity": "sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz", + "integrity": "sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==", "dev": true, "license": "MIT", "dependencies": { @@ -4763,9 +4864,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", "cpu": [ "arm" ], @@ -4777,9 +4878,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", "cpu": [ "arm64" ], @@ -4791,9 +4892,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", "cpu": [ "arm64" ], @@ -4805,9 +4906,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", "cpu": [ "x64" ], @@ -4819,9 +4920,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", "cpu": [ "arm64" ], @@ -4833,9 +4934,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", "cpu": [ "x64" ], @@ -4847,9 +4948,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", "cpu": [ "arm" ], @@ -4861,9 +4962,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", "cpu": [ "arm" ], @@ -4875,9 +4976,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", "cpu": [ "arm64" ], @@ -4889,9 +4990,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", "cpu": [ "arm64" ], @@ -4903,9 +5004,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", "cpu": [ "loong64" ], @@ -4917,9 +5018,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", "cpu": [ "ppc64" ], @@ -4931,9 +5032,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", "cpu": [ "riscv64" ], @@ -4945,9 +5046,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", "cpu": [ "riscv64" ], @@ -4959,9 +5060,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", "cpu": [ "s390x" ], @@ -4973,9 +5074,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", "cpu": [ "x64" ], @@ -4987,9 +5088,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", "cpu": [ "x64" ], @@ -5001,9 +5102,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", "cpu": [ "arm64" ], @@ -5015,9 +5116,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", "cpu": [ "arm64" ], @@ -5029,9 +5130,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", "cpu": [ "ia32" ], @@ -5043,9 +5144,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", "cpu": [ "x64" ], @@ -5057,9 +5158,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", "cpu": [ "x64" ], @@ -5070,26 +5171,19 @@ "win32" ] }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, "node_modules/@sentry/core": { - "version": "10.20.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.20.0.tgz", - "integrity": "sha512-S291KihnOIB8i7mVJIJBVHBMcCfIoY/KDJBHEfBoHY9M56g2An4FVhM9+/xR85+IoMkTySdXN08k9LEyQz4FpQ==", + "version": "10.23.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.23.0.tgz", + "integrity": "sha512-4aZwu6VnSHWDplY5eFORcVymhfvS/P6BRfK81TPnG/ReELaeoykKjDwR+wC4lO7S0307Vib9JGpszjsEZw245g==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry/node": { - "version": "10.20.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.20.0.tgz", - "integrity": "sha512-Hv6cxQ2ilL54lF6+WwvvrvJEkt0fwUAAQZNwfAR0CfuP4Zg8FPQvxDeLhryd2Qr0nwPMNi3eYjypORjD3dcMLg==", + "version": "10.23.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.23.0.tgz", + "integrity": "sha512-5PwJJ1zZ89tB8hrjTVKNE4fIGtSXlR+Mdg2u1Nm2FJ2Vj1Ac6JArLiRzMqoq/pA7vwgZMoHwviDAA+PfpJ0Agg==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -5122,9 +5216,9 @@ "@opentelemetry/sdk-trace-base": "^2.1.0", "@opentelemetry/semantic-conventions": "^1.37.0", "@prisma/instrumentation": "6.15.0", - "@sentry/core": "10.20.0", - "@sentry/node-core": "10.20.0", - "@sentry/opentelemetry": "10.20.0", + "@sentry/core": "10.23.0", + "@sentry/node-core": "10.23.0", + "@sentry/opentelemetry": "10.23.0", "import-in-the-middle": "^1.14.2", "minimatch": "^9.0.0" }, @@ -5133,14 +5227,14 @@ } }, "node_modules/@sentry/node-core": { - "version": "10.20.0", - "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.20.0.tgz", - "integrity": "sha512-9BelcS9722jionzuyUNff4Bqx6fMFlYlK+5gMZYxAzOdS1AYZeFiYNVV2GlCGXfDLSHTnE1rOGH6QOsUdgCdbg==", + "version": "10.23.0", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.23.0.tgz", + "integrity": "sha512-3vhttO19pta7zIuecSrLoPTVN7NdjKtb/WK241H8znwKxukx3fj3M6+upN+JQtC6pERO3HfQwBpMMT9RMCUr3Q==", "license": "MIT", "dependencies": { "@apm-js-collab/tracing-hooks": "^0.3.1", - "@sentry/core": "10.20.0", - "@sentry/opentelemetry": "10.20.0", + "@sentry/core": "10.23.0", + "@sentry/opentelemetry": "10.23.0", "import-in-the-middle": "^1.14.2" }, "engines": { @@ -5157,12 +5251,12 @@ } }, "node_modules/@sentry/opentelemetry": { - "version": "10.20.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.20.0.tgz", - "integrity": "sha512-91hr3RbMSUWgZb1BpW0gjlPsFaPtx0oNY2HYoC12T//1E0RMV183McBKbghBdT9swjhw112jeTFEERMJCaJyNw==", + "version": "10.23.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.23.0.tgz", + "integrity": "sha512-ZbSB5y8K8YXp5+sBp2w7xHsNLv9EglJRTRqWMi2ncovXy4jcvo+pSreiZu68nSGvxX25brYKDw19vl+tnmqZVg==", "license": "MIT", "dependencies": { - "@sentry/core": "10.20.0" + "@sentry/core": "10.23.0" }, "engines": { "node": ">=18" @@ -5175,10 +5269,23 @@ "@opentelemetry/semantic-conventions": "^1.37.0" } }, + "node_modules/@sindresorhus/base62": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sindresorhus/is": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.1.0.tgz", - "integrity": "sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.1.1.tgz", + "integrity": "sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==", "dev": true, "license": "MIT", "engines": { @@ -5202,9 +5309,9 @@ } }, "node_modules/@speed-highlight/core": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.7.tgz", - "integrity": "sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.12.tgz", + "integrity": "sha512-uilwrK0Ygyri5dToHYdZSjcvpS2ZwX0w5aSt3GCEN9hrjxWCoeV4Z2DTXuxjwbntaLQIEEAlCeNQss5SoHvAEA==", "dev": true, "license": "CC0-1.0" }, @@ -5334,9 +5441,9 @@ } }, "node_modules/@types/node": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", - "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -5409,17 +5516,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", - "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz", + "integrity": "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/type-utils": "8.46.2", - "@typescript-eslint/utils": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/type-utils": "8.46.4", + "@typescript-eslint/utils": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -5433,23 +5540,23 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.46.2", + "@typescript-eslint/parser": "^8.46.4", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz", - "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.4.tgz", + "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", "debug": "^4.3.4" }, "engines": { @@ -5465,14 +5572,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.2.tgz", - "integrity": "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.4.tgz", + "integrity": "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.2", - "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/tsconfig-utils": "^8.46.4", + "@typescript-eslint/types": "^8.46.4", "debug": "^4.3.4" }, "engines": { @@ -5487,14 +5594,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.2.tgz", - "integrity": "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", + "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2" + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5505,9 +5612,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz", - "integrity": "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz", + "integrity": "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==", "dev": true, "license": "MIT", "engines": { @@ -5522,15 +5629,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.2.tgz", - "integrity": "sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz", + "integrity": "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/utils": "8.46.2", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4", + "@typescript-eslint/utils": "8.46.4", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -5547,9 +5654,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.2.tgz", - "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", "dev": true, "license": "MIT", "engines": { @@ -5561,16 +5668,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", - "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", + "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.2", - "@typescript-eslint/tsconfig-utils": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", + "@typescript-eslint/project-service": "8.46.4", + "@typescript-eslint/tsconfig-utils": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5590,16 +5697,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.2.tgz", - "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", + "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2" + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5614,13 +5721,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", - "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", + "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/types": "8.46.4", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -6019,9 +6126,9 @@ } }, "node_modules/@vitejs/plugin-vue-jsx/node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.44.tgz", - "integrity": "sha512-g6eW7Zwnr2c5RADIoqziHoVs6b3W5QTQ4+qbpfjbkMJ9x+8Og211VW/oot2dj9dVwaK/UyC6Yo+02gV+wWQVNg==", + "version": "1.0.0-beta.50", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.50.tgz", + "integrity": "sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==", "dev": true, "license": "MIT" }, @@ -6202,20 +6309,20 @@ "license": "MIT" }, "node_modules/@vue-macros/common": { - "version": "3.0.0-beta.16", - "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.0.0-beta.16.tgz", - "integrity": "sha512-8O2gWxWFiaoNkk7PGi0+p7NPGe/f8xJ3/INUufvje/RZOs7sJvlI1jnR4lydtRFa/mU0ylMXUXXjSK0fHDEYTA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.1.1.tgz", + "integrity": "sha512-afW2DMjgCBVs33mWRlz7YsGHzoEEupnl0DK5ZTKsgziAlLh5syc5m+GM7eqeYrgiQpwMaVxa1fk73caCvPxyAw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-sfc": "^3.5.17", - "ast-kit": "^2.1.1", - "local-pkg": "^1.1.1", - "magic-string-ast": "^1.0.0", - "unplugin-utils": "^0.2.4" + "@vue/compiler-sfc": "^3.5.22", + "ast-kit": "^2.1.2", + "local-pkg": "^1.1.2", + "magic-string-ast": "^1.0.2", + "unplugin-utils": "^0.3.0" }, "engines": { - "node": ">=20.18.0" + "node": ">=20.19.0" }, "funding": { "url": "https://github.com/sponsors/vue-macros" @@ -6229,6 +6336,23 @@ } } }, + "node_modules/@vue-macros/common/node_modules/unplugin-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", + "dev": true, + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, "node_modules/@vue/babel-helper-vue-transform-on": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.5.0.tgz", @@ -6283,54 +6407,54 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz", - "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.24.tgz", + "integrity": "sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.4", - "@vue/shared": "3.5.22", + "@babel/parser": "^7.28.5", + "@vue/shared": "3.5.24", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz", - "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.24.tgz", + "integrity": "sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-core": "3.5.24", + "@vue/shared": "3.5.24" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz", - "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.24.tgz", + "integrity": "sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==", "license": "MIT", "peer": true, "dependencies": { - "@babel/parser": "^7.28.4", - "@vue/compiler-core": "3.5.22", - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-ssr": "3.5.22", - "@vue/shared": "3.5.22", + "@babel/parser": "^7.28.5", + "@vue/compiler-core": "3.5.24", + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-ssr": "3.5.24", + "@vue/shared": "3.5.24", "estree-walker": "^2.0.2", - "magic-string": "^0.30.19", + "magic-string": "^0.30.21", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz", - "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.24.tgz", + "integrity": "sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-dom": "3.5.24", + "@vue/shared": "3.5.24" } }, "node_modules/@vue/devtools-api": { @@ -6340,50 +6464,43 @@ "license": "MIT" }, "node_modules/@vue/devtools-core": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.7.tgz", - "integrity": "sha512-9z9TLbfC+AjAi1PQyWX+OErjIaJmdFlbDHcD+cAMYKY6Bh5VlsAtCeGyRMrXwIlMEQPukvnWt3gZBLwTAIMKzQ==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-8.0.3.tgz", + "integrity": "sha512-gCEQN7aMmeaigEWJQ2Z2o3g7/CMqGTPvNS1U3n/kzpLoAZ1hkAHNgi4ml/POn/9uqGILBk65GGOUdrraHXRj5Q==", "dev": true, "license": "MIT", "dependencies": { - "@vue/devtools-kit": "^7.7.7", - "@vue/devtools-shared": "^7.7.7", + "@vue/devtools-kit": "^8.0.3", + "@vue/devtools-shared": "^8.0.3", "mitt": "^3.0.1", - "nanoid": "^5.1.0", + "nanoid": "^5.1.5", "pathe": "^2.0.3", - "vite-hot-client": "^2.0.4" + "vite-hot-client": "^2.1.0" }, "peerDependencies": { "vue": "^3.0.0" } }, "node_modules/@vue/devtools-kit": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz", - "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.0.3.tgz", + "integrity": "sha512-UF4YUOVGdfzXLCv5pMg2DxocB8dvXz278fpgEE+nJ/DRALQGAva7sj9ton0VWZ9hmXw+SV8yKMrxP2MpMhq9Wg==", "dev": true, "license": "MIT", "dependencies": { - "@vue/devtools-shared": "^7.7.7", - "birpc": "^2.3.0", + "@vue/devtools-shared": "^8.0.3", + "birpc": "^2.6.1", "hookable": "^5.5.3", "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", + "perfect-debounce": "^2.0.0", "speakingurl": "^14.0.1", "superjson": "^2.2.2" } }, - "node_modules/@vue/devtools-kit/node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true, - "license": "MIT" - }, "node_modules/@vue/devtools-shared": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz", - "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.0.3.tgz", + "integrity": "sha512-s/QNll7TlpbADFZrPVsaUNPCOF8NvQgtgmmB7Tip6pLf/HcOvBTly0lfLQ0Eylu9FQ4OqBhFpLyBgwykiSf8zw==", "dev": true, "license": "MIT", "dependencies": { @@ -6391,9 +6508,9 @@ } }, "node_modules/@vue/language-core": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.1.1.tgz", - "integrity": "sha512-qjMY3Q+hUCjdH+jLrQapqgpsJ0rd/2mAY02lZoHG3VFJZZZKLjAlV+Oo9QmWIT4jh8+Rx8RUGUi++d7T9Wb6Mw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.1.3.tgz", + "integrity": "sha512-KpR1F/eGAG9D1RZ0/T6zWJs6dh/pRLfY5WupecyYKJ1fjVmDMgTPw9wXmKv2rBjo4zCJiOSiyB8BDP1OUwpMEA==", "dev": true, "license": "MIT", "dependencies": { @@ -6415,53 +6532,53 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.22.tgz", - "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.24.tgz", + "integrity": "sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.22" + "@vue/shared": "3.5.24" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.22.tgz", - "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.24.tgz", + "integrity": "sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/reactivity": "3.5.24", + "@vue/shared": "3.5.24" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz", - "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.24.tgz", + "integrity": "sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.22", - "@vue/runtime-core": "3.5.22", - "@vue/shared": "3.5.22", + "@vue/reactivity": "3.5.24", + "@vue/runtime-core": "3.5.24", + "@vue/shared": "3.5.24", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.22.tgz", - "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.24.tgz", + "integrity": "sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-ssr": "3.5.24", + "@vue/shared": "3.5.24" }, "peerDependencies": { - "vue": "3.5.22" + "vue": "3.5.24" } }, "node_modules/@vue/shared": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz", - "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.24.tgz", + "integrity": "sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==", "license": "MIT" }, "node_modules/@vue/test-utils": { @@ -6571,9 +6688,9 @@ } }, "node_modules/alien-signals": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.0.3.tgz", - "integrity": "sha512-2JXjom6R7ZwrISpUphLhf4htUq1aKRCennTJ6u9kFfr3sLmC9+I4CxxVi+McoFnIg+p1HnVrfLT/iCt4Dlz//Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.0.tgz", + "integrity": "sha512-yufC6VpSy8tK3I0lO67pjumo5JvDQVQyr38+3OHqe6CHl1t2VZekKZ7EKKZSqk0cRmE7U7tfZbpXiKNzuc+ckg==", "dev": true, "license": "MIT" }, @@ -6735,13 +6852,13 @@ } }, "node_modules/ast-kit": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.1.3.tgz", - "integrity": "sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.4", + "@babel/parser": "^7.28.5", "pathe": "^2.0.3" }, "engines": { @@ -6764,9 +6881,9 @@ } }, "node_modules/ast-v8-to-istanbul": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.7.tgz", - "integrity": "sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz", + "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6846,9 +6963,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", "dev": true, "funding": [ { @@ -6866,9 +6983,9 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -6884,9 +7001,9 @@ } }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -6915,9 +7032,9 @@ "license": "MIT" }, "node_modules/bare-events": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.1.tgz", - "integrity": "sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", "peer": true, "peerDependencies": { @@ -6930,9 +7047,9 @@ } }, "node_modules/bare-fs": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.0.tgz", - "integrity": "sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.1.tgz", + "integrity": "sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==", "license": "Apache-2.0", "optional": true, "dependencies": { @@ -6997,9 +7114,9 @@ } }, "node_modules/bare-url": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.1.tgz", - "integrity": "sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "license": "Apache-2.0", "optional": true, "dependencies": { @@ -7028,9 +7145,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.20", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz", - "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==", + "version": "2.8.27", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.27.tgz", + "integrity": "sha512-2CXFpkjVnY2FT+B6GrSYxzYf65BJWEqz5tIRHCvNsZZ2F3CmsCB37h8SpYgKG7y9C4YAeTipIPWG7EmFmhAeXA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7079,9 +7196,9 @@ } }, "node_modules/birpc": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.6.1.tgz", - "integrity": "sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.8.0.tgz", + "integrity": "sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==", "dev": true, "license": "MIT", "funding": { @@ -7118,9 +7235,9 @@ } }, "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -7139,10 +7256,10 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { @@ -7240,9 +7357,9 @@ } }, "node_modules/c12": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.1.tgz", - "integrity": "sha512-LcWQ01LT9tkoUINHgpIOv3mMs+Abv7oVCrtpMRi1PaapVEpWoMga5WuT7/DqFTu7URP9ftbOmimNw1KNIGh9DQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.2.tgz", + "integrity": "sha512-QkikB2X5voO1okL3QsES0N690Sn/K9WokXqUsDQsWy5SnYb+psYQFGA10iy1bZHj3fjISKsI67Q90gruvWWM3A==", "dev": true, "license": "MIT", "dependencies": { @@ -7250,7 +7367,7 @@ "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^17.2.3", - "exsolve": "^1.0.7", + "exsolve": "^1.0.8", "giget": "^2.0.0", "jiti": "^2.6.1", "ohash": "^2.0.11", @@ -7260,7 +7377,7 @@ "rc9": "^2.1.2" }, "peerDependencies": { - "magicast": "^0.3.5" + "magicast": "*" }, "peerDependenciesMeta": { "magicast": { @@ -7356,9 +7473,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "dev": true, "funding": [ { @@ -7454,208 +7571,84 @@ } }, "node_modules/chromium-bidi": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-9.1.0.tgz", - "integrity": "sha512-rlUzQ4WzIAWdIbY/viPShhZU2n21CxDUgazXVbw4Hu1MwaeUSEksSeM6DqPgpRjCLXRk702AVRxJxoOz0dw4OA==", - "license": "Apache-2.0", - "dependencies": { - "mitt": "^3.0.1", - "zod": "^3.24.1" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/citty": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", - "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "license": "MIT" - }, - "node_modules/clean-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/clean-regexp/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/clipboardy": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-5.0.0.tgz", - "integrity": "sha512-MQfKHaD09eP80Pev4qBxZLbxJK/ONnqfSYAPlCmPh+7BDboYtO/3BmB6HGzxDIT0SlTRc2tzS8lQqfcdLtZ0Kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^9.6.0", - "is-wayland": "^0.1.0", - "is-wsl": "^3.1.0", - "is64bit": "^2.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clipboardy/node_modules/execa": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/clipboardy/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" + "version": "10.5.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-10.5.1.tgz", + "integrity": "sha512-rlj6OyhKhVTnk4aENcUme3Jl9h+cq4oXu4AzBcvr8RMmT6BR4a3zSNT9dbIfXr9/BS6ibzRyDhowuw4n2GgzsQ==", + "license": "Apache-2.0", + "dependencies": { + "mitt": "^3.0.1", + "zod": "^3.24.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "devtools-protocol": "*" } }, - "node_modules/clipboardy/node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, - "license": "Apache-2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", "engines": { - "node": ">=18.18.0" + "node": ">=8" } }, - "node_modules/clipboardy/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "consola": "^3.2.3" } }, - "node_modules/clipboardy/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" + }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/clipboardy/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/clipboardy/node_modules/strip-final-newline": { + "node_modules/clipboardy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", + "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "execa": "^8.0.1", + "is-wsl": "^3.1.0", + "is64bit": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clipboardy/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -7928,20 +7921,10 @@ "dev": true, "license": "MIT" }, - "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/cookie-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.0.tgz", - "integrity": "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", "dev": true, "license": "MIT" }, @@ -7975,6 +7958,15 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/copy-paste": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-2.2.0.tgz", + "integrity": "sha512-jqSL4r9DSeiIvJZStLzY/sMLt9ToTM7RsK237lYOTG+KcbQJHGala3R1TUpa8h1p9adswVgIdV4qGbseVhL4lg==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.4.8" + } + }, "node_modules/core-js-compat": { "version": "3.46.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", @@ -8140,13 +8132,13 @@ } }, "node_modules/cssnano": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.1.tgz", - "integrity": "sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.2.tgz", + "integrity": "sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA==", "dev": true, "license": "MIT", "dependencies": { - "cssnano-preset-default": "^7.0.9", + "cssnano-preset-default": "^7.0.10", "lilconfig": "^3.1.3" }, "engines": { @@ -8161,27 +8153,27 @@ } }, "node_modules/cssnano-preset-default": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.9.tgz", - "integrity": "sha512-tCD6AAFgYBOVpMBX41KjbvRh9c2uUjLXRyV7KHSIrwHiq5Z9o0TFfUCoM3TwVrRsRteN3sVXGNvjVNxYzkpTsA==", + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.10.tgz", + "integrity": "sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "css-declaration-sorter": "^7.2.0", "cssnano-utils": "^5.0.1", "postcss-calc": "^10.1.1", - "postcss-colormin": "^7.0.4", - "postcss-convert-values": "^7.0.7", - "postcss-discard-comments": "^7.0.4", + "postcss-colormin": "^7.0.5", + "postcss-convert-values": "^7.0.8", + "postcss-discard-comments": "^7.0.5", "postcss-discard-duplicates": "^7.0.2", "postcss-discard-empty": "^7.0.1", "postcss-discard-overridden": "^7.0.1", "postcss-merge-longhand": "^7.0.5", - "postcss-merge-rules": "^7.0.6", + "postcss-merge-rules": "^7.0.7", "postcss-minify-font-values": "^7.0.1", "postcss-minify-gradients": "^7.0.1", - "postcss-minify-params": "^7.0.4", + "postcss-minify-params": "^7.0.5", "postcss-minify-selectors": "^7.0.5", "postcss-normalize-charset": "^7.0.1", "postcss-normalize-display-values": "^7.0.1", @@ -8189,11 +8181,11 @@ "postcss-normalize-repeat-style": "^7.0.1", "postcss-normalize-string": "^7.0.1", "postcss-normalize-timing-functions": "^7.0.1", - "postcss-normalize-unicode": "^7.0.4", + "postcss-normalize-unicode": "^7.0.5", "postcss-normalize-url": "^7.0.1", "postcss-normalize-whitespace": "^7.0.1", "postcss-ordered-values": "^7.0.2", - "postcss-reduce-initial": "^7.0.4", + "postcss-reduce-initial": "^7.0.5", "postcss-reduce-transforms": "^7.0.1", "postcss-svgo": "^7.1.0", "postcss-unique-selectors": "^7.0.4" @@ -8255,9 +8247,9 @@ "license": "CC0-1.0" }, "node_modules/cssstyle": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz", - "integrity": "sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.3.tgz", + "integrity": "sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==", "license": "MIT", "dependencies": { "@asamuzakjp/css-color": "^4.0.3", @@ -8297,9 +8289,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.18", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz", - "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==", + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", "license": "MIT" }, "node_modules/db0": { @@ -8404,9 +8396,9 @@ } }, "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.3.0.tgz", + "integrity": "sha512-Qq68+VkJlc8tjnPV1i7HtbIn7ohmjZa88qUvHMIK0ZKUXMCuV45cT7cEXALPUmeXCe0q1DWQkQTemHVaLIFSrg==", "dev": true, "license": "MIT", "dependencies": { @@ -8535,16 +8527,16 @@ } }, "node_modules/devalue": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.4.2.tgz", - "integrity": "sha512-MwPZTKEPK2k8Qgfmqrd48ZKVvzSQjgW0lXLxiIBA8dQjtf/6mw6pggHNLcyDKyf+fI6eXxlQwPsfaCMTU5U+Bw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz", + "integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==", "dev": true, "license": "MIT" }, "node_modules/devtools-protocol": { - "version": "0.0.1508733", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1508733.tgz", - "integrity": "sha512-QJ1R5gtck6nDcdM+nlsaJXcelPEI7ZxSMw1ujHpO1c4+9l+Nue5qlebi9xO1Z2MGr92bFOQTW7/rrheh5hHxDg==", + "version": "0.0.1521046", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz", + "integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==", "license": "BSD-3-Clause", "peer": true }, @@ -8740,9 +8732,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.239", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.239.tgz", - "integrity": "sha512-1y5w0Zsq39MSPmEjHjbizvhYoTaulVtivpxkp5q5kaPmQtsK6/2nvAzGRxNMS9DoYySp9PkW0MAQDwU1m764mg==", + "version": "1.5.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", + "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", "dev": true, "license": "ISC" }, @@ -8854,9 +8846,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", - "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -8868,32 +8860,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.11", - "@esbuild/android-arm": "0.25.11", - "@esbuild/android-arm64": "0.25.11", - "@esbuild/android-x64": "0.25.11", - "@esbuild/darwin-arm64": "0.25.11", - "@esbuild/darwin-x64": "0.25.11", - "@esbuild/freebsd-arm64": "0.25.11", - "@esbuild/freebsd-x64": "0.25.11", - "@esbuild/linux-arm": "0.25.11", - "@esbuild/linux-arm64": "0.25.11", - "@esbuild/linux-ia32": "0.25.11", - "@esbuild/linux-loong64": "0.25.11", - "@esbuild/linux-mips64el": "0.25.11", - "@esbuild/linux-ppc64": "0.25.11", - "@esbuild/linux-riscv64": "0.25.11", - "@esbuild/linux-s390x": "0.25.11", - "@esbuild/linux-x64": "0.25.11", - "@esbuild/netbsd-arm64": "0.25.11", - "@esbuild/netbsd-x64": "0.25.11", - "@esbuild/openbsd-arm64": "0.25.11", - "@esbuild/openbsd-x64": "0.25.11", - "@esbuild/openharmony-arm64": "0.25.11", - "@esbuild/sunos-x64": "0.25.11", - "@esbuild/win32-arm64": "0.25.11", - "@esbuild/win32-ia32": "0.25.11", - "@esbuild/win32-x64": "0.25.11" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { @@ -8947,9 +8939,9 @@ } }, "node_modules/eslint": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", - "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "peer": true, @@ -8957,11 +8949,11 @@ "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.1", - "@eslint/core": "^0.16.0", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.38.0", - "@eslint/plugin-kit": "^0.4.0", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -9168,22 +9160,26 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "54.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-54.7.0.tgz", - "integrity": "sha512-u5Na4he2+6kY1rWqxzbQaAwJL3/tDCuT5ElDRc5UJ9stOeQeQ5L1JJ1kRRu7ldYMlOHMCJLsY8Mg/Tu3ExdZiQ==", + "version": "61.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.2.0.tgz", + "integrity": "sha512-Pky3YKWPOcDGi4TzBZlp/ENd+z443uVgIyZxzA9wVbfECjG1ptf7sB8gzSX4Z8dAtoD8d3d68jsLuAfxr+8qyQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@es-joy/jsdoccomment": "~0.56.0", + "@es-joy/jsdoccomment": "~0.76.0", + "@es-joy/resolve.exports": "1.2.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.4.1", + "debug": "^4.4.3", "escape-string-regexp": "^4.0.0", "espree": "^10.4.0", "esquery": "^1.6.0", + "html-entities": "^2.6.0", + "object-deep-merge": "^2.0.0", "parse-imports-exports": "^0.2.4", - "semver": "^7.7.2", - "spdx-expression-parse": "^4.0.0" + "semver": "^7.7.3", + "spdx-expression-parse": "^4.0.0", + "to-valid-identifier": "^1.0.0" }, "engines": { "node": ">=20.11.0" @@ -9263,30 +9259,30 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "60.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-60.0.0.tgz", - "integrity": "sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==", + "version": "62.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-62.0.0.tgz", + "integrity": "sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "@eslint-community/eslint-utils": "^4.7.0", - "@eslint/plugin-kit": "^0.3.3", + "@babel/helper-validator-identifier": "^7.28.5", + "@eslint-community/eslint-utils": "^4.9.0", + "@eslint/plugin-kit": "^0.4.0", "change-case": "^5.4.4", - "ci-info": "^4.3.0", + "ci-info": "^4.3.1", "clean-regexp": "^1.0.0", - "core-js-compat": "^3.44.0", + "core-js-compat": "^3.46.0", "esquery": "^1.6.0", "find-up-simple": "^1.0.1", - "globals": "^16.3.0", + "globals": "^16.4.0", "indent-string": "^5.0.0", "is-builtin-module": "^5.0.0", "jsesc": "^3.1.0", "pluralize": "^8.0.0", "regexp-tree": "^0.1.27", - "regjsparser": "^0.12.0", - "semver": "^7.7.2", - "strip-indent": "^4.0.0" + "regjsparser": "^0.13.0", + "semver": "^7.7.3", + "strip-indent": "^4.1.1" }, "engines": { "node": "^20.10.0 || >=21.0.0" @@ -9295,34 +9291,7 @@ "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" }, "peerDependencies": { - "eslint": ">=9.29.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.15.2", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "eslint": ">=9.38.0" } }, "node_modules/eslint-plugin-vue": { @@ -9776,9 +9745,9 @@ } }, "node_modules/exsolve": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", - "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", "dev": true, "license": "MIT" }, @@ -9966,22 +9935,6 @@ } } }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -10016,18 +9969,17 @@ } }, "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-8.0.0.tgz", + "integrity": "sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" + "locate-path": "^8.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10127,16 +10079,16 @@ "license": "MIT" }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -10420,9 +10372,9 @@ } }, "node_modules/globals": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", - "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "dev": true, "license": "MIT", "engines": { @@ -10453,19 +10405,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -10526,13 +10465,6 @@ "uncrypto": "^0.1.3" } }, - "node_modules/h3/node_modules/cookie-es": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", - "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", - "dev": true, - "license": "MIT" - }, "node_modules/hal-json-normalizer": { "version": "5.0.0-alpha.0", "resolved": "https://registry.npmjs.org/hal-json-normalizer/-/hal-json-normalizer-5.0.0-alpha.0.tgz", @@ -10662,6 +10594,23 @@ "node": ">=18" } }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -10802,12 +10751,13 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -10976,9 +10926,9 @@ } }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", "engines": { "node": ">= 12" @@ -11172,19 +11122,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -11243,32 +11180,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wayland": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-wayland/-/is-wayland-0.1.0.tgz", - "integrity": "sha512-QkbMsWkIfkrzOPxenwye0h56iAXirZYHG9eHVPb22fO9y+wPbaX/CHacOWBa/I++4ohTcByimhM1/nyCsH8KNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-what": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz", @@ -11329,16 +11240,16 @@ "license": "ISC" }, "node_modules/isomorphic-dompurify": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.29.0.tgz", - "integrity": "sha512-Bgw5M9GMsuGeGSRpS81gk68t9/+r3AwuJJ5WnSxZK+tuazDodlRgmwz4ItMAfNYDgiNaizREYeiefkFQWkG7ow==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.31.0.tgz", + "integrity": "sha512-/XPACpfVJeEiy28UgkBWUWdhgKN8xwFYkoVFsqrcSJJ5pXZ3HStuF3ih/Hr8PwhCXHqFAys+b4tcgw0pbUT4rw==", "license": "MIT", "dependencies": { "dompurify": "^3.3.0", - "jsdom": "^27.0.0" + "jsdom": "^27.1.0" }, "engines": { - "node": ">=18" + "node": ">=20.19.5" } }, "node_modules/istanbul-lib-coverage": { @@ -11461,9 +11372,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -11474,23 +11385,24 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-5.1.1.tgz", - "integrity": "sha512-DYYlVP1fe4QBMh2xTIs20/YeTz2GYVbWAEZweHSZD+qQ/Cx2d5RShuhhsdk64eTjNq0FeVnteP/qVOgaywSRbg==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz", + "integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=20.0.0" } }, "node_modules/jsdom": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.1.tgz", - "integrity": "sha512-SNSQteBL1IlV2zqhwwolaG9CwhIhTvVHWg3kTss/cLE7H/X4644mtPQqYvCfsSrGQWt9hSZcgOXX8bOZaMN+kA==", + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.2.0.tgz", + "integrity": "sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==", "license": "MIT", "dependencies": { - "@asamuzakjp/dom-selector": "^6.7.2", - "cssstyle": "^5.3.1", + "@acemir/cssom": "^0.9.23", + "@asamuzakjp/dom-selector": "^6.7.4", + "cssstyle": "^5.3.3", "data-urls": "^6.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^4.0.0", @@ -11498,7 +11410,6 @@ "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", "parse5": "^8.0.0", - "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^6.0.0", @@ -11511,7 +11422,7 @@ "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=20" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { "canvas": "^3.0.0" @@ -11643,6 +11554,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "license": "MIT", "dependencies": { @@ -11879,9 +11791,9 @@ } }, "node_modules/launch-editor": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", - "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", "dev": true, "license": "MIT", "dependencies": { @@ -11995,27 +11907,9 @@ "untun": "^0.1.3", "uqr": "^0.1.2" }, - "bin": { - "listen": "bin/listhen.mjs", - "listhen": "bin/listhen.mjs" - } - }, - "node_modules/listhen/node_modules/clipboardy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", - "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^8.0.1", - "is-wsl": "^3.1.0", - "is64bit": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" } }, "node_modules/listhen/node_modules/pathe": { @@ -12054,16 +11948,16 @@ } }, "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-8.0.0.tgz", + "integrity": "sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg==", "dev": true, "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12167,9 +12061,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" @@ -12541,15 +12435,15 @@ } }, "node_modules/nitropack": { - "version": "2.12.8", - "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.12.8.tgz", - "integrity": "sha512-k4KT/6CMiX+aAI2LWEdVhvI4PPPWt6NTz70TcxrGUgvMpt8Pv4/iG0KTwBJ58KdwFp59p3Mlp8QyGVmIVP6GvQ==", + "version": "2.12.9", + "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.12.9.tgz", + "integrity": "sha512-t6qqNBn2UDGMWogQuORjbL2UPevB8PvIPsPHmqvWpeGOlPr4P8Oc5oA8t3wFwGmaolM2M/s2SwT23nx9yARmOg==", "dev": true, "license": "MIT", "dependencies": { "@cloudflare/kv-asset-handler": "^0.4.0", "@rollup/plugin-alias": "^5.1.1", - "@rollup/plugin-commonjs": "^28.0.8", + "@rollup/plugin-commonjs": "^28.0.9", "@rollup/plugin-inject": "^5.0.5", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^16.0.3", @@ -12584,13 +12478,13 @@ "klona": "^2.0.6", "knitwork": "^1.2.0", "listhen": "^1.9.0", - "magic-string": "^0.30.19", - "magicast": "^0.3.5", + "magic-string": "^0.30.21", + "magicast": "^0.5.0", "mime": "^4.1.0", "mlly": "^1.8.0", "node-fetch-native": "^1.6.7", "node-mock-http": "^1.0.3", - "ofetch": "^1.4.1", + "ofetch": "^1.5.0", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.0.0", @@ -12609,13 +12503,13 @@ "ultrahtml": "^1.6.0", "uncrypto": "^0.1.3", "unctx": "^2.4.1", - "unenv": "2.0.0-rc.21", + "unenv": "^2.0.0-rc.23", "unimport": "^5.5.0", "unplugin-utils": "^0.3.1", "unstorage": "^1.17.1", "untyped": "^2.0.0", "unwasm": "^0.3.11", - "youch": "4.1.0-beta.11", + "youch": "^4.1.0-beta.11", "youch-core": "^0.3.3" }, "bin": { @@ -12634,6 +12528,13 @@ } } }, + "node_modules/nitropack/node_modules/cookie-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.0.tgz", + "integrity": "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==", + "dev": true, + "license": "MIT" + }, "node_modules/nitropack/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -12647,6 +12548,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nitropack/node_modules/magicast": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", + "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "source-map-js": "^1.2.1" + } + }, "node_modules/nitropack/node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -12764,9 +12677,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz", - "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, @@ -12849,33 +12762,33 @@ } }, "node_modules/nuxt": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-4.1.3.tgz", - "integrity": "sha512-FPl+4HNIOTRYWQXtsZe5KJAr/eddFesuXABvcSTnFLYckIfnxcistwmbtPlkJhkW6vr/Jdhef5QqqYYkBsowGg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-4.2.1.tgz", + "integrity": "sha512-OE5ONizgwkKhjTGlUYB3ksE+2q2/I30QIYFl3N1yYz1r2rwhunGA3puUvqkzXwgLQ3AdsNcigPDmyQsqjbSdoQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@nuxt/cli": "^3.29.0", - "@nuxt/devalue": "^2.0.2", - "@nuxt/devtools": "^2.6.5", - "@nuxt/kit": "4.1.3", - "@nuxt/schema": "4.1.3", + "@dxup/nuxt": "^0.2.1", + "@nuxt/cli": "^3.30.0", + "@nuxt/devtools": "^3.0.1", + "@nuxt/kit": "4.2.1", + "@nuxt/nitro-server": "4.2.1", + "@nuxt/schema": "4.2.1", "@nuxt/telemetry": "^2.6.6", - "@nuxt/vite-builder": "4.1.3", - "@unhead/vue": "^2.0.14", - "@vue/shared": "^3.5.22", - "c12": "^3.3.0", + "@nuxt/vite-builder": "4.2.1", + "@unhead/vue": "^2.0.19", + "@vue/shared": "^3.5.23", + "c12": "^3.3.1", "chokidar": "^4.0.3", "compatx": "^0.2.0", "consola": "^3.4.2", "cookie-es": "^2.0.0", "defu": "^6.1.4", "destr": "^2.0.5", - "devalue": "^5.3.2", + "devalue": "^5.4.2", "errx": "^0.1.0", - "esbuild": "^0.25.10", "escape-string-regexp": "^5.0.0", - "estree-walker": "^3.0.3", "exsolve": "^1.0.7", "h3": "^1.15.4", "hookable": "^5.5.3", @@ -12884,40 +12797,35 @@ "jiti": "^2.6.1", "klona": "^2.0.6", "knitwork": "^1.2.0", - "magic-string": "^0.30.19", + "magic-string": "^0.30.21", "mlly": "^1.8.0", - "mocked-exports": "^0.1.1", "nanotar": "^0.2.0", - "nitropack": "^2.12.6", "nypm": "^0.6.2", - "ofetch": "^1.4.1", + "ofetch": "^1.5.1", "ohash": "^2.0.11", - "on-change": "^6.0.0", - "oxc-minify": "^0.94.0", - "oxc-parser": "^0.94.0", - "oxc-transform": "^0.94.0", + "on-change": "^6.0.1", + "oxc-minify": "^0.96.0", + "oxc-parser": "^0.96.0", + "oxc-transform": "^0.96.0", "oxc-walker": "^0.5.2", "pathe": "^2.0.3", "perfect-debounce": "^2.0.0", "pkg-types": "^2.3.0", "radix3": "^1.1.2", "scule": "^1.3.0", - "semver": "^7.7.2", - "std-env": "^3.9.0", + "semver": "^7.7.3", + "std-env": "^3.10.0", "tinyglobby": "^0.2.15", "ufo": "^1.6.1", "ultrahtml": "^1.6.0", "uncrypto": "^0.1.3", "unctx": "^2.4.1", - "unimport": "^5.4.1", + "unimport": "^5.5.0", "unplugin": "^2.3.10", - "unplugin-vue-router": "^0.15.0", - "unstorage": "^1.17.1", + "unplugin-vue-router": "^0.16.1", "untyped": "^2.0.0", - "vue": "^3.5.22", - "vue-bundle-renderer": "^2.2.0", - "vue-devtools-stub": "^0.1.0", - "vue-router": "^4.5.1" + "vue": "^3.5.23", + "vue-router": "^4.6.3" }, "bin": { "nuxi": "bin/nuxt.mjs", @@ -12950,9 +12858,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-android-arm64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.94.0.tgz", - "integrity": "sha512-Ficqj6MggRGFkemU4pVFTyth3jWVL/zpIWjGMTXaPU81l46ZDcYVFWp9ia6nfE5mm8UdVSI2trvmK+BpNUim7g==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.96.0.tgz", + "integrity": "sha512-CofbPOiW1PG+hi8bgElJPK0ioHfw8nt4Vw9d+Q9JuMhygS6LbQyu1W6tIFZ1OPFofeFRdWus3vD29FBx+tvFOA==", "cpu": [ "arm64" ], @@ -12967,9 +12875,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-darwin-arm64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.94.0.tgz", - "integrity": "sha512-uYyeMH9vMfb0JAdm6ZwHTgcTv53030elQKMnUbux9K5rxOCWbHUyeVACEv86V+E/Ft6RtkvWDIqUY4sYZRmcuQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.96.0.tgz", + "integrity": "sha512-+HZ2L1a/1BsUXYik8XqQwT2Tl5Z3jRQ/RRQiPV9UsB2skKyd91NLDlQlMpdhjLGs9Qe7Y42unFjRg2iHjIiwnw==", "cpu": [ "arm64" ], @@ -12984,9 +12892,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-darwin-x64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.94.0.tgz", - "integrity": "sha512-Ek1fh8dw6b+/hzLo5jjPuxkshRxekjtTfhfWZ4RehMYiApT8Rj4k+7kcQ+zV1ZaF+1+yLgNqNja2RMRqx3MHzQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.96.0.tgz", + "integrity": "sha512-GC8wH1W0XaCLyTeGsmyaMdnItiYQkqfTcn9Ygc55AWI+m11lCjQeoKDIsDCm/QwrKLCN07u3WWWsuPs5ubfXpA==", "cpu": [ "x64" ], @@ -13001,9 +12909,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-freebsd-x64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.94.0.tgz", - "integrity": "sha512-81bE/8F252Ew179uVo9FU67dmRc+n8QSMhj6mmMxisdI3ao5MjCI5jDL19mH3UeQ9uRUBSPFILmHBDQYNZ9oKw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.96.0.tgz", + "integrity": "sha512-8SeXi2FmlN15uPY5oM03cua5RXBDYmY34Uewongv6RUiAaU/kWxLvzuijpyNC+yQ1r4fC2LbWJhAsKpX5qkA6g==", "cpu": [ "x64" ], @@ -13018,9 +12926,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.94.0.tgz", - "integrity": "sha512-aGOU8IYXVYGN2aRrvcU5+UdM7BzIVlm4m0REQzjpblQKRdZfWFtDBRJez+fK/F10g0H1AU5DQVgbW5aeko49Jw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.96.0.tgz", + "integrity": "sha512-UEs+Zf6T2/FwQlLgv7gfZsKmY19sl3hK57r2BQVc2eCmCmF/deeqDcWyFjzkNLgdDDucY60PoNhNGClDm605uQ==", "cpu": [ "arm" ], @@ -13035,9 +12943,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-arm-musleabihf": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.94.0.tgz", - "integrity": "sha512-69/ZuYSZ4dd7UWoEOyf+pXYPtvUZguDQqjhxMx8fI0J30sEEqs1d/DBLLnog/afHmaapPEIEr6rp9jF6bYcgNw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.96.0.tgz", + "integrity": "sha512-1kuWvjR2+ORJMoyxt9LSbLcDhXZnL25XOuv9VmH6NmSPvLgewzuubSlm++W03x+U7SzWFilBsdwIHtD/0mjERw==", "cpu": [ "arm" ], @@ -13052,9 +12960,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-arm64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.94.0.tgz", - "integrity": "sha512-u55PGVVfZF/frpEcv/vowfuqsCd5VKz3wta8KZ3MBxboat7XxgRIMS8VQEBiJ3aYE80taACu5EfPN1y9DhiU0Q==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.96.0.tgz", + "integrity": "sha512-PHH4ETR1t0fymxuhpQNj3Z9t/78/zZa2Lj3Z3I0ZOd+/Ex+gtdhGoB5xYyy7lcYGAPMfZ+Gmr+dTCr1GYNZ3BA==", "cpu": [ "arm64" ], @@ -13069,9 +12977,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-arm64-musl": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.94.0.tgz", - "integrity": "sha512-Qm2SEU7/f2b2Rg76Pj49BdMFF7Vv7+2qLPxaae4aH1515kzVv6nZW0bqCo4fPDDyiE4bryF7Jr+WKhllBxvXPw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.96.0.tgz", + "integrity": "sha512-fjDPbZjkqaDSTBe0FM8nZ9zBw4B/NF/I0gH7CfvNDwIj9smISaNFypYeomkvubORpnbX9ORhvhYwg3TxQ60OGA==", "cpu": [ "arm64" ], @@ -13086,9 +12994,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-riscv64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.94.0.tgz", - "integrity": "sha512-bZO3QAt0lsZjk351mVM85obMivbXG+tDiah5XmmOaGO8k4vEYmoiKr2YHJoA2eNpKhPJF8dNyIS7U+XAvirr9g==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.96.0.tgz", + "integrity": "sha512-59KAHd/6/LmjkdSAuJn0piKmwSavMasWNUKuYLX/UnqI5KkGIp14+LBwwaBG6KzOtIq1NrRCnmlL4XSEaNkzTg==", "cpu": [ "riscv64" ], @@ -13103,9 +13011,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-s390x-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.94.0.tgz", - "integrity": "sha512-IdbJ/rwsaEPQx11mQwGoClqhAmVaAF9+3VmDRYVmfsYsrhX1Ue1HvBdVHDvtHzJDuumC/X/codkVId9Ss+7fVg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.96.0.tgz", + "integrity": "sha512-VtupojtgahY8XmLwpVpM3C1WQEgMD1JxpB8lzUtdSLwosWaaz1EAl+VXWNuxTTZusNuLBtmR+F0qql22ISi/9g==", "cpu": [ "s390x" ], @@ -13120,9 +13028,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-x64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.94.0.tgz", - "integrity": "sha512-TbtpRdViF3aPCQBKuEo+TcucwW3KFa6bMHVakgaJu12RZrFpO4h1IWppBbuuBQ9X7SfvpgC1YgCDGve9q6fpEA==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.96.0.tgz", + "integrity": "sha512-8XSY9aUYY+5I4I1mhSEWmYqdUrJi3J5cCAInvEVHyTnDAPkhb+tnLGVZD696TpW+lFOLrTFF2V5GMWJVafqIUA==", "cpu": [ "x64" ], @@ -13137,9 +13045,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-linux-x64-musl": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.94.0.tgz", - "integrity": "sha512-hlfoDmWvgSbexoJ9u3KwAJwpeu91FfJR6++fQjeYXD2InK4gZow9o3DRoTpN/kslZwzUNpiRURqxey/RvWh8JQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.96.0.tgz", + "integrity": "sha512-IIVNtqhA0uxKkD8Y6aZinKO/sOD5O62VlduE54FnUU2rzZEszrZQLL8nMGVZhTdPaKW5M1aeLmjcdnOs6er1Jg==", "cpu": [ "x64" ], @@ -13154,9 +13062,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-wasm32-wasi": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.94.0.tgz", - "integrity": "sha512-VoCtQZIsRZN8mszbdizh+5MwzbgbMxsPgT2hOzzILQLNY2o2OXG3xSiFNFakVhbWc9qSTaZ/MRDsqR+IM3fLFw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.96.0.tgz", + "integrity": "sha512-TJ/sNPbVD4u6kUwm7sDKa5iRDEB8vd7ZIMjYqFrrAo9US1RGYOSvt6Ie9sDRekUL9fZhNsykvSrpmIj6dg/C2w==", "cpu": [ "wasm32" ], @@ -13164,16 +13072,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.6" + "@napi-rs/wasm-runtime": "^1.0.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-win32-arm64-msvc": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.94.0.tgz", - "integrity": "sha512-3wsbMqV8V7WaLdiQ2oawdgKkCgMHXJ7VDuo6uIcXauU3wK6CG0QyDXRV9bPWzorGLRBUHndu/2VB1+9dgT9fvg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.96.0.tgz", + "integrity": "sha512-zCOhRB7MYVIHLj+2QYoTuLyaipiD8JG/ggUjfsMUaupRPpvwQNhsxINLIcTcb0AS+OsT7/OREhydjO74STqQzQ==", "cpu": [ "arm64" ], @@ -13188,9 +13096,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-parser/binding-win32-x64-msvc": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.94.0.tgz", - "integrity": "sha512-UTQQ1576Nzhh4jr/YmvzqnuwTPOauB/TPzsnWzT+w8InHxL5JA1fmy01wB1F2BWT9AD6YV4BTB1ozRICYdAgjw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.96.0.tgz", + "integrity": "sha512-J6zfx9TE0oS+TrqBUjMVMOi/d/j3HMj69Pip263pETOEPm788N0HXKPsc2X2jUfSTHzD9vmdjq0QFymbf2LhWg==", "cpu": [ "x64" ], @@ -13205,9 +13113,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-project/types": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.94.0.tgz", - "integrity": "sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.96.0.tgz", + "integrity": "sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==", "dev": true, "license": "MIT", "funding": { @@ -13215,9 +13123,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-android-arm64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.94.0.tgz", - "integrity": "sha512-abxgEoomc5HNbDQaGhBWguR+W4cdrcEIwV8xIQ2qpUuhEUoHy6nQLfN/gREAZMdkyIaKwk12FckB9aNxVTte2w==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.96.0.tgz", + "integrity": "sha512-wOm+ZsqFvyZ7B9RefUMsj0zcXw77Z2pXA51nbSQyPXqr+g0/pDGxriZWP8Sdpz/e4AEaKPA9DvrwyOZxu7GRDQ==", "cpu": [ "arm64" ], @@ -13232,9 +13140,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-darwin-arm64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.94.0.tgz", - "integrity": "sha512-HbnmwC1pZ9M/nXqA36TpwF7vcXk+PgLMxDvvza5C9CCivfi3MUfqCvFMvRI0snlVm2PK2GAwWJjBtng1fR8LJw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.96.0.tgz", + "integrity": "sha512-td1sbcvzsyuoNRiNdIRodPXRtFFwxzPpC/6/yIUtRRhKn30XQcizxupIvQQVpJWWchxkphbBDh6UN+u+2CJ8Zw==", "cpu": [ "arm64" ], @@ -13249,9 +13157,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-darwin-x64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.94.0.tgz", - "integrity": "sha512-GADv5xcClQpYj5d6GLdPF6Qz/3OSn0d/LKhDklpW/5S42RQsGxI+83iXF1e61KITd4yp4VAvjEiuDM52zb4xYQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.96.0.tgz", + "integrity": "sha512-xgqxnqhPYH2NYkgbqtnCJfhbXvxIf/pnhF/ig5UBK8PYpCEWIP/cfLpQRQ9DcQnRfuxi7RMIF6LdmB1AiS6Fkg==", "cpu": [ "x64" ], @@ -13266,9 +13174,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-freebsd-x64": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.94.0.tgz", - "integrity": "sha512-5H5V+H1CZoRQwbgAt/wLrN8oZwuYGP6xdXTuGUW2C2ON1DynMyxC4Padf8vjPcKbQph5GnLAuoaTafxokE2Z/Q==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.96.0.tgz", + "integrity": "sha512-1i67OXdl/rvSkcTXqDlh6qGRXYseEmf0rl/R+/i88scZ/o3A+FzlX56sThuaPzSSv9eVgesnoYUjIBJELFc1oA==", "cpu": [ "x64" ], @@ -13283,9 +13191,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-arm-gnueabihf": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.94.0.tgz", - "integrity": "sha512-BoWVkKUqgmUs4hDvGPgCSUkIeEMBVvHU/mO348Dhp7XT9ijdnSBmRzY6hFaqRSq768Hn6KblM0NM1QV7jEvKOw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.96.0.tgz", + "integrity": "sha512-9MJBs0SWODsqyzO3eAnacXgJ/sZu1xqinjEwBzkcZ3tQI8nKhMADOzu2NzbVWDWujeoC8DESXaO08tujvUru+Q==", "cpu": [ "arm" ], @@ -13300,9 +13208,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-arm-musleabihf": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.94.0.tgz", - "integrity": "sha512-XUAyt2EtSDycljMKfgDVg/T5C3aF5dR1mfMJAZUCPQkfJjXZwA/C0DTTC/xPlPm68WA4uRtVNLqExTHJ3JOPwg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.96.0.tgz", + "integrity": "sha512-BQom57I2ScccixljNYh2Wy+5oVZtF1LXiiUPxSLtDHbsanpEvV/+kzCagQpTjk1BVzSQzOxfEUWjvL7mY53pRQ==", "cpu": [ "arm" ], @@ -13317,9 +13225,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-arm64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.94.0.tgz", - "integrity": "sha512-5Y7FI2FgawingojBEo3df4sI/Sq73UhVZy3DlT9o94Pgu8o+ujlKPD20kFmOJ1jQNEJ4ScKr5vh6pemHSZjUgA==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.96.0.tgz", + "integrity": "sha512-kaqvUzNu8LL4aBSXqcqGVLFG13GmJEplRI2+yqzkgAItxoP/LfFMdEIErlTWLGyBwd0OLiNMHrOvkcCQRWadVg==", "cpu": [ "arm64" ], @@ -13334,9 +13242,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-arm64-musl": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.94.0.tgz", - "integrity": "sha512-QiyHubpKo7upYPfwB+8bjaTczd60PJdL2zJrMKgL+CDlmP6HZlnWXZkeVTA3S6QXnbulRlrtERmqS2DePszG0g==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.96.0.tgz", + "integrity": "sha512-EiG/L3wEkPgTm4p906ufptyblBgtiQWTubGg/JEw82f8uLRroayr5zhbUqx40EgH037a3SfJthIyLZi7XPRFJw==", "cpu": [ "arm64" ], @@ -13351,9 +13259,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-riscv64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.94.0.tgz", - "integrity": "sha512-vh3PZGmoUCbfkqVGuB7fweuqthYxzAAGqhiAJAn8x4V+R86W5esCtxbm+PTyVawBT/eoq1cU8HhNVqE0rQlChg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.96.0.tgz", + "integrity": "sha512-r01CY6OxKGtVeYnvH4mGmtkQMlLkXdPWWNXwo5o7fE2s/fgZPMpqh8bAuXEhuMXipZRJrjxTk1+ZQ4KCHpMn3Q==", "cpu": [ "riscv64" ], @@ -13368,9 +13276,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-s390x-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.94.0.tgz", - "integrity": "sha512-DT3m7cF612RdHBmYK3Ave6OVT1iSvlbKo8T+81n6ZcFXO+L8vDJHzwMwMOXfeOLQ15zr0WmSHqBOZ14tHKNidw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.96.0.tgz", + "integrity": "sha512-4djg2vYLGbVeS8YiA2K4RPPpZE4fxTGCX5g/bOMbCYyirDbmBAIop4eOAj8vOA9i1CcWbDtmp+PVJ1dSw7f3IQ==", "cpu": [ "s390x" ], @@ -13385,9 +13293,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-x64-gnu": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.94.0.tgz", - "integrity": "sha512-kK5dt8wfxUD3MGXnLHWxv57oYinIwoRFcjw2oJD5DCoGTeXCmrFk4D0eGPAlZKOm7uvWMs9yNI8rg1KY5nEs1w==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.96.0.tgz", + "integrity": "sha512-f6pcWVz57Y8jXa2OS7cz3aRNuks34Q3j61+3nQ4xTE8H1KbalcEvHNmM92OEddaJ8QLs9YcE0kUC6eDTbY34+A==", "cpu": [ "x64" ], @@ -13402,9 +13310,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-linux-x64-musl": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.94.0.tgz", - "integrity": "sha512-+zfNBO2qEPcSPTHVUxsiG3Hm0vxWzuL+DZX0wbbtjKwwhH2Jr1Eo26R+Dwc1SfbvoWen36NitKkd2arkpMW8KQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.96.0.tgz", + "integrity": "sha512-NSiRtFvR7Pbhv3mWyPMkTK38czIjcnK0+K5STo3CuzZRVbX1TM17zGdHzKBUHZu7v6IQ6/XsQ3ELa1BlEHPGWQ==", "cpu": [ "x64" ], @@ -13419,9 +13327,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-wasm32-wasi": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.94.0.tgz", - "integrity": "sha512-rn3c2wGT3ha6j0VLykYOkXU5YyQYIeGXRsDPP7xyiZHVTVssoM0X1BuheFlgxmC1POXMT+dAAcVOFG5MdW1bnQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.96.0.tgz", + "integrity": "sha512-A91ARLiuZHGN4hBds9s7bW3czUuLuHLsV+cz44iF9j8e1zX9m2hNGXf/acQRbg/zcFUXmjz5nmk8EkZyob876w==", "cpu": [ "wasm32" ], @@ -13429,16 +13337,16 @@ "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.6" + "@napi-rs/wasm-runtime": "^1.0.7" }, "engines": { "node": ">=14.0.0" } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-win32-arm64-msvc": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.94.0.tgz", - "integrity": "sha512-An/Dd+I8dH0b+VLEdfTrZP53S4Fha3w/aD71d1uZB14aU02hBt3ZwU8IE3RGZIJPxub9OZmCmJN66uTqkT6oXg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.96.0.tgz", + "integrity": "sha512-IedJf40djKgDObomhYjdRAlmSYUEdfqX3A3M9KfUltl9AghTBBLkTzUMA7O09oo71vYf5TEhbFM7+Vn5vqw7AQ==", "cpu": [ "arm64" ], @@ -13453,9 +13361,9 @@ } }, "node_modules/nuxt/node_modules/@oxc-transform/binding-win32-x64-msvc": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.94.0.tgz", - "integrity": "sha512-HEE/8x6H67jPlkCDDB3xl74eR86zY6nLAql6onmidF5JPNXt9v2XGB6xEwr4brUIaMLPkl90plbdCy9jWhEjdQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.96.0.tgz", + "integrity": "sha512-0fI0P0W7bSO/GCP/N5dkmtB9vBqCA4ggo1WmXTnxNJVmFFOtcA1vYm1I9jl8fxo+sucW2WnlpnI4fjKdo3JKxA==", "cpu": [ "x64" ], @@ -13469,6 +13377,13 @@ "node": "^20.19.0 || >=22.12.0" } }, + "node_modules/nuxt/node_modules/cookie-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.0.tgz", + "integrity": "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==", + "dev": true, + "license": "MIT" + }, "node_modules/nuxt/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -13482,24 +13397,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nuxt/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/nuxt/node_modules/oxc-parser": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.94.0.tgz", - "integrity": "sha512-refms9HQoAlTYIazONYkuX5A3rFGPddbD6Otyc+A0/pj1WTttR8TsZRlMzQxCfhexxfrbinqd7ebkEoYNuCmLQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.96.0.tgz", + "integrity": "sha512-ucs6niJ5mZlYP3oTl4AK2eD2m7WLoSaljswnSFVYWrXzme5PtM97S7Ve1Tjx+/TKjanmEZuSt1f1qYi6SZvntw==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "^0.94.0" + "@oxc-project/types": "^0.96.0" }, "engines": { "node": "^20.19.0 || >=22.12.0" @@ -13508,27 +13413,27 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-parser/binding-android-arm64": "0.94.0", - "@oxc-parser/binding-darwin-arm64": "0.94.0", - "@oxc-parser/binding-darwin-x64": "0.94.0", - "@oxc-parser/binding-freebsd-x64": "0.94.0", - "@oxc-parser/binding-linux-arm-gnueabihf": "0.94.0", - "@oxc-parser/binding-linux-arm-musleabihf": "0.94.0", - "@oxc-parser/binding-linux-arm64-gnu": "0.94.0", - "@oxc-parser/binding-linux-arm64-musl": "0.94.0", - "@oxc-parser/binding-linux-riscv64-gnu": "0.94.0", - "@oxc-parser/binding-linux-s390x-gnu": "0.94.0", - "@oxc-parser/binding-linux-x64-gnu": "0.94.0", - "@oxc-parser/binding-linux-x64-musl": "0.94.0", - "@oxc-parser/binding-wasm32-wasi": "0.94.0", - "@oxc-parser/binding-win32-arm64-msvc": "0.94.0", - "@oxc-parser/binding-win32-x64-msvc": "0.94.0" + "@oxc-parser/binding-android-arm64": "0.96.0", + "@oxc-parser/binding-darwin-arm64": "0.96.0", + "@oxc-parser/binding-darwin-x64": "0.96.0", + "@oxc-parser/binding-freebsd-x64": "0.96.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.96.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.96.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.96.0", + "@oxc-parser/binding-linux-arm64-musl": "0.96.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.96.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.96.0", + "@oxc-parser/binding-linux-x64-gnu": "0.96.0", + "@oxc-parser/binding-linux-x64-musl": "0.96.0", + "@oxc-parser/binding-wasm32-wasi": "0.96.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.96.0", + "@oxc-parser/binding-win32-x64-msvc": "0.96.0" } }, "node_modules/nuxt/node_modules/oxc-transform": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.94.0.tgz", - "integrity": "sha512-nHFFyPVWNNe7WLsAiQ6iwfsuTW/1esT+BJg+9rlvcSa0mfcZTpNo3TlBfj9IerLdDmYHJnSYsx8jjFZhoGfZ1w==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.96.0.tgz", + "integrity": "sha512-dQPNIF+gHpSkmC0+Vg9IktNyhcn28Y8R3eTLyzn52UNymkasLicl3sFAtz7oEVuFmCpgGjaUTKkwk+jW2cHpDQ==", "dev": true, "license": "MIT", "engines": { @@ -13538,21 +13443,21 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-transform/binding-android-arm64": "0.94.0", - "@oxc-transform/binding-darwin-arm64": "0.94.0", - "@oxc-transform/binding-darwin-x64": "0.94.0", - "@oxc-transform/binding-freebsd-x64": "0.94.0", - "@oxc-transform/binding-linux-arm-gnueabihf": "0.94.0", - "@oxc-transform/binding-linux-arm-musleabihf": "0.94.0", - "@oxc-transform/binding-linux-arm64-gnu": "0.94.0", - "@oxc-transform/binding-linux-arm64-musl": "0.94.0", - "@oxc-transform/binding-linux-riscv64-gnu": "0.94.0", - "@oxc-transform/binding-linux-s390x-gnu": "0.94.0", - "@oxc-transform/binding-linux-x64-gnu": "0.94.0", - "@oxc-transform/binding-linux-x64-musl": "0.94.0", - "@oxc-transform/binding-wasm32-wasi": "0.94.0", - "@oxc-transform/binding-win32-arm64-msvc": "0.94.0", - "@oxc-transform/binding-win32-x64-msvc": "0.94.0" + "@oxc-transform/binding-android-arm64": "0.96.0", + "@oxc-transform/binding-darwin-arm64": "0.96.0", + "@oxc-transform/binding-darwin-x64": "0.96.0", + "@oxc-transform/binding-freebsd-x64": "0.96.0", + "@oxc-transform/binding-linux-arm-gnueabihf": "0.96.0", + "@oxc-transform/binding-linux-arm-musleabihf": "0.96.0", + "@oxc-transform/binding-linux-arm64-gnu": "0.96.0", + "@oxc-transform/binding-linux-arm64-musl": "0.96.0", + "@oxc-transform/binding-linux-riscv64-gnu": "0.96.0", + "@oxc-transform/binding-linux-s390x-gnu": "0.96.0", + "@oxc-transform/binding-linux-x64-gnu": "0.96.0", + "@oxc-transform/binding-linux-x64-musl": "0.96.0", + "@oxc-transform/binding-wasm32-wasi": "0.96.0", + "@oxc-transform/binding-win32-arm64-msvc": "0.96.0", + "@oxc-transform/binding-win32-x64-msvc": "0.96.0" } }, "node_modules/nypm": { @@ -13585,6 +13490,13 @@ "node": ">=0.10.0" } }, + "node_modules/object-deep-merge": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz", + "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==", + "dev": true, + "license": "MIT" + }, "node_modules/object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", @@ -13596,15 +13508,15 @@ } }, "node_modules/ofetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", - "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", "dev": true, "license": "MIT", "dependencies": { - "destr": "^2.0.3", - "node-fetch-native": "^1.6.4", - "ufo": "^1.5.4" + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" } }, "node_modules/ohash": { @@ -13615,9 +13527,9 @@ "license": "MIT" }, "node_modules/on-change": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/on-change/-/on-change-6.0.0.tgz", - "integrity": "sha512-J7kocOS+ZNyjmW6tUUTtA7jLt8GjQlrOdz9z3yLNTvdsswO+b5lYSdMVzDczWnooyFAkkQiKyap5g/Zba+cFRA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/on-change/-/on-change-6.0.1.tgz", + "integrity": "sha512-P7o0hkMahOhjb1niG28vLNAXsJrRcfpJvYWcTmPt/Tf4xedcF2PA1E9++N1tufY8/vIsaiJgHhjQp53hJCe+zw==", "dev": true, "license": "MIT", "engines": { @@ -13710,9 +13622,9 @@ } }, "node_modules/oxc-minify": { - "version": "0.94.0", - "resolved": "https://registry.npmjs.org/oxc-minify/-/oxc-minify-0.94.0.tgz", - "integrity": "sha512-7+9iyxwpzfjuiEnSqNJYzTsC1Oud742PPkr/4S1bGY930U4tApdLEK8zmgbT57c1/56cfNOndqZaeQZiAfnJ5A==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/oxc-minify/-/oxc-minify-0.96.0.tgz", + "integrity": "sha512-dXeeGrfPJJ4rMdw+NrqiCRtbzVX2ogq//R0Xns08zql2HjV3Zi2SBJ65saqfDaJzd2bcHqvGWH+M44EQCHPAcA==", "dev": true, "license": "MIT", "engines": { @@ -13722,32 +13634,32 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-minify/binding-android-arm64": "0.94.0", - "@oxc-minify/binding-darwin-arm64": "0.94.0", - "@oxc-minify/binding-darwin-x64": "0.94.0", - "@oxc-minify/binding-freebsd-x64": "0.94.0", - "@oxc-minify/binding-linux-arm-gnueabihf": "0.94.0", - "@oxc-minify/binding-linux-arm-musleabihf": "0.94.0", - "@oxc-minify/binding-linux-arm64-gnu": "0.94.0", - "@oxc-minify/binding-linux-arm64-musl": "0.94.0", - "@oxc-minify/binding-linux-riscv64-gnu": "0.94.0", - "@oxc-minify/binding-linux-s390x-gnu": "0.94.0", - "@oxc-minify/binding-linux-x64-gnu": "0.94.0", - "@oxc-minify/binding-linux-x64-musl": "0.94.0", - "@oxc-minify/binding-wasm32-wasi": "0.94.0", - "@oxc-minify/binding-win32-arm64-msvc": "0.94.0", - "@oxc-minify/binding-win32-x64-msvc": "0.94.0" + "@oxc-minify/binding-android-arm64": "0.96.0", + "@oxc-minify/binding-darwin-arm64": "0.96.0", + "@oxc-minify/binding-darwin-x64": "0.96.0", + "@oxc-minify/binding-freebsd-x64": "0.96.0", + "@oxc-minify/binding-linux-arm-gnueabihf": "0.96.0", + "@oxc-minify/binding-linux-arm-musleabihf": "0.96.0", + "@oxc-minify/binding-linux-arm64-gnu": "0.96.0", + "@oxc-minify/binding-linux-arm64-musl": "0.96.0", + "@oxc-minify/binding-linux-riscv64-gnu": "0.96.0", + "@oxc-minify/binding-linux-s390x-gnu": "0.96.0", + "@oxc-minify/binding-linux-x64-gnu": "0.96.0", + "@oxc-minify/binding-linux-x64-musl": "0.96.0", + "@oxc-minify/binding-wasm32-wasi": "0.96.0", + "@oxc-minify/binding-win32-arm64-msvc": "0.96.0", + "@oxc-minify/binding-win32-x64-msvc": "0.96.0" } }, "node_modules/oxc-parser": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.93.0.tgz", - "integrity": "sha512-ktMzTb3AqYCAsgnGTsWOhJYEBxGhxm6F+Ja9HsRibvVYBnA/BCiALAYLQk6M47mdEyybP9B3sOj56UDT+VIkMg==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.95.0.tgz", + "integrity": "sha512-Te8fE/SmiiKWIrwBwxz5Dod87uYvsbcZ9JAL5ylPg1DevyKgTkxCXnPEaewk1Su2qpfNmry5RHoN+NywWFCG+A==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@oxc-project/types": "^0.93.0" + "@oxc-project/types": "^0.95.0" }, "engines": { "node": "^20.19.0 || >=22.12.0" @@ -13756,27 +13668,27 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-parser/binding-android-arm64": "0.93.0", - "@oxc-parser/binding-darwin-arm64": "0.93.0", - "@oxc-parser/binding-darwin-x64": "0.93.0", - "@oxc-parser/binding-freebsd-x64": "0.93.0", - "@oxc-parser/binding-linux-arm-gnueabihf": "0.93.0", - "@oxc-parser/binding-linux-arm-musleabihf": "0.93.0", - "@oxc-parser/binding-linux-arm64-gnu": "0.93.0", - "@oxc-parser/binding-linux-arm64-musl": "0.93.0", - "@oxc-parser/binding-linux-riscv64-gnu": "0.93.0", - "@oxc-parser/binding-linux-s390x-gnu": "0.93.0", - "@oxc-parser/binding-linux-x64-gnu": "0.93.0", - "@oxc-parser/binding-linux-x64-musl": "0.93.0", - "@oxc-parser/binding-wasm32-wasi": "0.93.0", - "@oxc-parser/binding-win32-arm64-msvc": "0.93.0", - "@oxc-parser/binding-win32-x64-msvc": "0.93.0" + "@oxc-parser/binding-android-arm64": "0.95.0", + "@oxc-parser/binding-darwin-arm64": "0.95.0", + "@oxc-parser/binding-darwin-x64": "0.95.0", + "@oxc-parser/binding-freebsd-x64": "0.95.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.95.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.95.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.95.0", + "@oxc-parser/binding-linux-arm64-musl": "0.95.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.95.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.95.0", + "@oxc-parser/binding-linux-x64-gnu": "0.95.0", + "@oxc-parser/binding-linux-x64-musl": "0.95.0", + "@oxc-parser/binding-wasm32-wasi": "0.95.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.95.0", + "@oxc-parser/binding-win32-x64-msvc": "0.95.0" } }, "node_modules/oxc-transform": { - "version": "0.93.0", - "resolved": "https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.93.0.tgz", - "integrity": "sha512-QCwM2nMAWf4hEBehLVA2apllxdmmWLb5M0in9HwC2boaaFbP0QntbLy4hfRZGur2KKyEBErZbH9S5NYX8eHslg==", + "version": "0.95.0", + "resolved": "https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.95.0.tgz", + "integrity": "sha512-SmS5aThb5K0SoUZgzGbikNBjrGHfOY4X5TEqBlaZb1uy5YgXbUSbpakpZJ13yW36LNqy8Im5+y+sIk5dlzpZ/w==", "dev": true, "license": "MIT", "engines": { @@ -13786,21 +13698,21 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxc-transform/binding-android-arm64": "0.93.0", - "@oxc-transform/binding-darwin-arm64": "0.93.0", - "@oxc-transform/binding-darwin-x64": "0.93.0", - "@oxc-transform/binding-freebsd-x64": "0.93.0", - "@oxc-transform/binding-linux-arm-gnueabihf": "0.93.0", - "@oxc-transform/binding-linux-arm-musleabihf": "0.93.0", - "@oxc-transform/binding-linux-arm64-gnu": "0.93.0", - "@oxc-transform/binding-linux-arm64-musl": "0.93.0", - "@oxc-transform/binding-linux-riscv64-gnu": "0.93.0", - "@oxc-transform/binding-linux-s390x-gnu": "0.93.0", - "@oxc-transform/binding-linux-x64-gnu": "0.93.0", - "@oxc-transform/binding-linux-x64-musl": "0.93.0", - "@oxc-transform/binding-wasm32-wasi": "0.93.0", - "@oxc-transform/binding-win32-arm64-msvc": "0.93.0", - "@oxc-transform/binding-win32-x64-msvc": "0.93.0" + "@oxc-transform/binding-android-arm64": "0.95.0", + "@oxc-transform/binding-darwin-arm64": "0.95.0", + "@oxc-transform/binding-darwin-x64": "0.95.0", + "@oxc-transform/binding-freebsd-x64": "0.95.0", + "@oxc-transform/binding-linux-arm-gnueabihf": "0.95.0", + "@oxc-transform/binding-linux-arm-musleabihf": "0.95.0", + "@oxc-transform/binding-linux-arm64-gnu": "0.95.0", + "@oxc-transform/binding-linux-arm64-musl": "0.95.0", + "@oxc-transform/binding-linux-riscv64-gnu": "0.95.0", + "@oxc-transform/binding-linux-s390x-gnu": "0.95.0", + "@oxc-transform/binding-linux-x64-gnu": "0.95.0", + "@oxc-transform/binding-linux-x64-musl": "0.95.0", + "@oxc-transform/binding-wasm32-wasi": "0.95.0", + "@oxc-transform/binding-win32-arm64-msvc": "0.95.0", + "@oxc-transform/binding-win32-x64-msvc": "0.95.0" } }, "node_modules/oxc-walker": { @@ -13917,19 +13829,6 @@ "parse-statements": "1.0.11" } }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parse-path": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.1.0.tgz", @@ -14279,13 +14178,13 @@ } }, "node_modules/postcss-colormin": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.4.tgz", - "integrity": "sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.5.tgz", + "integrity": "sha512-ekIBP/nwzRWhEMmIxHHbXHcMdzd1HIUzBECaj5KEdLz9DVP2HzT065sEhvOx1dkLjYW7jyD0CngThx6bpFi2fA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "caniuse-api": "^3.0.0", "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" @@ -14298,13 +14197,13 @@ } }, "node_modules/postcss-convert-values": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.7.tgz", - "integrity": "sha512-HR9DZLN04Xbe6xugRH6lS4ZQH2zm/bFh/ZyRkpedZozhvh+awAfbA0P36InO4fZfDhvYfNJeNvlTf1sjwGbw/A==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.8.tgz", + "integrity": "sha512-+XNKuPfkHTCEo499VzLMYn94TiL3r9YqRE3Ty+jP7UX4qjewUONey1t7CG21lrlTLN07GtGM8MqFVp86D4uKJg==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -14315,9 +14214,9 @@ } }, "node_modules/postcss-discard-comments": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz", - "integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.5.tgz", + "integrity": "sha512-IR2Eja8WfYgN5n32vEGSctVQ1+JARfu4UH8M7bgGh1bC+xI/obsPJXaBpQF7MAByvgwZinhpHpdrmXtvVVlKcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14488,13 +14387,13 @@ } }, "node_modules/postcss-merge-rules": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.6.tgz", - "integrity": "sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.7.tgz", + "integrity": "sha512-njWJrd/Ms6XViwowaaCc+/vqhPG3SmXn725AGrnl+BgTuRPEacjiLEaGq16J6XirMJbtKkTwnt67SS+e2WGoew==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "caniuse-api": "^3.0.0", "cssnano-utils": "^5.0.1", "postcss-selector-parser": "^7.1.0" @@ -14555,13 +14454,13 @@ } }, "node_modules/postcss-minify-params": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.4.tgz", - "integrity": "sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.5.tgz", + "integrity": "sha512-FGK9ky02h6Ighn3UihsyeAH5XmLEE2MSGH5Tc4tXMFtEDx7B+zTG6hD/+/cT+fbF7PbYojsmmWjyTwFwW1JKQQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "cssnano-utils": "^5.0.1", "postcss-value-parser": "^4.2.0" }, @@ -14826,13 +14725,13 @@ } }, "node_modules/postcss-normalize-unicode": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.4.tgz", - "integrity": "sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.5.tgz", + "integrity": "sha512-X6BBwiRxVaFHrb2WyBMddIeB5HBjJcAaUHyhLrM2FsxSq5TFqcHSsK7Zu1otag+o0ZphQGJewGH1tAyrD0zX1Q==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -14892,13 +14791,13 @@ } }, "node_modules/postcss-reduce-initial": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.4.tgz", - "integrity": "sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.5.tgz", + "integrity": "sha512-RHagHLidG8hTZcnr4FpyMB2jtgd/OcyAazjMhoy5qmWJOx1uxKh4ntk0Pb46ajKM0rkf32lRH4C8c9qQiPR6IA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "caniuse-api": "^3.0.0" }, "engines": { @@ -15166,22 +15065,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-ms": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", - "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -15290,17 +15173,17 @@ } }, "node_modules/puppeteer-core": { - "version": "24.25.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.25.0.tgz", - "integrity": "sha512-8Xs6q3Ut+C8y7sAaqjIhzv1QykGWG4gc2mEZ2mYE7siZFuRp4xQVehOf8uQKSQAkeL7jXUs3mknEeiqnRqUKvQ==", + "version": "24.29.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.29.1.tgz", + "integrity": "sha512-ErJ9qKCK+bdLvBa7QVSQTBSPm8KZbl1yC/WvhrZ0ut27hDf2QBzjDsn1IukzE1i1KtZ7NYGETOV4W1beoo9izA==", "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.10.12", - "chromium-bidi": "9.1.0", + "@puppeteer/browsers": "2.10.13", + "chromium-bidi": "10.5.1", "debug": "^4.4.3", - "devtools-protocol": "0.0.1508733", + "devtools-protocol": "0.0.1521046", "typed-query-selector": "^2.12.0", - "webdriver-bidi-protocol": "0.3.7", + "webdriver-bidi-protocol": "0.3.8", "ws": "^8.18.3" }, "engines": { @@ -15508,31 +15391,18 @@ } }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/replace-in-file": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz", @@ -15629,6 +15499,19 @@ "node": ">=8.6.0" } }, + "node_modules/reserved-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", @@ -15752,9 +15635,9 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", "dev": true, "license": "MIT", "peer": true, @@ -15769,28 +15652,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", "fsevents": "~2.3.2" } }, @@ -15892,12 +15775,6 @@ "node": ">= 12" } }, - "node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "license": "MIT" - }, "node_modules/run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", @@ -16120,6 +15997,16 @@ "randombytes": "^2.1.0" } }, + "node_modules/seroval": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz", + "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/serve-placeholder": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.2.tgz", @@ -16216,9 +16103,9 @@ } }, "node_modules/simple-git": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.28.0.tgz", - "integrity": "sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==", + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.30.0.tgz", + "integrity": "sha512-q6lxyDsCmEal/MEGhP1aVyQ3oxnagGlBDOVSIB4XUVLl1iZh0Pah6ebC9V4xBap/RfgP2WlI8EKs0WS0rMEJHg==", "dev": true, "license": "MIT", "dependencies": { @@ -16389,9 +16276,9 @@ } }, "node_modules/srvx": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.8.16.tgz", - "integrity": "sha512-hmcGW4CgroeSmzgF1Ihwgl+Ths0JqAJ7HwjP2X7e3JzY7u4IydLMcdnlqGQiQGUswz+PO9oh/KtCpOISIvs9QQ==", + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.9.6.tgz", + "integrity": "sha512-5L4rT6qQqqb+xcoDoklUgCNdmzqJ6vbcDRwPVGRXewF55IJH0pqh0lQlrJ266ZWTKJ4mfeioqHQJeAYesS+RrQ==", "dev": true, "license": "MIT", "bin": { @@ -16627,13 +16514,13 @@ "license": "ISC" }, "node_modules/stylehacks": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.6.tgz", - "integrity": "sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.7.tgz", + "integrity": "sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.1", + "browserslist": "^4.27.0", "postcss-selector-parser": "^7.1.0" }, "engines": { @@ -16768,9 +16655,9 @@ } }, "node_modules/superjson": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.3.tgz", - "integrity": "sha512-ay3d+LW/S6yppKoTz3Bq4mG0xrS5bFwfWEBmQfbC7lt5wmtk+Obq0TxVuA9eYRirBTQb1K3eEpBRHMQEo0WyVw==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.5.tgz", + "integrity": "sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==", "dev": true, "license": "MIT", "dependencies": { @@ -16842,11 +16729,11 @@ } }, "node_modules/svgo/node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0" }, "node_modules/symbol-tree": { "version": "3.2.4", @@ -17107,11 +16994,11 @@ } }, "node_modules/tar": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", - "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", + "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -17149,9 +17036,9 @@ } }, "node_modules/terser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", - "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -17236,11 +17123,14 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", - "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { "version": "0.2.15", @@ -17320,6 +17210,23 @@ "node": ">=8.0" } }, + "node_modules/to-valid-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/base62": "^1.0.0", + "reserved-identifiers": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -17423,9 +17330,9 @@ } }, "node_modules/type-fest": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.1.0.tgz", - "integrity": "sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.2.0.tgz", + "integrity": "sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==", "dev": true, "license": "(MIT OR CC0-1.0)", "dependencies": { @@ -17523,16 +17430,6 @@ "@types/estree": "^1.0.0" } }, - "node_modules/undici": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -17540,17 +17437,13 @@ "license": "MIT" }, "node_modules/unenv": { - "version": "2.0.0-rc.21", - "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.21.tgz", - "integrity": "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==", + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", "dev": true, "license": "MIT", "dependencies": { - "defu": "^6.1.4", - "exsolve": "^1.0.7", - "ohash": "^2.0.11", - "pathe": "^2.0.3", - "ufo": "^1.6.1" + "pathe": "^2.0.3" } }, "node_modules/unhead": { @@ -17567,9 +17460,9 @@ } }, "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", "engines": { @@ -17689,32 +17582,33 @@ } }, "node_modules/unplugin-vue-router": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.15.0.tgz", - "integrity": "sha512-PyGehCjd9Ny9h+Uer4McbBjjib3lHihcyUEILa7pHKl6+rh8N7sFyw4ZkV+N30Oq2zmIUG7iKs3qpL0r+gXAaQ==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.16.1.tgz", + "integrity": "sha512-7A7gUVzLIYMBrBPKk8l4lZoZXDOrO8+etw6/RTrqG3OzpLUUZEXJFUW7+OyMIpQK93sEbdkR2z9ZNNl/r32FMw==", "dev": true, "license": "MIT", "dependencies": { - "@vue-macros/common": "3.0.0-beta.16", - "@vue/language-core": "^3.0.1", - "ast-walker-scope": "^0.8.1", + "@babel/generator": "^7.28.5", + "@vue-macros/common": "^3.1.1", + "@vue/language-core": "^3.1.2", + "ast-walker-scope": "^0.8.3", "chokidar": "^4.0.3", "json5": "^2.2.3", - "local-pkg": "^1.1.1", - "magic-string": "^0.30.17", - "mlly": "^1.7.4", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", "muggle-string": "^0.4.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "scule": "^1.3.0", - "tinyglobby": "^0.2.14", - "unplugin": "^2.3.5", - "unplugin-utils": "^0.2.4", - "yaml": "^2.8.0" + "tinyglobby": "^0.2.15", + "unplugin": "^2.3.10", + "unplugin-utils": "^0.3.1", + "yaml": "^2.8.1" }, "peerDependencies": { "@vue/compiler-sfc": "^3.5.17", - "vue-router": "^4.5.1" + "vue-router": "^4.6.0" }, "peerDependenciesMeta": { "vue-router": { @@ -17722,6 +17616,23 @@ } } }, + "node_modules/unplugin-vue-router/node_modules/unplugin-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", + "dev": true, + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, "node_modules/unrs-resolver": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", @@ -17759,9 +17670,9 @@ } }, "node_modules/unstorage": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.1.tgz", - "integrity": "sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==", + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.2.tgz", + "integrity": "sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==", "dev": true, "license": "MIT", "dependencies": { @@ -17771,7 +17682,7 @@ "h3": "^1.15.4", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.7", - "ofetch": "^1.4.1", + "ofetch": "^1.5.0", "ufo": "^1.6.1" }, "peerDependencies": { @@ -17989,9 +17900,9 @@ } }, "node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "dev": true, "license": "MIT", "peer": true, @@ -18212,19 +18123,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vite-plugin-checker/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/vite-plugin-eslint2": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/vite-plugin-eslint2/-/vite-plugin-eslint2-5.0.4.tgz", @@ -18307,15 +18205,15 @@ } }, "node_modules/vite-plugin-vue-tracer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.0.1.tgz", - "integrity": "sha512-L5/vAhT6oYbH4RSQYGLN9VfHexWe7SGzca1pJ7oPkL6KtxWA1jbGeb3Ri1JptKzqtd42HinOq4uEYqzhVWrzig==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.1.3.tgz", + "integrity": "sha512-fM7hfHELZvbPnSn8EKZwHfzxm5EfYFQIclz8rwcNXfodNbRkwNvh0AGMtaBfMxQ9HC5KVa3KitwHnmE4ezDemw==", "dev": true, "license": "MIT", "dependencies": { "estree-walker": "^3.0.3", "exsolve": "^1.0.7", - "magic-string": "^0.30.19", + "magic-string": "^0.30.21", "pathe": "^2.0.3", "source-map-js": "^1.2.1" }, @@ -18496,17 +18394,17 @@ "license": "MIT" }, "node_modules/vue": { - "version": "3.5.22", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz", - "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.24.tgz", + "integrity": "sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==", "license": "MIT", "peer": true, "dependencies": { - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-sfc": "3.5.22", - "@vue/runtime-dom": "3.5.22", - "@vue/server-renderer": "3.5.22", - "@vue/shared": "3.5.22" + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-sfc": "3.5.24", + "@vue/runtime-dom": "3.5.24", + "@vue/server-renderer": "3.5.24", + "@vue/shared": "3.5.24" }, "peerDependencies": { "typescript": "*" @@ -18651,9 +18549,9 @@ } }, "node_modules/webdriver-bidi-protocol": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.7.tgz", - "integrity": "sha512-wIx5Gu/LLTeexxilpk8WxU2cpGAKlfbWRO5h+my6EMD1k5PYqM1qQO1MHUFf4f3KRnhBvpbZU7VkizAgeSEf7g==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.8.tgz", + "integrity": "sha512-21Yi2GhGntMc671vNBCjiAeEVknXjVRoyu+k+9xOMShu+ZQfpGQwnBqbNz/Sv4GXZ6JmutlPAi2nIJcrymAWuQ==", "license": "Apache-2.0" }, "node_modules/webidl-conversions": { @@ -18684,6 +18582,18 @@ "node": ">=18" } }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -19059,9 +18969,9 @@ } }, "node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "dev": true, "license": "MIT", "engines": { @@ -19071,30 +18981,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/youch": { - "version": "4.1.0-beta.11", - "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.11.tgz", - "integrity": "sha512-sQi6PERyO/mT8w564ojOVeAlYTtVQmC2GaktQAf+IdI75/GKIggosBuvyVXvEV+FATAT6RbLdIjFoiIId4ozoQ==", + "version": "4.1.0-beta.12", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.12.tgz", + "integrity": "sha512-X+AQ2EdigcZb2h1XQmBMm19TrrfKXxEXWpnf8ThbARwiiSf/pA7MvRTCj5VHCI9z3vjJBsDeqWWyvaI9Bfp9Pg==", "dev": true, "license": "MIT", "dependencies": { "@poppinss/colors": "^4.1.5", - "@poppinss/dumper": "^0.6.4", - "@speed-highlight/core": "^1.2.7", - "cookie": "^1.0.2", + "@poppinss/dumper": "^0.6.5", + "@speed-highlight/core": "^1.2.9", + "cookie-es": "^2.0.0", "youch-core": "^0.3.3" } }, @@ -19109,6 +19006,13 @@ "error-stack-parser-es": "^1.0.5" } }, + "node_modules/youch/node_modules/cookie-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.0.tgz", + "integrity": "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==", + "dev": true, + "license": "MIT" + }, "node_modules/zip-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", diff --git a/print/package.json b/print/package.json index a7e8ebb6ed..94d834303a 100644 --- a/print/package.json +++ b/print/package.json @@ -18,48 +18,48 @@ "dependencies": { "@jamescoyle/vue-icon": "0.1.2", "@mdi/js": "7.4.47", - "@sentry/node": "10.20.0", - "axios": "1.12.2", + "@sentry/node": "10.23.0", + "axios": "1.13.2", "colorjs.io": "0.5.2", - "dayjs": "1.11.18", + "dayjs": "1.11.19", "deepmerge": "4.3.1", "hal-json-vuex": "3.0.0-alpha.10", - "isomorphic-dompurify": "2.29.0", + "isomorphic-dompurify": "2.31.0", "lodash-es": "4.17.21", - "puppeteer-core": "24.25.0", + "puppeteer-core": "24.29.1", "runes": "0.4.3", "vuex": "4.1.0" }, "devDependencies": { - "@eslint/compat": "1.4.0", - "@eslint/js": "9.38.0", - "@nuxt/eslint": "1.9.0", - "@nuxt/eslint-config": "1.9.0", - "@nuxtjs/i18n": "10.1.1", + "@eslint/compat": "1.4.1", + "@eslint/js": "9.39.1", + "@nuxt/eslint": "1.10.0", + "@nuxt/eslint-config": "1.10.0", + "@nuxtjs/i18n": "10.2.0", "@nuxtjs/tailwindcss": "6.14.0", "@tailwindcss/typography": "0.5.19", - "@typescript-eslint/eslint-plugin": "8.46.2", + "@typescript-eslint/eslint-plugin": "8.46.4", "@vitest/coverage-v8": "3.2.4", - "@vue/compiler-dom": "3.5.22", - "@vue/compiler-sfc": "3.5.22", - "@vue/runtime-dom": "3.5.22", - "@vue/server-renderer": "3.5.22", - "@vue/shared": "3.5.22", + "@vue/compiler-dom": "3.5.24", + "@vue/compiler-sfc": "3.5.24", + "@vue/runtime-dom": "3.5.24", + "@vue/server-renderer": "3.5.24", + "@vue/shared": "3.5.24", "@vue/test-utils": "2.4.6", - "eslint": "9.38.0", + "eslint": "9.39.1", "eslint-config-prettier": "10.1.8", "eslint-plugin-local-rules": "3.0.2", "eslint-plugin-prettier": "5.5.4", "eslint-plugin-vue": "10.5.1", "eslint-plugin-vue-scoped-css": "2.12.0", - "globals": "16.4.0", - "nuxt": "4.1.3", + "globals": "16.5.0", + "nuxt": "4.2.1", "prettier": "3.6.2", "sass": "1.82.0", "vite-plugin-eslint2": "5.0.4", "vite-svg-loader": "5.1.0", "vitest": "3.2.4", - "vue": "3.5.22" + "vue": "3.5.24" }, "overrides": { "uri-js": "npm:uri-js-replace" diff --git a/renovate.json b/renovate.json index dccac29ced..8164a98870 100644 --- a/renovate.json +++ b/renovate.json @@ -5,8 +5,8 @@ ":prConcurrentLimitNone" ], "constraints": { - "node": "24.10.0", - "php": "8.4.13" + "node": "24.11.0", + "php": "8.4.14" }, "automergeType": "branch", "rebaseWhen": "conflicted", diff --git a/reverse-proxy-nginx.conf b/reverse-proxy-nginx.conf index 114ceaed2c..83031eb56e 100644 --- a/reverse-proxy-nginx.conf +++ b/reverse-proxy-nginx.conf @@ -11,7 +11,7 @@ http { '' close; } - resolver 127.0.0.11; + resolver 127.0.0.11 valid=0s; include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' diff --git a/translation/package-lock.json b/translation/package-lock.json index 1cbcf1dbbe..f981a47a05 100644 --- a/translation/package-lock.json +++ b/translation/package-lock.json @@ -6,13 +6,13 @@ "": { "name": "@ecamp3/translations", "dependencies": { - "deepl-node": "1.20.0" + "deepl-node": "1.21.0" } }, "node_modules/@types/node": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", - "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -34,9 +34,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -86,9 +86,9 @@ } }, "node_modules/deepl-node": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/deepl-node/-/deepl-node-1.20.0.tgz", - "integrity": "sha512-2MNJgJgQQWHAieaKYJyxYe1g21P8MYOtMbcS7ApyBHT8856c6EYO9RRNevodGaIf0oiKMzwyenJ59O7B0NQyGw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/deepl-node/-/deepl-node-1.21.0.tgz", + "integrity": "sha512-5j6OcA6Q65QdcQUDKesWlwiyXSwBQ6/+N82/z6oCcZcco2h/CC9pn1PKxm7XqvydJWqXTNG0+pwhxnTQ4p6HhA==", "license": "MIT", "dependencies": { "@types/node": ">=12.0", diff --git a/translation/package.json b/translation/package.json index 797b715341..fd2e94ccc5 100755 --- a/translation/package.json +++ b/translation/package.json @@ -2,7 +2,7 @@ "name": "@ecamp3/translations", "private": true, "dependencies": { - "deepl-node": "1.20.0" + "deepl-node": "1.21.0" }, "scripts": { "sort-common-de": "node deepl.js ../common/locales/de.json ../common/locales/de.json",