diff --git a/.env b/.env
index 0a1d819..988bd7a 100644
--- a/.env
+++ b/.env
@@ -1,6 +1,7 @@
COMPOSE_PROJECT_NAME=itksites
-#COMPOSE_DOMAIN=itksites.local.itkdev.dk
-COMPOSE_DOMAIN=sites.itkdev.dk
+COMPOSE_DOMAIN=itksites.local.itkdev.dk
+
+ITKDEV_TEMPLATE=symfony-6
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
@@ -63,3 +64,5 @@ VAULT_SECRET_ID="CHANGE_ME_IN_LOCAL_ENV"
# The number of old results for each server/result-type combination
APP_KEEP_RESULTS=5
+APP_LEANTIME_URI=https://leantime.itkdev.dk
+APP_LEANTIME_API_KEY="CHANGE_ME_IN_LOCAL_ENV"
diff --git a/.github/workflows/apispec.yaml b/.github/workflows/apispec.yaml
new file mode 100644
index 0000000..7d11a53
--- /dev/null
+++ b/.github/workflows/apispec.yaml
@@ -0,0 +1,115 @@
+name: API Spec review
+
+env:
+ COMPOSE_USER: root
+
+on:
+ pull_request:
+
+jobs:
+ api-spec-updated:
+ name: Ensure committed API specification is up to date
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 2
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - name: Composer install
+ run: |
+ docker compose run --rm phpfpm composer install
+
+ - name: Export API specification
+ run: |
+ docker compose run --rm phpfpm bin/console api:openapi:export --yaml --output=public/api-spec-v1.yaml --no-interaction
+
+ - name: Check for changes in specification
+ id: git-diff-spec
+ continue-on-error: true
+ run: git diff --diff-filter=ACMRT --exit-code public/api-spec-v1.yaml
+
+ - name: Comment PR
+ if: steps.git-diff-spec.outcome == 'failure'
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ echo '## 🛑 Exported API specification file not up to date' > var/comment.md
+ echo '' >> var/comment.md
+ echo 'Please run `composer update-api-spec` to export the API specification. Then commit and push the changes.' >> var/comment.md
+ gh pr comment ${{ github.event.pull_request.number }} --body-file var/comment.md --create-if-none --edit-last
+
+ - name: Fail job, api spec is not up to date
+ if: steps.git-diff-spec.outcome == 'failure'
+ run: |
+ exit 1
+
+ detect-breaking-changes:
+ name: Detect breaking changes in API specification
+ runs-on: ubuntu-latest
+ needs: [api-spec-updated]
+ steps:
+ - name: Check out BASE rev
+ uses: actions/checkout@v5
+ with:
+ ref: ${{ github.base_ref }}
+ path: base
+
+ - name: Check out HEAD rev
+ uses: actions/checkout@v5
+ with:
+ ref: ${{ github.head_ref }}
+ path: head
+
+ - name: Run OpenAPI Changed (from HEAD rev)
+ id: api-changed
+ continue-on-error: true
+ uses: docker://openapitools/openapi-diff:latest
+ with:
+ args: --fail-on-changed base/public/api-spec-v1.yaml head/public/api-spec-v1.yaml --markdown api-spec-changed.md
+
+ - name: Run OpenAPI Incompatible (from HEAD rev)
+ id: api-incompatible
+ continue-on-error: true
+ uses: docker://openapitools/openapi-diff:latest
+ with:
+ args: --fail-on-incompatible base/public/api-spec-v1.yaml head/public/api-spec-v1.yaml --markdown api-spec-incompatible.md
+
+ - name: Comment PR with no changes
+ if: steps.api-changed.outcome == 'success' && steps.api-incompatible.outcome == 'success'
+ working-directory: head
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ gh pr comment ${{ github.event.pull_request.number }} --body "✅ **No changes detected in API specification**" --create-if-none --edit-last
+
+ - name: Comment PR with non-breaking changes
+ if: steps.api-changed.outcome == 'failure' && steps.api-incompatible.outcome == 'success'
+ working-directory: head
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ echo "## ⚠️ Non-Breaking changes detected in API specification" > ../comment.md
+ echo "" >> ../comment.md
+ cat ../api-spec-changed.md >> ../comment.md
+ gh pr comment ${{ github.event.pull_request.number }} --body-file ../comment.md --create-if-none --edit-last
+
+ - name: Comment PR with breaking changes
+ if: steps.api-incompatible.outcome == 'failure'
+ working-directory: head
+ env:
+ GH_TOKEN: ${{ github.token }}
+ run: |
+ echo "## 🛑 Breaking changes detected in API specification" > ../comment.md
+ echo "" >> ../comment.md
+ cat ../api-spec-incompatible.md >> ../comment.md
+ gh pr comment ${{ github.event.pull_request.number }} --body-file ../comment.md --create-if-none --edit-last
+
+ - name: Fail if breaking changes detected
+ if: steps.api-incompatible.outcome == 'failure'
+ run: |
+ exit 1
diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml
new file mode 100644
index 0000000..9f5fead
--- /dev/null
+++ b/.github/workflows/changelog.yaml
@@ -0,0 +1,27 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/changelog.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### Changelog
+###
+### Checks that changelog has been updated
+
+name: Changelog
+
+on:
+ pull_request:
+
+jobs:
+ changelog:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 2
+
+ - name: Git fetch
+ run: git fetch
+
+ - name: Check that changelog has been updated.
+ run: git diff --exit-code origin/${{ github.base_ref }} -- CHANGELOG.md && exit 1 || exit 0
diff --git a/.github/workflows/composer.yaml b/.github/workflows/composer.yaml
new file mode 100644
index 0000000..314a11b
--- /dev/null
+++ b/.github/workflows/composer.yaml
@@ -0,0 +1,78 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/composer.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### Composer
+###
+### Validates composer.json and checks that it's normalized.
+###
+### #### Assumptions
+###
+### 1. A docker compose service named `phpfpm` can be run and `composer` can be
+### run inside the `phpfpm` service.
+### 2. [ergebnis/composer-normalize](https://github.com/ergebnis/composer-normalize)
+### is a dev requirement in `composer.json`:
+###
+### ``` shell
+### docker compose run --rm phpfpm composer require --dev ergebnis/composer-normalize
+### ```
+###
+### Normalize `composer.json` by running
+###
+### ``` shell
+### docker compose run --rm phpfpm composer normalize
+### ```
+
+name: Composer
+
+env:
+ COMPOSE_USER: root
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ composer-validate:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm phpfpm composer validate --strict
+
+ composer-normalized:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm phpfpm composer install
+ docker compose run --rm phpfpm composer normalize --dry-run
+
+ composer-audit:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm phpfpm composer audit
diff --git a/.github/workflows/doctrine.yaml b/.github/workflows/doctrine.yaml
new file mode 100644
index 0000000..696886d
--- /dev/null
+++ b/.github/workflows/doctrine.yaml
@@ -0,0 +1,41 @@
+name: Doctrine
+
+env:
+ COMPOSE_USER: root
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ coding-standards:
+ name: Validate Schema
+ runs-on: ubuntu-latest
+ env:
+ APP_ENV: prod
+
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - name: Run Composer Install
+ run: |
+ docker compose run --rm phpfpm composer install
+
+ - name: Run Doctrine Migrations
+ run: |
+ docker compose run --rm phpfpm bin/console doctrine:migrations:migrate --no-interaction
+
+ - name: Setup messenger "failed" doctrine transport to ensure db schema is updated
+ run: |
+ docker compose run --rm phpfpm bin/console messenger:setup-transports failed
+
+ - name: Validate Doctrine schema
+ run: |
+ docker compose run --rm phpfpm bin/console doctrine:schema:validate
diff --git a/.github/workflows/github_build_release.yml b/.github/workflows/github_build_release.yml
index 28f350e..b26cea6 100644
--- a/.github/workflows/github_build_release.yml
+++ b/.github/workflows/github_build_release.yml
@@ -1,45 +1,45 @@
on:
- push:
- tags:
- - '*.*.*'
+ push:
+ tags:
+ - "*.*.*"
name: Create Github Release
permissions:
- contents: write
+ contents: write
jobs:
- create-release:
- runs-on: ubuntu-latest
- env:
- COMPOSER_ALLOW_SUPERUSER: 1
- APP_ENV: prod
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Composer install
- run: |
- docker network create frontend
- docker compose run --rm --user=root --env APP_ENV=prod phpfpm composer install --no-dev -o --classmap-authoritative
- docker compose run --rm --user=root --env APP_ENV=prod phpfpm composer clear-cache
- docker compose run --rm node yarn install
- docker compose run --rm node yarn build
-
- - name: Make assets dir
- run: |
- mkdir -p ../assets
-
- - name: Create archive
- run: tar --exclude='.git' --exclude='node_modules' -zcf ../assets/${{ github.event.repository.name }}-${{ github.ref_name }}.tar.gz ./
-
- - name: Create checksum
- run: |
- cd ../assets
- sha256sum ${{ github.event.repository.name }}-${{ github.ref_name }}.tar.gz > ../assets/checksum.txt
-
- - name: Create a release in GitHub and uploads assets
- run: gh release create ${{ github.ref_name }} --verify-tag --generate-notes ../assets/*.*
+ create-release:
+ runs-on: ubuntu-latest
env:
- GITHUB_TOKEN: ${{ github.TOKEN }}
- shell: bash
+ COMPOSER_ALLOW_SUPERUSER: 1
+ APP_ENV: prod
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Composer install
+ run: |
+ docker network create frontend
+ docker compose run --rm --user=root --env APP_ENV=prod phpfpm composer install --no-dev -o --classmap-authoritative
+ docker compose run --rm --user=root --env APP_ENV=prod phpfpm composer clear-cache
+ docker compose run --rm node yarn install
+ docker compose run --rm node yarn build
+
+ - name: Make assets dir
+ run: |
+ mkdir -p ../assets
+
+ - name: Create archive
+ run: tar --exclude='.git' --exclude='node_modules' -zcf ../assets/${{ github.event.repository.name }}-${{ github.ref_name }}.tar.gz ./
+
+ - name: Create checksum
+ run: |
+ cd ../assets
+ sha256sum ${{ github.event.repository.name }}-${{ github.ref_name }}.tar.gz > ../assets/checksum.txt
+
+ - name: Create a release in GitHub and uploads assets
+ run: gh release create ${{ github.ref_name }} --verify-tag --generate-notes ../assets/*.*
+ env:
+ GITHUB_TOKEN: ${{ github.TOKEN }}
+ shell: bash
diff --git a/.github/workflows/javascript.yaml b/.github/workflows/javascript.yaml
new file mode 100644
index 0000000..15f14b6
--- /dev/null
+++ b/.github/workflows/javascript.yaml
@@ -0,0 +1,35 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/symfony/javascript.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### Symfony JavaScript (and TypeScript)
+###
+### Validates JavaScript files.
+###
+### #### Assumptions
+###
+### 1. A docker compose service named `prettier` for running
+### [Prettier](https://prettier.io/) exists.
+
+name: JavaScript
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ javascript-lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm prettier 'assets/**/*.js' --check
diff --git a/.github/workflows/markdown.yaml b/.github/workflows/markdown.yaml
new file mode 100644
index 0000000..cf4c011
--- /dev/null
+++ b/.github/workflows/markdown.yaml
@@ -0,0 +1,42 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/markdown.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### Markdown
+###
+### Lints Markdown files (`**/*.md`) in the project.
+###
+### [markdownlint-cli configuration
+### files](https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#configuration),
+### `.markdownlint.jsonc` and `.markdownlintignore`, control what is actually
+### linted and how.
+###
+### #### Assumptions
+###
+### 1. A docker compose service named `markdownlint` for running `markdownlint`
+### (from
+### [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli))
+### exists.
+
+name: Markdown
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ markdown-lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm markdownlint markdownlint '**/*.md'
diff --git a/.github/workflows/php.yaml b/.github/workflows/php.yaml
new file mode 100644
index 0000000..d8942c7
--- /dev/null
+++ b/.github/workflows/php.yaml
@@ -0,0 +1,60 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/symfony/php.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### Symfony PHP
+###
+### Checks that PHP code adheres to the [Symfony coding
+### standards](https://symfony.com/doc/current/contributing/code/standards.html).
+###
+### #### Assumptions
+###
+### 1. A docker compose service named `phpfpm` can be run and `composer` can be
+### run inside the `phpfpm` service. 2.
+### [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer)
+### is a dev requirement in `composer.json`:
+###
+### ``` shell
+### docker compose run --rm phpfpm composer require --dev friendsofphp/php-cs-fixer
+### ```
+###
+### Clean up and check code by running
+###
+### ``` shell
+### docker compose run --rm phpfpm vendor/bin/php-cs-fixer fix
+### docker compose run --rm phpfpm vendor/bin/php-cs-fixer fix --dry-run --diff
+### ```
+###
+### > [!NOTE] The template adds `.php-cs-fixer.dist.php` as [a configuration
+### > file for PHP CS
+### > Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/config.rst)
+### > and this makes it possible to override the actual configuration used in a
+### > project by adding a more important configuration file, `.php-cs-fixer.php`.
+
+name: Symfony PHP
+
+env:
+ COMPOSE_USER: root
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ coding-standards:
+ name: PHP - Check Coding Standards
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm phpfpm composer install
+ # https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/usage.rst#the-check-command
+ docker compose run --rm phpfpm vendor/bin/php-cs-fixer fix --dry-run --diff
diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml
index eca4339..5f6e255 100644
--- a/.github/workflows/pr.yaml
+++ b/.github/workflows/pr.yaml
@@ -1,286 +1,95 @@
-on: pull_request
-name: Review
-jobs:
- test-composer-install:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- php: ["8.4"]
- name: Validate composer (PHP ${{ matrix.php}})
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php}}
- extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
- coverage: none
-
- - name: Get composer cache directory
- id: composer-cache
- run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
-
- - name: Cache dependencies
- uses: actions/cache@v3
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer-
-
- - name: Validate composer files
- run: composer validate composer.json --strict
-
- - name: '[prod] Composer install with exported .env variables'
- run: |
- set -a && source .env && set +a
- APP_ENV=prod composer install --no-dev -o
-
- - name: Reset composer install
- run: rm -rf ./vendor
-
- - name: '[dev] Composer install with exported .env variables'
- run: |
- set -a && source .env && set +a
- APP_ENV=dev composer install
-
- - name: Normalize composer files
- run: composer normalize --dry-run
-
- validate-doctrine-schema:
- runs-on: ubuntu-latest
- env:
- DATABASE_URL: mysql://db:db@127.0.0.1:3306/db?serverVersion=10.11.0-mariadb
- strategy:
- fail-fast: false
- matrix:
- php: ["8.4"]
- name: Validate Doctrine Schema (PHP ${{ matrix.php}})
- services:
- mariadb:
- image: mariadb:10.11
- env:
- MYSQL_USER: db
- MYSQL_PASSWORD: db
- MYSQL_DATABASE: db
- MYSQL_ROOT_PASSWORD: db
- ports:
- - 3306:3306
- options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php}}
- extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
- coverage: none
-
- - name: Get composer cache directory
- id: composer-cache
- run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
-
- - name: Cache dependencies
- uses: actions/cache@v3
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer
-
- - name: 'Composer install with exported .env variables'
- run: |
- set -a && source .env && set +a
- APP_ENV=prod composer install --no-dev -o
-
- - name: Run Doctrine Migrations
- run: APP_ENV=prod php bin/console doctrine:migrations:migrate --no-interaction
-
- - name: Setup messenger "failed" doctrine transport to ensure db schema is updated
- run: APP_ENV=prod php bin/console messenger:setup-transports failed
-
- - name: Validate Doctrine schema
- run: APP_ENV=prod php bin/console doctrine:schema:validate
-
- php-cs-fixer:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- php: ["8.4"]
- name: PHP Coding Standards Fixer (PHP ${{ matrix.php }})
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php}}
- extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
- coverage: none
-
- - name: Get composer cache directory
- id: composer-cache
- run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
-
- - name: Cache dependencies
- uses: actions/cache@v3
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer
+name: PR Review
- - name: Install Dependencies
- run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
+env:
+ COMPOSE_USER: root
- - name: php-cs-fixer
- run: composer coding-standards-check
-
- phpunit:
- runs-on: ubuntu-latest
- services:
- mariadb:
- image: mariadb:10.5
- ports:
- - 3306
- env:
- MYSQL_USER: db
- MYSQL_PASSWORD: db
- MYSQL_DATABASE: db_test
- MYSQL_ROOT_PASSWORD: password
- options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
- strategy:
- fail-fast: false
- matrix:
- php: ["8.4"]
- name: PHP Unit tests (PHP ${{ matrix.php }})
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php}}
- extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
- coverage: none
-
- - name: Get composer cache directory
- id: composer-cache
- run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
-
- - name: Cache dependencies
- uses: actions/cache@v3
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer
-
- - name: Install Dependencies
- run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
-
- - name: PHP Unit
- env:
- PORT: ${{ job.services.mariadb.ports[3306] }}
- run: DATABASE_URL="mysql://db:db@127.0.0.1:$PORT/db?serverVersion=mariadb-10.5.13" composer run tests
-
- apispec:
- runs-on: ubuntu-latest
- name: API Specification validation
- strategy:
- fail-fast: false
- matrix:
- php: ["8.4"]
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 2
-
- - name: Setup PHP, with composer and extensions
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php}}
- extensions: apcu, ctype, iconv, imagick, json, redis, soap, xmlreader, zip
- coverage: none
-
- - name: Get composer cache directory
- id: composer-cache
- run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
-
- - name: Cache dependencies
- uses: actions/cache@v3
- with:
- path: ${{ steps.composer-cache.outputs.dir }}
- key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: ${{ runner.os }}-composer
-
- - name: Install Dependencies
- run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
-
- - name: Export specifications (yaml)
- run: bin/console api:openapi:export --yaml --output=public/api-spec-v1.yaml --no-interaction
-
- - name: Check for changes in specifications (yaml)
- run: git diff --diff-filter=ACMRT --exit-code public/api-spec-v1.yaml
-
- fixtures:
- runs-on: ubuntu-latest
- name: Load fixtures
- strategy:
- fail-fast: false
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 2
-
- - name: Install site
- run: |
- docker network create frontend
- docker compose pull
- docker compose up --detach
- docker compose exec --user=root phpfpm composer install
- docker compose exec phpfpm bin/console doctrine:migrations:migrate --no-interaction
-
- - name: Load fixtures
- run: |
- docker compose exec phpfpm composer fixtures
-
- build-assets:
- runs-on: ubuntu-latest
- name: Build assets
- strategy:
- fail-fast: false
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- fetch-depth: 2
-
- - name: Build assets
- run: |
- docker network create frontend
- docker compose run --rm node yarn install
- docker compose run --rm node yarn build
-
- changelog:
- runs-on: ubuntu-latest
- name: Changelog should be updated
- strategy:
- fail-fast: false
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 2
-
- - name: Git fetch
- run: git fetch
+on: pull_request
- - name: Check that changelog has been updated.
- run: git diff --exit-code origin/develop -- CHANGELOG.md && exit 1 || exit 0
+jobs:
+ test-suite:
+ name: Test suite
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Install Task
+ uses: go-task/setup-task@v1
+
+ - name: Setup docker network
+ run: |
+ docker network create frontend
+
+ - name: Install Site
+ run: |
+ task site:install
+
+ - name: Test suite
+ run: |
+ task test:setup
+ task test
+
+ - name: Upload coverage to Codecov test
+ uses: codecov/codecov-action@v5
+ with:
+ files: ./coverage/unit.xml
+ flags: unittests
+ env:
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+
+ phpstan:
+ name: PHPStan
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Install Task
+ uses: go-task/setup-task@v1
+
+ - name: Start docker compose setup
+ run: |
+ docker network create frontend
+ task compose -- up --detach
+
+ - name: Install Dependencies
+ run: |
+ task composer -- install
+
+ - name: Run PHPStan
+ run: |
+ task code-analysis:phpstan
+
+ fixtures:
+ name: Load fixtures
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Install Task
+ uses: go-task/setup-task@v1
+
+ - name: Setup docker network
+ run: |
+ docker network create frontend
+
+ - name: Install Site
+ run: |
+ task site:install
+
+ - name: Load fixtures
+ run: |
+ task fixtures:load --yes
+
+ build-assets:
+ name: Build assets
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 2
+
+ - name: Build assets
+ run: |
+ docker network create frontend
+ docker compose run --rm node yarn install
+ docker compose run --rm node yarn build
diff --git a/.github/workflows/styles.yaml b/.github/workflows/styles.yaml
new file mode 100644
index 0000000..985e56f
--- /dev/null
+++ b/.github/workflows/styles.yaml
@@ -0,0 +1,35 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/symfony/styles.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### Symfony Styles (CSS and SCSS)
+###
+### Validates styles files.
+###
+### #### Assumptions
+###
+### 1. A docker compose service named `prettier` for running
+### [Prettier](https://prettier.io/) exists.
+
+name: Styles
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ styles-lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm prettier 'assets/**/*.{css,scss}' --check
diff --git a/.github/workflows/twig.yaml b/.github/workflows/twig.yaml
new file mode 100644
index 0000000..680a42d
--- /dev/null
+++ b/.github/workflows/twig.yaml
@@ -0,0 +1,49 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/twig.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### Twig
+###
+### Validates Twig files
+###
+### #### Assumptions
+###
+### 1. A docker compose service named `phpfpm` can be run and `composer` can be
+### run inside the `phpfpm` service.
+### 2. [vincentlanglet/twig-cs-fixer](https://github.com/VincentLanglet/Twig-CS-Fixer)
+### is a dev requirement in `composer.json`:
+###
+### ``` shell
+### docker compose run --rm phpfpm composer require --dev vincentlanglet/twig-cs-fixer
+### ```
+###
+### 3. A [Configuration
+### file](https://github.com/VincentLanglet/Twig-CS-Fixer/blob/main/docs/configuration.md#configuration-file)
+### in the root of the project defines which files to check and rules to use.
+
+name: Twig
+
+env:
+ COMPOSE_USER: root
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ twig-lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm phpfpm composer install
+ docker compose run --rm phpfpm vendor/bin/twig-cs-fixer lint
diff --git a/.github/workflows/yaml.yaml b/.github/workflows/yaml.yaml
new file mode 100644
index 0000000..3115e31
--- /dev/null
+++ b/.github/workflows/yaml.yaml
@@ -0,0 +1,41 @@
+# Do not edit this file! Make a pull request on changing
+# github/workflows/yaml.yaml in
+# https://github.com/itk-dev/devops_itkdev-docker if need be.
+
+### ### YAML
+###
+### Validates YAML files.
+###
+### #### Assumptions
+###
+### 1. A docker compose service named `prettier` for running
+### [Prettier](https://prettier.io/) exists.
+###
+### #### Symfony YAML
+###
+### Symfony's YAML config files use 4 spaces for indentation and single quotes.
+### Therefore, we use a [Prettier configuration
+### file](https://prettier.io/docs/configuration), `.prettierrc.yaml`, to make
+### Prettier format YAML files in the `config/` folder like Symfony expects.
+
+name: YAML
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - develop
+
+jobs:
+ yaml-lint:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v5
+
+ - name: Create docker network
+ run: |
+ docker network create frontend
+
+ - run: |
+ docker compose run --rm prettier '**/*.{yml,yaml}' --check
diff --git a/.gitignore b/.gitignore
index 2bf29f0..4e7ed3e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,13 @@ yarn-error.log
phpstan.neon
###< phpstan/phpstan ###
.phpunit.cache
+
+###> vincentlanglet/twig-cs-fixer ###
+/.twig-cs-fixer.cache
+###< vincentlanglet/twig-cs-fixer ###
+
+###> symfony/asset-mapper ###
+/public/assets/
+/assets/vendor/
+###< symfony/asset-mapper ###
+coverage
diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc
new file mode 100644
index 0000000..0253096
--- /dev/null
+++ b/.markdownlint.jsonc
@@ -0,0 +1,22 @@
+// This file is copied from config/markdown/.markdownlint.jsonc in https://github.com/itk-dev/devops_itkdev-docker.
+// Feel free to edit the file, but consider making a pull request if you find a general issue with the file.
+
+// markdownlint-cli configuration file (cf. https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#configuration)
+{
+ "default": true,
+ // https://github.com/DavidAnson/markdownlint/blob/main/doc/md013.md
+ "line-length": {
+ "line_length": 120,
+ "code_blocks": false,
+ "tables": false
+ },
+ // https://github.com/DavidAnson/markdownlint/blob/main/doc/md024.md
+ "no-duplicate-heading": {
+ "siblings_only": true
+ },
+ // https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-collapsed-sections#creating-a-collapsed-section
+ // https://github.com/DavidAnson/markdownlint/blob/main/doc/md033.md
+ "no-inline-html": {
+ "allowed_elements": ["details", "summary"]
+ }
+}
diff --git a/.markdownlintignore b/.markdownlintignore
new file mode 100644
index 0000000..d143ace
--- /dev/null
+++ b/.markdownlintignore
@@ -0,0 +1,12 @@
+# This file is copied from config/markdown/.markdownlintignore in https://github.com/itk-dev/devops_itkdev-docker.
+# Feel free to edit the file, but consider making a pull request if you find a general issue with the file.
+
+# https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#ignoring-files
+vendor/
+node_modules/
+LICENSE.md
+# Drupal
+web/*.md
+web/core/
+web/libraries/
+web/*/contrib/
diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php
index bb6c6e9..c23b927 100644
--- a/.php-cs-fixer.dist.php
+++ b/.php-cs-fixer.dist.php
@@ -1,19 +1,20 @@
in(__DIR__)
- ->exclude('var')
-;
+// https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/config.rst
-return (new PhpCsFixer\Config())
- ->setRiskyAllowed(true)
- ->setRules([
- '@Symfony' => true,
- '@Symfony:risky' => false,
- 'phpdoc_align' => false,
- 'no_superfluous_phpdoc_tags' => false,
- 'array_syntax' => ['syntax' => 'short'],
- 'declare_strict_types' => true
- ])
- ->setFinder($finder)
-;
+$finder = new PhpCsFixer\Finder();
+// Check all files …
+$finder->in(__DIR__);
+// … that are not ignored by VCS
+$finder->ignoreVCSIgnored(true);
+
+$config = new PhpCsFixer\Config();
+$config->setFinder($finder);
+
+$config->setRules([
+ '@Symfony' => true,
+]);
+
+return $config;
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..bb35050
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,2 @@
+# API spec
+public/api-spec-v1.yaml
diff --git a/.prettierrc.yaml b/.prettierrc.yaml
new file mode 100644
index 0000000..5b271ea
--- /dev/null
+++ b/.prettierrc.yaml
@@ -0,0 +1,11 @@
+# This file is copied from config/symfony/yaml/.prettierrc.yaml in https://github.com/itk-dev/devops_itkdev-docker.
+# Feel free to edit the file, but consider making a pull request if you find a general issue with the file.
+
+# https://prettier.io/docs/configuration
+overrides:
+ # Symfony config
+ - files:
+ - "config/**/*.{yml,yaml}"
+ options:
+ tabWidth: 4
+ singleQuote: true
diff --git a/.twig-cs-fixer.dist.php b/.twig-cs-fixer.dist.php
new file mode 100644
index 0000000..8242555
--- /dev/null
+++ b/.twig-cs-fixer.dist.php
@@ -0,0 +1,16 @@
+in(__DIR__);
+// … that are not ignored by VCS
+$finder->ignoreVCSIgnored(true);
+
+$config = new TwigCsFixer\Config\Config();
+$config->setFinder($finder);
+
+return $config;
diff --git a/.woodpecker/prod.yml b/.woodpecker/prod.yml
index 9bf9692..e3c1cc2 100644
--- a/.woodpecker/prod.yml
+++ b/.woodpecker/prod.yml
@@ -1,45 +1,45 @@
when:
- - event: release
+ - event: release
skip_clone: true
labels:
- zone: CLOUD
+ zone: CLOUD
steps:
- - name: Ansible playbook
- image: itkdev/ansible-plugin:1
- pull: true
- settings:
- id:
- from_secret: id
- secret:
- from_secret: secret
- host:
- from_secret: prod_host
- path:
- from_secret: prod_path
- user:
- from_secret: user
- keep: 4
- playbook: 'release'
- pre_up:
- - itkdev-docker-compose-server run phpfpm bin/console doctrine:migrations:migrate --no-interaction
- - itkdev-docker-compose-server run phpfpm bin/console messenger:setup-transports
+ - name: Ansible playbook
+ image: itkdev/ansible-plugin:1
+ pull: true
+ settings:
+ id:
+ from_secret: id
+ secret:
+ from_secret: secret
+ host:
+ from_secret: prod_host
+ path:
+ from_secret: prod_path
+ user:
+ from_secret: user
+ keep: 4
+ playbook: "release"
+ pre_up:
+ - itkdev-docker-compose-server run phpfpm bin/console doctrine:migrations:migrate --no-interaction
+ - itkdev-docker-compose-server run phpfpm bin/console messenger:setup-transports
- - name: Run post deploy
- image: itkdev/ansible-plugin:1
- pull: true
- settings:
- id:
- from_secret: id
- secret:
- from_secret: secret
- host:
- from_secret: prod_host
- path:
- from_secret: prod_path
- user:
- from_secret: user
- actions:
- - itkdev-docker-compose-server exec phpfpm bin/console cache:clear
+ - name: Run post deploy
+ image: itkdev/ansible-plugin:1
+ pull: true
+ settings:
+ id:
+ from_secret: id
+ secret:
+ from_secret: secret
+ host:
+ from_secret: prod_host
+ path:
+ from_secret: prod_path
+ user:
+ from_secret: user
+ actions:
+ - itkdev-docker-compose-server exec phpfpm bin/console cache:clear
diff --git a/.woodpecker/stg.yml b/.woodpecker/stg.yml
index 64ded24..0a5749a 100644
--- a/.woodpecker/stg.yml
+++ b/.woodpecker/stg.yml
@@ -1,37 +1,37 @@
when:
- - branch: release/*
- event: push
+ - branch: release/*
+ event: push
skip_clone: true
labels:
- zone: DMZ
+ zone: DMZ
steps:
- - name: Run stg site update
- image: itkdev/ansible-plugin:1
- when:
- branch: release/*
- event: push
- pull: true
- settings:
- id:
- from_secret: id
- secret:
- from_secret: secret
- host:
- from_secret: stg_host
- path:
- from_secret: stg_path
- user:
- from_secret: user
- actions:
- - git reset --hard
- - git fetch origin ${CI_COMMIT_BRANCH}
- - git checkout ${CI_COMMIT_BRANCH}
- - git pull
- - itkdev-docker-compose-server up -d --force-recreate --remove-orphans
- - itkdev-docker-compose-server exec phpfpm composer install -no-dev -o --classmap-authoritative
- - itkdev-docker-compose-server exec phpfpm bin/console doctrine:migrations:migrate --no-interaction
- - itkdev-docker-compose-server exec phpfpm bin/console messenger:setup-transports
- - itkdev-docker-compose-server exec phpfpm bin/console cache:clear
+ - name: Run stg site update
+ image: itkdev/ansible-plugin:1
+ when:
+ branch: release/*
+ event: push
+ pull: true
+ settings:
+ id:
+ from_secret: id
+ secret:
+ from_secret: secret
+ host:
+ from_secret: stg_host
+ path:
+ from_secret: stg_path
+ user:
+ from_secret: user
+ actions:
+ - git reset --hard
+ - git fetch origin ${CI_COMMIT_BRANCH}
+ - git checkout ${CI_COMMIT_BRANCH}
+ - git pull
+ - itkdev-docker-compose-server up -d --force-recreate --remove-orphans
+ - itkdev-docker-compose-server exec phpfpm composer install -no-dev -o --classmap-authoritative
+ - itkdev-docker-compose-server exec phpfpm bin/console doctrine:migrations:migrate --no-interaction
+ - itkdev-docker-compose-server exec phpfpm bin/console messenger:setup-transports
+ - itkdev-docker-compose-server exec phpfpm bin/console cache:clear
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf0a0af..b1bf9dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+- [#60](https://github.com/itk-dev/devops_itksites/pull/60) 5564: Dependency updates
+ - Update dependencies
+ - Update phpunit from 11 to 12
+ - Update ITK docker template
+ - Update github actions workflows
+
- [#58](https://github.com/itk-dev/devops_itksites/pull/58)
5002: Added export to everything
@@ -61,7 +67,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Upgrade to: Symfony 7.2, Doctrine ORM 3.x / DBAL 4.x, Api-platform 4.0, PhpUnit 11 with dependencies
- Switch to PHPStan
- Added cleanup for detection results
-- Refactor rootDir normalization to ensure values are always normalized, fix type errors,
+- Refactor rootDir normalization to ensure values are always normalized, fix type errors,
- Fix various values not being set
## [1.7.1] - 2024-11-08
@@ -133,6 +139,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [1.0.0] - 2022-09-15
[Unreleased]: https://github.com/itk-dev/devops_itksites/compare/1.6.0...HEAD
+[1.8.10]: https://github.com/itk-dev/devops_itksites/compare/1.8.9...1.8.10
+[1.8.9]: https://github.com/itk-dev/devops_itksites/compare/1.8.8...1.8.9
+[1.8.8]: https://github.com/itk-dev/devops_itksites/compare/1.8.7...1.8.8
+[1.8.7]: https://github.com/itk-dev/devops_itksites/compare/1.8.6...1.8.7
+[1.8.6]: https://github.com/itk-dev/devops_itksites/compare/1.8.5...1.8.6
+[1.8.5]: https://github.com/itk-dev/devops_itksites/compare/1.8.4...1.8.5
+[1.8.4]: https://github.com/itk-dev/devops_itksites/compare/1.8.3...1.8.4
+[1.8.3]: https://github.com/itk-dev/devops_itksites/compare/1.8.2...1.8.3
+[1.8.2]: https://github.com/itk-dev/devops_itksites/compare/1.8.1...1.8.2
+[1.8.1]: https://github.com/itk-dev/devops_itksites/compare/1.8.0...1.8.1
+[1.8.0]: https://github.com/itk-dev/devops_itksites/compare/1.7.1...1.8.0
+[1.7.1]: https://github.com/itk-dev/devops_itksites/compare/1.7.0...1.7.1
+[1.7.0]: https://github.com/itk-dev/devops_itksites/compare/1.6.1...1.7.0
+[1.6.1]: https://github.com/itk-dev/devops_itksites/compare/1.6.0...1.6.1
[1.6.0]: https://github.com/itk-dev/devops_itksites/compare/1.5.0...1.6.0
[1.5.0]: https://github.com/itk-dev/devops_itksites/compare/1.4.1...1.5.0
[1.4.1]: https://github.com/itk-dev/devops_itksites/compare/1.4.0...1.4.1
diff --git a/README.md b/README.md
index a1fc813..72b2dff 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,6 @@
[](https://github.com/itk-dev/devops_itksites/commits/develop/)
[](https://github.com/itk-dev/devops_itksites/blob/develop/LICENSE)
-
This is our internal server and site registration tool. It works in tandem with our
[ITK sites server harvester](https://github.com/itk-dev/devops_itkServerHarvest).
The harvester is installed by default on all servers, and runs at intervals and collects
@@ -15,6 +14,7 @@ information about sites and installations running on the server. These are sent
`DetectionResults` to ITKsites where they are analysed and processed.
This allows us to monitor
+
* What is installed and running
* Which sites/domains we are hosting
* What docker images we are running
@@ -23,6 +23,7 @@ This allows us to monitor
* What git repositories we are hosting
Additionally we can register and document
+
* All OpenID Connect setups
* All Services Certificates
@@ -30,6 +31,7 @@ Servers, OpenID Connect setups, Services Certificates must be created and mainta
All other information is kept up to date by analysing the DetectionResults.
## Architecture
+
This is a Symfony 6 project build with api-platform 3.x and EasyAdmin.
Api-platform provides a simple REST api for POST'ing the DetectionResults.
@@ -54,6 +56,7 @@ docker compose exec phpfpm bin/console doctrine:migrations:migrate --no-interact
Then create a `.env.local` file to set secrets for your local setup.
### OpenID Connect
+
All users access is controlled by OpenID Connect. For local development you must
add the following to your `.env.local` file:
@@ -94,11 +97,13 @@ docker compose exec phpfpm bin/console itk-dev:openid-connect:login admin@exampl
All processing of Detctionresults is done in a series of message handlers. To
run these do either:
+
```shell
docker compose exec phpfpm composer queues
```
or
+
```shell
docker compose exec phpfpm bin/console messenger:consume async --failure-limit=1 -vvv
```
diff --git a/Taskfile.yml b/Taskfile.yml
new file mode 100644
index 0000000..cd73982
--- /dev/null
+++ b/Taskfile.yml
@@ -0,0 +1,220 @@
+# https://taskfile.dev
+
+version: "3"
+
+# https://taskfile.dev/usage/#env-files
+dotenv: [".env.local", ".env"]
+
+vars:
+ # https://taskfile.dev/reference/templating/
+ DOCKER_COMPOSE: '{{.TASK_DOCKER_COMPOSE | default "docker compose"}}'
+
+tasks:
+ site:update:
+ desc: Update/install site
+ aliases: [site:install]
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: pull
+ - task: compose
+ vars:
+ COMPOSE_ARGS: up --detach
+ - task: composer
+ vars:
+ COMPOSER_ARGS: install
+ - task: console
+ vars:
+ CONSOLE_ARGS: doctrine:migrations:migrate --no-interaction
+ - task: console
+ vars:
+ CONSOLE_ARGS: messenger:setup-transports
+
+ fixtures:load:
+ desc: Load all fixtures
+ prompt: Really load all fixtures?
+ cmds:
+ - task: console
+ vars:
+ CONSOLE_ARGS: hautelook:fixtures:load --no-interaction
+ silent: true
+
+ composer:
+ desc: "Run `composer` command. Example: task composer -- normalize"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec phpfpm composer {{.COMPOSER_ARGS}}
+
+ compose:
+ desc: "Run `docker compose` command. Example: task compose -- ps"
+ cmds:
+ # Run docker compose with both arguments passed via var plus any cli args.
+ - "{{.DOCKER_COMPOSE}} {{.COMPOSE_ARGS}} {{.CLI_ARGS}}"
+
+ console:
+ desc: "Run Symfony console command. Example: task console -- cache:clear"
+ cmds:
+ # Run docker compose with both arguments passed via var plus any cli args.
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec phpfpm bin/console {{.CONSOLE_ARGS}}
+
+ coding-standards:apply:
+ desc: "Apply coding standards"
+ cmds:
+ - task: coding-standards:markdown:apply
+ - task: coding-standards:php:apply
+ - task: coding-standards:twig:apply
+ - task: coding-standards:yaml:apply
+ - task: coding-standards:css:apply
+ silent: true
+
+ coding-standards:check:
+ desc: "Apply coding standards"
+ cmds:
+ - task: coding-standards:markdown:check
+ - task: coding-standards:php:check
+ - task: coding-standards:twig:check
+ - task: coding-standards:yaml:check
+ - task: coding-standards:css:check
+ silent: true
+
+ coding-standards:markdown:apply:
+ desc: "Apply coding standards for Markdown"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: run --rm markdownlint markdownlint '**/*.md' --fix
+
+ coding-standards:markdown:check:
+ desc: "Apply and check coding standards for Markdown"
+ cmds:
+ - task: coding-standards:markdown:apply
+ - task: compose
+ vars:
+ COMPOSE_ARGS: run --rm markdownlint markdownlint '**/*.md'
+
+ coding-standards:php:apply:
+ desc: "Apply coding standards for PHP"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec phpfpm vendor/bin/php-cs-fixer fix
+ silent: true
+
+ coding-standards:php:check:
+ desc: "Apply and check coding standards for PHP"
+ cmds:
+ - task: coding-standards:php:apply
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec phpfpm vendor/bin/php-cs-fixer check
+ silent: true
+
+ coding-standards:twig:apply:
+ desc: "Apply coding standards for Twig"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec phpfpm vendor/bin/twig-cs-fixer fix
+ silent: true
+
+ coding-standards:twig:check:
+ desc: "Apply and check coding standards for Twig"
+ cmds:
+ - task: coding-standards:twig:apply
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec phpfpm vendor/bin/twig-cs-fixer check
+ silent: true
+
+ coding-standards:yaml:apply:
+ desc: "Apply coding standards for YAML"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: run --rm prettier '**/*.{yml,yaml}' --write
+ silent: true
+
+ coding-standards:yaml:check:
+ desc: "Apply and check coding standards for YAML"
+ cmds:
+ - task: coding-standards:yaml:apply
+ - task: compose
+ vars:
+ COMPOSE_ARGS: run --rm prettier '**/*.{yml,yaml}' --check
+
+ coding-standards:css:apply:
+ desc: "Apply coding standards for YAML"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: run --rm prettier 'assets/**/*.{css,scss}' --write
+ silent: true
+
+ coding-standards:css:check:
+ desc: "Apply and check coding standards for YAML"
+ cmds:
+ - task: coding-standards:yaml:apply
+ - task: compose
+ vars:
+ COMPOSE_ARGS: run --rm prettier 'assets/**/*.{css,scss}' --check
+ silent: true
+
+ code-analysis:
+ desc: "Run code analysis"
+ cmds:
+ - task: code-analysis:phpstan
+ silent: true
+
+ code-analysis:phpstan:
+ desc: "Run PHPStan"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec phpfpm vendor/bin/phpstan
+ silent: true
+
+ messenger:consume:
+ desc: "Run queue consumer"
+ cmds:
+ - task: console
+ vars:
+ CONSOLE_ARGS: bin/console messenger:consume async --failure-limit=1 -vvv
+
+ test:setup:
+ desc: "Setup test environment"
+ cmds:
+ - task: console
+ vars:
+ CONSOLE_ARGS: --env=test doctrine:database:create --if-not-exists --no-interaction
+ - task: console
+ vars:
+ CONSOLE_ARGS: --env=test doctrine:database:create --no-interaction --if-not-exists --quiet
+ - task: console
+ vars:
+ CONSOLE_ARGS: --env=test doctrine:migrations:migrate --no-interaction --quiet
+
+ test:
+ desc: "Run tests"
+ cmds:
+ - task: compose
+ vars:
+ COMPOSE_ARGS: exec --env XDEBUG_MODE=coverage phpfpm vendor/bin/phpunit --coverage-clover=coverage/unit.xml
+
+ api:spec:export:
+ desc: "Export API spec"
+ cmds:
+ - task: console
+ vars:
+ CONSOLE_ARGS: api:openapi:export --yaml --output=public/api-spec-v1.yaml --no-interaction
+ - task: console
+ vars:
+ CONSOLE_ARGS: api:openapi:export --json --output=public/api-spec-v1.json --no-interaction
+ silent: true
+
+ default:
+ cmds:
+ - task --list
+ silent: true
diff --git a/assets/app.js b/assets/app.js
new file mode 100644
index 0000000..e2824a5
--- /dev/null
+++ b/assets/app.js
@@ -0,0 +1,9 @@
+/*
+ * Welcome to your app's main JavaScript file!
+ *
+ * This file will be included onto the page via the importmap() Twig function,
+ * which should already be in your base.html.twig.
+ */
+import "./styles/app.css";
+
+console.log("This log comes from assets/app.js - welcome to AssetMapper! 🎉");
diff --git a/assets/styles/app.css b/assets/styles/app.css
new file mode 100644
index 0000000..8218dc7
--- /dev/null
+++ b/assets/styles/app.css
@@ -0,0 +1,28 @@
+:root {
+ --body-max-width: 100%;
+ --sidebar-bg: #fff;
+ /* make the base font size smaller */
+ --button-primary-bg: rgb(0, 123, 166);
+ --pagination-active-bg: rgb(0, 123, 166);
+ --link-color: rgb(0, 123, 166);
+ --sidebar-menu-active-item-color: rgb(0, 123, 166);
+ --badge-boolean-true-bg: rgb(0, 123, 166);
+ --badge-boolean-false-bg: rgb(228, 73, 48);
+ --badge-boolean-false-color: var(--white);
+ --sidebar-menu-color: rgb(66, 66, 66);
+ --text-color-dark: rgb(66, 66, 66);
+ --bs-danger-rgb: 228, 73, 48;
+}
+
+/* Grouped dropdown group styling for index pages */
+.dropdown-menu {
+ .btn-danger i,
+ .text-danger i {
+ color: var(--button-invisible-danger-color);
+ }
+
+ a.btn-danger:hover,
+ a.text-danger:hover {
+ background: var(--button-invisible-danger-hover-hover-bg);
+ }
+}
diff --git a/composer.json b/composer.json
index abe2133..57405df 100644
--- a/composer.json
+++ b/composer.json
@@ -4,63 +4,69 @@
"license": "MIT",
"type": "project",
"require": {
- "php": ">=8.3",
+ "php": ">=8.4",
"ext-ctype": "*",
"ext-iconv": "*",
- "api-platform/core": "^4.0",
- "composer/semver": "^3.4",
- "doctrine/dbal": "^4.0",
- "doctrine/doctrine-bundle": "^2.13",
- "doctrine/doctrine-migrations-bundle": "^3.4",
- "doctrine/orm": "^3.0",
- "easycorp/easyadmin-bundle": "^4.0",
- "itk-dev/openid-connect-bundle": "^4.0",
- "itk-dev/vault-bundle": "^0.1.0",
- "nelmio/cors-bundle": "^2.2",
- "ocramius/doctrine-batch-utils": "^2.8",
- "phpdocumentor/reflection-docblock": "^5.3",
- "phpstan/phpdoc-parser": "^2.0",
- "symfony/amqp-messenger": "^7.2",
- "symfony/asset": "^7.2",
- "symfony/browser-kit": "^7.2",
- "symfony/console": "^7.2",
- "symfony/doctrine-messenger": "^7.2",
- "symfony/dotenv": "^7.2",
- "symfony/expression-language": "^7.2",
- "symfony/flex": "^2",
- "symfony/framework-bundle": "^7.2",
- "symfony/http-client": "^7.2",
- "symfony/messenger": "^7.2",
- "symfony/monolog-bundle": "^3.0",
- "symfony/property-access": "^7.2",
- "symfony/property-info": "^7.2",
- "symfony/runtime": "^7.2",
- "symfony/security-bundle": "^7.2",
- "symfony/serializer": "^7.2",
- "symfony/twig-bundle": "^7.2",
- "symfony/uid": "^7.2",
- "symfony/validator": "^7.2",
- "symfony/webpack-encore-bundle": "^2.0",
- "symfony/yaml": "^7.2"
+ "ext-mbstring": "*",
+ "api-platform/core": "~4.1.25",
+ "composer/semver": "^3.4.4",
+ "doctrine/dbal": "^4.3.4",
+ "doctrine/doctrine-bundle": "^2.18",
+ "doctrine/doctrine-migrations-bundle": "^3.5",
+ "doctrine/orm": "^3.5.2",
+ "easycorp/easyadmin-bundle": "^4.26.3",
+ "itk-dev/openid-connect-bundle": "^4.0.1",
+ "itk-dev/vault-bundle": "^0.1.2",
+ "nelmio/cors-bundle": "^2.5",
+ "ocramius/doctrine-batch-utils": "^2.11",
+ "phpdocumentor/reflection-docblock": "^5.6.3",
+ "phpstan/phpdoc-parser": "^2.3",
+ "symfony/amqp-messenger": "^7.3.2",
+ "symfony/asset": "^7.3.0",
+ "symfony/asset-mapper": "^7.3.4",
+ "symfony/browser-kit": "^7.3.2",
+ "symfony/console": "^7.3.4",
+ "symfony/doctrine-messenger": "^7.3.4",
+ "symfony/dotenv": "^7.3.2",
+ "symfony/expression-language": "^7.3.2",
+ "symfony/flex": "^2.8.2",
+ "symfony/framework-bundle": "^7.3.4",
+ "symfony/http-client": "^7.3.4",
+ "symfony/messenger": "^7.3.3",
+ "symfony/monolog-bundle": "^3.10",
+ "symfony/object-mapper": "^7.3.0",
+ "symfony/property-access": "^7.3.3",
+ "symfony/property-info": "^7.3.4",
+ "symfony/runtime": "^7.3.4",
+ "symfony/security-bundle": "^7.3.4",
+ "symfony/serializer": "^7.3.4",
+ "symfony/twig-bundle": "^7.3.4",
+ "symfony/uid": "^7.3.1",
+ "symfony/validator": "^7.3.4",
+ "symfony/webpack-encore-bundle": "^2.3",
+ "symfony/yaml": "^7.3.3",
+ "twig/extra-bundle": "^2.12 || ^3.21",
+ "twig/twig": "^2.12 || ^3.21.1"
},
"require-dev": {
- "ergebnis/composer-normalize": "^2.23",
- "friendsofphp/php-cs-fixer": "^3.6",
- "hautelook/alice-bundle": "^2.14",
- "justinrainbow/json-schema": "^6.0",
- "phpstan/extension-installer": "^1.4",
- "phpstan/phpstan": "^2.1",
- "phpstan/phpstan-doctrine": "^2.0",
- "phpstan/phpstan-phpunit": "^2.0",
- "phpstan/phpstan-symfony": "^2.0",
- "phpunit/phpunit": "^11.3",
- "rector/rector": "^2.0",
- "symfony/css-selector": "^7.2",
- "symfony/debug-bundle": "^7.2",
- "symfony/maker-bundle": "^1.37",
- "symfony/stopwatch": "^7.2",
- "symfony/var-dumper": "^7.2",
- "symfony/web-profiler-bundle": "^7.2"
+ "ergebnis/composer-normalize": "^2.48.2",
+ "friendsofphp/php-cs-fixer": "^3.88.2",
+ "hautelook/alice-bundle": "^2.15.1",
+ "justinrainbow/json-schema": "^6.6",
+ "phpstan/extension-installer": "^1.4.3",
+ "phpstan/phpstan": "^2.1.31",
+ "phpstan/phpstan-doctrine": "^2.0.10",
+ "phpstan/phpstan-phpunit": "^2.0.7",
+ "phpstan/phpstan-symfony": "^2.0.8",
+ "phpunit/phpunit": "^12.4.1",
+ "rector/rector": "^2.2.3",
+ "symfony/css-selector": "^7.3",
+ "symfony/debug-bundle": "^7.3.4",
+ "symfony/maker-bundle": "^1.64",
+ "symfony/stopwatch": "^7.3",
+ "symfony/var-dumper": "^7.3.4",
+ "symfony/web-profiler-bundle": "^7.3.4",
+ "vincentlanglet/twig-cs-fixer": "^3.10"
},
"replace": {
"symfony/polyfill-ctype": "*",
@@ -98,7 +104,7 @@
},
"extra": {
"symfony": {
- "allow-contrib": false,
+ "allow-contrib": true,
"require": "7.3.*"
}
},
@@ -111,29 +117,8 @@
],
"auto-scripts": {
"cache:clear": "symfony-cmd",
- "assets:install %PUBLIC_DIR%": "symfony-cmd"
- },
- "coding-standards-apply": [
- "PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix"
- ],
- "coding-standards-check": [
- "PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix --dry-run"
- ],
- "fixtures-load": [
- "bin/console hautelook:fixtures:load --no-interaction"
- ],
- "queues": [
- "bin/console messenger:consume async --failure-limit=1 -vvv"
- ],
- "tests": [
- "bin/console --env=test doctrine:database:drop --if-exists --force --quiet",
- "bin/console --env=test doctrine:database:create --no-interaction --if-not-exists --quiet",
- "bin/console --env=test doctrine:migrations:migrate --no-interaction --quiet",
- "vendor/bin/phpunit --stop-on-failure"
- ],
- "update-api-spec": [
- "bin/console api:openapi:export --output=public/api-spec-v1.yaml --yaml --no-interaction",
- "bin/console api:openapi:export --output=public/api-spec-v1.json --no-interaction"
- ]
+ "assets:install %PUBLIC_DIR%": "symfony-cmd",
+ "importmap:install": "symfony-cmd"
+ }
}
}
diff --git a/composer.lock b/composer.lock
index cbd5d07..c700676 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "d347cd87a3a3926f9844ee4768154429",
+ "content-hash": "1e514f2fb03ce2e04966c86e6b5b2cc2",
"packages": [
{
"name": "api-platform/core",
- "version": "v4.1.17",
+ "version": "v4.1.25",
"source": {
"type": "git",
"url": "https://github.com/api-platform/core.git",
- "reference": "e1191ca86e548d7610251bba2d8498b440cfd631"
+ "reference": "5c25cd2876740cd25e24efdbbb349359d5c98fc1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/api-platform/core/zipball/e1191ca86e548d7610251bba2d8498b440cfd631",
- "reference": "e1191ca86e548d7610251bba2d8498b440cfd631",
+ "url": "https://api.github.com/repos/api-platform/core/zipball/5c25cd2876740cd25e24efdbbb349359d5c98fc1",
+ "reference": "5c25cd2876740cd25e24efdbbb349359d5c98fc1",
"shasum": ""
},
"require": {
@@ -33,6 +33,7 @@
"symfony/serializer": "^6.4 || ^7.0",
"symfony/translation-contracts": "^3.3",
"symfony/type-info": "^7.2",
+ "symfony/validator": "^6.4 || ^7.1",
"symfony/web-link": "^6.4 || ^7.1",
"willdurand/negotiation": "^3.1"
},
@@ -218,22 +219,22 @@
],
"support": {
"issues": "https://github.com/api-platform/core/issues",
- "source": "https://github.com/api-platform/core/tree/v4.1.17"
+ "source": "https://github.com/api-platform/core/tree/v4.1.25"
},
- "time": "2025-06-19T10:14:20+00:00"
+ "time": "2025-09-26T15:30:38+00:00"
},
{
"name": "composer/semver",
- "version": "3.4.3",
+ "version": "3.4.4",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95",
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95",
"shasum": ""
},
"require": {
@@ -285,7 +286,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.3"
+ "source": "https://github.com/composer/semver/tree/3.4.4"
},
"funding": [
{
@@ -295,13 +296,9 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-09-19T14:15:21+00:00"
+ "time": "2025-08-20T19:15:30+00:00"
},
{
"name": "doctrine/collections",
@@ -391,34 +388,34 @@
},
{
"name": "doctrine/dbal",
- "version": "4.2.4",
+ "version": "4.3.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec"
+ "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/b37d160498ea91a2382a2ebe825c4ea6254fc0ec",
- "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc",
+ "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc",
"shasum": ""
},
"require": {
- "doctrine/deprecations": "^0.5.3|^1",
- "php": "^8.1",
+ "doctrine/deprecations": "^1.1.5",
+ "php": "^8.2",
"psr/cache": "^1|^2|^3",
"psr/log": "^1|^2|^3"
},
"require-dev": {
- "doctrine/coding-standard": "13.0.0",
+ "doctrine/coding-standard": "14.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.2",
- "phpstan/phpstan": "2.1.17",
- "phpstan/phpstan-phpunit": "2.0.6",
+ "phpstan/phpstan": "2.1.30",
+ "phpstan/phpstan-phpunit": "2.0.7",
"phpstan/phpstan-strict-rules": "^2",
- "phpunit/phpunit": "10.5.46",
- "slevomat/coding-standard": "8.16.2",
- "squizlabs/php_codesniffer": "3.13.1",
+ "phpunit/phpunit": "11.5.23",
+ "slevomat/coding-standard": "8.24.0",
+ "squizlabs/php_codesniffer": "4.0.0",
"symfony/cache": "^6.3.8|^7.0",
"symfony/console": "^5.4|^6.3|^7.0"
},
@@ -477,7 +474,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/4.2.4"
+ "source": "https://github.com/doctrine/dbal/tree/4.3.4"
},
"funding": [
{
@@ -493,7 +490,7 @@
"type": "tidelift"
}
],
- "time": "2025-06-15T23:15:01+00:00"
+ "time": "2025-10-09T09:11:36+00:00"
},
{
"name": "doctrine/deprecations",
@@ -545,20 +542,21 @@
},
{
"name": "doctrine/doctrine-bundle",
- "version": "2.15.0",
+ "version": "2.18.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
- "reference": "d88294521a1bca943240adca65fa19ca8a7288c6"
+ "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d88294521a1bca943240adca65fa19ca8a7288c6",
- "reference": "d88294521a1bca943240adca65fa19ca8a7288c6",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/cd5d4da6a5f7cf3d8708e17211234657b5eb4e95",
+ "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95",
"shasum": ""
},
"require": {
"doctrine/dbal": "^3.7.0 || ^4.0",
+ "doctrine/deprecations": "^1.0",
"doctrine/persistence": "^3.1 || ^4",
"doctrine/sql-formatter": "^1.0.1",
"php": "^8.1",
@@ -566,7 +564,6 @@
"symfony/config": "^6.4 || ^7.0",
"symfony/console": "^6.4 || ^7.0",
"symfony/dependency-injection": "^6.4 || ^7.0",
- "symfony/deprecation-contracts": "^2.1 || ^3",
"symfony/doctrine-bridge": "^6.4.3 || ^7.0.3",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/service-contracts": "^2.5 || ^3"
@@ -581,18 +578,17 @@
"require-dev": {
"doctrine/annotations": "^1 || ^2",
"doctrine/cache": "^1.11 || ^2.0",
- "doctrine/coding-standard": "^13",
- "doctrine/deprecations": "^1.0",
+ "doctrine/coding-standard": "^14",
"doctrine/orm": "^2.17 || ^3.1",
"friendsofphp/proxy-manager-lts": "^1.0",
"phpstan/phpstan": "2.1.1",
"phpstan/phpstan-phpunit": "2.0.3",
"phpstan/phpstan-strict-rules": "^2",
- "phpunit/phpunit": "^9.6.22",
+ "phpunit/phpunit": "^10.5.53 || ^12.3.10",
"psr/log": "^1.1.4 || ^2.0 || ^3.0",
"symfony/doctrine-messenger": "^6.4 || ^7.0",
+ "symfony/expression-language": "^6.4 || ^7.0",
"symfony/messenger": "^6.4 || ^7.0",
- "symfony/phpunit-bridge": "^7.2",
"symfony/property-info": "^6.4 || ^7.0",
"symfony/security-bundle": "^6.4 || ^7.0",
"symfony/stopwatch": "^6.4 || ^7.0",
@@ -602,7 +598,7 @@
"symfony/var-exporter": "^6.4.1 || ^7.0.1",
"symfony/web-profiler-bundle": "^6.4 || ^7.0",
"symfony/yaml": "^6.4 || ^7.0",
- "twig/twig": "^2.13 || ^3.0.4"
+ "twig/twig": "^2.14.7 || ^3.0.4"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
@@ -647,7 +643,7 @@
],
"support": {
"issues": "https://github.com/doctrine/DoctrineBundle/issues",
- "source": "https://github.com/doctrine/DoctrineBundle/tree/2.15.0"
+ "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.0"
},
"funding": [
{
@@ -663,24 +659,24 @@
"type": "tidelift"
}
],
- "time": "2025-06-16T19:53:58+00:00"
+ "time": "2025-10-11T04:43:27+00:00"
},
{
"name": "doctrine/doctrine-migrations-bundle",
- "version": "3.4.2",
+ "version": "3.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
- "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9"
+ "reference": "71c81279ca0e907c3edc718418b93fd63074856c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/5a6ac7120c2924c4c070a869d08b11ccf9e277b9",
- "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9",
+ "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/71c81279ca0e907c3edc718418b93fd63074856c",
+ "reference": "71c81279ca0e907c3edc718418b93fd63074856c",
"shasum": ""
},
"require": {
- "doctrine/doctrine-bundle": "^2.4",
+ "doctrine/doctrine-bundle": "^2.4 || ^3.0",
"doctrine/migrations": "^3.2",
"php": "^7.2 || ^8.0",
"symfony/deprecation-contracts": "^2.1 || ^3",
@@ -688,7 +684,7 @@
},
"require-dev": {
"composer/semver": "^3.0",
- "doctrine/coding-standard": "^12",
+ "doctrine/coding-standard": "^12 || ^14",
"doctrine/orm": "^2.6 || ^3",
"phpstan/phpstan": "^1.4 || ^2",
"phpstan/phpstan-deprecation-rules": "^1 || ^2",
@@ -732,7 +728,7 @@
],
"support": {
"issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues",
- "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.2"
+ "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.5.0"
},
"funding": [
{
@@ -748,7 +744,7 @@
"type": "tidelift"
}
],
- "time": "2025-03-11T17:36:26+00:00"
+ "time": "2025-10-12T17:06:40+00:00"
},
{
"name": "doctrine/event-manager",
@@ -843,33 +839,32 @@
},
{
"name": "doctrine/inflector",
- "version": "2.0.10",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
+ "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
- "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b",
+ "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^11.0",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpstan/phpstan-strict-rules": "^1.3",
- "phpunit/phpunit": "^8.5 || ^9.5",
- "vimeo/psalm": "^4.25 || ^5.4"
+ "doctrine/coding-standard": "^12.0 || ^13.0",
+ "phpstan/phpstan": "^1.12 || ^2.0",
+ "phpstan/phpstan-phpunit": "^1.4 || ^2.0",
+ "phpstan/phpstan-strict-rules": "^1.6 || ^2.0",
+ "phpunit/phpunit": "^8.5 || ^12.2"
},
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ "Doctrine\\Inflector\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -914,7 +909,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.10"
+ "source": "https://github.com/doctrine/inflector/tree/2.1.0"
},
"funding": [
{
@@ -930,7 +925,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-18T20:23:39+00:00"
+ "time": "2025-08-10T19:31:58+00:00"
},
{
"name": "doctrine/instantiator",
@@ -1081,16 +1076,16 @@
},
{
"name": "doctrine/migrations",
- "version": "3.9.1",
+ "version": "3.9.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/migrations.git",
- "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999"
+ "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/migrations/zipball/0f1e0c960ac29866d648a4f50142a74fe1cb6999",
- "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999",
+ "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c",
+ "reference": "1b88fcb812f2cd6e77c83d16db60e3cf1e35c66c",
"shasum": ""
},
"require": {
@@ -1108,18 +1103,18 @@
"doctrine/orm": "<2.12 || >=4"
},
"require-dev": {
- "doctrine/coding-standard": "^12",
+ "doctrine/coding-standard": "^13",
"doctrine/orm": "^2.13 || ^3",
"doctrine/persistence": "^2 || ^3 || ^4",
"doctrine/sql-formatter": "^1.0",
"ext-pdo_sqlite": "*",
"fig/log-test": "^1",
- "phpstan/phpstan": "^1.10",
- "phpstan/phpstan-deprecation-rules": "^1.1",
- "phpstan/phpstan-phpunit": "^1.3",
- "phpstan/phpstan-strict-rules": "^1.4",
- "phpstan/phpstan-symfony": "^1.3",
- "phpunit/phpunit": "^10.3",
+ "phpstan/phpstan": "^2",
+ "phpstan/phpstan-deprecation-rules": "^2",
+ "phpstan/phpstan-phpunit": "^2",
+ "phpstan/phpstan-strict-rules": "^2",
+ "phpstan/phpstan-symfony": "^2",
+ "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0",
"symfony/cache": "^5.4 || ^6.0 || ^7.0",
"symfony/process": "^5.4 || ^6.0 || ^7.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0"
@@ -1164,7 +1159,7 @@
],
"support": {
"issues": "https://github.com/doctrine/migrations/issues",
- "source": "https://github.com/doctrine/migrations/tree/3.9.1"
+ "source": "https://github.com/doctrine/migrations/tree/3.9.4"
},
"funding": [
{
@@ -1180,20 +1175,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-27T07:19:23+00:00"
+ "time": "2025-08-19T06:41:07+00:00"
},
{
"name": "doctrine/orm",
- "version": "3.4.3",
+ "version": "3.5.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa"
+ "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/ef607f26c2965fe460c55733cc7c031fb7e1f2fa",
- "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/5a541b8b3a327ab1ea5f93b1615b4ff67a34e109",
+ "reference": "5a541b8b3a327ab1ea5f93b1615b4ff67a34e109",
"shasum": ""
},
"require": {
@@ -1268,22 +1263,22 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
- "source": "https://github.com/doctrine/orm/tree/3.4.3"
+ "source": "https://github.com/doctrine/orm/tree/3.5.2"
},
- "time": "2025-06-27T12:14:15+00:00"
+ "time": "2025-08-08T17:00:40+00:00"
},
{
"name": "doctrine/persistence",
- "version": "4.0.0",
+ "version": "4.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
- "reference": "45004aca79189474f113cbe3a53847c2115a55fa"
+ "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/persistence/zipball/45004aca79189474f113cbe3a53847c2115a55fa",
- "reference": "45004aca79189474f113cbe3a53847c2115a55fa",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/dcbdfe4b211ae09478e192289cae7ab0987b29a4",
+ "reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4",
"shasum": ""
},
"require": {
@@ -1291,16 +1286,14 @@
"php": "^8.1",
"psr/cache": "^1.0 || ^2.0 || ^3.0"
},
- "conflict": {
- "doctrine/common": "<2.10"
- },
"require-dev": {
"doctrine/coding-standard": "^12",
"phpstan/phpstan": "1.12.7",
"phpstan/phpstan-phpunit": "^1",
- "phpstan/phpstan-strict-rules": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.6",
"phpunit/phpunit": "^9.6",
- "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0"
+ "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0",
+ "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0"
},
"type": "library",
"autoload": {
@@ -1349,7 +1342,7 @@
],
"support": {
"issues": "https://github.com/doctrine/persistence/issues",
- "source": "https://github.com/doctrine/persistence/tree/4.0.0"
+ "source": "https://github.com/doctrine/persistence/tree/4.1.0"
},
"funding": [
{
@@ -1365,7 +1358,7 @@
"type": "tidelift"
}
],
- "time": "2024-11-01T21:49:07+00:00"
+ "time": "2025-08-21T16:00:31+00:00"
},
{
"name": "doctrine/sql-formatter",
@@ -1424,16 +1417,16 @@
},
{
"name": "easycorp/easyadmin-bundle",
- "version": "v4.24.9",
+ "version": "v4.26.3",
"source": {
"type": "git",
"url": "https://github.com/EasyCorp/EasyAdminBundle.git",
- "reference": "1f1ab3a897107e5c62657a8cb04790e297b95a21"
+ "reference": "fed89754c7532ce5592fda43921d810b59e24c4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/1f1ab3a897107e5c62657a8cb04790e297b95a21",
- "reference": "1f1ab3a897107e5c62657a8cb04790e297b95a21",
+ "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/fed89754c7532ce5592fda43921d810b59e24c4c",
+ "reference": "fed89754c7532ce5592fda43921d810b59e24c4c",
"shasum": ""
},
"require": {
@@ -1514,7 +1507,7 @@
],
"support": {
"issues": "https://github.com/EasyCorp/EasyAdminBundle/issues",
- "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v4.24.9"
+ "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v4.26.3"
},
"funding": [
{
@@ -1522,7 +1515,7 @@
"type": "github"
}
],
- "time": "2025-06-17T18:10:27+00:00"
+ "time": "2025-10-08T18:21:48+00:00"
},
{
"name": "firebase/php-jwt",
@@ -1589,22 +1582,22 @@
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.9.3",
+ "version": "7.10.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77"
+ "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
- "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
+ "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^1.5.3 || ^2.0.3",
- "guzzlehttp/psr7": "^2.7.0",
+ "guzzlehttp/promises": "^2.3",
+ "guzzlehttp/psr7": "^2.8",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -1695,7 +1688,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.9.3"
+ "source": "https://github.com/guzzle/guzzle/tree/7.10.0"
},
"funding": [
{
@@ -1711,20 +1704,20 @@
"type": "tidelift"
}
],
- "time": "2025-03-27T13:37:11+00:00"
+ "time": "2025-08-23T22:36:01+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "2.2.0",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
+ "reference": "481557b130ef3790cf82b713667b43030dc9c957"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
- "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
+ "reference": "481557b130ef3790cf82b713667b43030dc9c957",
"shasum": ""
},
"require": {
@@ -1732,7 +1725,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.39 || ^9.6.20"
+ "phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"type": "library",
"extra": {
@@ -1778,7 +1771,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/2.2.0"
+ "source": "https://github.com/guzzle/promises/tree/2.3.0"
},
"funding": [
{
@@ -1794,20 +1787,20 @@
"type": "tidelift"
}
],
- "time": "2025-03-27T13:27:01+00:00"
+ "time": "2025-08-22T14:34:08+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "2.7.1",
+ "version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
+ "reference": "21dc724a0583619cd1652f673303492272778051"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
- "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
+ "reference": "21dc724a0583619cd1652f673303492272778051",
"shasum": ""
},
"require": {
@@ -1823,7 +1816,7 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"http-interop/http-factory-tests": "0.9.0",
- "phpunit/phpunit": "^8.5.39 || ^9.6.20"
+ "phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -1894,7 +1887,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.7.1"
+ "source": "https://github.com/guzzle/psr7/tree/2.8.0"
},
"funding": [
{
@@ -1910,20 +1903,20 @@
"type": "tidelift"
}
],
- "time": "2025-03-27T12:30:47+00:00"
+ "time": "2025-08-23T21:21:41+00:00"
},
{
"name": "itk-dev/openid-connect",
- "version": "4.0.1",
+ "version": "4.0.2",
"source": {
"type": "git",
"url": "https://github.com/itk-dev/openid-connect.git",
- "reference": "8f3b8c0cc4abc7e91c1ee0f3e978deee6806da6d"
+ "reference": "65951585ef2680432b33391fadffb1f87d210d27"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/itk-dev/openid-connect/zipball/8f3b8c0cc4abc7e91c1ee0f3e978deee6806da6d",
- "reference": "8f3b8c0cc4abc7e91c1ee0f3e978deee6806da6d",
+ "url": "https://api.github.com/repos/itk-dev/openid-connect/zipball/65951585ef2680432b33391fadffb1f87d210d27",
+ "reference": "65951585ef2680432b33391fadffb1f87d210d27",
"shasum": ""
},
"require": {
@@ -1971,9 +1964,9 @@
"description": "OpenID connect configuration package",
"support": {
"issues": "https://github.com/itk-dev/openid-connect/issues",
- "source": "https://github.com/itk-dev/openid-connect/tree/4.0.1"
+ "source": "https://github.com/itk-dev/openid-connect/tree/4.0.2"
},
- "time": "2025-01-13T09:01:13+00:00"
+ "time": "2025-10-06T07:25:31+00:00"
},
{
"name": "itk-dev/openid-connect-bundle",
@@ -2212,16 +2205,16 @@
},
{
"name": "masterminds/html5",
- "version": "2.9.0",
+ "version": "2.10.0",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
- "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6"
+ "reference": "fcf91eb64359852f00d921887b219479b4f21251"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
- "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251",
+ "reference": "fcf91eb64359852f00d921887b219479b4f21251",
"shasum": ""
},
"require": {
@@ -2273,9 +2266,9 @@
],
"support": {
"issues": "https://github.com/Masterminds/html5-php/issues",
- "source": "https://github.com/Masterminds/html5-php/tree/2.9.0"
+ "source": "https://github.com/Masterminds/html5-php/tree/2.10.0"
},
- "time": "2024-03-31T07:05:07+00:00"
+ "time": "2025-07-25T09:04:22+00:00"
},
{
"name": "monolog/monolog",
@@ -2639,16 +2632,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.6.2",
+ "version": "5.6.3",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62"
+ "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62",
- "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9",
+ "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9",
"shasum": ""
},
"require": {
@@ -2697,9 +2690,9 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3"
},
- "time": "2025-04-13T19:20:35+00:00"
+ "time": "2025-08-01T19:43:32+00:00"
},
{
"name": "phpdocumentor/type-resolver",
@@ -2761,16 +2754,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "2.1.0",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
"shasum": ""
},
"require": {
@@ -2802,9 +2795,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0"
},
- "time": "2025-02-19T13:28:12+00:00"
+ "time": "2025-08-30T15:50:23+00:00"
},
{
"name": "psr/cache",
@@ -3411,16 +3404,16 @@
},
{
"name": "symfony/amqp-messenger",
- "version": "v7.3.0",
+ "version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/amqp-messenger.git",
- "reference": "635c859743bb8166d1b294e7c63a142a5a0ffc16"
+ "reference": "0ed5f72c1d9bbfcfc751b3832939a00a3246fe98"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/635c859743bb8166d1b294e7c63a142a5a0ffc16",
- "reference": "635c859743bb8166d1b294e7c63a142a5a0ffc16",
+ "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/0ed5f72c1d9bbfcfc751b3832939a00a3246fe98",
+ "reference": "0ed5f72c1d9bbfcfc751b3832939a00a3246fe98",
"shasum": ""
},
"require": {
@@ -3460,7 +3453,7 @@
"description": "Symfony AMQP extension Messenger Bridge",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/amqp-messenger/tree/v7.3.0"
+ "source": "https://github.com/symfony/amqp-messenger/tree/v7.3.2"
},
"funding": [
{
@@ -3471,12 +3464,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-05-25T10:45:43+00:00"
+ "time": "2025-07-15T11:36:08+00:00"
},
{
"name": "symfony/asset",
@@ -3547,18 +3544,102 @@
],
"time": "2025-03-05T10:15:41+00:00"
},
+ {
+ "name": "symfony/asset-mapper",
+ "version": "v7.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/asset-mapper.git",
+ "reference": "0c40c579e27244616cf0fe4d1759aab2ceb99a9a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/0c40c579e27244616cf0fe4d1759aab2ceb99a9a",
+ "reference": "0c40c579e27244616cf0fe4d1759aab2ceb99a9a",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^3.0",
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/filesystem": "^7.1",
+ "symfony/http-client": "^6.4|^7.0"
+ },
+ "conflict": {
+ "symfony/framework-bundle": "<6.4"
+ },
+ "require-dev": {
+ "symfony/asset": "^6.4|^7.0",
+ "symfony/browser-kit": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/event-dispatcher-contracts": "^3.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/framework-bundle": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/web-link": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\AssetMapper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/asset-mapper/tree/v7.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "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-09-22T15:31:00+00:00"
+ },
{
"name": "symfony/browser-kit",
- "version": "v7.3.0",
+ "version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "5384291845e74fd7d54f3d925c4a86ce12336593"
+ "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/5384291845e74fd7d54f3d925c4a86ce12336593",
- "reference": "5384291845e74fd7d54f3d925c4a86ce12336593",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f0b889b73a845cddef1d25fe207b37fd04cb5419",
+ "reference": "f0b889b73a845cddef1d25fe207b37fd04cb5419",
"shasum": ""
},
"require": {
@@ -3597,7 +3678,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.0"
+ "source": "https://github.com/symfony/browser-kit/tree/v7.3.2"
},
"funding": [
{
@@ -3608,25 +3689,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": "2025-03-05T10:15:41+00:00"
+ "time": "2025-07-10T08:47:49+00:00"
},
{
"name": "symfony/cache",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e"
+ "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e",
- "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f",
+ "reference": "bf8afc8ffd4bfd3d9c373e417f041d9f1e5b863f",
"shasum": ""
},
"require": {
@@ -3695,7 +3780,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v7.3.1"
+ "source": "https://github.com/symfony/cache/tree/v7.3.4"
},
"funding": [
{
@@ -3706,12 +3791,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-06-27T19:55:54+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -3865,16 +3954,16 @@
},
{
"name": "symfony/config",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "ba62ae565f1327c2f6366726312ed828c85853bc"
+ "reference": "8a09223170046d2cfda3d2e11af01df2c641e961"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/ba62ae565f1327c2f6366726312ed828c85853bc",
- "reference": "ba62ae565f1327c2f6366726312ed828c85853bc",
+ "url": "https://api.github.com/repos/symfony/config/zipball/8a09223170046d2cfda3d2e11af01df2c641e961",
+ "reference": "8a09223170046d2cfda3d2e11af01df2c641e961",
"shasum": ""
},
"require": {
@@ -3920,7 +4009,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.0"
+ "source": "https://github.com/symfony/config/tree/v7.3.4"
},
"funding": [
{
@@ -3931,25 +4020,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": "2025-05-15T09:04:05+00:00"
+ "time": "2025-09-22T12:46:16+00:00"
},
{
"name": "symfony/console",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101"
+ "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101",
- "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101",
+ "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db",
+ "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db",
"shasum": ""
},
"require": {
@@ -4014,7 +4107,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.1"
+ "source": "https://github.com/symfony/console/tree/v7.3.4"
},
"funding": [
{
@@ -4025,25 +4118,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": "2025-06-27T19:55:54+00:00"
+ "time": "2025-09-22T15:31:00+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8"
+ "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8656c4848b48784c4bb8c4ae50d2b43f832cead8",
- "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/82119812ab0bf3425c1234d413efd1b19bb92ae4",
+ "reference": "82119812ab0bf3425c1234d413efd1b19bb92ae4",
"shasum": ""
},
"require": {
@@ -4094,7 +4191,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.1"
+ "source": "https://github.com/symfony/dependency-injection/tree/v7.3.4"
},
"funding": [
{
@@ -4105,12 +4202,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-06-24T04:04:43+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -4181,16 +4282,16 @@
},
{
"name": "symfony/doctrine-bridge",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/doctrine-bridge.git",
- "reference": "6c0acb248c46452ae2c15752dc71e72f3335403f"
+ "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/6c0acb248c46452ae2c15752dc71e72f3335403f",
- "reference": "6c0acb248c46452ae2c15752dc71e72f3335403f",
+ "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/21cd48c34a47a0d0e303a590a67c3450fde55888",
+ "reference": "21cd48c34a47a0d0e303a590a67c3450fde55888",
"shasum": ""
},
"require": {
@@ -4239,7 +4340,7 @@
"symfony/security-core": "^6.4|^7.0",
"symfony/stopwatch": "^6.4|^7.0",
"symfony/translation": "^6.4|^7.0",
- "symfony/type-info": "^7.1",
+ "symfony/type-info": "^7.1.8",
"symfony/uid": "^6.4|^7.0",
"symfony/validator": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0"
@@ -4270,7 +4371,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.1"
+ "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.4"
},
"funding": [
{
@@ -4281,25 +4382,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": "2025-06-26T13:02:59+00:00"
+ "time": "2025-09-24T09:56:23+00:00"
},
{
"name": "symfony/doctrine-messenger",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/doctrine-messenger.git",
- "reference": "099d9cd03f889c31c90d406fed07f25dc3732487"
+ "reference": "064159484ab330590b7b477f6c8835812f2e340f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/099d9cd03f889c31c90d406fed07f25dc3732487",
- "reference": "099d9cd03f889c31c90d406fed07f25dc3732487",
+ "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/064159484ab330590b7b477f6c8835812f2e340f",
+ "reference": "064159484ab330590b7b477f6c8835812f2e340f",
"shasum": ""
},
"require": {
@@ -4342,7 +4447,7 @@
"description": "Symfony Doctrine Messenger Bridge",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/doctrine-messenger/tree/v7.3.0"
+ "source": "https://github.com/symfony/doctrine-messenger/tree/v7.3.4"
},
"funding": [
{
@@ -4353,25 +4458,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": "2025-03-26T11:30:13+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v7.3.1",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9"
+ "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8b2ee2e06ab99fa5f067b6699296d4e35c156bb9",
- "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba",
+ "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba",
"shasum": ""
},
"require": {
@@ -4409,7 +4518,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v7.3.1"
+ "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3"
},
"funding": [
{
@@ -4420,25 +4529,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": "2025-06-15T10:07:06+00:00"
+ "time": "2025-08-06T20:13:54+00:00"
},
{
"name": "symfony/dotenv",
- "version": "v7.3.0",
+ "version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "28347a897771d0c28e99b75166dd2689099f3045"
+ "reference": "2192790a11f9e22cbcf9dc705a3ff22a5503923a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/28347a897771d0c28e99b75166dd2689099f3045",
- "reference": "28347a897771d0c28e99b75166dd2689099f3045",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/2192790a11f9e22cbcf9dc705a3ff22a5503923a",
+ "reference": "2192790a11f9e22cbcf9dc705a3ff22a5503923a",
"shasum": ""
},
"require": {
@@ -4483,7 +4596,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v7.3.0"
+ "source": "https://github.com/symfony/dotenv/tree/v7.3.2"
},
"funding": [
{
@@ -4494,25 +4607,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-11-27T11:18:42+00:00"
+ "time": "2025-07-10T08:29:33+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235"
+ "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235",
- "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4",
+ "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4",
"shasum": ""
},
"require": {
@@ -4560,7 +4677,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.1"
+ "source": "https://github.com/symfony/error-handler/tree/v7.3.4"
},
"funding": [
{
@@ -4571,25 +4688,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": "2025-06-13T07:48:40+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v7.3.0",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "497f73ac996a598c92409b44ac43b6690c4f666d"
+ "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d",
- "reference": "497f73ac996a598c92409b44ac43b6690c4f666d",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191",
+ "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191",
"shasum": ""
},
"require": {
@@ -4640,7 +4761,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3"
},
"funding": [
{
@@ -4651,12 +4772,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-22T09:11:45+00:00"
+ "time": "2025-08-13T11:49:31+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -4736,16 +4861,16 @@
},
{
"name": "symfony/expression-language",
- "version": "v7.3.0",
+ "version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/expression-language.git",
- "reference": "26f4884a455e755e630a5fc372df124a3578da2e"
+ "reference": "32d2d19c62e58767e6552166c32fb259975d2b23"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/expression-language/zipball/26f4884a455e755e630a5fc372df124a3578da2e",
- "reference": "26f4884a455e755e630a5fc372df124a3578da2e",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/32d2d19c62e58767e6552166c32fb259975d2b23",
+ "reference": "32d2d19c62e58767e6552166c32fb259975d2b23",
"shasum": ""
},
"require": {
@@ -4780,7 +4905,7 @@
"description": "Provides an engine that can compile and evaluate expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/expression-language/tree/v7.3.0"
+ "source": "https://github.com/symfony/expression-language/tree/v7.3.2"
},
"funding": [
{
@@ -4791,25 +4916,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-10-15T11:52:45+00:00"
+ "time": "2025-07-10T08:29:33+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v7.3.0",
+ "version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb"
+ "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
- "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd",
+ "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd",
"shasum": ""
},
"require": {
@@ -4846,7 +4975,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v7.3.0"
+ "source": "https://github.com/symfony/filesystem/tree/v7.3.2"
},
"funding": [
{
@@ -4857,25 +4986,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-10-25T15:15:23+00:00"
+ "time": "2025-07-07T08:17:47+00:00"
},
{
"name": "symfony/finder",
- "version": "v7.3.0",
+ "version": "v7.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d"
+ "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d",
- "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
+ "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
"shasum": ""
},
"require": {
@@ -4910,7 +5043,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.0"
+ "source": "https://github.com/symfony/finder/tree/v7.3.2"
},
"funding": [
{
@@ -4921,25 +5054,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-12-30T19:00:26+00:00"
+ "time": "2025-07-15T13:41:35+00:00"
},
{
"name": "symfony/flex",
- "version": "v2.7.1",
+ "version": "v2.8.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/flex.git",
- "reference": "4ae50d368415a06820739e54d38a4a29d6df9155"
+ "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/flex/zipball/4ae50d368415a06820739e54d38a4a29d6df9155",
- "reference": "4ae50d368415a06820739e54d38a4a29d6df9155",
+ "url": "https://api.github.com/repos/symfony/flex/zipball/f356aa35f3cf3d2f46c31d344c1098eb2d260426",
+ "reference": "f356aa35f3cf3d2f46c31d344c1098eb2d260426",
"shasum": ""
},
"require": {
@@ -4978,7 +5115,7 @@
"description": "Composer plugin for Symfony",
"support": {
"issues": "https://github.com/symfony/flex/issues",
- "source": "https://github.com/symfony/flex/tree/v2.7.1"
+ "source": "https://github.com/symfony/flex/tree/v2.8.2"
},
"funding": [
{
@@ -4989,25 +5126,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": "2025-05-28T14:22:54+00:00"
+ "time": "2025-08-22T07:17:23+00:00"
},
{
"name": "symfony/form",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
- "reference": "e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a"
+ "reference": "7b3eee0f4d4dfd1ff1be70a27474197330c61736"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/form/zipball/e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a",
- "reference": "e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a",
+ "url": "https://api.github.com/repos/symfony/form/zipball/7b3eee0f4d4dfd1ff1be70a27474197330c61736",
+ "reference": "7b3eee0f4d4dfd1ff1be70a27474197330c61736",
"shasum": ""
},
"require": {
@@ -5075,7 +5216,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/form/tree/v7.3.1"
+ "source": "https://github.com/symfony/form/tree/v7.3.4"
},
"funding": [
{
@@ -5086,25 +5227,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": "2025-06-13T07:48:40+00:00"
+ "time": "2025-09-22T15:31:00+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab"
+ "reference": "b13e7cec5a144c8dba6f4233a2c53c00bc29e140"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/91905f22f26aa350a33b3b9690bdf94976b0d0ab",
- "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/b13e7cec5a144c8dba6f4233a2c53c00bc29e140",
+ "reference": "b13e7cec5a144c8dba6f4233a2c53c00bc29e140",
"shasum": ""
},
"require": {
@@ -5194,7 +5339,7 @@
"symfony/string": "^6.4|^7.0",
"symfony/translation": "^7.3",
"symfony/twig-bundle": "^6.4|^7.0",
- "symfony/type-info": "^7.1",
+ "symfony/type-info": "^7.1.8",
"symfony/uid": "^6.4|^7.0",
"symfony/validator": "^6.4|^7.0",
"symfony/web-link": "^6.4|^7.0",
@@ -5229,7 +5374,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.1"
+ "source": "https://github.com/symfony/framework-bundle/tree/v7.3.4"
},
"funding": [
{
@@ -5240,25 +5385,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": "2025-06-27T19:55:54+00:00"
+ "time": "2025-09-17T05:51:54+00:00"
},
{
"name": "symfony/http-client",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64"
+ "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/4403d87a2c16f33345dca93407a8714ee8c05a64",
- "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/4b62871a01c49457cf2a8e560af7ee8a94b87a62",
+ "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62",
"shasum": ""
},
"require": {
@@ -5266,6 +5415,7 @@
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-client-contracts": "~3.4.4|^3.5.2",
+ "symfony/polyfill-php83": "^1.29",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
@@ -5324,7 +5474,7 @@
"http"
],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v7.3.1"
+ "source": "https://github.com/symfony/http-client/tree/v7.3.4"
},
"funding": [
{
@@ -5335,12 +5485,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-06-28T07:58:39+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/http-client-contracts",
@@ -5422,16 +5576,16 @@
},
{
"name": "symfony/http-foundation",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "23dd60256610c86a3414575b70c596e5deff6ed9"
+ "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9",
- "reference": "23dd60256610c86a3414575b70c596e5deff6ed9",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6",
+ "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6",
"shasum": ""
},
"require": {
@@ -5481,7 +5635,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.1"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.3.4"
},
"funding": [
{
@@ -5492,25 +5646,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": "2025-06-23T15:07:14+00:00"
+ "time": "2025-09-16T08:38:17+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831"
+ "reference": "b796dffea7821f035047235e076b60ca2446e3cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831",
- "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf",
+ "reference": "b796dffea7821f035047235e076b60ca2446e3cf",
"shasum": ""
},
"require": {
@@ -5595,7 +5753,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.1"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.3.4"
},
"funding": [
{
@@ -5606,25 +5764,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": "2025-06-28T08:24:55+00:00"
+ "time": "2025-09-27T12:32:17+00:00"
},
{
"name": "symfony/intl",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/intl.git",
- "reference": "bd50940329ac1cfc4af0491cc4468f477d967e45"
+ "reference": "e6db84864655885d9dac676a9d7dde0d904fda54"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/intl/zipball/bd50940329ac1cfc4af0491cc4468f477d967e45",
- "reference": "bd50940329ac1cfc4af0491cc4468f477d967e45",
+ "url": "https://api.github.com/repos/symfony/intl/zipball/e6db84864655885d9dac676a9d7dde0d904fda54",
+ "reference": "e6db84864655885d9dac676a9d7dde0d904fda54",
"shasum": ""
},
"require": {
@@ -5681,7 +5843,7 @@
"localization"
],
"support": {
- "source": "https://github.com/symfony/intl/tree/v7.3.1"
+ "source": "https://github.com/symfony/intl/tree/v7.3.4"
},
"funding": [
{
@@ -5692,25 +5854,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": "2025-06-06T16:10:07+00:00"
+ "time": "2025-09-08T14:11:30+00:00"
},
{
"name": "symfony/messenger",
- "version": "v7.3.1",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/messenger.git",
- "reference": "716c89b86ce58c4946d436d862694971c999d1aa"
+ "reference": "d9e04339404ba2dcd04c24172125516dc0e06c35"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/messenger/zipball/716c89b86ce58c4946d436d862694971c999d1aa",
- "reference": "716c89b86ce58c4946d436d862694971c999d1aa",
+ "url": "https://api.github.com/repos/symfony/messenger/zipball/d9e04339404ba2dcd04c24172125516dc0e06c35",
+ "reference": "d9e04339404ba2dcd04c24172125516dc0e06c35",
"shasum": ""
},
"require": {
@@ -5770,7 +5936,7 @@
"description": "Helps applications send and receive messages to/from other applications or via message queues",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/messenger/tree/v7.3.1"
+ "source": "https://github.com/symfony/messenger/tree/v7.3.3"
},
"funding": [
{
@@ -5781,25 +5947,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": "2025-06-27T19:55:54+00:00"
+ "time": "2025-08-13T11:49:31+00:00"
},
{
"name": "symfony/mime",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9"
+ "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9",
- "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35",
+ "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35",
"shasum": ""
},
"require": {
@@ -5854,7 +6024,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v7.3.0"
+ "source": "https://github.com/symfony/mime/tree/v7.3.4"
},
"funding": [
{
@@ -5865,25 +6035,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": "2025-02-19T08:51:26+00:00"
+ "time": "2025-09-16T08:38:17+00:00"
},
{
"name": "symfony/monolog-bridge",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bridge.git",
- "reference": "1b188c8abbbef25b111da878797514b7a8d33990"
+ "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/1b188c8abbbef25b111da878797514b7a8d33990",
- "reference": "1b188c8abbbef25b111da878797514b7a8d33990",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/7acf2abe23e5019451399ba69fc8ed3d61d4d8f0",
+ "reference": "7acf2abe23e5019451399ba69fc8ed3d61d4d8f0",
"shasum": ""
},
"require": {
@@ -5932,7 +6106,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.0"
+ "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.4"
},
"funding": [
{
@@ -5943,12 +6117,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-03-21T12:17:46+00:00"
+ "time": "2025-09-24T16:45:39+00:00"
},
{
"name": "symfony/monolog-bundle",
@@ -6032,27 +6210,34 @@
"time": "2023-11-06T17:08:13+00:00"
},
{
- "name": "symfony/options-resolver",
- "version": "v7.3.0",
+ "name": "symfony/object-mapper",
+ "version": "v7.3.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/options-resolver.git",
- "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca"
+ "url": "https://github.com/symfony/object-mapper.git",
+ "reference": "62752b89178d7654bb7ec97d3fa3dbd67e417dbe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/afb9a8038025e5dbc657378bfab9198d75f10fca",
- "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca",
+ "url": "https://api.github.com/repos/symfony/object-mapper/zipball/62752b89178d7654bb7ec97d3fa3dbd67e417dbe",
+ "reference": "62752b89178d7654bb7ec97d3fa3dbd67e417dbe",
"shasum": ""
},
"require": {
"php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3"
+ "psr/container": "^2.0"
+ },
+ "conflict": {
+ "symfony/property-access": "<7.2"
+ },
+ "require-dev": {
+ "symfony/property-access": "^7.2",
+ "symfony/var-exporter": "^7.2"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\OptionsResolver\\": ""
+ "Symfony\\Component\\ObjectMapper\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -6072,15 +6257,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides an improved replacement for the array_replace PHP function",
+ "description": "Provides a way to map an object to another object",
"homepage": "https://symfony.com",
- "keywords": [
- "config",
- "configuration",
- "options"
- ],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v7.3.0"
+ "source": "https://github.com/symfony/object-mapper/tree/v7.3.4"
},
"funding": [
{
@@ -6091,41 +6271,39 @@
"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-04T13:12:05+00:00"
+ "time": "2025-09-20T14:49:40+00:00"
},
{
- "name": "symfony/password-hasher",
- "version": "v7.3.0",
+ "name": "symfony/options-resolver",
+ "version": "v7.3.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/password-hasher.git",
- "reference": "31fbe66af859582a20b803f38be96be8accdf2c3"
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/password-hasher/zipball/31fbe66af859582a20b803f38be96be8accdf2c3",
- "reference": "31fbe66af859582a20b803f38be96be8accdf2c3",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d",
+ "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d",
"shasum": ""
},
"require": {
- "php": ">=8.2"
- },
- "conflict": {
- "symfony/security-core": "<6.4"
- },
- "require-dev": {
- "symfony/console": "^6.4|^7.0",
- "symfony/security-core": "^6.4|^7.0"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\PasswordHasher\\": ""
+ "Symfony\\Component\\OptionsResolver\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -6137,22 +6315,99 @@
],
"authors": [
{
- "name": "Robin Chalas",
- "email": "robin.chalas@gmail.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides password hashing utilities",
+ "description": "Provides an improved replacement for the array_replace PHP function",
"homepage": "https://symfony.com",
"keywords": [
- "hashing",
- "password"
+ "config",
+ "configuration",
+ "options"
],
"support": {
- "source": "https://github.com/symfony/password-hasher/tree/v7.3.0"
+ "source": "https://github.com/symfony/options-resolver/tree/v7.3.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "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-08-05T10:16:07+00:00"
+ },
+ {
+ "name": "symfony/password-hasher",
+ "version": "v7.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/password-hasher.git",
+ "reference": "31fbe66af859582a20b803f38be96be8accdf2c3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/password-hasher/zipball/31fbe66af859582a20b803f38be96be8accdf2c3",
+ "reference": "31fbe66af859582a20b803f38be96be8accdf2c3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "conflict": {
+ "symfony/security-core": "<6.4"
+ },
+ "require-dev": {
+ "symfony/console": "^6.4|^7.0",
+ "symfony/security-core": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PasswordHasher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Robin Chalas",
+ "email": "robin.chalas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides password hashing utilities",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "hashing",
+ "password"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/password-hasher/tree/v7.3.0"
},
"funding": [
{
@@ -6172,16 +6427,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
"shasum": ""
},
"require": {
@@ -6230,7 +6485,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
},
"funding": [
{
@@ -6241,25 +6496,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-09T11:45:10+00:00"
+ "time": "2025-06-27T09:58:17+00:00"
},
{
"name": "symfony/polyfill-intl-icu",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
- "reference": "763d2a91fea5681509ca01acbc1c5e450d127811"
+ "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/763d2a91fea5681509ca01acbc1c5e450d127811",
- "reference": "763d2a91fea5681509ca01acbc1c5e450d127811",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
+ "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c",
"shasum": ""
},
"require": {
@@ -6314,7 +6573,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.0"
},
"funding": [
{
@@ -6325,16 +6584,20 @@
"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-12-21T18:38:29+00:00"
+ "time": "2025-06-20T22:24:30+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
@@ -6397,7 +6660,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0"
},
"funding": [
{
@@ -6408,6 +6671,10 @@
"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"
@@ -6417,7 +6684,7 @@
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -6478,7 +6745,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
},
"funding": [
{
@@ -6489,6 +6756,10 @@
"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"
@@ -6498,7 +6769,7 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -6559,7 +6830,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@@ -6570,6 +6841,10 @@
"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"
@@ -6579,16 +6854,16 @@
},
{
"name": "symfony/polyfill-php83",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php83.git",
- "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
- "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
"shasum": ""
},
"require": {
@@ -6635,7 +6910,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0"
},
"funding": [
{
@@ -6646,25 +6921,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-09T11:45:10+00:00"
+ "time": "2025-07-08T02:45:35+00:00"
},
{
"name": "symfony/polyfill-php84",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php84.git",
- "reference": "000df7860439609837bbe28670b0be15783b7fbf"
+ "reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/000df7860439609837bbe28670b0be15783b7fbf",
- "reference": "000df7860439609837bbe28670b0be15783b7fbf",
+ "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
+ "reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
"shasum": ""
},
"require": {
@@ -6711,7 +6990,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php84/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0"
},
"funding": [
{
@@ -6722,16 +7001,20 @@
"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-02-20T12:04:08+00:00"
+ "time": "2025-06-24T13:30:11+00:00"
},
{
"name": "symfony/polyfill-uuid",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-uuid.git",
@@ -6790,7 +7073,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/polyfill-uuid/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0"
},
"funding": [
{
@@ -6801,6 +7084,10 @@
"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"
@@ -6810,16 +7097,16 @@
},
{
"name": "symfony/property-access",
- "version": "v7.3.1",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "518d15c8cca726ebe665dcd7154074584cf862e8"
+ "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/518d15c8cca726ebe665dcd7154074584cf862e8",
- "reference": "518d15c8cca726ebe665dcd7154074584cf862e8",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7",
+ "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7",
"shasum": ""
},
"require": {
@@ -6866,7 +7153,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v7.3.1"
+ "source": "https://github.com/symfony/property-access/tree/v7.3.3"
},
"funding": [
{
@@ -6877,25 +7164,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": "2025-06-24T04:04:43+00:00"
+ "time": "2025-08-04T15:15:28+00:00"
},
{
"name": "symfony/property-info",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970"
+ "reference": "7b6db23f23d13ada41e1cb484748a8ec028fbace"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/90586acbf2a6dd13bee4f09f09111c8bd4773970",
- "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/7b6db23f23d13ada41e1cb484748a8ec028fbace",
+ "reference": "7b6db23f23d13ada41e1cb484748a8ec028fbace",
"shasum": ""
},
"require": {
@@ -6952,7 +7243,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v7.3.1"
+ "source": "https://github.com/symfony/property-info/tree/v7.3.4"
},
"funding": [
{
@@ -6963,25 +7254,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": "2025-06-27T19:55:54+00:00"
+ "time": "2025-09-15T13:55:54+00:00"
},
{
"name": "symfony/routing",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "8e213820c5fea844ecea29203d2a308019007c15"
+ "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/8e213820c5fea844ecea29203d2a308019007c15",
- "reference": "8e213820c5fea844ecea29203d2a308019007c15",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c",
+ "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c",
"shasum": ""
},
"require": {
@@ -7033,7 +7328,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v7.3.0"
+ "source": "https://github.com/symfony/routing/tree/v7.3.4"
},
"funding": [
{
@@ -7044,25 +7339,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": "2025-05-24T20:43:28+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/runtime",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/runtime.git",
- "reference": "9516056d432f8acdac9458eb41b80097da7a05c9"
+ "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/runtime/zipball/9516056d432f8acdac9458eb41b80097da7a05c9",
- "reference": "9516056d432f8acdac9458eb41b80097da7a05c9",
+ "url": "https://api.github.com/repos/symfony/runtime/zipball/3550e2711e30bfa5d808514781cd52d1cc1d9e9f",
+ "reference": "3550e2711e30bfa5d808514781cd52d1cc1d9e9f",
"shasum": ""
},
"require": {
@@ -7112,7 +7411,7 @@
"runtime"
],
"support": {
- "source": "https://github.com/symfony/runtime/tree/v7.3.1"
+ "source": "https://github.com/symfony/runtime/tree/v7.3.4"
},
"funding": [
{
@@ -7123,25 +7422,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": "2025-06-13T07:48:40+00:00"
+ "time": "2025-09-11T15:31:28+00:00"
},
{
"name": "symfony/security-bundle",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-bundle.git",
- "reference": "428a281fd66c8358adc2259c8578e6d81fbb7079"
+ "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-bundle/zipball/428a281fd66c8358adc2259c8578e6d81fbb7079",
- "reference": "428a281fd66c8358adc2259c8578e6d81fbb7079",
+ "url": "https://api.github.com/repos/symfony/security-bundle/zipball/f750d9abccbeaa433c56f6a4eb2073166476a75a",
+ "reference": "f750d9abccbeaa433c56f6a4eb2073166476a75a",
"shasum": ""
},
"require": {
@@ -7218,7 +7521,7 @@
"description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-bundle/tree/v7.3.1"
+ "source": "https://github.com/symfony/security-bundle/tree/v7.3.4"
},
"funding": [
{
@@ -7229,25 +7532,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": "2025-06-24T04:04:43+00:00"
+ "time": "2025-09-22T15:31:00+00:00"
},
{
"name": "symfony/security-core",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
- "reference": "fafab1003a31e51506e1a0a83e81c072211d81ba"
+ "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/fafab1003a31e51506e1a0a83e81c072211d81ba",
- "reference": "fafab1003a31e51506e1a0a83e81c072211d81ba",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/68b9d3ca57615afde6152a1e1441fa035bea43f8",
+ "reference": "68b9d3ca57615afde6152a1e1441fa035bea43f8",
"shasum": ""
},
"require": {
@@ -7305,7 +7612,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-core/tree/v7.3.1"
+ "source": "https://github.com/symfony/security-core/tree/v7.3.4"
},
"funding": [
{
@@ -7316,12 +7623,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-06-23T07:28:50+00:00"
+ "time": "2025-09-24T14:32:13+00:00"
},
{
"name": "symfony/security-csrf",
@@ -7395,16 +7706,16 @@
},
{
"name": "symfony/security-http",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
- "reference": "b7182ed0fd2359297f78ff6d407265168255ea84"
+ "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-http/zipball/b7182ed0fd2359297f78ff6d407265168255ea84",
- "reference": "b7182ed0fd2359297f78ff6d407265168255ea84",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/1cf54d0648ebab23bf9b8972617b79f1995e13a9",
+ "reference": "1cf54d0648ebab23bf9b8972617b79f1995e13a9",
"shasum": ""
},
"require": {
@@ -7463,7 +7774,7 @@
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-http/tree/v7.3.1"
+ "source": "https://github.com/symfony/security-http/tree/v7.3.4"
},
"funding": [
{
@@ -7474,31 +7785,36 @@
"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-06-24T04:04:43+00:00"
+ "time": "2025-09-09T17:06:44+00:00"
},
{
"name": "symfony/serializer",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "feaf837cedbbc8287986602223175d3fd639922d"
+ "reference": "0df5af266c6fe9a855af7db4fea86e13b9ca3ab1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/feaf837cedbbc8287986602223175d3fd639922d",
- "reference": "feaf837cedbbc8287986602223175d3fd639922d",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/0df5af266c6fe9a855af7db4fea86e13b9ca3ab1",
+ "reference": "0df5af266c6fe9a855af7db4fea86e13b9ca3ab1",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-ctype": "~1.8"
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php84": "^1.30"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
@@ -7528,7 +7844,7 @@
"symfony/property-access": "^6.4|^7.0",
"symfony/property-info": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3",
- "symfony/type-info": "^7.1",
+ "symfony/type-info": "^7.1.8",
"symfony/uid": "^6.4|^7.0",
"symfony/validator": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0",
@@ -7561,7 +7877,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/serializer/tree/v7.3.1"
+ "source": "https://github.com/symfony/serializer/tree/v7.3.4"
},
"funding": [
{
@@ -7572,12 +7888,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-06-27T19:55:54+00:00"
+ "time": "2025-09-15T13:39:02+00:00"
},
{
"name": "symfony/service-contracts",
@@ -7726,16 +8046,16 @@
},
{
"name": "symfony/string",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125"
+ "reference": "f96476035142921000338bad71e5247fbc138872"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125",
- "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125",
+ "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872",
+ "reference": "f96476035142921000338bad71e5247fbc138872",
"shasum": ""
},
"require": {
@@ -7750,7 +8070,6 @@
},
"require-dev": {
"symfony/emoji": "^7.1",
- "symfony/error-handler": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
@@ -7793,7 +8112,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.3.0"
+ "source": "https://github.com/symfony/string/tree/v7.3.4"
},
"funding": [
{
@@ -7804,25 +8123,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": "2025-04-20T20:19:01+00:00"
+ "time": "2025-09-11T14:36:48+00:00"
},
{
"name": "symfony/translation",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "241d5ac4910d256660238a7ecf250deba4c73063"
+ "reference": "ec25870502d0c7072d086e8ffba1420c85965174"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/241d5ac4910d256660238a7ecf250deba4c73063",
- "reference": "241d5ac4910d256660238a7ecf250deba4c73063",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174",
+ "reference": "ec25870502d0c7072d086e8ffba1420c85965174",
"shasum": ""
},
"require": {
@@ -7889,7 +8212,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v7.3.1"
+ "source": "https://github.com/symfony/translation/tree/v7.3.4"
},
"funding": [
{
@@ -7900,12 +8223,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-06-27T19:55:54+00:00"
+ "time": "2025-09-07T11:39:36+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -7987,16 +8314,16 @@
},
{
"name": "symfony/twig-bridge",
- "version": "v7.3.0",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "082eb15d8a4f9afee0acc4709fbe3aaf26d48891"
+ "reference": "33558f013b7f6ed72805527c8405cae0062e47c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/082eb15d8a4f9afee0acc4709fbe3aaf26d48891",
- "reference": "082eb15d8a4f9afee0acc4709fbe3aaf26d48891",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/33558f013b7f6ed72805527c8405cae0062e47c5",
+ "reference": "33558f013b7f6ed72805527c8405cae0062e47c5",
"shasum": ""
},
"require": {
@@ -8078,7 +8405,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.0"
+ "source": "https://github.com/symfony/twig-bridge/tree/v7.3.3"
},
"funding": [
{
@@ -8089,25 +8416,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": "2025-05-19T13:28:56+00:00"
+ "time": "2025-08-18T13:10:53+00:00"
},
{
"name": "symfony/twig-bundle",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896"
+ "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/bc23c11d9716fc2261ee26a32e654b0e8b1b1896",
- "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/da5c778a8416fcce5318737c4d944f6fa2bb3f81",
+ "reference": "da5c778a8416fcce5318737c4d944f6fa2bb3f81",
"shasum": ""
},
"require": {
@@ -8162,7 +8493,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bundle/tree/v7.3.1"
+ "source": "https://github.com/symfony/twig-bundle/tree/v7.3.4"
},
"funding": [
{
@@ -8173,25 +8504,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": "2025-06-24T04:04:43+00:00"
+ "time": "2025-09-10T12:00:31+00:00"
},
{
"name": "symfony/type-info",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/type-info.git",
- "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150"
+ "reference": "d34eaeb57f39c8a9c97eb72a977c423207dfa35b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/type-info/zipball/5fa6e25e4195e73ce9e457b521ac5e61ec271150",
- "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150",
+ "url": "https://api.github.com/repos/symfony/type-info/zipball/d34eaeb57f39c8a9c97eb72a977c423207dfa35b",
+ "reference": "d34eaeb57f39c8a9c97eb72a977c423207dfa35b",
"shasum": ""
},
"require": {
@@ -8241,7 +8576,7 @@
"type"
],
"support": {
- "source": "https://github.com/symfony/type-info/tree/v7.3.1"
+ "source": "https://github.com/symfony/type-info/tree/v7.3.4"
},
"funding": [
{
@@ -8252,12 +8587,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-06-27T19:55:54+00:00"
+ "time": "2025-09-11T15:33:27+00:00"
},
{
"name": "symfony/uid",
@@ -8335,38 +8674,38 @@
},
{
"name": "symfony/ux-twig-component",
- "version": "v2.27.0",
+ "version": "v2.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-twig-component.git",
- "reference": "0879cd53812b79e8b6a20e104b6e785a2ac2c013"
+ "reference": "2f445efda4d4400d4d1911ddf9710c366f339614"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/0879cd53812b79e8b6a20e104b6e785a2ac2c013",
- "reference": "0879cd53812b79e8b6a20e104b6e785a2ac2c013",
+ "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/2f445efda4d4400d4d1911ddf9710c366f339614",
+ "reference": "2f445efda4d4400d4d1911ddf9710c366f339614",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0|^8.0",
"symfony/deprecation-contracts": "^2.2|^3.0",
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
- "symfony/property-access": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0|^8.0",
+ "symfony/property-access": "^5.4|^6.0|^7.0|^8.0",
"twig/twig": "^3.10.3"
},
"conflict": {
"symfony/config": "<5.4.0"
},
"require-dev": {
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/css-selector": "^5.4|^6.0|^7.0",
- "symfony/dom-crawler": "^5.4|^6.0|^7.0",
- "symfony/framework-bundle": "^5.4|^6.0|^7.0",
- "symfony/phpunit-bridge": "^6.0|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0|^8.0",
+ "symfony/css-selector": "^5.4|^6.0|^7.0|^8.0",
+ "symfony/dom-crawler": "^5.4|^6.0|^7.0|^8.0",
+ "symfony/framework-bundle": "^5.4|^6.0|^7.0|^8.0",
+ "symfony/phpunit-bridge": "^6.0|^7.0|^8.0",
"symfony/stimulus-bundle": "^2.9.1",
- "symfony/twig-bundle": "^5.4|^6.0|^7.0",
- "symfony/webpack-encore-bundle": "^1.15"
+ "symfony/twig-bundle": "^5.4|^6.0|^7.0|^8.0",
+ "symfony/webpack-encore-bundle": "^1.15|^2.3.0"
},
"type": "symfony-bundle",
"extra": {
@@ -8398,7 +8737,7 @@
"twig"
],
"support": {
- "source": "https://github.com/symfony/ux-twig-component/tree/v2.27.0"
+ "source": "https://github.com/symfony/ux-twig-component/tree/v2.30.0"
},
"funding": [
{
@@ -8409,25 +8748,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": "2025-06-21T16:41:28+00:00"
+ "time": "2025-08-27T15:25:48+00:00"
},
{
"name": "symfony/validator",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "e2f2497c869fc57446f735fbf00cff4de32ae8c3"
+ "reference": "5e29a348b5fac2227b6938a54db006d673bb813a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/e2f2497c869fc57446f735fbf00cff4de32ae8c3",
- "reference": "e2f2497c869fc57446f735fbf00cff4de32ae8c3",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/5e29a348b5fac2227b6938a54db006d673bb813a",
+ "reference": "5e29a348b5fac2227b6938a54db006d673bb813a",
"shasum": ""
},
"require": {
@@ -8466,7 +8809,7 @@
"symfony/property-info": "^6.4|^7.0",
"symfony/string": "^6.4|^7.0",
"symfony/translation": "^6.4.3|^7.0.3",
- "symfony/type-info": "^7.1",
+ "symfony/type-info": "^7.1.8",
"symfony/yaml": "^6.4|^7.0"
},
"type": "library",
@@ -8496,7 +8839,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v7.3.1"
+ "source": "https://github.com/symfony/validator/tree/v7.3.4"
},
"funding": [
{
@@ -8507,25 +8850,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": "2025-06-26T13:22:23+00:00"
+ "time": "2025-09-24T06:32:27+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42"
+ "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42",
- "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb",
+ "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb",
"shasum": ""
},
"require": {
@@ -8537,7 +8884,6 @@
"symfony/console": "<6.4"
},
"require-dev": {
- "ext-iconv": "*",
"symfony/console": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
"symfony/process": "^6.4|^7.0",
@@ -8580,7 +8926,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.3.1"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.3.4"
},
"funding": [
{
@@ -8591,25 +8937,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": "2025-06-27T19:55:54+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c"
+ "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c9a1168891b5aaadfd6332ef44393330b3498c4c",
- "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f020b544a30a7fe8ba972e53ee48a74c0bc87f4",
+ "reference": "0f020b544a30a7fe8ba972e53ee48a74c0bc87f4",
"shasum": ""
},
"require": {
@@ -8657,7 +9007,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v7.3.0"
+ "source": "https://github.com/symfony/var-exporter/tree/v7.3.4"
},
"funding": [
{
@@ -8668,12 +9018,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-05-15T09:04:05+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/web-link",
@@ -8760,32 +9114,32 @@
},
{
"name": "symfony/webpack-encore-bundle",
- "version": "v2.2.0",
+ "version": "v2.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/webpack-encore-bundle.git",
- "reference": "e335394b68a775a9b2bd173a8ba4fd2001f3870c"
+ "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/e335394b68a775a9b2bd173a8ba4fd2001f3870c",
- "reference": "e335394b68a775a9b2bd173a8ba4fd2001f3870c",
+ "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/7ae70d44c24c3b913f308af8396169b5c6d9e0f5",
+ "reference": "7ae70d44c24c3b913f308af8396169b5c6d9e0f5",
"shasum": ""
},
"require": {
"php": ">=8.1.0",
- "symfony/asset": "^5.4 || ^6.2 || ^7.0",
- "symfony/config": "^5.4 || ^6.2 || ^7.0",
- "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0",
- "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0",
+ "symfony/asset": "^5.4 || ^6.2 || ^7.0 || ^8.0",
+ "symfony/config": "^5.4 || ^6.2 || ^7.0 || ^8.0",
+ "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0 || ^8.0",
+ "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0 || ^8.0",
"symfony/service-contracts": "^1.1.9 || ^2.1.3 || ^3.0"
},
"require-dev": {
- "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0",
- "symfony/http-client": "^5.4 || ^6.2 || ^7.0",
- "symfony/phpunit-bridge": "^5.4 || ^6.2 || ^7.0",
- "symfony/twig-bundle": "^5.4 || ^6.2 || ^7.0",
- "symfony/web-link": "^5.4 || ^6.2 || ^7.0"
+ "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0 || ^8.0",
+ "symfony/http-client": "^5.4 || ^6.2 || ^7.0 || ^8.0",
+ "symfony/phpunit-bridge": "^5.4 || ^6.2 || ^7.0 || ^8.0",
+ "symfony/twig-bundle": "^5.4 || ^6.2 || ^7.0 || ^8.0",
+ "symfony/web-link": "^5.4 || ^6.2 || ^7.0 || ^8.0"
},
"type": "symfony-bundle",
"extra": {
@@ -8812,7 +9166,7 @@
"description": "Integration of your Symfony app with Webpack Encore",
"support": {
"issues": "https://github.com/symfony/webpack-encore-bundle/issues",
- "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.2.0"
+ "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.3.0"
},
"funding": [
{
@@ -8823,25 +9177,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-10-02T07:27:19+00:00"
+ "time": "2025-08-05T11:43:32+00:00"
},
{
"name": "symfony/yaml",
- "version": "v7.3.1",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb"
+ "reference": "d4f4a66866fe2451f61296924767280ab5732d9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/0c3555045a46ab3cd4cc5a69d161225195230edb",
- "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d",
+ "reference": "d4f4a66866fe2451f61296924767280ab5732d9d",
"shasum": ""
},
"require": {
@@ -8884,7 +9242,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v7.3.1"
+ "source": "https://github.com/symfony/yaml/tree/v7.3.3"
},
"funding": [
{
@@ -8895,12 +9253,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-06-03T06:57:57+00:00"
+ "time": "2025-08-27T11:34:33+00:00"
},
{
"name": "twig/extra-bundle",
@@ -9450,16 +9812,16 @@
},
{
"name": "doctrine/data-fixtures",
- "version": "2.0.3",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/data-fixtures.git",
- "reference": "f65b353922b7ac48f360428e19b22fcce5aba134"
+ "reference": "f161e20f04ba5440a09330e156b40f04dd70d47f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f65b353922b7ac48f360428e19b22fcce5aba134",
- "reference": "f65b353922b7ac48f360428e19b22fcce5aba134",
+ "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f161e20f04ba5440a09330e156b40f04dd70d47f",
+ "reference": "f161e20f04ba5440a09330e156b40f04dd70d47f",
"shasum": ""
},
"require": {
@@ -9513,7 +9875,7 @@
],
"support": {
"issues": "https://github.com/doctrine/data-fixtures/issues",
- "source": "https://github.com/doctrine/data-fixtures/tree/2.0.3"
+ "source": "https://github.com/doctrine/data-fixtures/tree/2.1.0"
},
"funding": [
{
@@ -9529,20 +9891,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-27T19:59:58+00:00"
+ "time": "2025-07-08T17:48:20+00:00"
},
{
"name": "ergebnis/composer-normalize",
- "version": "2.47.0",
+ "version": "2.48.2",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/composer-normalize.git",
- "reference": "ed24b9f8901f8fbafeca98f662eaca39427f0544"
+ "reference": "86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/ed24b9f8901f8fbafeca98f662eaca39427f0544",
- "reference": "ed24b9f8901f8fbafeca98f662eaca39427f0544",
+ "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b",
+ "reference": "86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b",
"shasum": ""
},
"require": {
@@ -9552,30 +9914,31 @@
"ergebnis/json-printer": "^3.7.0",
"ext-json": "*",
"justinrainbow/json-schema": "^5.2.12 || ^6.0.0",
- "localheinz/diff": "^1.2.0",
- "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "localheinz/diff": "^1.3.0",
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
"composer/composer": "^2.8.3",
- "ergebnis/license": "^2.6.0",
- "ergebnis/php-cs-fixer-config": "^6.46.0",
- "ergebnis/phpunit-slow-test-detector": "^2.19.1",
+ "ergebnis/license": "^2.7.0",
+ "ergebnis/php-cs-fixer-config": "^6.53.0",
+ "ergebnis/phpstan-rules": "^2.11.0",
+ "ergebnis/phpunit-slow-test-detector": "^2.20.0",
"fakerphp/faker": "^1.24.1",
"infection/infection": "~0.26.6",
"phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^2.1.11",
- "phpstan/phpstan-deprecation-rules": "^2.0.1",
- "phpstan/phpstan-phpunit": "^2.0.6",
- "phpstan/phpstan-strict-rules": "^2.0.4",
+ "phpstan/phpstan": "^2.1.17",
+ "phpstan/phpstan-deprecation-rules": "^2.0.3",
+ "phpstan/phpstan-phpunit": "^2.0.7",
+ "phpstan/phpstan-strict-rules": "^2.0.6",
"phpunit/phpunit": "^9.6.20",
- "rector/rector": "^2.0.11",
+ "rector/rector": "^2.1.4",
"symfony/filesystem": "^5.4.41"
},
"type": "composer-plugin",
"extra": {
"class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin",
"branch-alias": {
- "dev-main": "2.44-dev"
+ "dev-main": "2.49-dev"
},
"plugin-optional": true,
"composer-normalize": {
@@ -9612,43 +9975,48 @@
"security": "https://github.com/ergebnis/composer-normalize/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/composer-normalize"
},
- "time": "2025-04-15T11:09:27+00:00"
+ "time": "2025-09-06T11:42:34+00:00"
},
{
"name": "ergebnis/json",
- "version": "1.4.0",
+ "version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/json.git",
- "reference": "7656ac2aa6c2ca4408f96f599e9a17a22c464f69"
+ "reference": "7b56d2b5d9e897e75b43e2e753075a0904c921b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/json/zipball/7656ac2aa6c2ca4408f96f599e9a17a22c464f69",
- "reference": "7656ac2aa6c2ca4408f96f599e9a17a22c464f69",
+ "url": "https://api.github.com/repos/ergebnis/json/zipball/7b56d2b5d9e897e75b43e2e753075a0904c921b1",
+ "reference": "7b56d2b5d9e897e75b43e2e753075a0904c921b1",
"shasum": ""
},
"require": {
"ext-json": "*",
- "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
+ "ergebnis/composer-normalize": "^2.44.0",
"ergebnis/data-provider": "^3.3.0",
"ergebnis/license": "^2.5.0",
"ergebnis/php-cs-fixer-config": "^6.37.0",
+ "ergebnis/phpstan-rules": "^2.11.0",
"ergebnis/phpunit-slow-test-detector": "^2.16.1",
"fakerphp/faker": "^1.24.0",
"infection/infection": "~0.26.6",
"phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^1.12.10",
- "phpstan/phpstan-deprecation-rules": "^1.2.1",
- "phpstan/phpstan-phpunit": "^1.4.0",
- "phpstan/phpstan-strict-rules": "^1.6.1",
- "phpunit/phpunit": "^9.6.18",
- "rector/rector": "^1.2.10"
+ "phpstan/phpstan": "^2.1.22",
+ "phpstan/phpstan-deprecation-rules": "^2.0.3",
+ "phpstan/phpstan-phpunit": "^2.0.7",
+ "phpstan/phpstan-strict-rules": "^2.0.6",
+ "phpunit/phpunit": "^9.6.24",
+ "rector/rector": "^2.1.4"
},
"type": "library",
"extra": {
+ "branch-alias": {
+ "dev-main": "1.7-dev"
+ },
"composer-normalize": {
"indent-size": 2,
"indent-style": "space"
@@ -9680,20 +10048,20 @@
"security": "https://github.com/ergebnis/json/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/json"
},
- "time": "2024-11-17T11:51:22+00:00"
+ "time": "2025-09-06T09:08:45+00:00"
},
{
"name": "ergebnis/json-normalizer",
- "version": "4.9.0",
+ "version": "4.10.1",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/json-normalizer.git",
- "reference": "cc4dcf3890448572a2d9bea97133c4d860e59fb1"
+ "reference": "77961faf2c651c3f05977b53c6c68e8434febf62"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/cc4dcf3890448572a2d9bea97133c4d860e59fb1",
- "reference": "cc4dcf3890448572a2d9bea97133c4d860e59fb1",
+ "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/77961faf2c651c3f05977b53c6c68e8434febf62",
+ "reference": "77961faf2c651c3f05977b53c6c68e8434febf62",
"shasum": ""
},
"require": {
@@ -9703,7 +10071,7 @@
"ergebnis/json-schema-validator": "^4.2.0",
"ext-json": "*",
"justinrainbow/json-schema": "^5.2.12 || ^6.0.0",
- "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
"composer/semver": "^3.4.3",
@@ -9728,7 +10096,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.8-dev"
+ "dev-main": "4.11-dev"
},
"composer-normalize": {
"indent-size": 2,
@@ -9762,24 +10130,24 @@
"security": "https://github.com/ergebnis/json-normalizer/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/json-normalizer"
},
- "time": "2025-04-10T13:13:04+00:00"
+ "time": "2025-09-06T09:18:13+00:00"
},
{
"name": "ergebnis/json-pointer",
- "version": "3.6.0",
+ "version": "3.7.1",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/json-pointer.git",
- "reference": "4fc85d8edb74466d282119d8d9541ec7cffc0798"
+ "reference": "43bef355184e9542635e35dd2705910a3df4c236"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/4fc85d8edb74466d282119d8d9541ec7cffc0798",
- "reference": "4fc85d8edb74466d282119d8d9541ec7cffc0798",
+ "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/43bef355184e9542635e35dd2705910a3df4c236",
+ "reference": "43bef355184e9542635e35dd2705910a3df4c236",
"shasum": ""
},
"require": {
- "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
"ergebnis/composer-normalize": "^2.43.0",
@@ -9800,7 +10168,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.6-dev"
+ "dev-main": "3.8-dev"
},
"composer-normalize": {
"indent-size": 2,
@@ -9835,28 +10203,29 @@
"security": "https://github.com/ergebnis/json-pointer/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/json-pointer"
},
- "time": "2024-11-17T12:37:06+00:00"
+ "time": "2025-09-06T09:28:19+00:00"
},
{
"name": "ergebnis/json-printer",
- "version": "3.7.0",
+ "version": "3.8.1",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/json-printer.git",
- "reference": "ced41fce7854152f0e8f38793c2ffe59513cdd82"
+ "reference": "211d73fc7ec6daf98568ee6ed6e6d133dee8503e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/ced41fce7854152f0e8f38793c2ffe59513cdd82",
- "reference": "ced41fce7854152f0e8f38793c2ffe59513cdd82",
+ "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/211d73fc7ec6daf98568ee6ed6e6d133dee8503e",
+ "reference": "211d73fc7ec6daf98568ee6ed6e6d133dee8503e",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
- "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
+ "ergebnis/composer-normalize": "^2.44.0",
"ergebnis/data-provider": "^3.3.0",
"ergebnis/license": "^2.5.0",
"ergebnis/php-cs-fixer-config": "^6.37.0",
@@ -9872,6 +10241,15 @@
"rector/rector": "^1.2.10"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.9-dev"
+ },
+ "composer-normalize": {
+ "indent-size": 2,
+ "indent-style": "space"
+ }
+ },
"autoload": {
"psr-4": {
"Ergebnis\\Json\\Printer\\": "src/"
@@ -9900,20 +10278,20 @@
"security": "https://github.com/ergebnis/json-printer/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/json-printer"
},
- "time": "2024-11-17T11:20:51+00:00"
+ "time": "2025-09-06T09:59:26+00:00"
},
{
"name": "ergebnis/json-schema-validator",
- "version": "4.4.0",
+ "version": "4.5.1",
"source": {
"type": "git",
"url": "https://github.com/ergebnis/json-schema-validator.git",
- "reference": "85f90c81f718aebba1d738800af83eeb447dc7ec"
+ "reference": "b739527a480a9e3651360ad351ea77e7e9019df2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/85f90c81f718aebba1d738800af83eeb447dc7ec",
- "reference": "85f90c81f718aebba1d738800af83eeb447dc7ec",
+ "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/b739527a480a9e3651360ad351ea77e7e9019df2",
+ "reference": "b739527a480a9e3651360ad351ea77e7e9019df2",
"shasum": ""
},
"require": {
@@ -9921,7 +10299,7 @@
"ergebnis/json-pointer": "^3.4.0",
"ext-json": "*",
"justinrainbow/json-schema": "^5.2.12 || ^6.0.0",
- "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
"ergebnis/composer-normalize": "^2.44.0",
@@ -9942,7 +10320,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.4-dev"
+ "dev-main": "4.6-dev"
},
"composer-normalize": {
"indent-size": 2,
@@ -9977,7 +10355,7 @@
"security": "https://github.com/ergebnis/json-schema-validator/blob/main/.github/SECURITY.md",
"source": "https://github.com/ergebnis/json-schema-validator"
},
- "time": "2024-11-18T06:32:28+00:00"
+ "time": "2025-09-06T11:37:35+00:00"
},
{
"name": "evenement/evenement",
@@ -10091,16 +10469,16 @@
},
{
"name": "fidry/cpu-core-counter",
- "version": "1.2.0",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f"
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
"shasum": ""
},
"require": {
@@ -10110,10 +10488,10 @@
"fidry/makefile": "^0.2.0",
"fidry/php-cs-fixer-config": "^1.1.2",
"phpstan/extension-installer": "^1.2.0",
- "phpstan/phpstan": "^1.9.2",
- "phpstan/phpstan-deprecation-rules": "^1.0.0",
- "phpstan/phpstan-phpunit": "^1.2.2",
- "phpstan/phpstan-strict-rules": "^1.4.4",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-deprecation-rules": "^2.0.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts/strict-phpunit": "^7.5"
},
@@ -10140,7 +10518,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0"
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
},
"funding": [
{
@@ -10148,63 +10526,62 @@
"type": "github"
}
],
- "time": "2024-08-06T10:04:20+00:00"
+ "time": "2025-08-14T07:29:31+00:00"
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.76.0",
+ "version": "v3.88.2",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "0e3c484cef0ae9314b0f85986a36296087432c40"
+ "reference": "a8d15584bafb0f0d9d938827840060fd4a3ebc99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/0e3c484cef0ae9314b0f85986a36296087432c40",
- "reference": "0e3c484cef0ae9314b0f85986a36296087432c40",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a8d15584bafb0f0d9d938827840060fd4a3ebc99",
+ "reference": "a8d15584bafb0f0d9d938827840060fd4a3ebc99",
"shasum": ""
},
"require": {
- "clue/ndjson-react": "^1.0",
+ "clue/ndjson-react": "^1.3",
"composer/semver": "^3.4",
"composer/xdebug-handler": "^3.0.5",
"ext-filter": "*",
"ext-hash": "*",
"ext-json": "*",
"ext-tokenizer": "*",
- "fidry/cpu-core-counter": "^1.2",
+ "fidry/cpu-core-counter": "^1.3",
"php": "^7.4 || ^8.0",
"react/child-process": "^0.6.6",
- "react/event-loop": "^1.0",
- "react/promise": "^2.11 || ^3.0",
- "react/socket": "^1.0",
- "react/stream": "^1.0",
+ "react/event-loop": "^1.5",
+ "react/promise": "^3.3",
+ "react/socket": "^1.16",
+ "react/stream": "^1.4",
"sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0",
- "symfony/console": "^5.4.45 || ^6.4.13 || ^7.0",
- "symfony/event-dispatcher": "^5.4.45 || ^6.4.13 || ^7.0",
- "symfony/filesystem": "^5.4.45 || ^6.4.13 || ^7.0",
- "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.0",
- "symfony/options-resolver": "^5.4.45 || ^6.4.16 || ^7.0",
- "symfony/polyfill-mbstring": "^1.32",
- "symfony/polyfill-php80": "^1.32",
- "symfony/polyfill-php81": "^1.32",
- "symfony/process": "^5.4.47 || ^6.4.20 || ^7.2",
- "symfony/stopwatch": "^5.4.45 || ^6.4.19 || ^7.0"
- },
- "require-dev": {
- "facile-it/paraunit": "^1.3.1 || ^2.6",
- "infection/infection": "^0.29.14",
- "justinrainbow/json-schema": "^5.3 || ^6.4",
+ "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0",
+ "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0",
+ "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0",
+ "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0",
+ "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0",
+ "symfony/polyfill-mbstring": "^1.33",
+ "symfony/polyfill-php80": "^1.33",
+ "symfony/polyfill-php81": "^1.33",
+ "symfony/polyfill-php84": "^1.33",
+ "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2",
+ "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0"
+ },
+ "require-dev": {
+ "facile-it/paraunit": "^1.3.1 || ^2.7",
+ "infection/infection": "^0.31.0",
+ "justinrainbow/json-schema": "^6.5",
"keradus/cli-executor": "^2.2",
"mikey179/vfsstream": "^1.6.12",
"php-coveralls/php-coveralls": "^2.8",
- "php-cs-fixer/accessible-object": "^1.1",
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6",
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6",
- "phpunit/phpunit": "^9.6.23 || ^10.5.47 || ^11.5.25",
- "symfony/polyfill-php84": "^1.32",
- "symfony/var-dumper": "^5.4.48 || ^6.4.23 || ^7.3.1",
- "symfony/yaml": "^5.4.45 || ^6.4.23 || ^7.3.1"
+ "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34",
+ "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2",
+ "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2"
},
"suggest": {
"ext-dom": "For handling output formats in XML",
@@ -10245,7 +10622,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.76.0"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.88.2"
},
"funding": [
{
@@ -10253,7 +10630,7 @@
"type": "github"
}
],
- "time": "2025-06-30T14:15:06+00:00"
+ "time": "2025-09-27T00:24:15+00:00"
},
{
"name": "hautelook/alice-bundle",
@@ -10331,16 +10708,16 @@
},
{
"name": "justinrainbow/json-schema",
- "version": "6.4.2",
+ "version": "6.6.0",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
- "reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02"
+ "reference": "68ba7677532803cc0c5900dd5a4d730537f2b2f3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/ce1fd2d47799bb60668643bc6220f6278a4c1d02",
- "reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02",
+ "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/68ba7677532803cc0c5900dd5a4d730537f2b2f3",
+ "reference": "68ba7677532803cc0c5900dd5a4d730537f2b2f3",
"shasum": ""
},
"require": {
@@ -10350,7 +10727,7 @@
},
"require-dev": {
"friendsofphp/php-cs-fixer": "3.3.0",
- "json-schema/json-schema-test-suite": "1.2.0",
+ "json-schema/json-schema-test-suite": "^23.2",
"marc-mabe/php-enum-phpstan": "^2.0",
"phpspec/prophecy": "^1.19",
"phpstan/phpstan": "^1.12",
@@ -10400,26 +10777,26 @@
],
"support": {
"issues": "https://github.com/jsonrainbow/json-schema/issues",
- "source": "https://github.com/jsonrainbow/json-schema/tree/6.4.2"
+ "source": "https://github.com/jsonrainbow/json-schema/tree/6.6.0"
},
- "time": "2025-06-03T18:27:04+00:00"
+ "time": "2025-10-10T11:34:09+00:00"
},
{
"name": "localheinz/diff",
- "version": "1.2.0",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/localheinz/diff.git",
- "reference": "ec413943c2b518464865673fd5b38f7df867a010"
+ "reference": "33bd840935970cda6691c23fc7d94ae764c0734c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/localheinz/diff/zipball/ec413943c2b518464865673fd5b38f7df867a010",
- "reference": "ec413943c2b518464865673fd5b38f7df867a010",
+ "url": "https://api.github.com/repos/localheinz/diff/zipball/33bd840935970cda6691c23fc7d94ae764c0734c",
+ "reference": "33bd840935970cda6691c23fc7d94ae764c0734c",
"shasum": ""
},
"require": {
- "php": "~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
+ "php": "~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
},
"require-dev": {
"phpunit/phpunit": "^7.5.0 || ^8.5.23",
@@ -10455,22 +10832,22 @@
],
"support": {
"issues": "https://github.com/localheinz/diff/issues",
- "source": "https://github.com/localheinz/diff/tree/1.2.0"
+ "source": "https://github.com/localheinz/diff/tree/1.3.0"
},
- "time": "2024-12-04T14:16:01+00:00"
+ "time": "2025-08-30T09:44:18+00:00"
},
{
"name": "marc-mabe/php-enum",
- "version": "v4.7.1",
+ "version": "v4.7.2",
"source": {
"type": "git",
"url": "https://github.com/marc-mabe/php-enum.git",
- "reference": "7159809e5cfa041dca28e61f7f7ae58063aae8ed"
+ "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/7159809e5cfa041dca28e61f7f7ae58063aae8ed",
- "reference": "7159809e5cfa041dca28e61f7f7ae58063aae8ed",
+ "url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/bb426fcdd65c60fb3638ef741e8782508fda7eef",
+ "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef",
"shasum": ""
},
"require": {
@@ -10528,22 +10905,22 @@
],
"support": {
"issues": "https://github.com/marc-mabe/php-enum/issues",
- "source": "https://github.com/marc-mabe/php-enum/tree/v4.7.1"
+ "source": "https://github.com/marc-mabe/php-enum/tree/v4.7.2"
},
- "time": "2024-11-28T04:54:44+00:00"
+ "time": "2025-09-14T11:18:39+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.13.1",
+ "version": "1.13.4",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c"
+ "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c",
- "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
+ "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
"shasum": ""
},
"require": {
@@ -10582,7 +10959,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
},
"funding": [
{
@@ -10590,7 +10967,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-29T12:36:36+00:00"
+ "time": "2025-08-01T08:46:24+00:00"
},
{
"name": "nelmio/alice",
@@ -10690,16 +11067,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v5.5.0",
+ "version": "v5.6.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9"
+ "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
+ "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
"shasum": ""
},
"require": {
@@ -10718,7 +11095,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "5.x-dev"
}
},
"autoload": {
@@ -10742,9 +11119,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
},
- "time": "2025-05-31T08:24:38+00:00"
+ "time": "2025-08-13T20:13:15+00:00"
},
{
"name": "phar-io/manifest",
@@ -10914,16 +11291,11 @@
},
{
"name": "phpstan/phpstan",
- "version": "2.1.17",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpstan.git",
- "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053"
- },
+ "version": "2.1.31",
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053",
- "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ead89849d879fe203ce9292c6ef5e7e76f867b96",
+ "reference": "ead89849d879fe203ce9292c6ef5e7e76f867b96",
"shasum": ""
},
"require": {
@@ -10968,20 +11340,20 @@
"type": "github"
}
],
- "time": "2025-05-21T20:55:28+00:00"
+ "time": "2025-10-10T14:14:11+00:00"
},
{
"name": "phpstan/phpstan-doctrine",
- "version": "2.0.3",
+ "version": "2.0.10",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-doctrine.git",
- "reference": "4497663eb17b9d29211830df5aceaa3a4d256a35"
+ "reference": "5eaf37b87288474051469aee9f937fc9d862f330"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/4497663eb17b9d29211830df5aceaa3a4d256a35",
- "reference": "4497663eb17b9d29211830df5aceaa3a4d256a35",
+ "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/5eaf37b87288474051469aee9f937fc9d862f330",
+ "reference": "5eaf37b87288474051469aee9f937fc9d862f330",
"shasum": ""
},
"require": {
@@ -11015,7 +11387,8 @@
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^9.6.20",
"ramsey/uuid": "^4.2",
- "symfony/cache": "^5.4"
+ "symfony/cache": "^5.4",
+ "symfony/uid": "^5.4 || ^6.4 || ^7.3"
},
"type": "phpstan-extension",
"extra": {
@@ -11038,27 +11411,27 @@
"description": "Doctrine extensions for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-doctrine/issues",
- "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.3"
+ "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.10"
},
- "time": "2025-05-05T15:28:52+00:00"
+ "time": "2025-10-06T10:01:02+00:00"
},
{
"name": "phpstan/phpstan-phpunit",
- "version": "2.0.6",
+ "version": "2.0.7",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-phpunit.git",
- "reference": "6b92469f8a7995e626da3aa487099617b8dfa260"
+ "reference": "9a9b161baee88a5f5c58d816943cff354ff233dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/6b92469f8a7995e626da3aa487099617b8dfa260",
- "reference": "6b92469f8a7995e626da3aa487099617b8dfa260",
+ "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/9a9b161baee88a5f5c58d816943cff354ff233dc",
+ "reference": "9a9b161baee88a5f5c58d816943cff354ff233dc",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0",
- "phpstan/phpstan": "^2.0.4"
+ "phpstan/phpstan": "^2.1.18"
},
"conflict": {
"phpunit/phpunit": "<7.0"
@@ -11091,22 +11464,22 @@
"description": "PHPUnit extensions and rules for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-phpunit/issues",
- "source": "https://github.com/phpstan/phpstan-phpunit/tree/2.0.6"
+ "source": "https://github.com/phpstan/phpstan-phpunit/tree/2.0.7"
},
- "time": "2025-03-26T12:47:06+00:00"
+ "time": "2025-07-13T11:31:46+00:00"
},
{
"name": "phpstan/phpstan-symfony",
- "version": "2.0.6",
+ "version": "2.0.8",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-symfony.git",
- "reference": "5005288e07583546ea00b52de4a9ac412eb869d7"
+ "reference": "8820c22d785c235f69bb48da3d41e688bc8a1796"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/5005288e07583546ea00b52de4a9ac412eb869d7",
- "reference": "5005288e07583546ea00b52de4a9ac412eb869d7",
+ "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/8820c22d785c235f69bb48da3d41e688bc8a1796",
+ "reference": "8820c22d785c235f69bb48da3d41e688bc8a1796",
"shasum": ""
},
"require": {
@@ -11162,41 +11535,40 @@
"description": "Symfony Framework extensions and rules for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-symfony/issues",
- "source": "https://github.com/phpstan/phpstan-symfony/tree/2.0.6"
+ "source": "https://github.com/phpstan/phpstan-symfony/tree/2.0.8"
},
- "time": "2025-05-14T07:00:05+00:00"
+ "time": "2025-09-07T06:55:50+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "11.0.10",
+ "version": "12.4.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "1a800a7446add2d79cc6b3c01c45381810367d76"
+ "reference": "67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1a800a7446add2d79cc6b3c01c45381810367d76",
- "reference": "1a800a7446add2d79cc6b3c01c45381810367d76",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c",
+ "reference": "67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^5.4.0",
- "php": ">=8.2",
- "phpunit/php-file-iterator": "^5.1.0",
- "phpunit/php-text-template": "^4.0.1",
- "sebastian/code-unit-reverse-lookup": "^4.0.1",
- "sebastian/complexity": "^4.0.1",
- "sebastian/environment": "^7.2.0",
- "sebastian/lines-of-code": "^3.0.1",
- "sebastian/version": "^5.0.2",
+ "nikic/php-parser": "^5.6.1",
+ "php": ">=8.3",
+ "phpunit/php-file-iterator": "^6.0",
+ "phpunit/php-text-template": "^5.0",
+ "sebastian/complexity": "^5.0",
+ "sebastian/environment": "^8.0.3",
+ "sebastian/lines-of-code": "^4.0",
+ "sebastian/version": "^6.0",
"theseer/tokenizer": "^1.2.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.5.2"
+ "phpunit/phpunit": "^12.3.7"
},
"suggest": {
"ext-pcov": "PHP extension that provides line coverage",
@@ -11205,7 +11577,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "11.0.x-dev"
+ "dev-main": "12.4.x-dev"
}
},
"autoload": {
@@ -11234,7 +11606,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/show"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.4.0"
},
"funding": [
{
@@ -11254,32 +11626,32 @@
"type": "tidelift"
}
],
- "time": "2025-06-18T08:56:18+00:00"
+ "time": "2025-09-24T13:44:41+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "5.1.0",
+ "version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6"
+ "reference": "961bc913d42fe24a257bfff826a5068079ac7782"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6",
- "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782",
+ "reference": "961bc913d42fe24a257bfff826a5068079ac7782",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -11307,7 +11679,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
"security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0"
},
"funding": [
{
@@ -11315,28 +11687,28 @@
"type": "github"
}
],
- "time": "2024-08-27T05:02:59+00:00"
+ "time": "2025-02-07T04:58:37+00:00"
},
{
"name": "phpunit/php-invoker",
- "version": "5.0.1",
+ "version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2"
+ "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2",
- "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406",
+ "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
"ext-pcntl": "*",
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"suggest": {
"ext-pcntl": "*"
@@ -11344,7 +11716,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -11371,7 +11743,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-invoker/issues",
"security": "https://github.com/sebastianbergmann/php-invoker/security/policy",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1"
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0"
},
"funding": [
{
@@ -11379,32 +11751,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:07:44+00:00"
+ "time": "2025-02-07T04:58:58+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "4.0.1",
+ "version": "5.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964"
+ "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964",
- "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53",
+ "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -11431,7 +11803,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
"security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1"
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0"
},
"funding": [
{
@@ -11439,32 +11811,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:08:43+00:00"
+ "time": "2025-02-07T04:59:16+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "7.0.1",
+ "version": "8.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3"
+ "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3",
- "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
+ "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "8.0-dev"
}
},
"autoload": {
@@ -11491,7 +11863,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
"security": "https://github.com/sebastianbergmann/php-timer/security/policy",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1"
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0"
},
"funding": [
{
@@ -11499,20 +11871,20 @@
"type": "github"
}
],
- "time": "2024-07-03T05:09:35+00:00"
+ "time": "2025-02-07T04:59:38+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "11.5.25",
+ "version": "12.4.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "864ab32b3ff52058f917c5b19b3cef821e4a4f1b"
+ "reference": "fc5413a2e6d240d2f6d9317bdf7f0a24e73de194"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/864ab32b3ff52058f917c5b19b3cef821e4a4f1b",
- "reference": "864ab32b3ff52058f917c5b19b3cef821e4a4f1b",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc5413a2e6d240d2f6d9317bdf7f0a24e73de194",
+ "reference": "fc5413a2e6d240d2f6d9317bdf7f0a24e73de194",
"shasum": ""
},
"require": {
@@ -11522,37 +11894,33 @@
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.13.1",
+ "myclabs/deep-copy": "^1.13.4",
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
- "php": ">=8.2",
- "phpunit/php-code-coverage": "^11.0.10",
- "phpunit/php-file-iterator": "^5.1.0",
- "phpunit/php-invoker": "^5.0.1",
- "phpunit/php-text-template": "^4.0.1",
- "phpunit/php-timer": "^7.0.1",
- "sebastian/cli-parser": "^3.0.2",
- "sebastian/code-unit": "^3.0.3",
- "sebastian/comparator": "^6.3.1",
- "sebastian/diff": "^6.0.2",
- "sebastian/environment": "^7.2.1",
- "sebastian/exporter": "^6.3.0",
- "sebastian/global-state": "^7.0.2",
- "sebastian/object-enumerator": "^6.0.1",
- "sebastian/type": "^5.1.2",
- "sebastian/version": "^5.0.2",
+ "php": ">=8.3",
+ "phpunit/php-code-coverage": "^12.4.0",
+ "phpunit/php-file-iterator": "^6.0.0",
+ "phpunit/php-invoker": "^6.0.0",
+ "phpunit/php-text-template": "^5.0.0",
+ "phpunit/php-timer": "^8.0.0",
+ "sebastian/cli-parser": "^4.2.0",
+ "sebastian/comparator": "^7.1.3",
+ "sebastian/diff": "^7.0.0",
+ "sebastian/environment": "^8.0.3",
+ "sebastian/exporter": "^7.0.2",
+ "sebastian/global-state": "^8.0.2",
+ "sebastian/object-enumerator": "^7.0.0",
+ "sebastian/type": "^6.0.3",
+ "sebastian/version": "^6.0.0",
"staabm/side-effects-detector": "^1.0.5"
},
- "suggest": {
- "ext-soap": "To be able to generate mocks based on WSDL files"
- },
"bin": [
"phpunit"
],
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "11.5-dev"
+ "dev-main": "12.4-dev"
}
},
"autoload": {
@@ -11584,7 +11952,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.25"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/12.4.1"
},
"funding": [
{
@@ -11608,7 +11976,7 @@
"type": "tidelift"
}
],
- "time": "2025-06-27T04:36:07+00:00"
+ "time": "2025-10-09T14:08:29+00:00"
},
{
"name": "react/cache",
@@ -11907,23 +12275,23 @@
},
{
"name": "react/promise",
- "version": "v3.2.0",
+ "version": "v3.3.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
- "reference": "8a164643313c71354582dc850b42b33fa12a4b63"
+ "reference": "23444f53a813a3296c1368bb104793ce8d88f04a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63",
- "reference": "8a164643313c71354582dc850b42b33fa12a4b63",
+ "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a",
+ "reference": "23444f53a813a3296c1368bb104793ce8d88f04a",
"shasum": ""
},
"require": {
"php": ">=7.1.0"
},
"require-dev": {
- "phpstan/phpstan": "1.10.39 || 1.4.10",
+ "phpstan/phpstan": "1.12.28 || 1.4.10",
"phpunit/phpunit": "^9.6 || ^7.5"
},
"type": "library",
@@ -11968,7 +12336,7 @@
],
"support": {
"issues": "https://github.com/reactphp/promise/issues",
- "source": "https://github.com/reactphp/promise/tree/v3.2.0"
+ "source": "https://github.com/reactphp/promise/tree/v3.3.0"
},
"funding": [
{
@@ -11976,7 +12344,7 @@
"type": "open_collective"
}
],
- "time": "2024-05-24T10:39:05+00:00"
+ "time": "2025-08-19T18:57:03+00:00"
},
{
"name": "react/socket",
@@ -12138,21 +12506,21 @@
},
{
"name": "rector/rector",
- "version": "2.1.0",
+ "version": "2.2.3",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "d513dea45a94394b660e15c155d1fa27826f8e30"
+ "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/d513dea45a94394b660e15c155d1fa27826f8e30",
- "reference": "d513dea45a94394b660e15c155d1fa27826f8e30",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/d27f976a332a87b5d03553c2e6f04adbe5da034f",
+ "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0",
- "phpstan/phpstan": "^2.1.17"
+ "phpstan/phpstan": "^2.1.26"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -12186,7 +12554,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.1.0"
+ "source": "https://github.com/rectorphp/rector/tree/2.2.3"
},
"funding": [
{
@@ -12194,32 +12562,32 @@
"type": "github"
}
],
- "time": "2025-06-24T20:26:57+00:00"
+ "time": "2025-10-11T21:50:23+00:00"
},
{
"name": "sebastian/cli-parser",
- "version": "3.0.2",
+ "version": "4.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180"
+ "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180",
- "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04",
+ "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "4.2-dev"
}
},
"autoload": {
@@ -12243,152 +12611,51 @@
"support": {
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
"security": "https://github.com/sebastianbergmann/cli-parser/security/policy",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2"
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
- }
- ],
- "time": "2024-07-03T04:41:36+00:00"
- },
- {
- "name": "sebastian/code-unit",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64",
- "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^11.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the PHP code units",
- "homepage": "https://github.com/sebastianbergmann/code-unit",
- "support": {
- "issues": "https://github.com/sebastianbergmann/code-unit/issues",
- "security": "https://github.com/sebastianbergmann/code-unit/security/policy",
- "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3"
- },
- "funding": [
+ },
{
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-03-19T07:56:08+00:00"
- },
- {
- "name": "sebastian/code-unit-reverse-lookup",
- "version": "4.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "183a9b2632194febd219bb9246eee421dad8d45e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e",
- "reference": "183a9b2632194febd219bb9246eee421dad8d45e",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^11.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Looks up which function or method a line of code belongs to",
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
- "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy",
- "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1"
- },
- "funding": [
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
{
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser",
+ "type": "tidelift"
}
],
- "time": "2024-07-03T04:45:54+00:00"
+ "time": "2025-09-14T09:36:45+00:00"
},
{
"name": "sebastian/comparator",
- "version": "6.3.1",
+ "version": "7.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959"
+ "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
- "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148",
+ "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-mbstring": "*",
- "php": ">=8.2",
- "sebastian/diff": "^6.0",
- "sebastian/exporter": "^6.0"
+ "php": ">=8.3",
+ "sebastian/diff": "^7.0",
+ "sebastian/exporter": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^11.4"
+ "phpunit/phpunit": "^12.2"
},
"suggest": {
"ext-bcmath": "For comparing BcMath\\Number objects"
@@ -12396,7 +12663,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.3-dev"
+ "dev-main": "7.1-dev"
}
},
"autoload": {
@@ -12436,41 +12703,53 @@
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"security": "https://github.com/sebastianbergmann/comparator/security/policy",
- "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator",
+ "type": "tidelift"
}
],
- "time": "2025-03-07T06:57:01+00:00"
+ "time": "2025-08-20T11:27:00+00:00"
},
{
"name": "sebastian/complexity",
- "version": "4.0.1",
+ "version": "5.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "ee41d384ab1906c68852636b6de493846e13e5a0"
+ "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0",
- "reference": "ee41d384ab1906c68852636b6de493846e13e5a0",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb",
+ "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb",
"shasum": ""
},
"require": {
"nikic/php-parser": "^5.0",
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -12494,7 +12773,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues",
"security": "https://github.com/sebastianbergmann/complexity/security/policy",
- "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1"
+ "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0"
},
"funding": [
{
@@ -12502,33 +12781,33 @@
"type": "github"
}
],
- "time": "2024-07-03T04:49:50+00:00"
+ "time": "2025-02-07T04:55:25+00:00"
},
{
"name": "sebastian/diff",
- "version": "6.0.2",
+ "version": "7.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544"
+ "reference": "7ab1ea946c012266ca32390913653d844ecd085f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544",
- "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f",
+ "reference": "7ab1ea946c012266ca32390913653d844ecd085f",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0",
- "symfony/process": "^4.2 || ^5"
+ "phpunit/phpunit": "^12.0",
+ "symfony/process": "^7.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -12561,7 +12840,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
- "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2"
+ "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0"
},
"funding": [
{
@@ -12569,27 +12848,27 @@
"type": "github"
}
],
- "time": "2024-07-03T04:53:05+00:00"
+ "time": "2025-02-07T04:55:46+00:00"
},
{
"name": "sebastian/environment",
- "version": "7.2.1",
+ "version": "8.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4"
+ "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4",
- "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68",
+ "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^12.0"
},
"suggest": {
"ext-posix": "*"
@@ -12597,7 +12876,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.2-dev"
+ "dev-main": "8.0-dev"
}
},
"autoload": {
@@ -12625,7 +12904,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
"security": "https://github.com/sebastianbergmann/environment/security/policy",
- "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1"
+ "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3"
},
"funding": [
{
@@ -12645,34 +12924,34 @@
"type": "tidelift"
}
],
- "time": "2025-05-21T11:55:47+00:00"
+ "time": "2025-08-12T14:11:56+00:00"
},
{
"name": "sebastian/exporter",
- "version": "6.3.0",
+ "version": "7.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3"
+ "reference": "016951ae10980765e4e7aee491eb288c64e505b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3",
- "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7",
+ "reference": "016951ae10980765e4e7aee491eb288c64e505b7",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "php": ">=8.2",
- "sebastian/recursion-context": "^6.0"
+ "php": ">=8.3",
+ "sebastian/recursion-context": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.1-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -12715,43 +12994,55 @@
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"security": "https://github.com/sebastianbergmann/exporter/security/policy",
- "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter",
+ "type": "tidelift"
}
],
- "time": "2024-12-05T09:17:50+00:00"
+ "time": "2025-09-24T06:16:11+00:00"
},
{
"name": "sebastian/global-state",
- "version": "7.0.2",
+ "version": "8.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "3be331570a721f9a4b5917f4209773de17f747d7"
+ "reference": "ef1377171613d09edd25b7816f05be8313f9115d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7",
- "reference": "3be331570a721f9a4b5917f4209773de17f747d7",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d",
+ "reference": "ef1377171613d09edd25b7816f05be8313f9115d",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "sebastian/object-reflector": "^4.0",
- "sebastian/recursion-context": "^6.0"
+ "php": ">=8.3",
+ "sebastian/object-reflector": "^5.0",
+ "sebastian/recursion-context": "^7.0"
},
"require-dev": {
"ext-dom": "*",
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "8.0-dev"
}
},
"autoload": {
@@ -12777,41 +13068,53 @@
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
"security": "https://github.com/sebastianbergmann/global-state/security/policy",
- "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state",
+ "type": "tidelift"
}
],
- "time": "2024-07-03T04:57:36+00:00"
+ "time": "2025-08-29T11:29:25+00:00"
},
{
"name": "sebastian/lines-of-code",
- "version": "3.0.1",
+ "version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a"
+ "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a",
- "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f",
+ "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f",
"shasum": ""
},
"require": {
"nikic/php-parser": "^5.0",
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -12835,7 +13138,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
"security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1"
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0"
},
"funding": [
{
@@ -12843,34 +13146,34 @@
"type": "github"
}
],
- "time": "2024-07-03T04:58:38+00:00"
+ "time": "2025-02-07T04:57:28+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "6.0.1",
+ "version": "7.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "f5b498e631a74204185071eb41f33f38d64608aa"
+ "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa",
- "reference": "f5b498e631a74204185071eb41f33f38d64608aa",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894",
+ "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "sebastian/object-reflector": "^4.0",
- "sebastian/recursion-context": "^6.0"
+ "php": ">=8.3",
+ "sebastian/object-reflector": "^5.0",
+ "sebastian/recursion-context": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -12893,7 +13196,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
"security": "https://github.com/sebastianbergmann/object-enumerator/security/policy",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1"
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0"
},
"funding": [
{
@@ -12901,32 +13204,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:00:13+00:00"
+ "time": "2025-02-07T04:57:48+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "4.0.1",
+ "version": "5.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9"
+ "reference": "4bfa827c969c98be1e527abd576533293c634f6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9",
- "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a",
+ "reference": "4bfa827c969c98be1e527abd576533293c634f6a",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -12949,7 +13252,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
"security": "https://github.com/sebastianbergmann/object-reflector/security/policy",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1"
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0"
},
"funding": [
{
@@ -12957,32 +13260,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:01:32+00:00"
+ "time": "2025-02-07T04:58:17+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "6.0.2",
+ "version": "7.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "694d156164372abbd149a4b85ccda2e4670c0e16"
+ "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16",
- "reference": "694d156164372abbd149a4b85ccda2e4670c0e16",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c",
+ "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "7.0-dev"
}
},
"autoload": {
@@ -13013,40 +13316,52 @@
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
"security": "https://github.com/sebastianbergmann/recursion-context/security/policy",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2"
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context",
+ "type": "tidelift"
}
],
- "time": "2024-07-03T05:10:34+00:00"
+ "time": "2025-08-13T04:44:59+00:00"
},
{
"name": "sebastian/type",
- "version": "5.1.2",
+ "version": "6.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e"
+ "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/a8a7e30534b0eb0c77cd9d07e82de1a114389f5e",
- "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d",
+ "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^12.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.1-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -13070,37 +13385,49 @@
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
"security": "https://github.com/sebastianbergmann/type/security/policy",
- "source": "https://github.com/sebastianbergmann/type/tree/5.1.2"
+ "source": "https://github.com/sebastianbergmann/type/tree/6.0.3"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/type",
+ "type": "tidelift"
}
],
- "time": "2025-03-18T13:35:50+00:00"
+ "time": "2025-08-09T06:57:12+00:00"
},
{
"name": "sebastian/version",
- "version": "5.0.2",
+ "version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874"
+ "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874",
- "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c",
+ "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -13124,7 +13451,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/version/issues",
"security": "https://github.com/sebastianbergmann/version/security/policy",
- "source": "https://github.com/sebastianbergmann/version/tree/5.0.2"
+ "source": "https://github.com/sebastianbergmann/version/tree/6.0.0"
},
"funding": [
{
@@ -13132,7 +13459,7 @@
"type": "github"
}
],
- "time": "2024-10-09T05:16:32+00:00"
+ "time": "2025-02-07T05:00:38+00:00"
},
{
"name": "staabm/side-effects-detector",
@@ -13253,16 +13580,16 @@
},
{
"name": "symfony/debug-bundle",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug-bundle.git",
- "reference": "781acc90f31f5fe18915f9276890864ebbbe3da8"
+ "reference": "30f922edd53dd85238f1f26dbb68a044109f8f0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/781acc90f31f5fe18915f9276890864ebbbe3da8",
- "reference": "781acc90f31f5fe18915f9276890864ebbbe3da8",
+ "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/30f922edd53dd85238f1f26dbb68a044109f8f0e",
+ "reference": "30f922edd53dd85238f1f26dbb68a044109f8f0e",
"shasum": ""
},
"require": {
@@ -13304,7 +13631,7 @@
"description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/debug-bundle/tree/v7.3.0"
+ "source": "https://github.com/symfony/debug-bundle/tree/v7.3.4"
},
"funding": [
{
@@ -13315,25 +13642,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": "2025-05-04T13:21:13+00:00"
+ "time": "2025-09-10T12:00:31+00:00"
},
{
"name": "symfony/maker-bundle",
- "version": "v1.63.0",
+ "version": "v1.64.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
- "reference": "69478ab39bc303abfbe3293006a78b09a8512425"
+ "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/69478ab39bc303abfbe3293006a78b09a8512425",
- "reference": "69478ab39bc303abfbe3293006a78b09a8512425",
+ "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c86da84640b0586e92aee2b276ee3638ef2f425a",
+ "reference": "c86da84640b0586e92aee2b276ee3638ef2f425a",
"shasum": ""
},
"require": {
@@ -13361,6 +13692,7 @@
"symfony/http-client": "^6.4|^7.0",
"symfony/phpunit-bridge": "^6.4.1|^7.0",
"symfony/security-core": "^6.4|^7.0",
+ "symfony/security-http": "^6.4|^7.0",
"symfony/yaml": "^6.4|^7.0",
"twig/twig": "^3.0|^4.x-dev"
},
@@ -13396,7 +13728,7 @@
],
"support": {
"issues": "https://github.com/symfony/maker-bundle/issues",
- "source": "https://github.com/symfony/maker-bundle/tree/v1.63.0"
+ "source": "https://github.com/symfony/maker-bundle/tree/v1.64.0"
},
"funding": [
{
@@ -13412,11 +13744,11 @@
"type": "tidelift"
}
],
- "time": "2025-04-26T01:41:37+00:00"
+ "time": "2025-06-23T16:12:08+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
@@ -13476,7 +13808,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
},
"funding": [
{
@@ -13487,6 +13819,10 @@
"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"
@@ -13496,7 +13832,7 @@
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
@@ -13552,7 +13888,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
},
"funding": [
{
@@ -13563,6 +13899,10 @@
"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"
@@ -13572,16 +13912,16 @@
},
{
"name": "symfony/process",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af"
+ "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af",
- "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af",
+ "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b",
+ "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b",
"shasum": ""
},
"require": {
@@ -13613,7 +13953,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.3.0"
+ "source": "https://github.com/symfony/process/tree/v7.3.4"
},
"funding": [
{
@@ -13624,25 +13964,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": "2025-04-17T09:11:12+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v7.3.1",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51"
+ "reference": "f305fa4add690bb7d6b14ab61f37c3bd061a3dd7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/47c994d8f08817122ffb48bf2ea4fb97b7e00d51",
- "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/f305fa4add690bb7d6b14ab61f37c3bd061a3dd7",
+ "reference": "f305fa4add690bb7d6b14ab61f37c3bd061a3dd7",
"shasum": ""
},
"require": {
@@ -13698,7 +14042,7 @@
"dev"
],
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.1"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.4"
},
"funding": [
{
@@ -13709,12 +14053,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-06-05T09:30:41+00:00"
+ "time": "2025-09-25T08:03:55+00:00"
},
{
"name": "theofidry/alice-data-fixtures",
@@ -13866,6 +14214,83 @@
}
],
"time": "2024-03-03T12:36:25+00:00"
+ },
+ {
+ "name": "vincentlanglet/twig-cs-fixer",
+ "version": "3.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/VincentLanglet/Twig-CS-Fixer.git",
+ "reference": "ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/VincentLanglet/Twig-CS-Fixer/zipball/ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6",
+ "reference": "ee9b6a31d2c2522b2773ecf31f5d29c2e26311a6",
+ "shasum": ""
+ },
+ "require": {
+ "composer-runtime-api": "^2.0.0",
+ "ext-ctype": "*",
+ "ext-json": "*",
+ "php": ">=8.0",
+ "symfony/console": "^5.4.9 || ^6.4 || ^7.0 || ^8.0",
+ "symfony/filesystem": "^5.4 || ^6.4 || ^7.0 || ^8.0",
+ "symfony/finder": "^5.4 || ^6.4 || ^7.0 || ^8.0",
+ "symfony/string": "^5.4.42 || ^6.4.10 || ~7.0.10 || ^7.1.3 || ^8.0",
+ "twig/twig": "^3.4",
+ "webmozart/assert": "^1.10"
+ },
+ "require-dev": {
+ "composer/semver": "^3.2.0",
+ "dereuromark/composer-prefer-lowest": "^0.1.10",
+ "ergebnis/composer-normalize": "^2.29",
+ "friendsofphp/php-cs-fixer": "^3.13.0",
+ "infection/infection": "^0.26.16 || ^0.29.14",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpstan/phpstan-symfony": "^2.0",
+ "phpstan/phpstan-webmozart-assert": "^2.0",
+ "phpunit/phpunit": "^9.5.26 || ^11.5.18 || ^12.1.3",
+ "rector/rector": "^2.0.0",
+ "shipmonk/composer-dependency-analyser": "^1.6",
+ "symfony/process": "^5.4 || ^6.4 || ^7.0 || ^8.0",
+ "symfony/twig-bridge": "^5.4 || ^6.4 || ^7.0 || ^8.0",
+ "symfony/ux-twig-component": "^2.2.0",
+ "twig/cache-extra": "^3.2"
+ },
+ "bin": [
+ "bin/twig-cs-fixer"
+ ],
+ "type": "coding-standard",
+ "autoload": {
+ "psr-4": {
+ "TwigCsFixer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Vincent Langlet"
+ }
+ ],
+ "description": "A tool to automatically fix Twig code style",
+ "homepage": "https://github.com/VincentLanglet/Twig-CS-Fixer",
+ "support": {
+ "issues": "https://github.com/VincentLanglet/Twig-CS-Fixer/issues",
+ "source": "https://github.com/VincentLanglet/Twig-CS-Fixer/tree/3.10.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/VincentLanglet",
+ "type": "github"
+ }
+ ],
+ "time": "2025-09-15T11:28:55+00:00"
}
],
"aliases": [],
@@ -13874,9 +14299,10 @@
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": ">=8.3",
+ "php": ">=8.4",
"ext-ctype": "*",
- "ext-iconv": "*"
+ "ext-iconv": "*",
+ "ext-mbstring": "*"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"
diff --git a/config/packages/api_platform.yaml b/config/packages/api_platform.yaml
index 56a17a4..e6a1b80 100644
--- a/config/packages/api_platform.yaml
+++ b/config/packages/api_platform.yaml
@@ -10,7 +10,7 @@ api_platform:
enable_swagger: true
enable_swagger_ui: true
swagger:
- versions: [ 3 ]
+ versions: [3]
api_keys:
apiKey:
name: Authorization
diff --git a/config/packages/asset_mapper.yaml b/config/packages/asset_mapper.yaml
new file mode 100644
index 0000000..f7653e9
--- /dev/null
+++ b/config/packages/asset_mapper.yaml
@@ -0,0 +1,11 @@
+framework:
+ asset_mapper:
+ # The paths to make available to the asset mapper.
+ paths:
+ - assets/
+ missing_import_mode: strict
+
+when@prod:
+ framework:
+ asset_mapper:
+ missing_import_mode: warn
diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml
index 6899b72..c3eb53d 100644
--- a/config/packages/cache.yaml
+++ b/config/packages/cache.yaml
@@ -16,4 +16,4 @@ framework:
# Namespaced pools use the above "app" backend by default
#pools:
- #my.dedicated.cache: null
+ #my.dedicated.cache: null
diff --git a/config/packages/debug.yaml b/config/packages/debug.yaml
index ad874af..54a4821 100644
--- a/config/packages/debug.yaml
+++ b/config/packages/debug.yaml
@@ -2,4 +2,4 @@ when@dev:
debug:
# Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
# See the "server:dump" command to start a new server.
- dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
+ dump_destination: 'tcp://%env(VAR_DUMPER_SERVER)%'
diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml
index 2c9057c..1ad58d7 100644
--- a/config/packages/framework.yaml
+++ b/config/packages/framework.yaml
@@ -13,6 +13,14 @@ framework:
#esi: true
#fragments: true
+ http_client:
+ scoped_clients:
+ leantime.client:
+ base_uri: '%env(APP_LEANTIME_URI)%'
+ scope: '%env(APP_LEANTIME_URI)%'
+ headers:
+ x-api-key: '%env(APP_LEANTIME_API_KEY)%'
+
when@test:
framework:
test: true
diff --git a/config/packages/itkdev_openid_connect.yaml b/config/packages/itkdev_openid_connect.yaml
index 4afe5f1..854a6d3 100644
--- a/config/packages/itkdev_openid_connect.yaml
+++ b/config/packages/itkdev_openid_connect.yaml
@@ -1,31 +1,31 @@
itkdev_openid_connect:
- cache_options:
- cache_pool: 'cache.app' # Cache item pool for caching discovery document and CLI login tokens
- cli_login_options:
- route: '%env(OIDC_CLI_LOGIN_ROUTE)%' # Route for CLI login
- user_provider: 'security.user.provider.concrete.app_user_provider'
- openid_providers:
- # Define one or more providers
- # [providerKey]:
- # options:
- # metadata_url: …
- # …
- azure_az:
- options:
- metadata_url: '%env(string:AZURE_AZ_OIDC_METADATA_URL)%'
- client_id: '%env(AZURE_AZ_OIDC_CLIENT_ID)%'
- client_secret: '%env(AZURE_AZ_OIDC_CLIENT_SECRET)%'
- # Specify redirect URI
- redirect_uri: '%env(string:AZURE_AZ_OIDC_REDIRECT_URI)%'
- allow_http: '%env(bool:AZURE_AZ_OIDC_ALLOW_HTTP)%'
- # Optional: Specify leeway (seconds) to account for clock skew between provider and hosting
- # Defaults to 10
- leeway: '%env(int:AZURE_AZ_OIDC_LEEWAY)%'
+ cache_options:
+ cache_pool: 'cache.app' # Cache item pool for caching discovery document and CLI login tokens
+ cli_login_options:
+ route: '%env(OIDC_CLI_LOGIN_ROUTE)%' # Route for CLI login
+ user_provider: 'security.user.provider.concrete.app_user_provider'
+ openid_providers:
+ # Define one or more providers
+ # [providerKey]:
+ # options:
+ # metadata_url: …
+ # …
+ azure_az:
+ options:
+ metadata_url: '%env(string:AZURE_AZ_OIDC_METADATA_URL)%'
+ client_id: '%env(AZURE_AZ_OIDC_CLIENT_ID)%'
+ client_secret: '%env(AZURE_AZ_OIDC_CLIENT_SECRET)%'
+ # Specify redirect URI
+ redirect_uri: '%env(string:AZURE_AZ_OIDC_REDIRECT_URI)%'
+ allow_http: '%env(bool:AZURE_AZ_OIDC_ALLOW_HTTP)%'
+ # Optional: Specify leeway (seconds) to account for clock skew between provider and hosting
+ # Defaults to 10
+ leeway: '%env(int:AZURE_AZ_OIDC_LEEWAY)%'
when@prod:
- itkdev_openid_connect:
- openid_providers:
- azure_az:
- options:
- client_id: '%env(vault:AZURE_AZ_OIDC_CLIENT_ID)%'
- client_secret: '%env(vault:AZURE_AZ_OIDC_CLIENT_SECRET)%'
+ itkdev_openid_connect:
+ openid_providers:
+ azure_az:
+ options:
+ client_id: '%env(vault:AZURE_AZ_OIDC_CLIENT_ID)%'
+ client_secret: '%env(vault:AZURE_AZ_OIDC_CLIENT_SECRET)%'
diff --git a/config/packages/messenger.yaml b/config/packages/messenger.yaml
index 419a72f..8db527e 100644
--- a/config/packages/messenger.yaml
+++ b/config/packages/messenger.yaml
@@ -7,7 +7,7 @@ framework:
# https://symfony.com/doc/current/messenger.html#transport-configuration
sync: 'sync://'
async:
- dsn: "%env(MESSENGER_TRANSPORT_DSN)%"
+ dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
retry_strategy:
# 1, 3, 9, 27
max_retries: 4
diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml
index 9db7d8a..13ae420 100644
--- a/config/packages/monolog.yaml
+++ b/config/packages/monolog.yaml
@@ -7,9 +7,9 @@ when@dev:
handlers:
main:
type: stream
- path: "%kernel.logs_dir%/%kernel.environment%.log"
+ path: '%kernel.logs_dir%/%kernel.environment%.log'
level: debug
- channels: ["!event"]
+ channels: ['!event']
# uncomment to get logging in your browser
# you may have to allow bigger header sizes in your Web server configuration
#firephp:
@@ -21,7 +21,7 @@ when@dev:
console:
type: console
process_psr_3_messages: false
- channels: ["!event", "!doctrine", "!console"]
+ channels: ['!event', '!doctrine', '!console']
when@test:
monolog:
@@ -31,10 +31,10 @@ when@test:
action_level: error
handler: nested
excluded_http_codes: [404, 405]
- channels: ["!event"]
+ channels: ['!event']
nested:
type: stream
- path: "%kernel.logs_dir%/%kernel.environment%.log"
+ path: '%kernel.logs_dir%/%kernel.environment%.log'
level: debug
when@prod:
@@ -54,7 +54,7 @@ when@prod:
console:
type: console
process_psr_3_messages: false
- channels: ["!event", "!doctrine"]
+ channels: ['!event', '!doctrine']
deprecation:
type: stream
channels: [deprecation]
diff --git a/config/packages/security.yaml b/config/packages/security.yaml
index 67b283a..25bfb56 100644
--- a/config/packages/security.yaml
+++ b/config/packages/security.yaml
@@ -42,7 +42,7 @@ security:
access_control:
- { path: ^/api/docs, roles: PUBLIC_ACCESS }
- { path: ^/api, roles: ROLE_SERVER }
- - { path: ^/admin, roles: ROLE_ADMIN }
+ - { path: ^/admin, roles: ROLE_ADMIN }
# - { path: ^/profile, roles: ROLE_USER }
when@test:
diff --git a/config/packages/webpack_encore.yaml b/config/packages/webpack_encore.yaml
index 4c009ee..d8b3909 100644
--- a/config/packages/webpack_encore.yaml
+++ b/config/packages/webpack_encore.yaml
@@ -11,8 +11,8 @@ webpack_encore:
# https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change
# 'data-turbo-track': reload
# link_attributes:
- # Uncomment if using Turbo Drive
- # 'data-turbo-track': reload
+ # Uncomment if using Turbo Drive
+ # 'data-turbo-track': reload
# If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials')
# crossorigin: 'anonymous'
@@ -25,15 +25,14 @@ webpack_encore:
# If you have multiple builds:
# builds:
- # frontend: '%kernel.project_dir%/public/frontend/build'
+ # frontend: '%kernel.project_dir%/public/frontend/build'
- # pass the build name as the 3rd argument to the Twig functions
- # {{ encore_entry_script_tags('entry1', null, 'frontend') }}
+ # pass the build name as the 3rd argument to the Twig functions
+ # {{ encore_entry_script_tags('entry1', null, 'frontend') }}
framework:
assets:
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
-
#when@prod:
# webpack_encore:
# # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
diff --git a/config/routes.yaml b/config/routes.yaml
index 2048965..1459988 100644
--- a/config/routes.yaml
+++ b/config/routes.yaml
@@ -1,9 +1,9 @@
homepage:
- path: /
- controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction
- defaults:
- path: /admin
- permanent: false
+ path: /
+ controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction
+ defaults:
+ path: /admin
+ permanent: false
controllers:
resource:
diff --git a/config/routes/easyadmin.yaml b/config/routes/easyadmin.yaml
index a88552e..083ca15 100644
--- a/config/routes/easyadmin.yaml
+++ b/config/routes/easyadmin.yaml
@@ -1,3 +1,3 @@
easyadmin:
- resource: .
- type: easyadmin.routes
\ No newline at end of file
+ resource: .
+ type: easyadmin.routes
diff --git a/config/routes/itkdev_openid_connect.yaml b/config/routes/itkdev_openid_connect.yaml
index 2628cd9..1c60325 100644
--- a/config/routes/itkdev_openid_connect.yaml
+++ b/config/routes/itkdev_openid_connect.yaml
@@ -1,3 +1,3 @@
itkdev_openid_connect:
- resource: "@ItkDevOpenIdConnectBundle/src/Resources/config/routes.yaml"
- prefix: "/openidconnect" # Prefix for bundle routes
\ No newline at end of file
+ resource: '@ItkDevOpenIdConnectBundle/src/Resources/config/routes.yaml'
+ prefix: '/openidconnect' # Prefix for bundle routes
diff --git a/config/services.yaml b/config/services.yaml
index 8463e06..c98c423 100644
--- a/config/services.yaml
+++ b/config/services.yaml
@@ -8,7 +8,7 @@ parameters:
services:
# default configuration for services in *this* file
_defaults:
- autowire: true # Automatically injects dependencies in your services.
+ autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
# makes classes in src/ available to be used as services
@@ -25,15 +25,18 @@ services:
_instanceof:
App\Handler\DetectionResultHandlerInterface:
- tags: [ app.handler.detection_result_handler ]
+ tags: [app.handler.detection_result_handler]
App\EventListener\RemovedRelationsListener:
tags:
- -
- name: 'doctrine.event_listener'
- event: 'postFlush'
+ - name: 'doctrine.event_listener'
+ event: 'postFlush'
App\MessageHandler\ProcessDetectionResultHandler:
arguments:
$resultHandlers: !tagged_iterator app.handler.detection_result_handler
$keepResults: '%env(int:APP_KEEP_RESULTS)%'
+
+ App\Service\Leantime\LeantimeProjectUrlFactory:
+ arguments:
+ $baseUrl: '%env(string:APP_LEANTIME_URI)%'
diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml
index 4ac6fe3..ca2f4d1 100644
--- a/docker-compose.dev.yml
+++ b/docker-compose.dev.yml
@@ -1,4 +1,4 @@
-# itk-version: 3.2.1
+# itk-version: 3.2.4
services:
phpfpm:
environment:
diff --git a/docker-compose.override.yml b/docker-compose.override.yml
index 76201fa..4208ae2 100644
--- a/docker-compose.override.yml
+++ b/docker-compose.override.yml
@@ -2,8 +2,8 @@ services:
rabbit:
image: rabbitmq:4-management-alpine
networks:
- - app
- - frontend
+ - app
+ - frontend
ports:
- "15672"
environment:
diff --git a/docker-compose.redirect.yml b/docker-compose.redirect.yml
index 66f26e9..e9ba157 100644
--- a/docker-compose.redirect.yml
+++ b/docker-compose.redirect.yml
@@ -1,4 +1,4 @@
-# itk-version: 3.2.1
+# itk-version: 3.2.4
services:
nginx:
labels:
diff --git a/docker-compose.server.yml b/docker-compose.server.yml
index f93d840..44c75cd 100644
--- a/docker-compose.server.yml
+++ b/docker-compose.server.yml
@@ -1,4 +1,4 @@
-# itk-version: 3.2.1
+# itk-version: 3.2.4
networks:
frontend:
external: true
@@ -17,7 +17,6 @@ services:
environment:
- PHP_MAX_EXECUTION_TIME=30
- PHP_MEMORY_LIMIT=128M
- - COMPOSER_VERSION=2
volumes:
- .:/app
diff --git a/docker-compose.yml b/docker-compose.yml
index 88d602c..dc2ef97 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,4 +1,4 @@
-# itk-version: 3.2.1
+# itk-version: 3.2.4
networks:
frontend:
external: true
@@ -12,7 +12,13 @@ services:
networks:
- app
ports:
- - '3306'
+ - "3306"
+ healthcheck:
+ test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
+ start_period: 10s
+ interval: 10s
+ timeout: 5s
+ retries: 3
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=db
@@ -22,6 +28,7 @@ services:
phpfpm:
image: itkdev/php8.4-fpm:latest
+ user: ${COMPOSE_USER:-deploy}
networks:
- app
extra_hosts:
@@ -33,10 +40,10 @@ services:
# Depending on the setup, you may have to remove --read-envelope-from from msmtp (cf. https://marlam.de/msmtp/msmtp.html) or use SMTP to send mail
- PHP_SENDMAIL_PATH=/usr/bin/msmtp --host=mail --port=1025 --read-recipients --read-envelope-from
- DOCKER_HOST_DOMAIN=${COMPOSE_DOMAIN}
- - COMPOSER_VERSION=2
- PHP_IDE_CONFIG=serverName=localhost
depends_on:
- - mariadb
+ mariadb:
+ condition: service_healthy
volumes:
- .:/app
@@ -48,7 +55,7 @@ services:
depends_on:
- phpfpm
ports:
- - '8080'
+ - "8080"
volumes:
- ./.docker/templates:/etc/nginx/templates:ro
- .:/app
@@ -61,9 +68,9 @@ services:
- "traefik.enable=true"
- "traefik.docker.network=frontend"
- "traefik.http.routers.${COMPOSE_PROJECT_NAME}.rule=Host(`${COMPOSE_DOMAIN}`)"
-# HTTPS config - uncomment to enable redirect from :80 to :443
-# - "traefik.http.routers.${COMPOSE_PROJECT_NAME}.middlewares=redirect-to-https"
-# - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
+ # HTTPS config - uncomment to enable redirect from :80 to :443
+ # - "traefik.http.routers.${COMPOSE_PROJECT_NAME}.middlewares=redirect-to-https"
+ # - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
mail:
image: axllent/mailpit
@@ -78,3 +85,22 @@ services:
- "traefik.docker.network=frontend"
- "traefik.http.routers.${COMPOSE_PROJECT_NAME}mail.rule=Host(`mail-${COMPOSE_DOMAIN}`)"
- "traefik.http.services.${COMPOSE_PROJECT_NAME}mail.loadbalancer.server.port=8025"
+
+ # Code checks tools
+ markdownlint:
+ image: itkdev/markdownlint
+ profiles:
+ - dev
+ volumes:
+ - ./:/md
+
+ prettier:
+ # Prettier does not (yet, fcf.
+ # https://github.com/prettier/prettier/issues/15206) have an official
+ # docker image.
+ # https://hub.docker.com/r/jauderho/prettier is good candidate (cf. https://hub.docker.com/search?q=prettier&sort=updated_at&order=desc)
+ image: jauderho/prettier
+ profiles:
+ - dev
+ volumes:
+ - ./:/work
diff --git a/fixtures/oidc.yaml b/fixtures/oidc.yaml
index 3712104..26fcc88 100644
--- a/fixtures/oidc.yaml
+++ b/fixtures/oidc.yaml
@@ -1,8 +1,8 @@
# @see https://fakerphp.github.io/formatters/
App\Entity\OIDC:
- oidcservice_certificate/dev.example.com:
- domain: 'dev.example.com'
- expirationTime: <(new DateTime('+2 years'))>
- onePasswordUrl: 'https://example.com/1password'
- usageDocumentationUrl: https://example.com/example.com/README.md#oidc
- type: 'stg'
+ oidcservice_certificate/dev.example.com:
+ domain: "dev.example.com"
+ expirationTime: <(new DateTime('+2 years'))>
+ onePasswordUrl: "https://example.com/1password"
+ usageDocumentationUrl: https://example.com/example.com/README.md#oidc
+ type: "stg"
diff --git a/fixtures/server.yaml b/fixtures/server.yaml
index 8fb9bf3..c23095a 100644
--- a/fixtures/server.yaml
+++ b/fixtures/server.yaml
@@ -1,17 +1,17 @@
App\Entity\Server:
- server_{1..10}:
- # A server id is needed by App\Entity\DetectionResult::generateHash().
- id: '<(new Symfony\Component\Uid\Ulid())>'
- apiKey:
')
+ ->setTitle('
')
->setFaviconPath('img/favicon.ico')
->renderContentMaximized();
}
@@ -61,16 +70,27 @@ public function configureDashboard(): Dashboard
public function configureMenuItems(): iterable
{
yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
+
+ yield MenuItem::section('Projects');
+ yield MenuItem::linkToCrud('Projects', 'fas fa-folder', Project::class);
+ yield AutoBadgeMenuItem::linkToCrud('Cyber Security', 'fas fa-file-contract', SecurityContract::class)
+ ->setBadge($this->securityContractRepository->countExpiredContracts(), 'danger');
+ yield AutoBadgeMenuItem::linkToCrud('OIDC', 'fas fa-shield-halved', OIDC::class)
+ ->setBadge($this->oidcRepository->countExpiredCertificates(), 'danger');
+ yield AutoBadgeMenuItem::linkToCrud('Service certificates', 'fas fa-passport', ServiceCertificate::class)
+ ->setBadge($this->serviceCertificateRepository->countExpiredCertificates(), 'danger');
+
+ yield MenuItem::section('Hosting');
yield MenuItem::linkToCrud('Servers', 'fas fa-server', Server::class);
yield MenuItem::linkToCrud('Installations', 'fas fa-folder', Installation::class);
yield MenuItem::linkToCrud('Sites', 'fas fa-bookmark', Site::class);
yield MenuItem::linkToCrud('Domains', 'fas fa-link', Domain::class);
- yield MenuItem::linkToCrud('OIDC', 'fas fa-key', OIDC::class);
- yield MenuItem::linkToCrud('Service certificates', 'fas fa-lock', ServiceCertificate::class);
+
yield MenuItem::section('Dependencies');
yield MenuItem::linkToCrud('Packages', 'fas fa-cube', Package::class);
yield MenuItem::linkToCrud('Package Versions', 'fas fa-cubes', PackageVersion::class);
- yield MenuItem::linkToCrud('Advisories', 'fas fa-skull-crossbones', Advisory::class)->setBadge($this->advisoryRepository->count([]), 'dark');
+ yield AutoBadgeMenuItem::linkToCrud('Advisories', 'fas fa-skull-crossbones', Advisory::class)
+ ->setBadge($this->advisoryRepository->count([]), 'danger');
yield MenuItem::linkToCrud('Modules', 'fas fa-cube', Module::class);
yield MenuItem::linkToCrud('Modules Versions', 'fas fa-cubes', ModuleVersion::class);
yield MenuItem::linkToCrud('Docker Images', 'fas fa-cube', DockerImage::class);
@@ -95,6 +115,6 @@ public function configureCrud(): Crud
#[\Override]
public function configureAssets(): Assets
{
- return Assets::new()->addCssFile('css/admin.css');
+ return parent::configureAssets()->addAssetMapperEntry('app');
}
}
diff --git a/src/Controller/Admin/DetectionResultCrudController.php b/src/Controller/Admin/DetectionResultCrudController.php
index 5027e68..a206930 100644
--- a/src/Controller/Admin/DetectionResultCrudController.php
+++ b/src/Controller/Admin/DetectionResultCrudController.php
@@ -36,12 +36,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/DockerImageCrudController.php b/src/Controller/Admin/DockerImageCrudController.php
index 980c426..dec7b4f 100644
--- a/src/Controller/Admin/DockerImageCrudController.php
+++ b/src/Controller/Admin/DockerImageCrudController.php
@@ -32,12 +32,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/DockerImageTagCrudController.php b/src/Controller/Admin/DockerImageTagCrudController.php
index 49f7855..779e484 100644
--- a/src/Controller/Admin/DockerImageTagCrudController.php
+++ b/src/Controller/Admin/DockerImageTagCrudController.php
@@ -31,12 +31,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/DomainCrudController.php b/src/Controller/Admin/DomainCrudController.php
index 060e8ef..9387eb9 100644
--- a/src/Controller/Admin/DomainCrudController.php
+++ b/src/Controller/Admin/DomainCrudController.php
@@ -36,14 +36,9 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->add(Crud::PAGE_INDEX, $this->createExportAction())
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE)
- ;
+ ->add(Crud::PAGE_INDEX, $this->createExportAction());
}
#[\Override]
diff --git a/src/Controller/Admin/GitRepoCrudController.php b/src/Controller/Admin/GitRepoCrudController.php
index 7fa2d4e..562c8c9 100644
--- a/src/Controller/Admin/GitRepoCrudController.php
+++ b/src/Controller/Admin/GitRepoCrudController.php
@@ -35,12 +35,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/GitTagCrudController.php b/src/Controller/Admin/GitTagCrudController.php
index eceec7e..8c2d592 100644
--- a/src/Controller/Admin/GitTagCrudController.php
+++ b/src/Controller/Admin/GitTagCrudController.php
@@ -33,12 +33,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/InstallationCrudController.php b/src/Controller/Admin/InstallationCrudController.php
index e78a4cf..d36000e 100644
--- a/src/Controller/Admin/InstallationCrudController.php
+++ b/src/Controller/Admin/InstallationCrudController.php
@@ -41,13 +41,9 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->add(Crud::PAGE_INDEX, $this->createExportAction())
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->add(Crud::PAGE_INDEX, $this->createExportAction());
}
#[\Override]
diff --git a/src/Controller/Admin/ModuleCrudController.php b/src/Controller/Admin/ModuleCrudController.php
index 9cc6a73..311d478 100644
--- a/src/Controller/Admin/ModuleCrudController.php
+++ b/src/Controller/Admin/ModuleCrudController.php
@@ -31,12 +31,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/ModuleVersionCrudController.php b/src/Controller/Admin/ModuleVersionCrudController.php
index 1d3f3e5..e80ad8d 100644
--- a/src/Controller/Admin/ModuleVersionCrudController.php
+++ b/src/Controller/Admin/ModuleVersionCrudController.php
@@ -30,12 +30,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/OIDCCrudController.php b/src/Controller/Admin/OIDCCrudController.php
index 176871e..006c319 100644
--- a/src/Controller/Admin/OIDCCrudController.php
+++ b/src/Controller/Admin/OIDCCrudController.php
@@ -6,11 +6,7 @@
use App\Entity\OIDC;
use App\Repository\SiteRepository;
-use App\Trait\ExportCrudControllerTrait;
-use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
-use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
-use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
@@ -18,10 +14,8 @@
use EasyCorp\Bundle\EasyAdminBundle\Field\UrlField;
use Symfony\Component\Translation\TranslatableMessage;
-class OIDCCrudController extends AbstractCrudController
+class OIDCCrudController extends AbstractFullCrudController
{
- use ExportCrudControllerTrait;
-
public function __construct(
private readonly SiteRepository $siteRepository)
{
@@ -32,21 +26,6 @@ public static function getEntityFqcn(): string
return OIDC::class;
}
- #[\Override]
- public function configureCrud(Crud $crud): Crud
- {
- return $crud->showEntityActionsInlined();
- }
-
- #[\Override]
- public function configureActions(Actions $actions): Actions
- {
- return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->add(Crud::PAGE_INDEX, $this->createExportAction())
- ;
- }
-
#[\Override]
public function configureFields(string $pageName): iterable
{
diff --git a/src/Controller/Admin/PackageCrudController.php b/src/Controller/Admin/PackageCrudController.php
index 21fbd74..1e076b4 100644
--- a/src/Controller/Admin/PackageCrudController.php
+++ b/src/Controller/Admin/PackageCrudController.php
@@ -37,12 +37,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/PackageVersionCrudController.php b/src/Controller/Admin/PackageVersionCrudController.php
index a015c2b..d36efc4 100644
--- a/src/Controller/Admin/PackageVersionCrudController.php
+++ b/src/Controller/Admin/PackageVersionCrudController.php
@@ -36,12 +36,8 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, Action::DETAIL);
}
#[\Override]
diff --git a/src/Controller/Admin/ProjectCrudController.php b/src/Controller/Admin/ProjectCrudController.php
new file mode 100644
index 0000000..a435adf
--- /dev/null
+++ b/src/Controller/Admin/ProjectCrudController.php
@@ -0,0 +1,93 @@
+setDefaultSort(['name' => 'ASC'])
+ ->setSearchFields(['name', 'details'])
+ ->showEntityActionsInlined()
+ ->setPageTitle(Crud::PAGE_INDEX, 'Projects')
+ ->setHelp(Crud::PAGE_INDEX, 'Projects are synced from Leantime. Click on the "Sync all" button to update all projects.');
+ }
+
+ #[\Override]
+ public function configureActions(Actions $actions): Actions
+ {
+ return $actions
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
+ ->add(Crud::PAGE_INDEX, $this->createLeantimeAction())
+ ->add(Crud::PAGE_DETAIL, $this->createLeantimeAction())
+ ->add(Crud::PAGE_INDEX, Action::DETAIL)
+ ->add(Crud::PAGE_INDEX, $this->createExportAction())
+ ->add(Crud::PAGE_INDEX, $this->createUpdateAllProjectsAction());
+ }
+
+ #[\Override]
+ public function configureFields(string $pageName): iterable
+ {
+ yield VersionField::new('LeantimeId')->setLabel('id');
+ yield TextField::new('name');
+ yield TextEditorField::new('details')->formatValue(fn ($value) => strip_tags($value));
+ yield DateTimeField::new('createdAt')->hideOnIndex();
+ }
+
+ public function createLeantimeAction(?string $label = null): Action
+ {
+ return Action::new('leantime', $label ?? new TranslatableMessage('Leantime'), 'fa fa-link')
+ ->linkToUrl(function (Project $project) {
+ return $project->getLeantimeUrl();
+ });
+ }
+
+ public function createUpdateAllProjectsAction(?string $label = null): Action
+ {
+ return Action::new('update', $label ?? new TranslatableMessage('Sync all'), 'fa fa-rotate')
+ ->createAsGlobalAction()
+ ->linkToCrudAction('updateAllProjects');
+ }
+
+ public function updateAllProjects(SiteRepository $siteRepository): RedirectResponse
+ {
+ try {
+ $this->projectSyncService->syncAllProjects();
+
+ $this->addFlash('info', 'All projects have been synced.');
+ } catch (\Throwable $e) {
+ $this->addFlash('error', 'An error occurred while syncing projects. Check the log for details.');
+ }
+
+ return $this->redirectToRoute('admin_project_index');
+ }
+}
diff --git a/src/Controller/Admin/SecurityContractCrudController.php b/src/Controller/Admin/SecurityContractCrudController.php
new file mode 100644
index 0000000..c95ccad
--- /dev/null
+++ b/src/Controller/Admin/SecurityContractCrudController.php
@@ -0,0 +1,55 @@
+setDefaultSort(['project.name' => 'ASC'])
+ // ->setSearchFields(['name', 'details'])
+ ->showEntityActionsInlined()
+ ->setPageTitle(Crud::PAGE_INDEX, 'Cyber Security Contracts');
+ }
+
+ #[\Override]
+ public function configureFields(string $pageName): iterable
+ {
+ yield FormField::addFieldset('Project');
+ yield BooleanField::new('active')->renderAsSwitch(false)->setColumns(2);
+ yield AssociationField::new('project')->setColumns(10);
+
+ yield FormField::addFieldset('Links');
+ yield UrlField::new('project.leantimeUrl')->setLabel('Leantime URL')->setDisabled()->hideOnIndex()->hideWhenCreating();
+ yield UrlField::new('economicsReportUrl')->setLabel('Economics URL')->hideOnIndex()->setColumns(12);
+ yield UrlField::new('operationalContractUrl')->setLabel('Contract URL')->hideOnIndex()->setColumns(12);
+
+ yield FormField::addFieldset('Budget');
+ yield NumberField::new('monthlyPrice')->setTextAlign('right')->setColumns(6);
+ yield NumberField::new('quarterlyHours')->setTextAlign('right')->setColumns(6);
+
+ yield FormField::addFieldset('Validity');
+ yield DateField::new('validFrom')->setColumns(6);
+ yield DateField::new('validTo')->setColumns(6);
+
+ yield FormField::addFieldset('Notes');
+ yield TextareaField::new('notes')->hideOnIndex()->setColumns(12);
+ }
+}
diff --git a/src/Controller/Admin/ServerCrudController.php b/src/Controller/Admin/ServerCrudController.php
index a7bbcda..e56522d 100644
--- a/src/Controller/Admin/ServerCrudController.php
+++ b/src/Controller/Admin/ServerCrudController.php
@@ -9,16 +9,12 @@
use App\Form\Type\Admin\MariaDbVersionFilter;
use App\Form\Type\Admin\ServerTypeFilter;
use App\Form\Type\Admin\SystemFilter;
-use App\Trait\ExportCrudControllerTrait;
use App\Types\DatabaseVersionType;
use App\Types\HostingProviderType;
use App\Types\ServerTypeType;
use App\Types\SystemType;
-use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
-use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
-use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
@@ -28,10 +24,8 @@
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use Symfony\Component\HttpFoundation\RequestStack;
-class ServerCrudController extends AbstractCrudController
+class ServerCrudController extends AbstractFullCrudController
{
- use ExportCrudControllerTrait;
-
public function __construct(
private readonly RequestStack $requestStack,
) {
@@ -54,17 +48,6 @@ public function configureCrud(Crud $crud): Crud
return $crud;
}
- #[\Override]
- public function configureActions(Actions $actions): Actions
- {
- return $actions
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->add(Crud::PAGE_INDEX, $this->createExportAction())
- ;
- }
-
#[\Override]
public function configureFields(string $pageName): iterable
{
diff --git a/src/Controller/Admin/ServiceCertificateCrudController.php b/src/Controller/Admin/ServiceCertificateCrudController.php
index 8c68f7f..526dbe0 100644
--- a/src/Controller/Admin/ServiceCertificateCrudController.php
+++ b/src/Controller/Admin/ServiceCertificateCrudController.php
@@ -7,12 +7,7 @@
use App\Entity\ServiceCertificate;
use App\Form\Type\ServiceCertificate\ServiceType;
use App\Repository\SiteRepository;
-use App\Trait\ExportCrudControllerTrait;
-use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
-use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
-use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
-use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
@@ -21,12 +16,11 @@
use EasyCorp\Bundle\EasyAdminBundle\Field\UrlField;
use Symfony\Component\Translation\TranslatableMessage;
-class ServiceCertificateCrudController extends AbstractCrudController
+class ServiceCertificateCrudController extends AbstractFullCrudController
{
- use ExportCrudControllerTrait;
-
- public function __construct(private readonly SiteRepository $siteRepository)
- {
+ public function __construct(
+ private readonly SiteRepository $siteRepository,
+ ) {
}
public static function getEntityFqcn(): string
@@ -46,15 +40,6 @@ public function configureCrud(Crud $crud): Crud
->setSearchFields(['domain', 'name', 'description', 'services.type']);
}
- #[\Override]
- public function configureActions(Actions $actions): Actions
- {
- return $actions
- ->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->add(Crud::PAGE_INDEX, $this->createExportAction())
- ->remove(Crud::PAGE_INDEX, Action::DELETE);
- }
-
#[\Override]
public function configureFields(string $pageName): iterable
{
@@ -77,7 +62,7 @@ public function configureFields(string $pageName): iterable
yield TextField::new('description')->onlyOnIndex()
->setHelp(new TranslatableMessage('Tell what this certificate is used for.'))->setMaxLength(33)->stripTags();
yield UrlField::new('onePasswordUrl')
- ->setLabel(new TranslatableMessage('1Password url'));
+ ->setLabel(new TranslatableMessage('1Password url'))->hideOnIndex();
yield UrlField::new('usageDocumentationUrl')->hideOnIndex()
->setHelp(new TranslatableMessage('Tell where to find documentation on how the certificate is used on the site and how to configure the use.'));
yield DateTimeField::new('expirationTime');
@@ -93,11 +78,4 @@ public function configureFields(string $pageName): iterable
->setTemplatePath('service_certificate/services.html.twig')
;
}
-
- #[\Override]
- public function configureAssets(Assets $assets): Assets
- {
- return $assets
- ->addWebpackEncoreEntry('easyadmin');
- }
}
diff --git a/src/Controller/Admin/SiteCrudController.php b/src/Controller/Admin/SiteCrudController.php
index 3380dab..9a3af8e 100644
--- a/src/Controller/Admin/SiteCrudController.php
+++ b/src/Controller/Admin/SiteCrudController.php
@@ -44,13 +44,9 @@ public function configureCrud(Crud $crud): Crud
public function configureActions(Actions $actions): Actions
{
return $actions
+ ->disable(Action::DELETE, Action::NEW, Action::EDIT)
->add(Crud::PAGE_INDEX, Action::DETAIL)
- ->add(Crud::PAGE_INDEX, $this->createExportAction())
- ->remove(Crud::PAGE_INDEX, Action::NEW)
- ->remove(Crud::PAGE_INDEX, Action::EDIT)
- ->remove(Crud::PAGE_INDEX, Action::DELETE)
- ->remove(Crud::PAGE_DETAIL, Action::EDIT)
- ->remove(Crud::PAGE_DETAIL, Action::DELETE);
+ ->add(Crud::PAGE_INDEX, $this->createExportAction());
}
#[\Override]
diff --git a/src/EasyAdmin/Config/AutoBadgeMenuItem.php b/src/EasyAdmin/Config/AutoBadgeMenuItem.php
new file mode 100644
index 0000000..9ba8ca1
--- /dev/null
+++ b/src/EasyAdmin/Config/AutoBadgeMenuItem.php
@@ -0,0 +1,29 @@
+crudMenuItem = new CrudMenuItem($label, $icon, $entityFqcn);
+ }
+
+ /** @phpstan-ignore missingType.return, missingType.parameter, missingType.parameter */
+ public function __call($name, $arguments)
+ {
+ return $this->crudMenuItem->$name(...$arguments);
+ }
+
+ /** @phpstan-ignore missingType.return */
+ public static function __callStatic(string $name, array $arguments)
+ {
+ throw new \BadMethodCallException(sprintf('Static method %s not implemented', $name));
+ }
+
+ /** @phpstan-ignore missingType.parameter */
+ public function setBadge(/* \Stringable|string|int|float|bool|null */ $content, string $style = 'secondary', array $htmlAttributes = []): self
+ {
+ if (!is_int($content)) {
+ throw new \InvalidArgumentException('The badge content must be an integer');
+ }
+
+ if ($content > 0) {
+ $this->crudMenuItem->setBadge($content, $style, $htmlAttributes);
+ }
+
+ return $this;
+ }
+
+ public function getAsDto(): MenuItemDto
+ {
+ return $this->crudMenuItem->getAsDto();
+ }
+}
diff --git a/src/Entity/Project.php b/src/Entity/Project.php
new file mode 100644
index 0000000..a1841ed
--- /dev/null
+++ b/src/Entity/Project.php
@@ -0,0 +1,133 @@
+leantimeId = $leantimeId;
+ $this->name = $name;
+ $this->details = $details;
+ }
+
+ public function __toString(): string
+ {
+ return $this->name;
+ }
+
+ public function getName(): string
+ {
+ return $this->name;
+ }
+
+ public function setName(string $name): static
+ {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ public function getLeantimeUrl(): ?string
+ {
+ return $this->LeantimeUrl;
+ }
+
+ public function setLeantimeUrl(string $LeantimeUrl): static
+ {
+ $this->LeantimeUrl = $LeantimeUrl;
+
+ return $this;
+ }
+
+ public function getEconomicsUrl(): ?string
+ {
+ return $this->EconomicsUrl;
+ }
+
+ public function setEconomicsUrl(string $EconomicsUrl): static
+ {
+ $this->EconomicsUrl = $EconomicsUrl;
+
+ return $this;
+ }
+
+ public function getDetails(): ?string
+ {
+ return $this->details;
+ }
+
+ public function setDetails(?string $details): static
+ {
+ $this->details = $details;
+
+ return $this;
+ }
+
+ public function getLeantimeId(): ?int
+ {
+ return $this->leantimeId;
+ }
+
+ public function setLeantimeId(int $leantimeId): static
+ {
+ $this->leantimeId = $leantimeId;
+
+ return $this;
+ }
+
+ public function getLeantimeModifiedAt(): ?\DateTimeImmutable
+ {
+ return $this->leantimeModifiedAt;
+ }
+
+ public function setLeantimeModifiedAt(\DateTimeImmutable $leantimeModifiedAt): static
+ {
+ $this->leantimeModifiedAt = $leantimeModifiedAt;
+
+ return $this;
+ }
+
+ public function getSecurityContract(): ?SecurityContract
+ {
+ return $this->securityContract;
+ }
+
+ public function setSecurityContract(SecurityContract $securityContract): static
+ {
+ // set the owning side of the relation if necessary
+ if ($securityContract->getProject() !== $this) {
+ $securityContract->setProject($this);
+ }
+
+ $this->securityContract = $securityContract;
+
+ return $this;
+ }
+}
diff --git a/src/Entity/SecurityContract.php b/src/Entity/SecurityContract.php
new file mode 100644
index 0000000..97741e6
--- /dev/null
+++ b/src/Entity/SecurityContract.php
@@ -0,0 +1,152 @@
+project->getName();
+ }
+
+ public function getProject(): ?Project
+ {
+ return $this->project;
+ }
+
+ public function setProject(Project $project): static
+ {
+ $this->project = $project;
+
+ return $this;
+ }
+
+ public function getEconomicsReportUrl(): ?string
+ {
+ return $this->economicsReportUrl;
+ }
+
+ public function setEconomicsReportUrl(?string $economicsReportUrl): static
+ {
+ $this->economicsReportUrl = $economicsReportUrl;
+
+ return $this;
+ }
+
+ public function getOperationalContractUrl(): ?string
+ {
+ return $this->operationalContractUrl;
+ }
+
+ public function setOperationalContractUrl(?string $operationalContractUrl): static
+ {
+ $this->operationalContractUrl = $operationalContractUrl;
+
+ return $this;
+ }
+
+ public function getMonthlyPrice(): ?float
+ {
+ return $this->monthlyPrice;
+ }
+
+ public function setMonthlyPrice(?float $monthlyPrice): static
+ {
+ $this->monthlyPrice = $monthlyPrice;
+
+ return $this;
+ }
+
+ public function getQuarterlyHours(): ?float
+ {
+ return $this->quarterlyHours;
+ }
+
+ public function setQuarterlyHours(float $quarterlyHours): static
+ {
+ $this->quarterlyHours = $quarterlyHours;
+
+ return $this;
+ }
+
+ public function getValidFrom(): ?\DateTimeImmutable
+ {
+ return $this->validFrom;
+ }
+
+ public function setValidFrom(\DateTimeImmutable $validFrom): static
+ {
+ $this->validFrom = $validFrom;
+
+ return $this;
+ }
+
+ public function getValidTo(): ?\DateTimeImmutable
+ {
+ return $this->validTo;
+ }
+
+ public function setValidTo(\DateTimeImmutable $validTo): static
+ {
+ $this->validTo = $validTo;
+
+ return $this;
+ }
+
+ public function isActive(): ?bool
+ {
+ return $this->active;
+ }
+
+ public function setActive(bool $active): static
+ {
+ $this->active = $active;
+
+ return $this;
+ }
+
+ public function getNotes(): ?string
+ {
+ return $this->notes;
+ }
+
+ public function setNotes(string $notes): static
+ {
+ $this->notes = $notes;
+
+ return $this;
+ }
+}
diff --git a/src/Entity/Site.php b/src/Entity/Site.php
index e02fb94..08d606a 100644
--- a/src/Entity/Site.php
+++ b/src/Entity/Site.php
@@ -167,8 +167,6 @@ public function getPrimaryDomain(): ?string
* these domains the first is the primary:
* - 360.aarhuskommune.dk
* - 360.aarhuskommune.dk.srvitkphp74.itkdev.dk
- *
- * @return void
*/
private function updatePrimaryDomain(): void
{
diff --git a/src/Exception/LeantimeApiException.php b/src/Exception/LeantimeApiException.php
new file mode 100644
index 0000000..ba79156
--- /dev/null
+++ b/src/Exception/LeantimeApiException.php
@@ -0,0 +1,7 @@
+getServer();
@@ -63,9 +57,6 @@ public function handleResult(DetectionResult $detectionResult): void
}
}
- /**
- * {@inheritDoc}
- */
public function supportsType(string $type): bool
{
return DetectionType::DIRECTORY === $type;
diff --git a/src/Handler/DockerImageHandler.php b/src/Handler/DockerImageHandler.php
index 195714a..0f4cc27 100644
--- a/src/Handler/DockerImageHandler.php
+++ b/src/Handler/DockerImageHandler.php
@@ -25,13 +25,6 @@
/**
* DirectoryHandler constructor.
- *
- * @param DockerImageTagFactory $dockerImageTagFactory
- * @param ModuleVersionFactory $moduleVersionFactory
- * @param PackageVersionFactory $packageVersionFactory
- * @param AdvisoryFactory $advisoryFactory
- * @param SiteFactory $siteFactory
- * @param DomainFactory $domainFactory
*/
public function __construct(
private DockerImageTagFactory $dockerImageTagFactory,
@@ -43,9 +36,6 @@ public function __construct(
) {
}
- /**
- * {@inheritDoc}
- */
public function handleResult(DetectionResult $detectionResult): void
{
if (empty($detectionResult->getData())) {
@@ -86,7 +76,6 @@ public function handleResult(DetectionResult $detectionResult): void
}
}
- /** {@inheritDoc} */
public function supportsType(string $type): bool
{
return DetectionType::DOCKER === $type;
diff --git a/src/Handler/DrupalHandler.php b/src/Handler/DrupalHandler.php
index b789a48..33f1c14 100644
--- a/src/Handler/DrupalHandler.php
+++ b/src/Handler/DrupalHandler.php
@@ -18,10 +18,6 @@
{
/**
* DirectoryHandler constructor.
- *
- * @param InstallationFactory $installationFactory
- * @param PackageVersionFactory $packageVersionFactory
- * @param ModuleVersionFactory $moduleVersionFactory
*/
public function __construct(
private InstallationFactory $installationFactory,
@@ -30,9 +26,6 @@ public function __construct(
) {
}
- /**
- * {@inheritDoc}
- */
public function handleResult(DetectionResult $detectionResult): void
{
try {
@@ -56,7 +49,6 @@ public function handleResult(DetectionResult $detectionResult): void
}
}
- /** {@inheritDoc} */
public function supportsType(string $type): bool
{
return DetectionType::DRUPAL === $type;
diff --git a/src/Handler/GitHandler.php b/src/Handler/GitHandler.php
index 2915558..da6bdd9 100644
--- a/src/Handler/GitHandler.php
+++ b/src/Handler/GitHandler.php
@@ -16,9 +16,6 @@
{
/**
* DirectoryHandler constructor.
- *
- * @param InstallationFactory $installationFactory
- * @param GitTagFactory $gitCloneFactory
*/
public function __construct(
private InstallationFactory $installationFactory,
@@ -26,9 +23,6 @@ public function __construct(
) {
}
- /**
- * {@inheritDoc}
- */
public function handleResult(DetectionResult $detectionResult): void
{
try {
@@ -47,9 +41,6 @@ public function handleResult(DetectionResult $detectionResult): void
}
}
- /**
- * {@inheritDoc}
- */
public function supportsType(string $type): bool
{
return DetectionType::GIT === $type;
@@ -61,10 +52,6 @@ public function supportsType(string $type): bool
* The git harvester will send an empty result even for
* "fatal: not a git repository (or any parent up to mount point /)"
*
- * @param DetectionResult $result
- *
- * @return object|null
- *
* @throws \JsonException
*/
private function getData(DetectionResult $result): ?object
diff --git a/src/Handler/NginxHandler.php b/src/Handler/NginxHandler.php
index ac3c957..214c19a 100644
--- a/src/Handler/NginxHandler.php
+++ b/src/Handler/NginxHandler.php
@@ -20,10 +20,6 @@
/**
* DirectoryHandler constructor.
- *
- * @param SiteFactory $siteFactory
- * @param DomainFactory $domainFactory
- * @param ValidatorInterface $validator
*/
public function __construct(
private SiteFactory $siteFactory,
@@ -32,9 +28,6 @@ public function __construct(
) {
}
- /**
- * {@inheritDoc}
- */
public function handleResult(DetectionResult $detectionResult): void
{
try {
@@ -63,7 +56,6 @@ public function handleResult(DetectionResult $detectionResult): void
}
}
- /** {@inheritDoc} */
public function supportsType(string $type): bool
{
return DetectionType::NGINX === $type;
diff --git a/src/Handler/SymfonyHandler.php b/src/Handler/SymfonyHandler.php
index b92de3b..e33ccfc 100644
--- a/src/Handler/SymfonyHandler.php
+++ b/src/Handler/SymfonyHandler.php
@@ -17,9 +17,6 @@
{
/**
* DirectoryHandler constructor.
- *
- * @param PackageVersionFactory $packageVersionFactory
- * @param InstallationFactory $installationFactory
*/
public function __construct(
private PackageVersionFactory $packageVersionFactory,
@@ -27,9 +24,6 @@ public function __construct(
) {
}
- /**
- * {@inheritDoc}
- */
public function handleResult(DetectionResult $detectionResult): void
{
try {
@@ -57,7 +51,6 @@ public function handleResult(DetectionResult $detectionResult): void
}
}
- /** {@inheritDoc} */
public function supportsType(string $type): bool
{
return DetectionType::SYMFONY === $type;
diff --git a/src/MessageHandler/DetectionResultHandler.php b/src/MessageHandler/DetectionResultHandler.php
index c162fa7..996e79f 100644
--- a/src/MessageHandler/DetectionResultHandler.php
+++ b/src/MessageHandler/DetectionResultHandler.php
@@ -16,9 +16,6 @@
{
/**
* DetectionResultHandler constructor.
- *
- * @param Security $security
- * @param MessageBusInterface $messageBus
*/
public function __construct(
private Security $security,
diff --git a/src/Repository/DetectionResultRepository.php b/src/Repository/DetectionResultRepository.php
index a4e9b15..beaa237 100644
--- a/src/Repository/DetectionResultRepository.php
+++ b/src/Repository/DetectionResultRepository.php
@@ -26,10 +26,10 @@ public function __construct(ManagerRegistry $registry)
* Remove detection results base on last contact.
*
* @param \dateTime $date
- * The date to delete before
+ * The date to delete before
*
* @return mixed
- * Number of records removed or false
+ * Number of records removed or false
*/
public function remove(\DateTime $date): mixed
{
@@ -43,12 +43,6 @@ public function remove(\DateTime $date): mixed
/**
* Delete all except X similar detection results.
- *
- * @param DetectionResult $detectionResult
- * @param int $keep
- * @param bool $flush
- *
- * @return void
*/
public function cleanup(DetectionResult $detectionResult, int $keep = 5, bool $flush = false): void
{
@@ -78,10 +72,6 @@ public function cleanup(DetectionResult $detectionResult, int $keep = 5, bool $f
/**
* Delete all detection results for a given installation.
- *
- * @param Installation $installation
- *
- * @return void
*/
public function deleteByInstallation(Installation $installation): void
{
diff --git a/src/Repository/OIDCRepository.php b/src/Repository/OIDCRepository.php
index cfe5a56..09171d2 100644
--- a/src/Repository/OIDCRepository.php
+++ b/src/Repository/OIDCRepository.php
@@ -40,4 +40,14 @@ public function remove(OIDC $entity, bool $flush = false): void
$this->getEntityManager()->flush();
}
}
+
+ public function countExpiredCertificates(): int
+ {
+ return $this->createQueryBuilder('o')
+ ->select('COUNT(o)')
+ ->where('o.expirationTime < :now')
+ ->setParameter('now', new \DateTime())
+ ->getQuery()
+ ->getSingleScalarResult();
+ }
}
diff --git a/src/Repository/ProjectRepository.php b/src/Repository/ProjectRepository.php
new file mode 100644
index 0000000..0865b50
--- /dev/null
+++ b/src/Repository/ProjectRepository.php
@@ -0,0 +1,43 @@
+
+ */
+class ProjectRepository extends ServiceEntityRepository
+{
+ public function __construct(ManagerRegistry $registry)
+ {
+ parent::__construct($registry, Project::class);
+ }
+
+ // /**
+ // * @return Project[] Returns an array of Project objects
+ // */
+ // public function findByExampleField($value): array
+ // {
+ // return $this->createQueryBuilder('p')
+ // ->andWhere('p.exampleField = :val')
+ // ->setParameter('val', $value)
+ // ->orderBy('p.id', 'ASC')
+ // ->setMaxResults(10)
+ // ->getQuery()
+ // ->getResult()
+ // ;
+ // }
+
+ // public function findOneBySomeField($value): ?Project
+ // {
+ // return $this->createQueryBuilder('p')
+ // ->andWhere('p.exampleField = :val')
+ // ->setParameter('val', $value)
+ // ->getQuery()
+ // ->getOneOrNullResult()
+ // ;
+ // }
+}
diff --git a/src/Repository/SecurityContractRepository.php b/src/Repository/SecurityContractRepository.php
new file mode 100644
index 0000000..d33baf8
--- /dev/null
+++ b/src/Repository/SecurityContractRepository.php
@@ -0,0 +1,54 @@
+
+ */
+class SecurityContractRepository extends ServiceEntityRepository
+{
+ public function __construct(ManagerRegistry $registry)
+ {
+ parent::__construct($registry, SecurityContract::class);
+ }
+
+ // /**
+ // * @return SecurityContract[] Returns an array of SecurityContract objects
+ // */
+ // public function findByExampleField($value): array
+ // {
+ // return $this->createQueryBuilder('s')
+ // ->andWhere('s.exampleField = :val')
+ // ->setParameter('val', $value)
+ // ->orderBy('s.id', 'ASC')
+ // ->setMaxResults(10)
+ // ->getQuery()
+ // ->getResult()
+ // ;
+ // }
+
+ // public function findOneBySomeField($value): ?SecurityContract
+ // {
+ // return $this->createQueryBuilder('s')
+ // ->andWhere('s.exampleField = :val')
+ // ->setParameter('val', $value)
+ // ->getQuery()
+ // ->getOneOrNullResult()
+ // ;
+ // }
+
+ public function countExpiredContracts(): int
+ {
+ return $this->createQueryBuilder('c')
+ ->select('COUNT(c)')
+ ->where('c.validTo < :now')
+ ->andWhere('c.active = true')
+ ->setParameter('now', new \DateTime())
+ ->getQuery()
+ ->getSingleScalarResult();
+ }
+}
diff --git a/src/Repository/ServiceCertificate/ServiceRepository.php b/src/Repository/ServiceCertificate/ServiceRepository.php
index cdff2e7..bfd5391 100644
--- a/src/Repository/ServiceCertificate/ServiceRepository.php
+++ b/src/Repository/ServiceCertificate/ServiceRepository.php
@@ -44,8 +44,6 @@ public function remove(Service $entity, bool $flush = false): void
/**
* Get unique types from existing services.
- *
- * @return array
*/
public function getTypes(): array
{
diff --git a/src/Repository/ServiceCertificateRepository.php b/src/Repository/ServiceCertificateRepository.php
index 219da2b..bbd1370 100644
--- a/src/Repository/ServiceCertificateRepository.php
+++ b/src/Repository/ServiceCertificateRepository.php
@@ -40,4 +40,14 @@ public function remove(ServiceCertificate $entity, bool $flush = false): void
$this->getEntityManager()->flush();
}
}
+
+ public function countExpiredCertificates(): int
+ {
+ return $this->createQueryBuilder('c')
+ ->select('COUNT(c)')
+ ->where('c.expirationTime < :now')
+ ->setParameter('now', new \DateTime())
+ ->getQuery()
+ ->getSingleScalarResult();
+ }
}
diff --git a/src/Repository/SiteRepository.php b/src/Repository/SiteRepository.php
index 9a1ec09..5b7f841 100644
--- a/src/Repository/SiteRepository.php
+++ b/src/Repository/SiteRepository.php
@@ -37,8 +37,6 @@ public function findByRootDirAndServer(string $rootDir, Server $server): mixed
/**
* Get unique primary domains from existing sites.
- *
- * @return array
*/
public function getPrimaryDomains(): array
{
diff --git a/src/Security/ApiKeyAuthenticator.php b/src/Security/ApiKeyAuthenticator.php
index d77b9a7..8232e27 100644
--- a/src/Security/ApiKeyAuthenticator.php
+++ b/src/Security/ApiKeyAuthenticator.php
@@ -31,9 +31,6 @@ public function supports(Request $request): ?bool
&& str_starts_with((string) $request->headers->get(self::AUTH_HEADER), self::AUTH_HEADER_PREFIX);
}
- /**
- * {@inheritdoc}
- */
public function authenticate(Request $request): Passport
{
$apiKey = substr((string) $request->headers->get(self::AUTH_HEADER), strlen(self::AUTH_HEADER_PREFIX));
@@ -46,18 +43,12 @@ public function authenticate(Request $request): Passport
return new SelfValidatingPassport(new UserBadge($apiKey));
}
- /**
- * {@inheritdoc}
- */
public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response
{
// on success, let the request continue
return null;
}
- /**
- * {@inheritdoc}
- */
public function onAuthenticationFailure(Request $request, AuthenticationException $exception): ?Response
{
$data = [
diff --git a/src/Security/AzureOIDCAuthenticator.php b/src/Security/AzureOIDCAuthenticator.php
index c118bdc..459757d 100644
--- a/src/Security/AzureOIDCAuthenticator.php
+++ b/src/Security/AzureOIDCAuthenticator.php
@@ -28,10 +28,6 @@ class AzureOIDCAuthenticator extends OpenIdLoginAuthenticator
/**
* AzureOIDCAuthenticator constructor.
- *
- * @param EntityManagerInterface $entityManager
- * @param UrlGeneratorInterface $router
- * @param OpenIdConfigurationProviderManager $providerManager
*/
public function __construct(
private readonly EntityManagerInterface $entityManager,
@@ -41,7 +37,6 @@ public function __construct(
parent::__construct($providerManager);
}
- /** {@inheritDoc} */
public function authenticate(Request $request): Passport
{
try {
@@ -73,7 +68,6 @@ public function authenticate(Request $request): Passport
}
}
- /** {@inheritDoc} */
public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response
{
$targetUrl = $this->getTargetPath($request->getSession(), $firewallName) ?? $this->router->generate('admin');
@@ -81,7 +75,6 @@ public function onAuthenticationSuccess(Request $request, TokenInterface $token,
return new RedirectResponse($targetUrl);
}
- /** {@inheritDoc} */
public function start(Request $request, ?AuthenticationException $authException = null): Response
{
return new RedirectResponse($this->router->generate('itkdev_openid_connect_login', [
diff --git a/src/Service/DomainFactory.php b/src/Service/DomainFactory.php
index 341d2d3..6c06e12 100644
--- a/src/Service/DomainFactory.php
+++ b/src/Service/DomainFactory.php
@@ -23,10 +23,6 @@ public function __construct(
}
/**
- * @param string $addressList
- * @param Site $site
- * @param DetectionResult $detectionResult
- *
* @return Collection
{{ field.formattedValue }}
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/templates/EasyAdminBundle/Fields/config_file_path.html.twig b/templates/EasyAdminBundle/Fields/config_file_path.html.twig
index 2639f2c..da9307a 100644
--- a/templates/EasyAdminBundle/Fields/config_file_path.html.twig
+++ b/templates/EasyAdminBundle/Fields/config_file_path.html.twig
@@ -4,5 +4,5 @@
{% if ea.crud.currentAction == 'detail' %}
{{ field.formattedValue }}
{% else %}
- {{ field.formattedValue | replace({'/etc/nginx/sites-enabled/': './'}) }}
-{% endif %}
\ No newline at end of file
+ {{ field.formattedValue|replace({'/etc/nginx/sites-enabled/': './'}) }}
+{% endif %}
diff --git a/templates/EasyAdminBundle/Fields/db_version.html.twig b/templates/EasyAdminBundle/Fields/db_version.html.twig
index 567ae8a..c192aeb 100644
--- a/templates/EasyAdminBundle/Fields/db_version.html.twig
+++ b/templates/EasyAdminBundle/Fields/db_version.html.twig
@@ -2,7 +2,7 @@
{# @var field \EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto #}
{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #}
{% if field.formattedValue is null %}
- {{ 'label.null'|trans(domain = 'EasyAdminBundle') }}
+ {{ 'label.null'|trans(domain: 'EasyAdminBundle') }}
{% else %}
{{ field.formattedValue }}
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/templates/EasyAdminBundle/Fields/domain.html.twig b/templates/EasyAdminBundle/Fields/domain.html.twig
index eba0e51..3dc99f1 100644
--- a/templates/EasyAdminBundle/Fields/domain.html.twig
+++ b/templates/EasyAdminBundle/Fields/domain.html.twig
@@ -9,4 +9,4 @@
{{ field.value }}
{% else %}
{{ field.formattedValue }}
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/templates/EasyAdminBundle/Fields/eol.html.twig b/templates/EasyAdminBundle/Fields/eol.html.twig
index 6e1f433..9acd5bd 100644
--- a/templates/EasyAdminBundle/Fields/eol.html.twig
+++ b/templates/EasyAdminBundle/Fields/eol.html.twig
@@ -2,7 +2,7 @@
{# @var field \EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto #}
{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #}
-{% set slicedDate = field.formattedValue | slice(0, 7) %}
+{% set slicedDate = field.formattedValue|slice(0, 7) %}
{% if ea.crud.currentAction == 'detail' %}
{% set outputValue = field.formattedValue %}
{% else %}
diff --git a/templates/EasyAdminBundle/Fields/hosting_provider.html.twig b/templates/EasyAdminBundle/Fields/hosting_provider.html.twig
index ad1e247..cc1d7ab 100644
--- a/templates/EasyAdminBundle/Fields/hosting_provider.html.twig
+++ b/templates/EasyAdminBundle/Fields/hosting_provider.html.twig
@@ -3,11 +3,11 @@
{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #}
{% if field.formattedValue is empty %}
?
-{% elseif field.formattedValue == constant('App\\Types\\HostingProviderType::AZURE') %}
+{% elseif field.formattedValue == constant('App\\Types\\HostingProviderType::AZURE') %}
{{ field.formattedValue }}
-{% elseif field.formattedValue == constant('App\\Types\\HostingProviderType::IT_RELATION') %}
+{% elseif field.formattedValue == constant('App\\Types\\HostingProviderType::IT_RELATION') %}
{{ field.formattedValue }}
-{% elseif field.formattedValue == constant('App\\Types\\HostingProviderType::DBC') %}
+{% elseif field.formattedValue == constant('App\\Types\\HostingProviderType::DBC') %}
{{ field.formattedValue }}
{% else %}
{{ field.formattedValue }}
diff --git a/templates/EasyAdminBundle/Fields/root_dir.html.twig b/templates/EasyAdminBundle/Fields/root_dir.html.twig
index 93d3677..c31765c 100644
--- a/templates/EasyAdminBundle/Fields/root_dir.html.twig
+++ b/templates/EasyAdminBundle/Fields/root_dir.html.twig
@@ -7,9 +7,9 @@
{% if field.formattedValue starts with '/data/www/' %}
- {{ field.formattedValue | replace({'/data/www/': './'}) }}
+ {{ field.formattedValue|replace({'/data/www/': './'}) }}
{% elseif field.formattedValue starts with '/home/www/' %}
- {{ field.formattedValue | replace({'/home/www/': './'}) }}
+ {{ field.formattedValue|replace({'/home/www/': './'}) }}
{% else %}
{{ field.formattedValue }}
{% endif %}
diff --git a/templates/EasyAdminBundle/Fields/server_type.html.twig b/templates/EasyAdminBundle/Fields/server_type.html.twig
index a6eb2ee..52369c6 100644
--- a/templates/EasyAdminBundle/Fields/server_type.html.twig
+++ b/templates/EasyAdminBundle/Fields/server_type.html.twig
@@ -11,4 +11,4 @@
{{ field.formattedValue }}
{% else %}
{{ field.formattedValue }}
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/templates/EasyAdminBundle/Fields/site.html.twig b/templates/EasyAdminBundle/Fields/site.html.twig
index 2c2fc21..6bc1a58 100644
--- a/templates/EasyAdminBundle/Fields/site.html.twig
+++ b/templates/EasyAdminBundle/Fields/site.html.twig
@@ -1,9 +1,9 @@
{# @var ea \EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext #}
{# @var field \EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto #}
{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #}
-{% if field.formattedValue == constant('App\\Types\\SiteType::NGINX') %}
+{% if field.formattedValue == constant('App\\Types\\SiteType::NGINX') %}
{{ field.formattedValue }}
-{% elseif field.formattedValue == constant('App\\Types\\SiteType::DOCKER') %}
+{% elseif field.formattedValue == constant('App\\Types\\SiteType::DOCKER') %}
{{ field.formattedValue }}
{% else %}
{{ field.formattedValue }}
diff --git a/templates/EasyAdminBundle/Fields/sources.html.twig b/templates/EasyAdminBundle/Fields/sources.html.twig
index 5ae9bec..a4ba5ad 100644
--- a/templates/EasyAdminBundle/Fields/sources.html.twig
+++ b/templates/EasyAdminBundle/Fields/sources.html.twig
@@ -4,7 +4,7 @@
{% if ea.crud.currentAction == 'detail' %}
{% for item in field.value %}
-{# - {{ item }}
#}
+{# - {{ item }}
#}
- {{ item }}
{% endfor %}
diff --git a/templates/EasyAdminBundle/Fields/ssh_link.html.twig b/templates/EasyAdminBundle/Fields/ssh_link.html.twig
index 0aaf499..11e692b 100644
--- a/templates/EasyAdminBundle/Fields/ssh_link.html.twig
+++ b/templates/EasyAdminBundle/Fields/ssh_link.html.twig
@@ -10,4 +10,4 @@
-
\ No newline at end of file
+
diff --git a/templates/EasyAdminBundle/Fields/text_mono.html.twig b/templates/EasyAdminBundle/Fields/text_mono.html.twig
index 20ddb24..dab826d 100644
--- a/templates/EasyAdminBundle/Fields/text_mono.html.twig
+++ b/templates/EasyAdminBundle/Fields/text_mono.html.twig
@@ -2,7 +2,7 @@
{# @var field \EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto #}
{# @var entity \EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto #}
{% if field.formattedValue is null %}
- {{ 'label.null'|trans(domain = 'EasyAdminBundle') }}
+ {{ 'label.null'|trans(domain: 'EasyAdminBundle') }}
{% else %}
{{ field.formattedValue }}
-{% endif %}
\ No newline at end of file
+{% endif %}
diff --git a/templates/admin/domain.html.twig b/templates/admin/domain.html.twig
index 1e63970..e9cc5a4 100644
--- a/templates/admin/domain.html.twig
+++ b/templates/admin/domain.html.twig
@@ -6,7 +6,7 @@
.set('filters', {
primaryDomain: {
comparison: '=',
- value: field.value
- }
+ value: field.value,
+ },
}) %}
{{ field.value }}
diff --git a/templates/base.html.twig b/templates/base.html.twig
index d4f83f7..a4f2bfe 100644
--- a/templates/base.html.twig
+++ b/templates/base.html.twig
@@ -10,6 +10,7 @@
{% endblock %}
{% block javascripts %}
+ {% block importmap %}{{ importmap('app') }}{% endblock %}
{{ encore_entry_script_tags('app') }}
{% endblock %}
diff --git a/templates/bundles/EasyAdminBundle/crud/detail.html.twig b/templates/bundles/EasyAdminBundle/crud/detail.html.twig
new file mode 100644
index 0000000..9596b80
--- /dev/null
+++ b/templates/bundles/EasyAdminBundle/crud/detail.html.twig
@@ -0,0 +1,40 @@
+{% extends '@!EasyAdmin/crud/detail.html.twig' %}
+
+{% block main %}
+ {{ parent() }}
+
+
+
+{% endblock %}
diff --git a/templates/bundles/EasyAdminBundle/crud/field/association.html.twig b/templates/bundles/EasyAdminBundle/crud/field/association.html.twig
index 4ec629d..8bd21aa 100644
--- a/templates/bundles/EasyAdminBundle/crud/field/association.html.twig
+++ b/templates/bundles/EasyAdminBundle/crud/field/association.html.twig
@@ -4,8 +4,8 @@
{% if 'toMany' == field.customOptions.get('associationType') %}
{% if field.value.count == 0 %}
None
- {% elseif not has_display(field.value[0]) and ea.crud.currentAction != 'detail'%}
- {{ field.value | length }}
+ {% elseif not has_display(field.value[0]) and ea.crud.currentAction != 'detail' %}
+ {{ field.value|length }}
{% else %}
{% for value in field.value %}
{% if ea.crud.currentAction == 'detail' %}