diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8d891be0a..a99e1512e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,133 +1,495 @@ name: Docker Image CI Release + on: - push: - branches: - - main - - development - - version-* - - feature-* + push: + branches: + - main + - development + - version-* + - feature-* + pull_request: + branches: + - main + - development + - version-* + - feature-* jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - uses: actions/setup-node@v1 - - name: Default Environment Variables - run: - echo "https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables"; - echo "GITHUB_WORKFLOW is $GITHUB_WORKFLOW"; - echo "GITHUB_WORKFLOW_REF is $GITHUB_WORKFLOW_REF"; - echo "GITHUB_RUN_ATTEMPT is $GITHUB_RUN_ATTEMPT"; - echo "GITHUB_REF is $GITHUB_REF"; - echo "GITHUB_REF_NAME is $GITHUB_REF_NAME"; - echo "GITHUB_REF_PROTECTED is $GITHUB_REF_PROTECTED"; - - name: Export release code - if: (success() || failure()) - id: releasecode #version number in a more comprehensible format: 0.1.YearMonthDay in UTC - run: | - export VERSION=$(grep APP_VERSION= .env | cut -d '=' -f2) - export RELEASE=$VERSION.$(date --utc +%y%m%d) - echo "RELEASE=$RELEASE" >> $GITHUB_ENV - - name: Create vendor folder - run: | - mkdir api/vendor - chmod +777 api/vendor - chmod +777 -R api/public - - name: Setting APP_NAME - run: | - export NAME=$(grep APP_NAME= .env | cut -d '=' -f2) - echo "APP_NAME=$NAME" >> $GITHUB_ENV - - name: Print app name - run: echo "APP_NAME = $APP_NAME" - - name: Setting APP_ENV to dev - run: | - echo "APP_ENV=dev">> $GITHUB_ENV - echo "set APP_ENV to dev, see Print definitive APP_ENV" - - name: Setting APP_ENV to prod - if: contains( github.ref, 'main' ) - run: | - echo "APP_ENV=prod">> $GITHUB_ENV - echo "settin APP_ENV to prod, see Print definitive APP_ENV" - - name: Setting APP_ENV to version or feature - if: contains( github.ref, 'version-' ) || contains( github.ref, 'feature-') - run: | - GENERAL_TAG=$GITHUB_REF_NAME - export GENERAL_TAG=${GENERAL_TAG//-/} - echo "APP_ENV=$GENERAL_TAG">> $GITHUB_ENV - echo "setting APP_ENV to $GENERAL_TAG, see Print definitive APP_ENV" - - name: Print definitive APP_ENV - run: echo "APP_ENV is now $APP_ENV" - - name: Build the Docker image - run: docker-compose build --build-arg APP_ENV=$APP_ENV --build-arg APP_BUILD_ALL_FIXTURES=true - - name: Run the docker image - run: docker-compose up -d - - name: Taking some sleep (for containers to come up) - run: sleep 120 - - name: Check if all containers are running - run: docker ps - - name: Dumping the logs - run: docker-compose logs - - name: Database Update - run: docker-compose exec -T php bin/console doctrine:schema:update --force - - if: (github.ref == 'refs/heads/main') - name: Add docker tag latest - run: | - images=$(docker-compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) - for image in $images - do - docker tag "${image}":${APP_ENV} "${image}":"latest" - done - echo 'IMAGES=$images' >> $GITHUB_ENV - - name: Add docker tags - run: | - images=$(docker-compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) - for image in $images - do - docker tag "${image}":${APP_ENV} "${image}":"$GITHUB_REF_NAME.$RELEASE" - done - echo 'IMAGES=$images' >> $GITHUB_ENV - - name: Show all images - run: docker images - - name: Login to Container Registry - id: containerregistry-login - run: | - if [ "${{ secrets.GITHUB_TOKEN }}" != "" ]; then - echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $(cut -d'/' -f1 <<< $GITHUB_REPOSITORY) --password-stdin - echo "##[set-output name=success;]true" - else - echo "##[set-output name=success;]false" - fi - - if: steps.containerregistry-login.outputs.success == 'true' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/development' || contains(github.ref, 'version-' ) || contains( github.ref, 'feature-')) - name: Push to Container Registry - run: docker-compose push + Build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + - name: Default Environment Variables + run: + export NAME=$(grep CONTAINER_PROJECT_NAME= .env | cut -d '=' -f2); + export REGISTRY=$(grep CONTAINER_REGISTRY_BASE= .env | cut -d '=' -f2); + echo "https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables"; + echo "GITHUB_WORKFLOW is $GITHUB_WORKFLOW"; + echo "GITHUB_WORKFLOW_REF is $GITHUB_WORKFLOW_REF"; + echo "GITHUB_RUN_ATTEMPT is $GITHUB_RUN_ATTEMPT"; + echo "GITHUB_REF is $GITHUB_REF"; + echo "GITHUB_REF_NAME is $GITHUB_REF_NAME"; + echo "GITHUB_REF_PROTECTED is $GITHUB_REF_PROTECTED"; + echo "APP_NAME=$NAME" >> $GITHUB_ENV; + export VERSION=$(grep APP_VERSION= .env | cut -d '=' -f2); + export RELEASE=$VERSION.$(date --utc +%y%m%d); + echo "RELEASE=$RELEASE" >> $GITHUB_ENV; + echo "REGISTRY_BASE=$REGISTRY" >> $GITHUB_ENV; + - name: Create vendor folder + run: | + mkdir api/vendor + chmod +777 api/vendor + chmod +777 -R api/public + - name: Setting APP_NAME + run: | + export NAME=$(grep APP_NAME= .env | cut -d '=' -f2) + echo "APP_NAME=$NAME" >> $GITHUB_ENV + - name: Print app name + run: echo "APP_NAME = $APP_NAME" + - name: Setting APP_ENV to dev + run: | + echo "APP_ENV=dev">> $GITHUB_ENV + echo "set APP_ENV to dev, see Print definitive APP_ENV" + - name: Setting APP_ENV to prod + if: contains( github.ref, 'main' ) + run: | + echo "APP_ENV=prod">> $GITHUB_ENV + echo "settin APP_ENV to prod, see Print definitive APP_ENV" + - name: Setting APP_ENV to version or feature + if: contains( github.ref, 'version-' ) || contains( github.ref, 'feature-') + run: | + GENERAL_TAG=$GITHUB_REF_NAME + export GENERAL_TAG=${GENERAL_TAG//-/} + echo "APP_ENV=$GENERAL_TAG">> $GITHUB_ENV + echo "setting APP_ENV to $GENERAL_TAG, see Print definitive APP_ENV" + - name: Print definitive APP_ENV + run: echo "APP_ENV is now $APP_ENV" + - name: Build Docker Image + run: docker-compose build --build-arg APP_ENV=$APP_ENV + - name: Run docker image + run: docker compose up -d + - name: Taking some sleep (for containers to come up) + run: sleep 10 + - name: Check if all containers are running + run: docker ps + - name: Dumping the logs + run: docker-compose logs + - name: Add docker tags + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/development' + run: | + images=$(docker-compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) + for image in $images + do + docker tag "${image}":${APP_ENV} "${image}":"$GITHUB_REF_NAME_$RELEASE" + done + echo 'IMAGES=$images' >> $GITHUB_ENV + - name: Show all images + run: docker images + + # Lets save the images + - name: Create PHP Artifact + run: docker save -o php.tar "${REGISTRY_BASE}/${APP_NAME}"-php + - name: Upload PHP artifact + uses: actions/upload-artifact@v2 + with: + name: php.tar + path: php.tar + - name: Create NGINX Artifact + run: docker save -o nginx.tar ghcr.io/conductionnl/commonground-gateway-nginx + - name: Upload NGINX artifact + uses: actions/upload-artifact@v2 + with: + name: nginx.tar + path: nginx.tar + - name: Create postgres Artifact + run: docker save -o postgres.tar postgres + Dependency-check: + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: php.tar + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: nginx.tar + - name: Load Docker images from previous workflows + run: docker load --input php.tar && docker load --input nginx.tar + - name: Default Environment Variables + run: + export NAME=$(grep CONTAINER_PROJECT_NAME= .env | cut -d '=' -f2); + export REGISTRY=$(grep CONTAINER_REGISTRY_BASE= .env | cut -d '=' -f2); + echo "https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables"; + echo "GITHUB_WORKFLOW is $GITHUB_WORKFLOW"; + echo "GITHUB_WORKFLOW_REF is $GITHUB_WORKFLOW_REF"; + echo "GITHUB_RUN_ATTEMPT is $GITHUB_RUN_ATTEMPT"; + echo "GITHUB_REF is $GITHUB_REF"; + echo "GITHUB_REF_NAME is $GITHUB_REF_NAME"; + echo "GITHUB_REF_PROTECTED is $GITHUB_REF_PROTECTED"; + echo "APP_NAME=$NAME" >> $GITHUB_ENV; + echo "APP_ENV=prod">> $GITHUB_ENV; + export VERSION=$(grep APP_VERSION= .env | cut -d '=' -f2); + export RELEASE=$VERSION.$(date --utc +%y%m%d); + echo "RELEASE=$RELEASE" >> $GITHUB_ENV; + echo "REGISTRY_BASE=$REGISTRY" >> $GITHUB_ENV; + - name: Create vendor folder + run: | + mkdir api/vendor + chmod +777 api/vendor + chmod +777 -R api/public + - name: Print app name + run: echo "APP_NAME = $APP_NAME" + - name: Setting APP_ENV to dev + run: | + echo "APP_ENV=dev">> $GITHUB_ENV + echo "set APP_ENV to dev, see Print definitive APP_ENV" + - name: Setting APP_ENV to prod + if: contains( github.ref, 'main' ) + run: | + echo "APP_ENV=prod">> $GITHUB_ENV + echo "settin APP_ENV to prod, see Print definitive APP_ENV" + - name: Setting APP_ENV to version or feature + if: contains( github.ref, 'version-' ) || contains( github.ref, 'feature-') + run: | + GENERAL_TAG=$GITHUB_REF_NAME + export GENERAL_TAG=${GENERAL_TAG//-/} + echo "APP_ENV=$GENERAL_TAG">> $GITHUB_ENV + echo "setting APP_ENV to $GENERAL_TAG, see Print definitive APP_ENV" + - name: Print definitive APP_ENV + run: echo "APP_ENV is now $APP_ENV" + - name: Show all images + run: docker images + - name: Up the images + run: docker compose up -d + - name: Wait for the containers to run + run: sleep 20 + - name: Dump logs + run: docker compose logs + - name: Check images with Composer Audit + run: docker compose exec php composer audit + Unit: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: php.tar + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: nginx.tar + - name: Default Environment Variables + run: + export NAME=$(grep CONTAINER_PROJECT_NAME= .env | cut -d '=' -f2); + export REGISTRY=$(grep CONTAINER_REGISTRY_BASE= .env | cut -d '=' -f2); + echo "https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables"; + echo "GITHUB_WORKFLOW is $GITHUB_WORKFLOW"; + echo "GITHUB_WORKFLOW_REF is $GITHUB_WORKFLOW_REF"; + echo "GITHUB_RUN_ATTEMPT is $GITHUB_RUN_ATTEMPT"; + echo "GITHUB_REF is $GITHUB_REF"; + echo "GITHUB_REF_NAME is $GITHUB_REF_NAME"; + echo "GITHUB_REF_PROTECTED is $GITHUB_REF_PROTECTED"; + echo "APP_NAME=$NAME" >> $GITHUB_ENV; + echo "APP_ENV=prod">> $GITHUB_ENV; + export VERSION=$(grep APP_VERSION= .env | cut -d '=' -f2); + export RELEASE=$VERSION.$(date --utc +%y%m%d); + echo "RELEASE=$RELEASE" >> $GITHUB_ENV; + echo "REGISTRY_BASE=$REGISTRY" >> $GITHUB_ENV; + - name: Create vendor folder + run: | + mkdir api/vendor + chmod +777 api/vendor + chmod +777 -R api/public + - name: Setting APP_ENV to dev + run: | + echo "APP_ENV=dev">> $GITHUB_ENV + echo "set APP_ENV to dev, see Print definitive APP_ENV" + - name: Setting APP_ENV to prod + if: contains( github.ref, 'main' ) + run: | + echo "APP_ENV=prod">> $GITHUB_ENV + echo "settin APP_ENV to prod, see Print definitive APP_ENV" + - name: Setting APP_ENV to version or feature + if: contains( github.ref, 'version-' ) || contains( github.ref, 'feature-') + run: | + GENERAL_TAG=$GITHUB_REF_NAME + export GENERAL_TAG=${GENERAL_TAG//-/} + echo "APP_ENV=$GENERAL_TAG">> $GITHUB_ENV + echo "setting APP_ENV to $GENERAL_TAG, see Print definitive APP_ENV" + - name: Print definitive APP_ENV + run: echo "APP_ENV is now $APP_ENV" + - name: Load Docker images from previous workflows + run: docker load --input php.tar && docker load --input nginx.tar + - name: Show all images + run: docker images + - name: Up the images + run: docker compose up -d + - name: Run PHPUnit + run: docker-compose exec -T php bin/phpunit + Fossa: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: php.tar + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: nginx.tar + - name: Load Docker images from previous workflows + run: docker load --input php.tar && docker load --input nginx.tar + - name: Show all images + run: docker images + - name: Up the images + run: docker compose up -d + - name: Run Fossa checks + uses: fossas/fossa-action@main # Use a specific version if locking is preferred + with: + api-key: ${{secrets.fossaApiKey}} + container: php + debug: true + - name: Upload results as artifact + uses: actions/upload-artifact@v3 + with: + name: 'fossa-results' + path: ./fossa.debug.json.gz + Database: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: php.tar + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: nginx.tar + - name: Load Docker images from previous workflows + run: docker load --input php.tar && docker load --input nginx.tar + - name: Default Environment Variables + run: + export NAME=$(grep CONTAINER_PROJECT_NAME= .env | cut -d '=' -f2); + export REGISTRY=$(grep CONTAINER_REGISTRY_BASE= .env | cut -d '=' -f2); + echo "https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables"; + echo "GITHUB_WORKFLOW is $GITHUB_WORKFLOW"; + echo "GITHUB_WORKFLOW_REF is $GITHUB_WORKFLOW_REF"; + echo "GITHUB_RUN_ATTEMPT is $GITHUB_RUN_ATTEMPT"; + echo "GITHUB_REF is $GITHUB_REF"; + echo "GITHUB_REF_NAME is $GITHUB_REF_NAME"; + echo "GITHUB_REF_PROTECTED is $GITHUB_REF_PROTECTED"; + echo "APP_NAME=$NAME" >> $GITHUB_ENV; + echo "APP_ENV=prod">> $GITHUB_ENV; + export VERSION=$(grep APP_VERSION= .env | cut -d '=' -f2); + export RELEASE=$VERSION.$(date --utc +%y%m%d); + echo "RELEASE=$RELEASE" >> $GITHUB_ENV; + echo "REGISTRY_BASE=$REGISTRY" >> $GITHUB_ENV; + - name: Create vendor folder + run: | + mkdir api/vendor + chmod +777 api/vendor + chmod +777 -R api/public + - name: Setting APP_ENV to dev + run: | + echo "APP_ENV=dev">> $GITHUB_ENV + echo "set APP_ENV to dev, see Print definitive APP_ENV" + - name: Setting APP_ENV to prod + if: contains( github.ref, 'main' ) + run: | + echo "APP_ENV=prod">> $GITHUB_ENV + echo "settin APP_ENV to prod, see Print definitive APP_ENV" + - name: Setting APP_ENV to version or feature + if: contains( github.ref, 'version-' ) || contains( github.ref, 'feature-') + run: | + GENERAL_TAG=$GITHUB_REF_NAME + export GENERAL_TAG=${GENERAL_TAG//-/} + echo "APP_ENV=$GENERAL_TAG">> $GITHUB_ENV + echo "setting APP_ENV to $GENERAL_TAG, see Print definitive APP_ENV" + - name: Print definitive APP_ENV + run: echo "APP_ENV is now $APP_ENV" + - name: Show all images + run: docker images + - name: Up the images + run: docker compose up -d + - name: Wait for the containers to run + run: sleep 20 + - name: Dump logs + run: docker compose logs + - name: Database Update + run: docker-compose exec -T php bin/console doctrine:schema:update --force + Snyk: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Run Snyk to check for vulnerabilities + uses: snyk/actions/node@master + continue-on-error: true + env: + SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} + Docker-Scout: + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: php.tar + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: nginx.tar + - name: Default Environment Variables + run: + export NAME=$(grep CONTAINER_PROJECT_NAME= .env | cut -d '=' -f2); + export REGISTRY=$(grep CONTAINER_REGISTRY_BASE= .env | cut -d '=' -f2); + echo "https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables"; + echo "GITHUB_WORKFLOW is $GITHUB_WORKFLOW"; + echo "GITHUB_WORKFLOW_REF is $GITHUB_WORKFLOW_REF"; + echo "GITHUB_RUN_ATTEMPT is $GITHUB_RUN_ATTEMPT"; + echo "GITHUB_REF is $GITHUB_REF"; + echo "GITHUB_REF_NAME is $GITHUB_REF_NAME"; + echo "GITHUB_REF_PROTECTED is $GITHUB_REF_PROTECTED"; + echo "APP_NAME=$NAME" >> $GITHUB_ENV; + echo "APP_ENV=prod">> $GITHUB_ENV; + export VERSION=$(grep APP_VERSION= .env | cut -d '=' -f2); + export RELEASE=$VERSION.$(date --utc +%y%m%d); + echo "RELEASE=$RELEASE" >> $GITHUB_ENV; + echo "REGISTRY_BASE=$REGISTRY" >> $GITHUB_ENV; + - name: Create vendor folder + run: | + mkdir api/vendor + chmod +777 api/vendor + chmod +777 -R api/public + - name: Setting APP_ENV to dev + run: | + echo "APP_ENV=dev">> $GITHUB_ENV + echo "set APP_ENV to dev, see Print definitive APP_ENV" + - name: Setting APP_ENV to prod + if: contains( github.ref, 'main' ) + run: | + echo "APP_ENV=prod">> $GITHUB_ENV + echo "settin APP_ENV to prod, see Print definitive APP_ENV" + - name: Setting APP_ENV to version or feature + if: contains( github.ref, 'version-' ) || contains( github.ref, 'feature-') + run: | + GENERAL_TAG=$GITHUB_REF_NAME + export GENERAL_TAG=${GENERAL_TAG//-/} + echo "APP_ENV=$GENERAL_TAG">> $GITHUB_ENV + echo "setting APP_ENV to $GENERAL_TAG, see Print definitive APP_ENV" + - name: Print definitive APP_ENV + run: echo "APP_ENV is now $APP_ENV" + - name: Load Docker images from previous workflows + run: docker load --input php.tar && docker load --input nginx.tar + - name: Show docker images + run: docker images + - name: Docker Scout + uses: docker/scout-action@v1.6.4 + with: + command: quickview,cves + image: ${{ env.REGISTRY_BASE }}/${{ env.APP_NAME }}-php:${{ env.APP_ENV }} + github-token: ${{ secrets.GITHUB_TOKEN }} + dockerhub-user: ${{ secrets.DOCKER_USER }} + dockerhub-password: ${{ secrets.DOCKER_ACCESS_TOKEN }} + Publish: + needs: [Dependency-check,Database,Docker-Scout] + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/development' + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '16' + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: php.tar + - name: Download a single artifact + uses: actions/download-artifact@v3 + with: + name: nginx.tar + - name: Load Docker images from previous workflows + run: docker load --input php.tar && docker load --input nginx.tar + - name: Show all images + run: docker images + - name: Up the images + run: docker compose up -d + - name: Login to Container Registry + id: containerregistry-login + run: | + if [ "${{ secrets.GITHUB_TOKEN }}" != "" ]; then + echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $(cut -d'/' -f1 <<< $GITHUB_REPOSITORY) --password-stdin + echo "##[set-output name=success;]true" + else + echo "##[set-output name=success;]false" + fi + - if: steps.containerregistry-login.outputs.success == 'true' + name: Push to Container Registry + run: docker-compose push - - if: steps.containerregistry-login.outputs.success == 'true' && (github.ref == 'refs/heads/main') - name: Push latest container to Container Registry - run: | - images=$(docker-compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) - for image in $images - do - docker push "${image}":"latest" - done - - if: steps.containerregistry-login.outputs.success == 'true' && (contains(github.ref, 'version-' ) || contains( github.ref, 'feature-') || (github.ref == 'refs/heads/main')) - name: Push versioned containers to Container Registry - run: | - images=$(docker-compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) - for image in $images - do - docker push "${image}":"$GITHUB_REF_NAME.$RELEASE" - done - - name: Create kube config - id: kubeconfig - if: contains( github.ref, 'development' ) - run: | - if [ "${{ secrets.KUBECONFIG }}" != "" ]; then - printf "${{ secrets.KUBECONFIG }}" > kubeconfig.yaml - echo "##[set-output name=success]true" - else - echo "##[set-output name=success]false" - fi - - name: Chores - if: (success() || failure()) - run: docker-compose down + - if: steps.containerregistry-login.outputs.success == 'true' + name: Push versioned containers to Container Registry + run: | + images=$(docker-compose images -q | xargs docker inspect --format='{{ index .RepoTags 0}}' | cut -d':' -f1 | grep $APP_NAME) + for image in $images + do + docker push "${image}":"$GITHUB_REF_NAME_$RELEASE" + done + - name: Print release name + if: (success() || failure()) + run: echo $RELEASENAME + env: + RELEASENAME: ${{ steps.releasecode.outputs.releasename }} + - name: Create Release + if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) + id: create_release + uses: actions/create-release@v1 + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ steps.releasecode.outputs.releasename }} + release_name: ${{ steps.releasecode.outputs.releasename }} + draft: false + prerelease: false + - name: Chores + if: (success() || failure()) + run: docker-compose down + + Generate-SBOM: + needs: [Dependency-check,Database,Docker-Scout] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: advanced-security/generate-sbom-action@v1 + id: gensbom + - uses: actions/upload-artifact@v3 + with: + name: sbom + path: ${{ steps.gensbom.outputs.fileName }} diff --git a/api/.dockerignore b/api/.dockerignore index 7908bb741..b5b43833e 100644 --- a/api/.dockerignore +++ b/api/.dockerignore @@ -15,5 +15,6 @@ .php_cs.cache bin/* !bin/console +!bin/phpunit docker/db/data/ var/* diff --git a/api/.gitignore b/api/.gitignore index c78c3c1a7..cb0b62499 100644 --- a/api/.gitignore +++ b/api/.gitignore @@ -6,12 +6,6 @@ /.env.*.local /vendor/ ###< symfony/framework-bundle ### - -###> friendsofphp/php-cs-fixer ### -/.php_cs -/.php_cs.cache -###< friendsofphp/php-cs-fixer ### - ###> phpunit/phpunit ### /phpunit.xml .phpunit.result.cache diff --git a/api/.php-cs-fixer.dist.php b/api/.php-cs-fixer.dist.php deleted file mode 100644 index e63611e6a..000000000 --- a/api/.php-cs-fixer.dist.php +++ /dev/null @@ -1,14 +0,0 @@ -in(__DIR__) - ->exclude('var') -; - -return (new PhpCsFixer\Config()) - ->setRules([ - '@Symfony' => true, - ]) - ->setFinder($finder) - ->setCacheFile('.php-cs-fixer.cache') // forward compatibility with 3.x line -; diff --git a/api/Dockerfile b/api/Dockerfile index ea5f04b18..e12296318 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,4 +1,4 @@ -FROM php:7.4-fpm-alpine AS api_platform_php +FROM php:8.2-fpm-alpine AS api_platform_php # Create a user RUN addgroup -S -g 101 commonground-gateway && adduser -S -D -u 101 commonground-gateway @@ -18,7 +18,7 @@ RUN apk add --no-cache \ bash \ ; -ARG APCU_VERSION=5.1.17 +ARG APCU_VERSION=5.1.21 ARG SQLSRV_VERSION=5.10.1 RUN set -eux; \ @@ -48,6 +48,7 @@ RUN set -eux; \ pcntl \ gd \ gmp \ + ftp \ ; \ pecl install \ apcu-${APCU_VERSION} \ diff --git a/api/composer.json b/api/composer.json index e770835d7..5cffc478b 100644 --- a/api/composer.json +++ b/api/composer.json @@ -4,7 +4,7 @@ "minimum-stability": "stable", "prefer-stable": true, "require": { - "php": "^7.4.0", + "php": "^7.4.0 || ^8.1.0 || ^8.2.0", "ext-ctype": "*", "ext-fileinfo": "*", "ext-iconv": "*", @@ -13,53 +13,64 @@ "alcaeus/mongo-php-adapter": "^1.2", "api-platform/core": "^2.6", "beberlei/doctrineextensions": "^1.3", - "commongateway/corebundle": "^1.2.30", + "commongateway/corebundle": "^1.3", "composer/package-versions-deprecated": "1.11.99.3", - "conduction/commongroundbundle": "dev-feature-gateway", - "conduction/digidbundle": "dev-master", - "conduction/samlbundle": "dev-master", - "doctrine/annotations": "^1.0", - "doctrine/doctrine-bundle": "^2.4", + "composer/semver": "*", + "composer/xdebug-handler": "*", + "doctrine/annotations": "^1.14", + "doctrine/doctrine-bundle": "^2.7", + "doctrine/doctrine-fixtures-bundle": "^3.2", "doctrine/doctrine-migrations-bundle": "^3.1", - "doctrine/orm": "^2.9", + "doctrine/event-manager": "^1.2", + "doctrine/lexer": "^2.0", + "doctrine/orm": "^2.14", + "doctrine/persistence": "^2.4", "dompdf/dompdf": "^2", - "endroid/qr-code-bundle": "3.4", - "guzzlehttp/guzzle": "6.5.8", - "guzzlehttp/psr7": "1.9", + "friendsofphp/proxy-manager-lts": "*", + "gedmo/doctrine-extensions": "^3.5", "hautelook/alice-bundle": "^2.9.0", "jwadhams/json-logic-php": "^1.4", + "laminas/laminas-code": "*", + "laminas/laminas-escaper": "*", "league/flysystem-bundle": "^2.4", "league/flysystem-ftp": "^2.4", + "league/html-to-markdown": "*", "mongodb/mongodb": "^1.15", "monolog/monolog": "^2.8.0", "nelmio/cors-bundle": "^2.1", "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", "phpoffice/phpword": "^0.18.2", + "phpstan/phpdoc-parser": "^1.25", + "ramsey/uuid": "^3.8 | ^4.7", + "ramsey/uuid-doctrine": "^1.5 | ^2.0", "respect/validation": "^2.2", "setono/cron-expression-bundle": "^1.5", - "symfony/asset": "5.3.*", - "symfony/console": "5.3.*", + "symfony/asset": "5.3.* | ^5.4", + "symfony/console": "5.3.* | ^5.4", "symfony/contracts": "^2.4.0", - "symfony/dotenv": "5.3.*", - "symfony/expression-language": "5.3.*", + "symfony/dotenv": "5.3.* | ^5.4", + "symfony/expression-language": "5.3.* | ^5.4", "symfony/flex": "^1.3.1", - "symfony/framework-bundle": "5.3.*", - "symfony/http-client": "5.3.*", - "symfony/mailer": "5.3.*", - "symfony/mailgun-mailer": "5.3.*", - "symfony/messenger": "5.3.*", - "symfony/property-access": "5.3.*", - "symfony/property-info": "5.3.*", - "symfony/proxy-manager-bridge": "5.3.*", - "symfony/runtime": "5.3.*", - "symfony/security-bundle": "5.3.*", - "symfony/sendinblue-mailer": "5.3.*", - "symfony/serializer": "5.3.*", - "symfony/twig-bundle": "5.3.*", - "symfony/validator": "5.3.*", - "symfony/web-profiler-bundle": "5.3.*", - "symfony/yaml": "5.3.*" + "symfony/framework-bundle": "5.3.* | ^5.4", + "symfony/http-client": "5.3.* | ^5.4", + "symfony/mailer": "5.3.* | ^5.4", + "symfony/mailgun-mailer": "5.3.* | ^5.4", + "symfony/messenger": "5.3.* | ^5.4", + "symfony/process": "5.3.* | ^5.4", + "symfony/property-access": "5.3.* | ^5.4", + "symfony/property-info": "5.3.* | ^5.4", + "symfony/proxy-manager-bridge": "5.3.* | ^5.4", + "symfony/runtime": "5.3.* | ^5.4", + "symfony/security-bundle": "5.3.* | ^5.4", + "symfony/sendinblue-mailer": "5.3.* | ^5.4", + "symfony/serializer": "^5.4", + "symfony/twig-bundle": "5.3.* | ^5.4", + "symfony/validator": "5.3.* | ^5.4", + "symfony/web-profiler-bundle": "5.3.* | ^5.4", + "symfony/yaml": "^5.4", + "thecodingmachine/safe": "*", + "web-token/jwt-framework": "*" }, "config": { "optimize-autoloader": true, @@ -106,14 +117,14 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "5.3.*" + "require": "5.3.* | ^5.4 | ^5.4" } }, "require-dev": { "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "5.3.*", - "symfony/css-selector": "5.3.*", + "symfony/browser-kit": "5.3.* | ^5.4", + "symfony/css-selector": "5.3.* | ^5.4", "symfony/phpunit-bridge": "^6.1", - "symfony/stopwatch": "5.3.*" + "symfony/stopwatch": "5.3.* | ^5.4" } } diff --git a/api/composer.lock b/api/composer.lock index d774589af..3884a16fd 100644 --- a/api/composer.lock +++ b/api/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": "7fea6053a03cf5e0d75d8c8180484df3", + "content-hash": "f879d20d5b2f2ac0280ffbdfa8a64de5", "packages": [ { "name": "adbario/php-dot-notation", - "version": "3.1.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/adbario/php-dot-notation.git", - "reference": "aca06bf775809808232b8c21ce1ca3a4fca70ace" + "reference": "a94ce4493d19ea430baa8d7d210a2c9bd7129fc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/aca06bf775809808232b8c21ce1ca3a4fca70ace", - "reference": "aca06bf775809808232b8c21ce1ca3a4fca70ace", + "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/a94ce4493d19ea430baa8d7d210a2c9bd7129fc2", + "reference": "a94ce4493d19ea430baa8d7d210a2c9bd7129fc2", "shasum": "" }, "require": { @@ -25,9 +25,9 @@ "php": "^7.4 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.5", + "phpstan/phpstan": "^1.8", "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.6" + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "autoload": { @@ -56,22 +56,22 @@ ], "support": { "issues": "https://github.com/adbario/php-dot-notation/issues", - "source": "https://github.com/adbario/php-dot-notation/tree/3.1.1" + "source": "https://github.com/adbario/php-dot-notation/tree/3.3.0" }, - "time": "2022-03-28T01:09:30+00:00" + "time": "2023-02-24T20:27:50+00:00" }, { "name": "alcaeus/mongo-php-adapter", - "version": "1.2.2", + "version": "1.2.5", "source": { "type": "git", "url": "https://github.com/alcaeus/mongo-php-adapter.git", - "reference": "0e99bf5ea15f8e9b7ddb3a6dc38c11aa95330ca1" + "reference": "561496fca4989dc728ed3dda50331aacae62ee9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alcaeus/mongo-php-adapter/zipball/0e99bf5ea15f8e9b7ddb3a6dc38c11aa95330ca1", - "reference": "0e99bf5ea15f8e9b7ddb3a6dc38c11aa95330ca1", + "url": "https://api.github.com/repos/alcaeus/mongo-php-adapter/zipball/561496fca4989dc728ed3dda50331aacae62ee9c", + "reference": "561496fca4989dc728ed3dda50331aacae62ee9c", "shasum": "" }, "require": { @@ -124,143 +124,111 @@ ], "support": { "issues": "https://github.com/alcaeus/mongo-php-adapter/issues", - "source": "https://github.com/alcaeus/mongo-php-adapter/tree/1.2.2" - }, - "time": "2022-01-11T15:05:50+00:00" - }, - { - "name": "api-platform/api-pack", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/api-platform/api-pack.git", - "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/api-platform/api-pack/zipball/0fb12343362f565b65eb374d3c49bec580ffcf8d", - "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d", - "shasum": "" - }, - "require": { - "api-platform/core": "*", - "nelmio/cors-bundle": "*", - "symfony/asset": "*", - "symfony/expression-language": "*", - "symfony/orm-pack": "*", - "symfony/security-bundle": "*", - "symfony/serializer-pack": "*", - "symfony/twig-bundle": "*", - "symfony/validator": "*" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for API Platform", - "support": { - "issues": "https://github.com/api-platform/api-pack/issues", - "source": "https://github.com/api-platform/api-pack/tree/v1.3.0" + "source": "https://github.com/alcaeus/mongo-php-adapter/tree/1.2.5" }, - "time": "2020-08-28T20:27:34+00:00" + "time": "2023-11-29T09:17:20+00:00" }, { "name": "api-platform/core", - "version": "v2.6.5", + "version": "v2.7.18", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "4e22a289e474db454480020ff37d20472668c11c" + "reference": "6ff3e05d97602cdaa3b329112ca21f7e916a504d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/4e22a289e474db454480020ff37d20472668c11c", - "reference": "4e22a289e474db454480020ff37d20472668c11c", + "url": "https://api.github.com/repos/api-platform/core/zipball/6ff3e05d97602cdaa3b329112ca21f7e916a504d", + "reference": "6ff3e05d97602cdaa3b329112ca21f7e916a504d", "shasum": "" }, "require": { "doctrine/inflector": "^1.0 || ^2.0", - "fig/link-util": "^1.0", "php": ">=7.1", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/container": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.1", - "symfony/http-kernel": "^4.4 || ^5.1", - "symfony/property-access": "^3.4.19 || ^4.4 || ^5.1", - "symfony/property-info": "^3.4 || ^4.4 || ^5.2.1", - "symfony/serializer": "^4.4 || ^5.1", - "symfony/web-link": "^4.4 || ^5.1", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/http-foundation": "^4.4 || ^5.1 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.1 || ^6.0", + "symfony/property-access": "^3.4.19 || ^4.4 || ^5.1 || ^6.0", + "symfony/property-info": "^3.4 || ^4.4 || ^5.2.1 || ^6.0", + "symfony/serializer": "^4.4 || ^5.1 || ^6.0", + "symfony/web-link": "^4.4 || ^5.1 || ^6.0", "willdurand/negotiation": "^2.0.3 || ^3.0" }, "conflict": { "doctrine/common": "<2.7", + "doctrine/dbal": "<2.10", "doctrine/mongodb-odm": "<2.2", - "doctrine/persistence": "<1.3" + "doctrine/persistence": "<1.3", + "elasticsearch/elasticsearch": ">=8.0" }, "require-dev": { "behat/behat": "^3.1", - "behat/mink": "^1.7", + "behat/mink": "^1.9@dev", "doctrine/annotations": "^1.7", - "doctrine/cache": "^1.11", + "doctrine/cache": "^1.11 || ^2.1", "doctrine/common": "^2.11 || ^3.0", "doctrine/data-fixtures": "^1.2.2", + "doctrine/dbal": "^2.6 || ^3.0", "doctrine/doctrine-bundle": "^1.12 || ^2.0", "doctrine/mongodb-odm": "^2.2", "doctrine/mongodb-odm-bundle": "^4.0", - "doctrine/orm": "^2.6.4 || ^3.0", - "elasticsearch/elasticsearch": "^6.0 || ^7.0", + "doctrine/orm": "^2.6.4", + "elasticsearch/elasticsearch": "^7.11.0", "friends-of-behat/mink-browserkit-driver": "^1.3.1", "friends-of-behat/mink-extension": "^2.2", "friends-of-behat/symfony-extension": "^2.1", "guzzlehttp/guzzle": "^6.0 || ^7.0", - "jangregor/phpstan-prophecy": "^0.8", + "jangregor/phpstan-prophecy": "^1.0", "justinrainbow/json-schema": "^5.2.1", "phpdocumentor/reflection-docblock": "^3.0 || ^4.0 || ^5.1", "phpdocumentor/type-resolver": "^0.3 || ^0.4 || ^1.4", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.65", - "phpstan/phpstan-doctrine": "^0.12.7", - "phpstan/phpstan-phpunit": "^0.12.4", - "phpstan/phpstan-symfony": "^0.12.4", - "psr/log": "^1.0", + "phpspec/prophecy": "^1.10", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-doctrine": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-symfony": "^1.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", "ramsey/uuid": "^3.7 || ^4.0", "ramsey/uuid-doctrine": "^1.4", - "soyuka/contexts": "^3.3.1", + "soyuka/contexts": "^3.3.6", "soyuka/stubs-mongodb": "^1.0", - "symfony/asset": "^3.4 || ^4.4 || ^5.1", - "symfony/browser-kit": "^4.4 || ^5.1", - "symfony/cache": "^3.4 || ^4.4 || ^5.1", - "symfony/config": "^3.4 || ^4.4 || ^5.1", - "symfony/console": "^3.4 || ^4.4 || ^5.1", - "symfony/css-selector": "^3.4 || ^4.4 || ^5.1", - "symfony/debug": "^3.4 || ^4.4 || ^5.1", - "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1", - "symfony/doctrine-bridge": "^3.4 || ^4.4 || ^5.1", - "symfony/dom-crawler": "^3.4 || ^4.4 || ^5.1", - "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.1", - "symfony/expression-language": "^3.4 || ^4.4 || ^5.1", - "symfony/finder": "^3.4 || ^4.4 || ^5.1", - "symfony/form": "^3.4 || ^4.4 || ^5.1", - "symfony/framework-bundle": "^4.4 || ^5.1", - "symfony/http-client": "^4.4 || ^5.1", + "symfony/asset": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/browser-kit": "^4.4 || ^5.1 || ^6.0", + "symfony/cache": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/config": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/console": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/css-selector": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/debug": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/doctrine-bridge": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/dom-crawler": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/expression-language": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/finder": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/form": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.1 || ^6.0", + "symfony/http-client": "^4.4 || ^5.1 || ^6.0", + "symfony/intl": "^4.4 || ^5.3 || ^6.0", + "symfony/maker-bundle": "^1.24", "symfony/mercure-bundle": "*", - "symfony/messenger": "^4.4 || ^5.1", - "symfony/phpunit-bridge": "^5.1.7", - "symfony/routing": "^3.4 || ^4.4 || ^5.1", - "symfony/security-bundle": "^3.4 || ^4.4 || ^5.1", - "symfony/security-core": "^4.4 || ^5.1", - "symfony/twig-bundle": "^3.4 || ^4.4 || ^5.1", - "symfony/validator": "^3.4 || ^4.4 || ^5.1", - "symfony/web-profiler-bundle": "^4.4 || ^5.1", - "symfony/yaml": "^3.4 || ^4.4 || ^5.1", + "symfony/messenger": "^4.4 || ^5.1 || ^6.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0", + "symfony/routing": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/security-bundle": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/security-core": "^4.4 || ^5.1 || ^6.0", + "symfony/twig-bundle": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/validator": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/web-profiler-bundle": "^4.4 || ^5.1 || ^6.0", + "symfony/yaml": "^3.4 || ^4.4 || ^5.1 || ^6.0", "twig/twig": "^1.42.3 || ^2.12 || ^3.0", "webonyx/graphql-php": "^14.0" }, "suggest": { "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.", "elasticsearch/elasticsearch": "To support Elasticsearch.", - "guzzlehttp/guzzle": "To use the HTTP cache invalidation system.", "ocramius/package-versions": "To display the API Platform's version in the debug bar.", "phpdocumentor/reflection-docblock": "To support extracting metadata from PHPDoc.", "psr/cache-implementation": "To use metadata caching.", @@ -268,6 +236,8 @@ "symfony/cache": "To have metadata caching when using Symfony integration.", "symfony/config": "To load XML configuration files.", "symfony/expression-language": "To use authorization features.", + "symfony/http-client": "To use the HTTP cache invalidation system.", + "symfony/messenger": "To support messenger integration.", "symfony/security": "To use authorization features.", "symfony/twig-bundle": "To use the Swagger UI integration.", "symfony/uid": "To support Symfony UUID/ULID identifiers.", @@ -280,12 +250,15 @@ "dev-main": "2.7.x-dev" }, "symfony": { - "require": "^3.4 || ^4.4 || ^5.1" + "require": "^3.4 || ^4.4 || ^5.1 || ^6.0" } }, "autoload": { + "files": [ + "src/deprecation.php" + ], "psr-4": { - "ApiPlatform\\Core\\": "src/" + "ApiPlatform\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -312,101 +285,24 @@ "rest", "swagger" ], - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/api-platform/core", - "type": "tidelift" - } - ], - "time": "2021-06-15T16:53:33+00:00" - }, - { - "name": "api-platform/schema-generator", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/api-platform/schema-generator.git", - "reference": "cf7aacaf5078e8110142131c5c66382a1fd83328" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/api-platform/schema-generator/zipball/cf7aacaf5078e8110142131c5c66382a1fd83328", - "reference": "cf7aacaf5078e8110142131c5c66382a1fd83328", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.4.3 || ^2.0", - "easyrdf/easyrdf": "^1.1", - "ext-json": "*", - "friendsofphp/php-cs-fixer": "^2.15", - "league/html-to-markdown": "^4.9", - "php": ">=7.4", - "psr/log": "^1.0", - "symfony/config": "^5.2", - "symfony/console": "^5.2", - "symfony/filesystem": "^5.2", - "symfony/yaml": "^5.2", - "twig/twig": "^3.0" - }, - "require-dev": { - "api-platform/core": "^2.5", - "doctrine/orm": "^2.7", - "myclabs/php-enum": "^1.7", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^0.12", - "symfony/doctrine-bridge": "^5.2", - "symfony/phpunit-bridge": "^5.2", - "symfony/serializer": "^5.2", - "symfony/validator": "^5.2" - }, - "bin": [ - "bin/schema" - ], - "type": "library", - "autoload": { - "psr-4": { - "ApiPlatform\\SchemaGenerator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" - } - ], - "description": "Various tools to generate a data model based on Schema.org vocables", - "homepage": "https://api-platform.com/docs/schema-generator/", - "keywords": [ - "doctrine", - "entity", - "enum", - "model", - "schema.org", - "semantic", - "symfony" - ], "support": { - "issues": "https://github.com/api-platform/schema-generator/issues", - "source": "https://github.com/api-platform/schema-generator/tree/v3.0.0" + "issues": "https://github.com/api-platform/core/issues", + "source": "https://github.com/api-platform/core/tree/v2.7.18" }, - "time": "2021-01-20T21:39:48+00:00" + "time": "2024-03-19T07:17:43+00:00" }, { "name": "bacon/bacon-qr-code", - "version": "2.0.7", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/Bacon/BaconQrCode.git", - "reference": "d70c840f68657ce49094b8d91f9ee0cc07fbf66c" + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/d70c840f68657ce49094b8d91f9ee0cc07fbf66c", - "reference": "d70c840f68657ce49094b8d91f9ee0cc07fbf66c", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22", + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22", "shasum": "" }, "require": { @@ -445,33 +341,38 @@ "homepage": "https://github.com/Bacon/BaconQrCode", "support": { "issues": "https://github.com/Bacon/BaconQrCode/issues", - "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.7" + "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8" }, - "time": "2022-03-14T02:02:36+00:00" + "time": "2022-12-07T17:46:57+00:00" }, { "name": "beberlei/doctrineextensions", - "version": "v1.3.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/beberlei/DoctrineExtensions.git", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a" + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a", + "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", "shasum": "" }, "require": { - "doctrine/orm": "^2.7", + "doctrine/orm": "^2.19 || ^3.0", "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "nesbot/carbon": "*", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "symfony/yaml": "^4.2 || ^5.0", + "doctrine/annotations": "^1.14 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", + "nesbot/carbon": "^2.72 || ^3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5 || ^9.6", + "squizlabs/php_codesniffer": "^3.8", + "symfony/cache": "^5.4 || ^6.4 || ^7.0", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0", + "vimeo/psalm": "^3.18 || ^5.22", "zf1/zend-date": "^1.12", "zf1/zend-registry": "^1.12" }, @@ -502,36 +403,36 @@ "orm" ], "support": { - "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0" + "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.5.0" }, - "time": "2020-11-29T07:37:23+00:00" + "time": "2024-03-03T17:55:15+00:00" }, { "name": "behat/transliterator", - "version": "v1.3.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/Behat/Transliterator.git", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc" + "reference": "baac5873bac3749887d28ab68e2f74db3a4408af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/baac5873bac3749887d28ab68e2f74db3a4408af", + "reference": "baac5873bac3749887d28ab68e2f74db3a4408af", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2" }, "require-dev": { "chuyskywalker/rolling-curl": "^3.1", "php-yaoi/php-yaoi": "^1.0", - "phpunit/phpunit": "^4.8.36|^6.3" + "phpunit/phpunit": "^8.5.25 || ^9.5.19" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -551,32 +452,31 @@ ], "support": { "issues": "https://github.com/Behat/Transliterator/issues", - "source": "https://github.com/Behat/Transliterator/tree/v1.3.0" + "source": "https://github.com/Behat/Transliterator/tree/v1.5.0" }, - "time": "2020-01-14T16:39:13+00:00" + "time": "2022-03-30T09:27:43+00:00" }, { "name": "brick/math", - "version": "0.9.3", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -601,19 +501,15 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { "url": "https://github.com/BenMorel", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" } ], - "time": "2021-08-15T20:50:18+00:00" + "time": "2023-01-15T23:15:59+00:00" }, { "name": "brick/reflection", @@ -660,39 +556,36 @@ }, { "name": "commongateway/corebundle", - "version": "1.2.30", + "version": "1.3.9", "source": { "type": "git", "url": "https://github.com/CommonGateway/CoreBundle.git", - "reference": "86fe52055235f37195e9eaa276f786a7f8f39ac8" + "reference": "ed331a9f7bb16ee270b4765d3c5d2422121f8b0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/86fe52055235f37195e9eaa276f786a7f8f39ac8", - "reference": "86fe52055235f37195e9eaa276f786a7f8f39ac8", + "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/ed331a9f7bb16ee270b4765d3c5d2422121f8b0d", + "reference": "ed331a9f7bb16ee270b4765d3c5d2422121f8b0d", "shasum": "" }, "require": { "adbario/php-dot-notation": "^3", "alcaeus/mongo-php-adapter": "^1.2", "api-platform/core": "^2.6", - "beberlei/doctrineextensions": "^1.3", "composer/package-versions-deprecated": "1.11.99.3", - "conduction/commongroundbundle": "dev-feature-gateway", - "conduction/digidbundle": "dev-master", - "conduction/samlbundle": "dev-master", - "doctrine/annotations": "^1.0", - "doctrine/doctrine-bundle": "^2.4", + "doctrine/annotations": "^1.14 | ^2.0", + "doctrine/doctrine-bundle": "^2.7", + "doctrine/doctrine-fixtures-bundle": "^3.2", "doctrine/doctrine-migrations-bundle": "^3.1", - "doctrine/orm": "^2.9", + "doctrine/orm": "^2.14", "dompdf/dompdf": "^2", - "endroid/qr-code-bundle": "3.4", + "endroid/qr-code-bundle": "^3.4", "ext-ctype": "*", "ext-fileinfo": "*", "ext-iconv": "*", "ext-json": "*", - "guzzlehttp/guzzle": "6.5.8", - "guzzlehttp/psr7": "1.9", + "guzzlehttp/guzzle": "^6.5.8 | ^7.5", + "guzzlehttp/psr7": "1.9 | ^2.4", "hautelook/alice-bundle": "^2.9.0", "jwadhams/json-logic-php": "^1.4", "league/flysystem-bundle": "^2.4", @@ -701,34 +594,41 @@ "mongodb/mongodb": "^1.15", "monolog/monolog": "^2.8.0", "nelmio/cors-bundle": "^2.1", - "php": "^7.4.0", + "php": "^7.4.0 || ^8.0.0 || ^8.1.0 || ^8.2.0", "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", "phpoffice/phpword": "^0.18.2", + "ramsey/uuid": "^3.8 | ^4.7", + "ramsey/uuid-doctrine": "^1.5 | ^2.0", "respect/validation": "^2.2", "setono/cron-expression-bundle": "^1.5", - "symfony/asset": "5.3.*", - "symfony/console": "5.3.*", + "stof/doctrine-extensions-bundle": "^1.3", + "symfony/asset": "5.3.* | ^5.4", + "symfony/console": "5.3.* | ^5.4", "symfony/contracts": "^2.4.0", - "symfony/dotenv": "5.3.*", - "symfony/expression-language": "5.3.*", + "symfony/dotenv": "5.3.* | ^5.4", + "symfony/expression-language": "5.3.* | ^5.4", "symfony/flex": "^1.3.1", - "symfony/framework-bundle": "5.3.*", - "symfony/http-client": "5.3.*", - "symfony/mailer": "5.3.*", - "symfony/mailgun-mailer": "5.3.*", - "symfony/messenger": "5.3.*", + "symfony/framework-bundle": "5.3.* | ^5.4", + "symfony/http-client": "5.3.* | ^5.4", + "symfony/mailer": "5.3.* | ^5.4", + "symfony/mailgun-mailer": "5.3.* | ^5.4", + "symfony/messenger": "5.3.* | ^5.4", "symfony/monolog-bundle": "^3.8", - "symfony/property-access": "5.3.*", - "symfony/property-info": "5.3.*", - "symfony/proxy-manager-bridge": "5.3.*", - "symfony/runtime": "5.3.*", - "symfony/security-bundle": "5.3.*", - "symfony/serializer": "5.3.*", - "symfony/twig-bundle": "5.3.*", - "symfony/validator": "5.3.*", - "symfony/web-profiler-bundle": "5.3.*", - "symfony/yaml": "5.3.*" + "symfony/orm-pack": "^2.3", + "symfony/process": "^5.4", + "symfony/property-access": "5.3.* | ^5.4", + "symfony/property-info": "5.3.* | ^5.4", + "symfony/proxy-manager-bridge": "5.3.* | ^5.4", + "symfony/runtime": "5.3.* | ^5.4", + "symfony/security-bundle": "5.3.* | ^5.4", + "symfony/serializer": "5.3.* | ^5.4", + "symfony/translation": "^5.4", + "symfony/twig-bundle": "5.3.* | ^5.4", + "symfony/validator": "5.3.* | ^5.4", + "symfony/web-profiler-bundle": "5.3.* | ^5.4", + "symfony/yaml": "5.3.* | ^5.4", + "web-token/jwt-framework": "^3.0" }, "conflict": { "doctrine/dbal": "<2.5", @@ -741,12 +641,12 @@ "doctrine/dbal": "~2.5", "phpunit/phpunit": "^9.5", "predis/predis": "~1.1", - "symfony/browser-kit": "5.3.*", + "symfony/browser-kit": "5.3.* | ^5.4", "symfony/config": "^5.1", - "symfony/css-selector": "5.3.*", + "symfony/css-selector": "5.3.* | ^5.4", "symfony/dependency-injection": "~3.4|~4.1|~5.0", "symfony/phpunit-bridge": "^6.1", - "symfony/stopwatch": "5.3.*", + "symfony/stopwatch": "5.3.* | ^5.4", "symfony/var-dumper": "^4.1.1|^5.1" }, "type": "symfony-bundle", @@ -783,42 +683,44 @@ "issues": "https://github.com/CommonGateway/CoreBundle/issues", "source": "https://github.com/CommonGateway/CoreBundle" }, - "time": "2023-11-24T15:08:02+00:00" + "time": "2024-03-28T15:41:12+00:00" }, { - "name": "composer/ca-bundle", - "version": "1.2.10", + "name": "composer/package-versions-deprecated", + "version": "1.11.99.3", "source": { "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "9fdb22c2e97a614657716178093cd1da90a64aa8" + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "fff576ac850c045158a250e7e27666e146e78d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/9fdb22c2e97a614657716178093cd1da90a64aa8", - "reference": "9fdb22c2e97a614657716178093cd1da90a64aa8", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/fff576ac850c045158a250e7e27666e146e78d18", + "reference": "fff576ac850c045158a250e7e27666e146e78d18", "shasum": "" }, "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" }, - "type": "library", + "type": "composer-plugin", "extra": { + "class": "PackageVersions\\Installer", "branch-alias": { - "dev-main": "1.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Composer\\CaBundle\\": "src" + "PackageVersions\\": "src/PackageVersions" } }, "notification-url": "https://packagist.org/downloads/", @@ -826,24 +728,19 @@ "MIT" ], "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, { "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "email": "j.boggiano@seld.be" } ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.2.10" + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.3" }, "funding": [ { @@ -859,44 +756,39 @@ "type": "tidelift" } ], - "time": "2021-06-07T13:58:28+00:00" + "time": "2021-08-17T13:49:14+00:00" }, { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.3", + "name": "composer/pcre", + "version": "3.1.3", "source": { "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "fff576ac850c045158a250e7e27666e146e78d18" + "url": "https://github.com/composer/pcre.git", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/fff576ac850c045158a250e7e27666e146e78d18", - "reference": "fff576ac850c045158a250e7e27666e146e78d18", + "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" + "php": "^7.4 || ^8.0" }, "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, - "type": "composer-plugin", + "type": "library", "extra": { - "class": "PackageVersions\\Installer", "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { - "PackageVersions\\": "src/PackageVersions" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -904,16 +796,23 @@ "MIT" ], "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, { "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.3" + }, "funding": [ { "url": "https://packagist.com", @@ -928,27 +827,27 @@ "type": "tidelift" } ], - "time": "2021-08-17T13:49:14+00:00" + "time": "2024-03-19T10:26:25+00:00" }, { "name": "composer/semver", - "version": "3.2.5", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -991,9 +890,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.5" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -1009,29 +908,31 @@ "type": "tidelift" } ], - "time": "2021-05-24T12:41:47+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", - "version": "2.0.2", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -1055,9 +956,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.4" }, "funding": [ { @@ -1073,138 +974,94 @@ "type": "tidelift" } ], - "time": "2021-07-31T17:03:58+00:00" + "time": "2024-03-26T18:29:49+00:00" }, { - "name": "conduction/commongroundbundle", - "version": "dev-feature-gateway", + "name": "dasprid/enum", + "version": "1.0.5", "source": { "type": "git", - "url": "https://github.com/ConductionNL/CommonGroundBundle.git", - "reference": "02d76a8ddda5cc2329f0e4ff326f427ac1eba3c0" + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ConductionNL/CommonGroundBundle/zipball/02d76a8ddda5cc2329f0e4ff326f427ac1eba3c0", - "reference": "02d76a8ddda5cc2329f0e4ff326f427ac1eba3c0", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016", "shasum": "" }, "require": { - "api-platform/api-pack": "^1.2@stable", - "api-platform/core": "^2.4@stable", - "api-platform/schema-generator": "^3.0", - "doctrine/doctrine-bundle": "^1.6 || ^2.0 || ^2.4", - "doctrine/doctrine-fixtures-bundle": "^3.2", - "guzzlehttp/guzzle": "^6.3", - "knplabs/knp-markdown-bundle": "^1.8", - "mollie/mollie-api-php": "^2.0", - "php": "^7.4.0", - "ramsey/uuid": "^3.8", - "ramsey/uuid-doctrine": "^1.5", - "stof/doctrine-extensions-bundle": "^1.3", - "sumup/sumup-ecom-php-sdk": "^1.0", - "symfony/cache": "^5.0@stable", - "symfony/cache-contracts": "^2.4", - "symfony/console": "^5.0@stable", - "symfony/contracts": "^2.4", - "symfony/event-dispatcher": "^5.1", - "symfony/maker-bundle": "^1.11@stable", - "symfony/translation": "^5.0", - "symfony/var-exporter": "^5.0", - "twig/twig": "^3.3", - "web-token/jwt-framework": "^2.2" - }, - "conflict": { - "doctrine/dbal": "<2.5", - "symfony/dependency-injection": "<3.4", - "symfony/var-dumper": "<3.4" + "php": ">=7.1 <9.0" }, "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.5", - "predis/predis": "~1.1", - "symfony/config": "^5.1", - "symfony/dependency-injection": "~3.4|~4.1|~5.0", - "symfony/var-dumper": "^4.1.1|^5.1" + "phpunit/phpunit": "^7 | ^8 | ^9", + "squizlabs/php_codesniffer": "*" }, "type": "library", "autoload": { "psr-4": { - "Conduction\\CommonGroundBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "DASPRiD\\Enum\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-2-Clause" ], "authors": [ { - "name": "Ruben van der Linde", - "email": "ruben@conduction.nl" - }, - { - "name": "Conduction", - "homepage": "https://conduction.nl" + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" } ], - "description": "Symfony Bundle for dutch common ground functionality", - "homepage": "https://conduction.nl", + "description": "PHP 7.1 enum implementation", "keywords": [ - "Sofi", - "adres", - "brp", - "bsn", - "kadaster", - "kamer van koophandel", - "kvk", - "postcode", - "rsin" + "enum", + "map" ], "support": { - "email": "ruben@conduction.nl", - "issues": "https://github.com/ConductionNL/ConductionCommonGroundBundle/issues", - "source": "https://github.com/ConductionNL/ConductionCommonGroundBundle" + "issues": "https://github.com/DASPRiD/Enum/issues", + "source": "https://github.com/DASPRiD/Enum/tree/1.0.5" }, - "time": "2022-09-13T14:22:16+00:00" + "time": "2023-08-25T16:18:39+00:00" }, { - "name": "conduction/digidbundle", - "version": "dev-master", + "name": "doctrine/annotations", + "version": "1.14.3", "source": { "type": "git", - "url": "https://github.com/ConductionNL/digid-bundle.git", - "reference": "19c921d51e10bf70b32190cccf7c375aa619ddf9" + "url": "https://github.com/doctrine/annotations.git", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ConductionNL/digid-bundle/zipball/19c921d51e10bf70b32190cccf7c375aa619ddf9", - "reference": "19c921d51e10bf70b32190cccf7c375aa619ddf9", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { - "conduction/commongroundbundle": "v2.*-dev | dev-feature-gateway", - "conduction/samlbundle": "dev-master", - "guzzlehttp/guzzle": "^6.3", - "onelogin/php-saml": "^4.0", - "php": "^7.4.0", - "ramsey/uuid": "^3.8", - "symfony/cache": "^5.0@stable", - "symfony/console": "^5.0@stable", - "symfony/event-dispatcher": "^5.0" + "doctrine/lexer": "^1 || ^2", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" }, - "default-branch": true, - "type": "symfony-bundle", + "require-dev": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "vimeo/psalm": "^4.10" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, + "type": "library", "autoload": { "psr-4": { - "Conduction\\DigidBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1212,239 +1069,72 @@ ], "authors": [ { - "name": "Robert Zondervan", - "email": "robert@conduction.nl" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" }, { - "name": "Conduction", - "homepage": "https://conduction.nl" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Symfony Bundle for DigiD configuration", - "homepage": "https://conduction.nl", + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", "keywords": [ - "saml" + "annotations", + "docblock", + "parser" ], "support": { - "email": "ruben@conduction.nl", - "issues": "https://github.com/ConductionNL/digid-bundle/issues", - "source": "https://github.com/ConductionNL/digid-bundle" + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.14.3" }, - "time": "2021-12-14T13:16:02+00:00" + "time": "2023-02-01T09:20:38+00:00" }, { - "name": "conduction/samlbundle", - "version": "dev-master", + "name": "doctrine/cache", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/ConductionNL/saml-bundle.git", - "reference": "8d8eb8a4fa362b9b678fc288ead2880a43154714" + "url": "https://github.com/doctrine/cache.git", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ConductionNL/saml-bundle/zipball/8d8eb8a4fa362b9b678fc288ead2880a43154714", - "reference": "8d8eb8a4fa362b9b678fc288ead2880a43154714", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.3", - "onelogin/php-saml": "^4.0", - "php": "^7.4.0", - "ramsey/uuid": "^3.8", - "symfony/cache": "^5.0@stable", - "symfony/console": "^5.0@stable", - "symfony/event-dispatcher": "^5.0" + "php": "~7.1 || ^8.0" }, - "default-branch": true, - "type": "symfony-bundle", + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" + }, + "type": "library", "autoload": { "psr-4": { - "Conduction\\SamlBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robert Zondervan", - "email": "robert@conduction.nl" - }, - { - "name": "Conduction", - "homepage": "https://conduction.nl" - } - ], - "description": "Symfony Bundle for SAML configuration", - "homepage": "https://conduction.nl", - "keywords": [ - "saml" - ], - "support": { - "email": "ruben@conduction.nl", - "issues": "https://github.com/ConductionNL/ConductionCommonGroundBundle/issues", - "source": "https://github.com/ConductionNL/ConductionCommonGroundBundle" - }, - "time": "2021-12-13T18:14:43+00:00" - }, - { - "name": "dasprid/enum", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/DASPRiD/Enum.git", - "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/5abf82f213618696dda8e3bf6f64dd042d8542b2", - "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "^7 | ^8 | ^9", - "squizlabs/php_codesniffer": "^3.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "DASPRiD\\Enum\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Ben Scholzen 'DASPRiD'", - "email": "mail@dasprids.de", - "homepage": "https://dasprids.de/", - "role": "Developer" - } - ], - "description": "PHP 7.1 enum implementation", - "keywords": [ - "enum", - "map" - ], - "support": { - "issues": "https://github.com/DASPRiD/Enum/issues", - "source": "https://github.com/DASPRiD/Enum/tree/1.0.3" - }, - "time": "2020-10-02T16:03:48+00:00" - }, - { - "name": "doctrine/annotations", - "version": "1.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2021-08-05T19:00:23+00:00" - }, - { - "name": "doctrine/cache", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1485,6 +1175,10 @@ "redis", "xcache" ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.2.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1499,30 +1193,31 @@ "type": "tidelift" } ], - "time": "2021-07-17T14:49:29+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/collections", - "version": "1.6.8", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e", + "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1.3 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^0.12", + "doctrine/coding-standard": "^9.0 || ^10.0", + "phpstan/phpstan": "^1.4.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.2.1" + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -1564,39 +1259,44 @@ "iterators", "php" ], - "time": "2021-08-10T18:51:53+00:00" + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/1.8.0" + }, + "time": "2022-09-01T20:12:10+00:00" }, { "name": "doctrine/common", - "version": "3.1.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a" + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced", + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced", "shasum": "" }, "require": { - "doctrine/persistence": "^2.0", + "doctrine/persistence": "^2.0 || ^3.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5", + "symfony/phpunit-bridge": "^6.1", "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1636,6 +1336,10 @@ "doctrine", "php" ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.4.3" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1650,37 +1354,44 @@ "type": "tidelift" } ], - "time": "2021-02-10T20:18:51+00:00" + "time": "2022-10-09T11:47:59+00:00" }, { "name": "doctrine/data-fixtures", - "version": "1.5.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "51d3d4880d28951fff42a635a2389f8c63baddc5" + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/51d3d4880d28951fff42a635a2389f8c63baddc5", - "reference": "51d3d4880d28951fff42a635a2389f8c63baddc5", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { - "doctrine/common": "^2.13|^3.0", - "doctrine/persistence": "^1.3.3|^2.0", - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, "conflict": { + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "doctrine/dbal": "^2.5.4", + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.7.0", + "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", - "phpunit/phpunit": "^8.0" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -1691,7 +1402,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + "Doctrine\\Common\\DataFixtures\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1705,13 +1416,13 @@ } ], "description": "Data Fixtures for all Doctrine Object Managers", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "database" ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.5.0" + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { @@ -1727,38 +1438,44 @@ "type": "tidelift" } ], - "time": "2021-01-23T10:20:43+00:00" + "time": "2023-11-24T11:18:31+00:00" }, { "name": "doctrine/dbal", - "version": "2.13.2", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/db922ba9436b7b18a23d1653a0b41ff2369ca41c", + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.58", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.16", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.9.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -1769,7 +1486,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1812,11 +1529,14 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.8.3" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1831,29 +1551,33 @@ "type": "tidelift" } ], - "time": "2021-06-18T21:48:39+00:00" + "time": "2024-03-03T15:55:06+00:00" }, { "name": "doctrine/deprecations", - "version": "v0.5.3", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -1870,59 +1594,70 @@ ], "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", "homepage": "https://www.doctrine-project.org/", - "time": "2021-03-21T12:59:47+00:00" + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + }, + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.5.7", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "1e0d1d7a5982eeebc37dcb4d77bb1a5c5961d96d" + "reference": "5418e811a14724068e95e0ba43353b903ada530f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/1e0d1d7a5982eeebc37dcb4d77bb1a5c5961d96d", - "reference": "1e0d1d7a5982eeebc37dcb4d77bb1a5c5961d96d", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5418e811a14724068e95e0ba43353b903ada530f", + "reference": "5418e811a14724068e95e0ba43353b903ada530f", "shasum": "" }, "require": { - "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1|^3.3.2", - "doctrine/persistence": "^2.2", + "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.4.18|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0|^3" + "php": "^7.4 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { - "doctrine/orm": "<2.9|>=3.0", - "twig/twig": "<1.34|>=2.0,<2.4" + "doctrine/annotations": ">=3.0", + "doctrine/orm": "<2.17 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.9 || ^3.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", - "psalm/plugin-phpunit": "^0.16.1", - "psalm/plugin-symfony": "^3", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", - "vimeo/psalm": "^4.7" + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^5", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "twig/twig": "^1.34 || ^2.12 || ^3.0", + "vimeo/psalm": "^5.15" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -1932,7 +1667,7 @@ "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" + "Doctrine\\Bundle\\DoctrineBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1967,7 +1702,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.5.7" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.12.0" }, "funding": [ { @@ -1983,38 +1718,44 @@ "type": "tidelift" } ], - "time": "2022-03-05T10:29:13+00:00" + "time": "2024-03-19T07:20:37+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.0", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "870189619a7770f468ffb0b80925302e065a3b34" + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/870189619a7770f468ffb0b80925302e065a3b34", - "reference": "870189619a7770f468ffb0b80925302e065a3b34", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/c808a0c85c38c8ee265cc8405b456c1d2b38567d", + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.3", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.6.0", - "doctrine/persistence": "^1.3.7|^2.0", - "php": "^7.1 || ^8.0", - "symfony/config": "^3.4|^4.3|^5.0", - "symfony/console": "^3.4|^4.3|^5.0", - "symfony/dependency-injection": "^3.4|^4.3|^5.0", - "symfony/doctrine-bridge": "^3.4|^4.1|^5.0", - "symfony/http-kernel": "^3.4|^4.3|^5.0" + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4|^3.0", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.4 || ^8.0 || ^9.2", - "symfony/phpunit-bridge": "^4.1|^5.0" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10.39", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6", + "vimeo/psalm": "^5.15" }, "type": "symfony-bundle", "autoload": { @@ -2033,22 +1774,22 @@ }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineFixturesBundle", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "Fixture", "persistence" ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.0" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.5.1" }, "funding": [ { @@ -2064,37 +1805,44 @@ "type": "tidelift" } ], - "time": "2020-11-14T09:36:49+00:00" + "time": "2023-11-19T12:48:54+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.1.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/91f0a5e2356029575f3038432cc188b12f9d5da5", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", - "doctrine/migrations": "^3.1", + "doctrine/doctrine-bundle": "^2.4", + "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^8.5|^9.5", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -2116,11 +1864,11 @@ }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineMigrationsBundle", @@ -2130,6 +1878,10 @@ "migrations", "schema" ], + "support": { + "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2144,41 +1896,39 @@ "type": "tidelift" } ], - "time": "2021-04-10T16:48:53+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.24" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2220,6 +1970,10 @@ "event system", "events" ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2234,38 +1988,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.3", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^7.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-strict-rules": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "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" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" @@ -2311,6 +2061,10 @@ "uppercase", "words" ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2325,33 +2079,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T15:13:26+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -2376,6 +2131,10 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2390,39 +2149,37 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.21" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2452,6 +2209,10 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/2.1.1" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2466,49 +2227,51 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2024-02-05T11:35:39+00:00" }, { "name": "doctrine/migrations", - "version": "3.2.1", + "version": "3.7.4", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "818e31703b4fb353c0c23caa714273fc64efa675" + "reference": "954e0a314c2f0eb9fb418210445111747de254a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/818e31703b4fb353c0c23caa714273fc64efa675", - "reference": "818e31703b4fb353c0c23caa714273fc64efa675", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/954e0a314c2f0eb9fb418210445111747de254a6", + "reference": "954e0a314c2f0eb9fb418210445111747de254a6", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/dbal": "^2.11", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.2 || ^8.0", + "composer-runtime-api": "^2", + "doctrine/dbal": "^3.5.1 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^3.4 || ^4.4.16 || ^5.0", - "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" + }, + "conflict": { + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3 || ^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpstan/phpstan-symfony": "^0.12", - "phpunit/phpunit": "^8.5 || ^9.4", - "symfony/cache": "^3.4 || ^4.0 || ^5.0", - "symfony/process": "^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0" + "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", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -2518,12 +2281,6 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" @@ -2554,6 +2311,10 @@ "dbal", "migrations" ], + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.7.4" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2568,52 +2329,59 @@ "type": "tidelift" } ], - "time": "2021-08-03T11:49:27+00:00" + "time": "2024-03-06T13:41:11+00:00" }, { "name": "doctrine/orm", - "version": "2.9.5", + "version": "2.19.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "77cc86ed880e3f1f6c9c5819e131a8aaeeeee0da" + "reference": "1a5a4c674a416b4fdf76833c627c5e7f58bbb890" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/77cc86ed880e3f1f6c9c5819e131a8aaeeeee0da", - "reference": "77cc86ed880e3f1f6c9c5819e131a8aaeeeee0da", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1a5a4c674a416b4fdf76833c627c5e7f58bbb890", + "reference": "1a5a4c674a416b4fdf76833c627c5e7f58bbb890", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.13", + "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", - "doctrine/dbal": "^2.13.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.1", + "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^2.2", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2 || ^3", + "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", - "ext-pdo": "*", - "php": "^7.1 ||^8.0", + "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php72": "^1.23", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "0.12.94", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4 || ^5.2", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.7.0" + "phpstan/phpstan": "~1.4.10 || 1.10.59", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psr/log": "^1 || ^2 || ^3", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "vimeo/psalm": "4.30.0 || 5.22.2" }, "suggest": { + "ext-dom": "Provides support for XSD validation for XML mapping files", "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, @@ -2623,7 +2391,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2658,48 +2426,53 @@ "database", "orm" ], - "time": "2021-08-23T10:20:22+00:00" + "support": { + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/2.19.3" + }, + "time": "2024-03-21T11:01:42+00:00" }, { "name": "doctrine/persistence", - "version": "2.2.2", + "version": "2.5.7", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103" + "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/4ce4712e6dc84a156176a0fbbb11954a25c93103", - "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/e36f22765f4d10a7748228babbf73da5edfeed3c", + "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", "doctrine/cache": "^1.11 || ^2.0", "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1 || ^2", "php": "^7.1 || ^8.0", - "psr/cache": "^1.0|^2.0|^3.0" + "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/common": "<2.10@dev" + "doctrine/annotations": "<1.0 || >=3.0", + "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/coding-standard": "^6.0 || ^9.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^9 || ^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "0.12.84", - "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", - "symfony/cache": "^4.4|^5.0", - "vimeo/psalm": "4.7.0" + "phpstan/phpstan": "~1.4.10 || 1.9.4", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + "Doctrine\\Common\\": "src/Common", + "Doctrine\\Persistence\\": "src/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -2741,20 +2514,38 @@ "orm", "persistence" ], - "time": "2021-08-10T19:01:29+00:00" + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/2.5.7" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2023-02-03T15:51:16+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "56070bebac6e77230ed7d306ad13528e60732871" + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", - "reference": "56070bebac6e77230ed7d306ad13528e60732871", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a321d114e0a18e6497f8a2cd6f890e000cc17ecc", + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc", "shasum": "" }, "require": { @@ -2767,11 +2558,6 @@ "bin/sql-formatter" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\SqlFormatter\\": "src" @@ -2785,7 +2571,7 @@ { "name": "Jeremy Dorn", "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" + "homepage": "https://jeremydorn.com/" } ], "description": "a PHP SQL highlighting library", @@ -2794,20 +2580,24 @@ "highlight", "sql" ], - "time": "2020-07-30T16:57:33+00:00" + "support": { + "issues": "https://github.com/doctrine/sql-formatter/issues", + "source": "https://github.com/doctrine/sql-formatter/tree/1.2.0" + }, + "time": "2023-08-16T21:49:04+00:00" }, { "name": "dompdf/dompdf", - "version": "v2.0.1", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085" + "reference": "093f2d9739cec57428e39ddadedfd4f3ae862c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085", - "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/093f2d9739cec57428e39ddadedfd4f3ae862c0f", + "reference": "093f2d9739cec57428e39ddadedfd4f3ae862c0f", "shasum": "" }, "require": { @@ -2854,22 +2644,22 @@ "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v2.0.1" + "source": "https://github.com/dompdf/dompdf/tree/v2.0.4" }, - "time": "2022-09-22T13:43:41+00:00" + "time": "2023-12-12T20:19:39+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.1", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -2909,7 +2699,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -2917,106 +2707,30 @@ "type": "github" } ], - "time": "2022-01-18T15:43:28+00:00" - }, - { - "name": "easyrdf/easyrdf", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/easyrdf/easyrdf.git", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/easyrdf/easyrdf/zipball/c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "ext-pcre": "*", - "ext-xmlreader": "*", - "lib-libxml": "*", - "php": ">=7.1.0" - }, - "require-dev": { - "code-lts/doctum": "^5", - "ml/json-ld": "~1.0", - "phpunit/phpunit": "^7", - "semsol/arc2": "^2.4", - "squizlabs/php_codesniffer": "3.*", - "zendframework/zend-http": "~2.3" - }, - "suggest": { - "ml/json-ld": "~1.0", - "semsol/arc2": "~2.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "EasyRdf\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nicholas Humfrey", - "email": "njh@aelius.com", - "homepage": "http://www.aelius.com/njh/", - "role": "Developer" - }, - { - "name": "Alexey Zakhlestin", - "email": "indeyets@gmail.com", - "homepage": "http://indeyets.ru/", - "role": "Developer" - } - ], - "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", - "homepage": "http://www.easyrdf.org/", - "keywords": [ - "Linked Data", - "RDF", - "Semantic Web", - "Turtle", - "rdfa", - "sparql" - ], - "support": { - "forum": "http://groups.google.com/group/easyrdf/", - "issues": "http://github.com/easyrdf/easyrdf/issues", - "source": "https://github.com/easyrdf/easyrdf/tree/1.1.1" - }, - "time": "2020-12-02T08:47:31+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -3024,7 +2738,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -3052,7 +2766,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -3060,29 +2774,29 @@ "type": "github" } ], - "time": "2022-06-18T20:57:19+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "endroid/installer", - "version": "1.4.0", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/endroid/installer.git", - "reference": "7af9f7fdbe6dcbf65b1d3439932ac45a98d229b4" + "reference": "308051404c8370b9641cd61d86a464f2c6938265" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/installer/zipball/7af9f7fdbe6dcbf65b1d3439932ac45a98d229b4", - "reference": "7af9f7fdbe6dcbf65b1d3439932ac45a98d229b4", + "url": "https://api.github.com/repos/endroid/installer/zipball/308051404c8370b9641cd61d86a464f2c6938265", + "reference": "308051404c8370b9641cd61d86a464f2c6938265", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1||^2.0", - "php": "^7.4||^8.0" + "composer-plugin-api": "^2.0", + "php": "^8.1" }, "require-dev": { "composer/composer": "^2.0", - "endroid/quality": "dev-master" + "endroid/quality": "dev-main" }, "suggest": { "roave/security-advisories": "Avoids installation of package versions with vulnerabilities" @@ -3112,7 +2826,7 @@ "description": "Composer plugin for installing configuration files", "support": { "issues": "https://github.com/endroid/installer/issues", - "source": "https://github.com/endroid/installer/tree/1.4.0" + "source": "https://github.com/endroid/installer/tree/1.4.5" }, "funding": [ { @@ -3120,7 +2834,7 @@ "type": "github" } ], - "time": "2021-10-30T23:14:36+00:00" + "time": "2023-11-07T12:11:36+00:00" }, { "name": "endroid/qr-code", @@ -3199,28 +2913,32 @@ }, { "name": "endroid/qr-code-bundle", - "version": "3.4.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/endroid/qr-code-bundle.git", - "reference": "e853ba6c87b5cb1386e58015c26edd0da7bbc780" + "reference": "36d7e61e02d84c92702138cc1c6dac5a0565a5ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code-bundle/zipball/e853ba6c87b5cb1386e58015c26edd0da7bbc780", - "reference": "e853ba6c87b5cb1386e58015c26edd0da7bbc780", + "url": "https://api.github.com/repos/endroid/qr-code-bundle/zipball/36d7e61e02d84c92702138cc1c6dac5a0565a5ff", + "reference": "36d7e61e02d84c92702138cc1c6dac5a0565a5ff", "shasum": "" }, "require": { - "endroid/installer": "^1.1", - "endroid/qr-code": "^3.7.3", + "endroid/installer": "^1.2.2", + "endroid/qr-code": "^3.7.8", "php": ">=7.2", - "symfony/framework-bundle": "^3.4||^4.1.12||^5.0", - "symfony/twig-bundle": "^3.4||^4.0||^5.0", - "symfony/yaml": "^3.4||^4.0||^5.0" + "symfony/framework-bundle": "^3.4||^4.4||^5.0", + "symfony/twig-bundle": "^3.4||^4.4||^5.0", + "symfony/yaml": "^3.4||^4.4||^5.0" }, "require-dev": { - "endroid/test": "dev-master" + "endroid/quality": "dev-master" + }, + "suggest": { + "roave/security-advisories": "Avoids installation of package versions with vulnerabilities", + "symfony/security-checker": "Checks your composer.lock for vulnerabilities" }, "type": "symfony-bundle", "extra": { @@ -3255,26 +2973,32 @@ ], "support": { "issues": "https://github.com/endroid/qr-code-bundle/issues", - "source": "https://github.com/endroid/qr-code-bundle/tree/master" + "source": "https://github.com/endroid/qr-code-bundle/tree/3.4.3" }, - "time": "2019-11-29T22:50:41+00:00" + "funding": [ + { + "url": "https://github.com/endroid", + "type": "github" + } + ], + "time": "2020-04-25T13:48:19+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -3316,49 +3040,47 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "fakerphp/faker", - "version": "v1.15.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/89c6201c74db25fa759ff16e78a4d8f32547770e", - "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "psr/container": "^1.0", - "symfony/deprecation-contracts": "^2.2" + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "conflict": { "fzaninotto/faker": "*" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.15-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -3381,269 +3103,28 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.15.0" - }, - "time": "2021-07-06T20:39:40+00:00" - }, - { - "name": "fgrosse/phpasn1", - "version": "v2.3.0", - "source": { - "type": "git", - "url": "https://github.com/fgrosse/PHPASN1.git", - "reference": "20299033c35f4300eb656e7e8e88cf52d1d6694e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/20299033c35f4300eb656e7e8e88cf52d1d6694e", - "reference": "20299033c35f4300eb656e7e8e88cf52d1d6694e", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.3", - "satooshi/php-coveralls": "~2.0" - }, - "suggest": { - "ext-bcmath": "BCmath is the fallback extension for big integer calculations", - "ext-curl": "For loading OID information from the web if they have not bee defined statically", - "ext-gmp": "GMP is the preferred extension for big integer calculations", - "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "FG\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Friedrich Große", - "email": "friedrich.grosse@gmail.com", - "homepage": "https://github.com/FGrosse", - "role": "Author" - }, - { - "name": "All contributors", - "homepage": "https://github.com/FGrosse/PHPASN1/contributors" - } - ], - "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.", - "homepage": "https://github.com/FGrosse/PHPASN1", - "keywords": [ - "DER", - "asn.1", - "asn1", - "ber", - "binary", - "decoding", - "encoding", - "x.509", - "x.690", - "x509", - "x690" - ], - "support": { - "issues": "https://github.com/fgrosse/PHPASN1/issues", - "source": "https://github.com/fgrosse/PHPASN1/tree/v2.3.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2021-04-24T19:01:55+00:00" - }, - { - "name": "fig/link-util", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/link-util.git", - "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", - "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", - "shasum": "" - }, - "require": { - "php": ">=5.5.0", - "psr/link": "~1.0@dev" - }, - "provide": { - "psr/link-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.1", - "squizlabs/php_codesniffer": "^2.3.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Link\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common utility implementations for HTTP links", - "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" - ], - "time": "2021-02-03T23:36:04+00:00" - }, - { - "name": "friendsofphp/php-cs-fixer", - "version": "v2.19.2", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "d5c737c2e18ba502b75b44832b31fe627f82e307" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/d5c737c2e18ba502b75b44832b31fe627f82e307", - "reference": "d5c737c2e18ba502b75b44832b31fe627f82e307", - "shasum": "" - }, - "require": { - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.2 || ^2.0", - "doctrine/annotations": "^1.2", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^5.6 || ^7.0 || ^8.0", - "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0", - "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^3.0 || ^4.0 || ^5.0", - "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0 || ^5.0", - "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" - }, - "require-dev": { - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.4", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4.2", - "php-cs-fixer/accessible-object": "^1.0", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "sanmai/phpunit-legacy-adapter": "^6.4 || ^8.2.1", - "symfony/phpunit-bridge": "^5.2.1", - "symfony/yaml": "^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters.", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." - }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.19-dev" - } - }, - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, - "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/Assert/AssertTokensTrait.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/Test/IsIdenticalConstraint.php", - "tests/Test/TokensWithObservedTransformers.php", - "tests/TestCase.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.2" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "time": "2021-08-18T19:55:46+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.5", + "version": "v1.0.18", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", "shasum": "" }, "require": { "laminas/laminas-code": "~3.4.1|^4.0", "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -3654,7 +3135,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.2|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -3676,7 +3157,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" + "homepage": "https://ocramius.github.io/" }, { "name": "Nicolas Grekas", @@ -3692,6 +3173,10 @@ "proxy pattern", "service proxies" ], + "support": { + "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.18" + }, "funding": [ { "url": "https://github.com/Ocramius", @@ -3702,58 +3187,66 @@ "type": "tidelift" } ], - "time": "2021-05-22T16:11:15+00:00" + "time": "2024-03-20T12:50:41+00:00" }, { "name": "gedmo/doctrine-extensions", - "version": "v3.1.0", + "version": "v3.15.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "0803fa56b13cf858951599027f451738078c49f8" + "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/0803fa56b13cf858951599027f451738078c49f8", - "reference": "0803fa56b13cf858951599027f451738078c49f8", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/2a89103f4984d8970f3855284c8c04e6e6a63c0f", + "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f", "shasum": "" }, "require": { - "behat/transliterator": "~1.2", - "doctrine/annotations": "^1.13", - "doctrine/collections": "^1.0", + "behat/transliterator": "^1.2", + "doctrine/collections": "^1.2 || ^2.0", "doctrine/common": "^2.13 || ^3.0", - "doctrine/event-manager": "^1.0", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "doctrine/mongodb": "<1.3", - "doctrine/mongodb-odm": "<2.0", - "sebastian/comparator": "<2.0" + "doctrine/deprecations": "^1.0", + "doctrine/event-manager": "^1.2 || ^2.0", + "doctrine/persistence": "^2.2 || ^3.0", + "php": "^7.4 || ^8.0", + "psr/cache": "^1 || ^2 || ^3", + "psr/clock": "^1", + "symfony/cache": "^5.4 || ^6.0 || ^7.0" }, - "provide": { - "ext-mongo": "1.6.12" + "conflict": { + "doctrine/annotations": "<1.13 || >=3.0", + "doctrine/dbal": "<3.2 || >=4.0", + "doctrine/mongodb-odm": "<2.3 || >=3.0", + "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1 || >=3.0" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/annotations": "^1.13 || ^2.0", "doctrine/cache": "^1.11 || ^2.0", + "doctrine/dbal": "^3.2", "doctrine/doctrine-bundle": "^2.3", - "doctrine/mongodb-odm": "^2.0", - "doctrine/orm": "^2.6.3", - "friendsofphp/php-cs-fixer": "^2.16", - "phpunit/phpunit": "^8.5", - "symfony/cache": "^4.4 || ^5.0", - "symfony/yaml": "^4.1" + "doctrine/mongodb-odm": "^2.3", + "doctrine/orm": "^2.14.0", + "friendsofphp/php-cs-fixer": "^3.14.0", + "nesbot/carbon": "^2.71 || ^3.0", + "phpstan/phpstan": "^1.10.2", + "phpstan/phpstan-doctrine": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.6", + "rector/rector": "^0.19", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", - "doctrine/orm": "to use the extensions with the ORM", - "symfony/cache": "to cache parsed annotations" + "doctrine/orm": "to use the extensions with the ORM" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.13-dev" } }, "autoload": { @@ -3779,16 +3272,18 @@ "email": "david@liip.ch" } ], - "description": "Doctrine2 behavioral extensions", + "description": "Doctrine behavioral extensions", "homepage": "http://gediminasm.org/", "keywords": [ "Blameable", "behaviors", - "doctrine2", + "doctrine", "extensions", "gedmo", "loggable", "nestedset", + "odm", + "orm", "sluggable", "sortable", "timestampable", @@ -3799,44 +3294,72 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.1.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.15.0", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, - "time": "2021-06-22T11:23:22+00:00" + "funding": [ + { + "url": "https://github.com/l3pp4rd", + "type": "github" + }, + { + "url": "https://github.com/mbabker", + "type": "github" + }, + { + "url": "https://github.com/phansys", + "type": "github" + }, + { + "url": "https://github.com/stof", + "type": "github" + } + ], + "time": "2024-02-12T15:17:22+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "6.5.8", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.9", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17" + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -3889,19 +3412,20 @@ } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.8" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -3917,51 +3441,65 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:07+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", @@ -3970,49 +3508,64 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.9.0", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.9-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -4051,6 +3604,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -4066,7 +3624,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.9.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -4082,37 +3640,38 @@ "type": "tidelift" } ], - "time": "2022-06-20T21:43:03+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "hautelook/alice-bundle", - "version": "2.9.0", + "version": "2.12.2", "source": { "type": "git", "url": "https://github.com/theofidry/AliceBundle.git", - "reference": "17c5199b2a6efbc1383b0afe1cddfa3c176b7b6f" + "reference": "76485f14618725c3555e3c2737c68088d06104fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/17c5199b2a6efbc1383b0afe1cddfa3c176b7b6f", - "reference": "17c5199b2a6efbc1383b0afe1cddfa3c176b7b6f", + "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/76485f14618725c3555e3c2737c68088d06104fb", + "reference": "76485f14618725c3555e3c2737c68088d06104fb", "shasum": "" }, "require": { - "doctrine/data-fixtures": "^1.2", - "doctrine/doctrine-bundle": "^1.8 || ^2.0", - "doctrine/orm": "^2.5.11", - "doctrine/persistence": "^1.3.4 || ^2.0", - "php": "^7.3 || ^8.0", - "psr/log": "^1.0", - "symfony/finder": "^3.4 || ^4.0 || ^5.0", - "symfony/framework-bundle": "^3.4.24 || ^4.0 || ^5.0", - "theofidry/alice-data-fixtures": "^1.4" + "doctrine/data-fixtures": "^1.5", + "doctrine/doctrine-bundle": "^2.5", + "doctrine/orm": "^2.10.0", + "doctrine/persistence": "^2.2 || ^3.0", + "php": "^8.1", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/finder": "^5.4.2 || ^6.0", + "symfony/framework-bundle": "^5.4.2 || ^6.0", + "theofidry/alice-data-fixtures": "^1.5" }, "require-dev": { "phpspec/prophecy": "^1.7", - "phpunit/phpunit": "^8.5", - "symfony/phpunit-bridge": "^5.1" + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "symfony/phpunit-bridge": "^6.0" }, "type": "symfony-bundle", "extra": { @@ -4151,28 +3710,23 @@ "symfony" ], "support": { - "source": "https://github.com/theofidry/AliceBundle/tree/2.9.0" + "issues": "https://github.com/theofidry/AliceBundle/issues", + "source": "https://github.com/theofidry/AliceBundle/tree/2.12.2" }, - "funding": [ - { - "url": "https://github.com/theofidry", - "type": "github" - } - ], - "time": "2021-02-23T08:45:57+00:00" + "time": "2023-11-22T23:06:15+00:00" }, { "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", "shasum": "" }, "require": { @@ -4180,9 +3734,9 @@ "php": "^7.1|^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", + "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", + "phpstan/phpstan": "^1.4", "phpunit/phpunit": "^7.5|^8.5|^9.4", "vimeo/psalm": "^4.3" }, @@ -4216,29 +3770,29 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" }, - "time": "2021-10-08T21:21:46+00:00" + "time": "2024-03-08T09:58:59+00:00" }, { "name": "jwadhams/json-logic-php", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/jwadhams/json-logic-php.git", - "reference": "2546c07ffef957bbf7b385938d0c155bd9b47c5f" + "reference": "e4ea3a46f44d3d34740276f7a21f8f052b029743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jwadhams/json-logic-php/zipball/2546c07ffef957bbf7b385938d0c155bd9b47c5f", - "reference": "2546c07ffef957bbf7b385938d0c155bd9b47c5f", + "url": "https://api.github.com/repos/jwadhams/json-logic-php/zipball/e4ea3a46f44d3d34740276f7a21f8f052b029743", + "reference": "e4ea3a46f44d3d34740276f7a21f8f052b029743", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=7.2.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3.3" }, "type": "library", "autoload": { @@ -4259,9 +3813,9 @@ "description": "Build rules with complex comparisons and boolean operators, serialized as JSON, and execute them in PHP", "support": { "issues": "https://github.com/jwadhams/json-logic-php/issues", - "source": "https://github.com/jwadhams/json-logic-php/tree/1.4.2" + "source": "https://github.com/jwadhams/json-logic-php/tree/1.5.0" }, - "time": "2020-05-12T14:00:33+00:00" + "time": "2022-03-02T21:44:10+00:00" }, { "name": "khanamiryan/qrcode-detector-decoder", @@ -4320,106 +3874,35 @@ }, "time": "2022-06-29T09:25:13+00:00" }, - { - "name": "knplabs/knp-markdown-bundle", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/KnpLabs/KnpMarkdownBundle.git", - "reference": "843b3d0c9b741a3cf46296e9f326026b210e66c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMarkdownBundle/zipball/843b3d0c9b741a3cf46296e9f326026b210e66c1", - "reference": "843b3d0c9b741a3cf46296e9f326026b210e66c1", - "shasum": "" - }, - "require": { - "michelf/php-markdown": "~1.4", - "php": "^7.1.3|^8.0", - "symfony/dependency-injection": "~3.4|^4.0|^5.0", - "symfony/framework-bundle": "~3.4|^4.0|^5.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4.0 || ^5.0", - "symfony/templating": "~3.4|^4.0|^5.0" - }, - "suggest": { - "ext-sundown": "to use optional support for php-sundown extension instead of php implementation", - "symfony/twig-bundle": "to use the Twig markdown filter" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.5.x-dev" - } - }, - "autoload": { - "psr-4": { - "Knp\\Bundle\\MarkdownBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KnpLabs Team", - "homepage": "http://knplabs.com" - }, - { - "name": "Symfony Community", - "homepage": "http://github.com/KnpLabs/KnpMarkdownBundle/contributors" - } - ], - "description": "Knplabs markdown bundle transforms markdown into html", - "homepage": "http://github.com/KnpLabs/KnpMarkdownBundle", - "keywords": [ - "bundle", - "knp", - "knplabs", - "markdown" - ], - "support": { - "issues": "https://github.com/KnpLabs/KnpMarkdownBundle/issues", - "source": "https://github.com/KnpLabs/KnpMarkdownBundle/tree/1.9.0" - }, - "time": "2021-03-03T20:01:32+00:00" - }, { "name": "laminas/laminas-code", - "version": "4.4.2", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": "^7.4 || ~8.0.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.1.4", - "laminas/laminas-stdlib": "^3.3.0", - "phpunit/phpunit": "^9.4.2", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3.1" + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component", - "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" + "laminas/laminas-stdlib": "Laminas\\Stdlib component" }, "type": "library", "autoload": { @@ -4438,43 +3921,51 @@ "laminas", "laminasframework" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" + }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", "type": "community_bridge" } ], - "time": "2021-07-09T11:58:40+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.9.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.12.2", - "vimeo/psalm": "^3.16" - }, - "suggest": { - "ext-iconv": "*", - "ext-mbstring": "*" + "infection/infection": "^0.27.0", + "laminas/laminas-coding-standard": "~2.5.0", + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.6.7", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.9" }, "type": "library", "autoload": { @@ -4506,7 +3997,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T17:10:53+00:00" + "time": "2023-10-10T08:35:13+00:00" }, { "name": "league/flysystem", @@ -4772,27 +4263,30 @@ }, { "name": "league/html-to-markdown", - "version": "4.10.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/thephpleague/html-to-markdown.git", - "reference": "0868ae7a552e809e5cd8f93ba022071640408e88" + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0868ae7a552e809e5cd8f93ba022071640408e88", - "reference": "0868ae7a552e809e5cd8f93ba022071640408e88", + "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0b4066eede55c48f38bcee4fb8f0aa85654390fd", + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd", "shasum": "" }, "require": { "ext-dom": "*", "ext-xml": "*", - "php": ">=5.3.3" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "mikehaertl/php-shellcommand": "~1.1.0", - "phpunit/phpunit": "^4.8|^5.7", - "scrutinizer/ocular": "~1.1" + "mikehaertl/php-shellcommand": "^1.1.0", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^8.5 || ^9.2", + "scrutinizer/ocular": "^1.6", + "unleashedtech/php-coding-standard": "^2.7 || ^3.0", + "vimeo/psalm": "^4.22 || ^5.0" }, "bin": [ "bin/html-to-markdown" @@ -4800,7 +4294,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.10-dev" + "dev-master": "5.2-dev" } }, "autoload": { @@ -4834,7 +4328,7 @@ ], "support": { "issues": "https://github.com/thephpleague/html-to-markdown/issues", - "source": "https://github.com/thephpleague/html-to-markdown/tree/4.10.0" + "source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1" }, "funding": [ { @@ -4850,34 +4344,34 @@ "type": "github" }, { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" + "url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown", + "type": "tidelift" } ], - "time": "2020-07-01T00:34:03+00:00" + "time": "2023-07-12T21:21:09+00:00" }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -4898,7 +4392,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -4910,36 +4404,39 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "maennchen/zipstream-php", - "version": "2.2.6", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f" + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f", - "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1", + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1", "shasum": "" }, "require": { - "myclabs/php-enum": "^1.5", - "php": "^7.4 || ^8.0", - "psr/http-message": "^1.0", - "symfony/polyfill-mbstring": "^1.0" + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.1" }, "require-dev": { "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.9", - "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4", - "phpunit/phpunit": "^8.5.8 || ^9.4.2", - "vimeo/psalm": "^4.1" + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10.0", + "vimeo/psalm": "^5.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" }, "type": "library", "autoload": { @@ -4976,7 +4473,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.6" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0" }, "funding": [ { @@ -4988,7 +4485,7 @@ "type": "open_collective" } ], - "time": "2022-11-25T18:57:19+00:00" + "time": "2023-06-21T14:59:35+00:00" }, { "name": "markbaker/complex", @@ -5099,249 +4596,106 @@ }, { "name": "masterminds/html5", - "version": "2.7.5", + "version": "2.8.1", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-libxml": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.7.5" - }, - "time": "2021-07-01T14:25:37+00:00" - }, - { - "name": "michelf/php-markdown", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/michelf/php-markdown.git", - "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c", - "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4.3 <5.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Michelf\\": "Michelf/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Michel Fortin", - "email": "michel.fortin@michelf.ca", - "homepage": "https://michelf.ca/", - "role": "Developer" - }, - { - "name": "John Gruber", - "homepage": "https://daringfireball.net/" - } - ], - "description": "PHP Markdown", - "homepage": "https://michelf.ca/projects/php-markdown/", - "keywords": [ - "markdown" - ], - "support": { - "issues": "https://github.com/michelf/php-markdown/issues", - "source": "https://github.com/michelf/php-markdown/tree/1.9.0" - }, - "time": "2019-12-02T02:32:27+00:00" - }, - { - "name": "mollie/mollie-api-php", - "version": "v2.37.1", - "source": { - "type": "git", - "url": "https://github.com/mollie/mollie-api-php.git", - "reference": "260adf68db65edd82b6c11f8fa58622ff72b717c" + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/260adf68db65edd82b6c11f8fa58622ff72b717c", - "reference": "260adf68db65edd82b6c11f8fa58622ff72b717c", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", "shasum": "" }, - "require": { - "composer/ca-bundle": "^1.1", - "ext-curl": "*", - "ext-json": "*", - "ext-openssl": "*", - "php": ">=5.6" + "require": { + "ext-dom": "*", + "php": ">=5.3.0" }, "require-dev": { - "eloquent/liberator": "^2.0", - "friendsofphp/php-cs-fixer": "^3.0", - "guzzlehttp/guzzle": "^6.3 || ^7.0", - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.1 || ^8.5" - }, - "suggest": { - "mollie/oauth2-mollie-php": "Use OAuth to authenticate with the Mollie API. This is needed for some endpoints. Visit https://docs.mollie.com/ for more information." + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, "autoload": { "psr-4": { - "Mollie\\Api\\": "src/" + "Masterminds\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "MIT" ], "authors": [ { - "name": "Mollie B.V.", - "email": "info@mollie.com" + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" } ], - "description": "Mollie API client library for PHP. Mollie is a European Payment Service provider and offers international payment methods such as Mastercard, VISA, American Express and PayPal, and local payment methods such as iDEAL, Bancontact, SOFORT Banking, SEPA direct debit, Belfius Direct Net, KBC Payment Button and various gift cards such as Podiumcadeaukaart and fashioncheque.", - "homepage": "https://www.mollie.com/en/developers", + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", "keywords": [ - "Apple Pay", - "CBC", - "Przelewy24", - "api", - "bancontact", - "banktransfer", - "belfius", - "belfius direct net", - "charges", - "creditcard", - "direct debit", - "fashioncheque", - "gateway", - "gift cards", - "ideal", - "inghomepay", - "intersolve", - "kbc", - "klarna", - "mistercash", - "mollie", - "paylater", - "payment", - "payments", - "paypal", - "paysafecard", - "podiumcadeaukaart", - "recurring", - "refunds", - "sepa", - "service", - "sliceit", - "sofort", - "sofortbanking", - "subscriptions" - ], - "support": { - "issues": "https://github.com/mollie/mollie-api-php/issues", - "source": "https://github.com/mollie/mollie-api-php/tree/v2.37.1" - }, - "time": "2021-08-09T09:30:47+00:00" + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + }, + "time": "2023-05-10T11:58:31+00:00" }, { "name": "mongodb/mongodb", - "version": "1.15.0", + "version": "1.17.1", "source": { "type": "git", "url": "https://github.com/mongodb/mongo-php-library.git", - "reference": "3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8" + "reference": "01d0840bf0678f519e72dc71b69c8a50a0856c2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8", - "reference": "3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8", + "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/01d0840bf0678f519e72dc71b69c8a50a0856c2d", + "reference": "01d0840bf0678f519e72dc71b69c8a50a0856c2d", "shasum": "" }, "require": { "ext-hash": "*", "ext-json": "*", - "ext-mongodb": "^1.15.0", - "jean85/pretty-package-versions": "^1.2 || ^2.0.1", - "php": "^7.2 || ^8.0", - "symfony/polyfill-php80": "^1.19" + "ext-mongodb": "^1.17.0", + "jean85/pretty-package-versions": "^2.0.1", + "php": "^7.4 || ^8.0", + "psr/log": "^1.1.4|^2|^3", + "symfony/polyfill-php80": "^1.27", + "symfony/polyfill-php81": "^1.27" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "squizlabs/php_codesniffer": "^3.6", + "doctrine/coding-standard": "^12.0", + "rector/rector": "^0.19", + "squizlabs/php_codesniffer": "^3.7", "symfony/phpunit-bridge": "^5.2", - "vimeo/psalm": "^4.28" + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15.x-dev" + "dev-master": "1.17.x-dev" } }, "autoload": { @@ -5364,6 +4718,10 @@ { "name": "Jeremy Mikola", "email": "jmikola@gmail.com" + }, + { + "name": "Jérôme Tamarelle", + "email": "jerome.tamarelle@mongodb.com" } ], "description": "MongoDB driver library", @@ -5376,22 +4734,22 @@ ], "support": { "issues": "https://github.com/mongodb/mongo-php-library/issues", - "source": "https://github.com/mongodb/mongo-php-library/tree/1.15.0" + "source": "https://github.com/mongodb/mongo-php-library/tree/1.17.1" }, - "time": "2022-11-23T04:45:35+00:00" + "time": "2024-03-14T10:33:11+00:00" }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -5468,7 +4826,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -5480,41 +4838,42 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5530,7 +4889,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -5538,7 +4897,7 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "myclabs/php-enum", @@ -5605,36 +4964,40 @@ }, { "name": "nelmio/alice", - "version": "v3.8.2", + "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/nelmio/alice.git", - "reference": "b57f4c6f039baa72e2bd5b75fd8de77e1b9228e3" + "reference": "a020c0767e10dbb7bf1c193e16e94710691133d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/alice/zipball/b57f4c6f039baa72e2bd5b75fd8de77e1b9228e3", - "reference": "b57f4c6f039baa72e2bd5b75fd8de77e1b9228e3", + "url": "https://api.github.com/repos/nelmio/alice/zipball/a020c0767e10dbb7bf1c193e16e94710691133d9", + "reference": "a020c0767e10dbb7bf1c193e16e94710691133d9", "shasum": "" }, "require": { "fakerphp/faker": "^1.10", "myclabs/deep-copy": "^1.10", - "php": "^7.3 || ^8.0", - "sebastian/comparator": "^3.0 || ^4.0", - "symfony/property-access": "^2.8 || ^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^2.8 || ^3.4 || ^4.0 || ^5.0" + "php": "^8.1", + "sebastian/comparator": "^3.0 || ^4.0 || ^5.0", + "symfony/property-access": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, "conflict": { - "symfony/framework-bundle": "<3.4" + "symfony/framework-bundle": "<5.4.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.1.0", + "bamarni/composer-bin-plugin": "^1.4.1", "phpspec/prophecy": "^1.6", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^8.5.4 || ^9.3", - "symfony/phpunit-bridge": "^5.1.3", - "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0" + "phpunit/phpunit": "^9.3", + "symfony/config": "^5.4 || ^6.0", + "symfony/dependency-injection": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0", + "symfony/var-dumper": "^5.4 || ^6.0" }, "suggest": { "theofidry/alice-data-fixtures": "Wrapper for Alice to provide a persistence layer." @@ -5683,7 +5046,7 @@ ], "support": { "issues": "https://github.com/nelmio/alice/issues", - "source": "https://github.com/nelmio/alice/tree/v3.8.2" + "source": "https://github.com/nelmio/alice/tree/3.12.2" }, "funding": [ { @@ -5691,33 +5054,34 @@ "type": "github" } ], - "time": "2021-02-27T19:13:09+00:00" + "time": "2023-02-13T11:17:55+00:00" }, { "name": "nelmio/cors-bundle", - "version": "2.1.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "0b964b665016dfb61dd0fd2bb8c24afb1ae45a93" + "reference": "78fcdb91f76b080a1008133def9c7f613833933d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/0b964b665016dfb61dd0fd2bb8c24afb1ae45a93", - "reference": "0b964b665016dfb61dd0fd2bb8c24afb1ae45a93", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/78fcdb91f76b080a1008133def9c7f613833933d", + "reference": "78fcdb91f76b080a1008133def9c7f613833933d", "shasum": "" }, "require": { - "symfony/framework-bundle": "^4.3 || ^5.0" + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "mockery/mockery": "^1.2", - "symfony/phpunit-bridge": "^4.3 || ^5.0" + "mockery/mockery": "^1.3.6", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -5748,119 +5112,78 @@ "cors", "crossdomain" ], - "time": "2021-04-20T08:27:05+00:00" + "support": { + "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.4.0" + }, + "time": "2023-11-30T16:41:19+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.12.0", + "name": "paragonie/constant_time_encoding", + "version": "v2.6.3", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "58c3f47f650c94ec05a151692652a868995d2938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", + "reference": "58c3f47f650c94ec05a151692652a868995d2938", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "php": "^7|^8" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" }, - "bin": [ - "bin/php-parse" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "ParagonIE\\ConstantTime\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" - }, - "time": "2021-07-21T10:44:31+00:00" - }, - { - "name": "onelogin/php-saml", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/onelogin/php-saml.git", - "reference": "f30f5062f3653c4d2082892d207f4dc3e577d979" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/onelogin/php-saml/zipball/f30f5062f3653c4d2082892d207f4dc3e577d979", - "reference": "f30f5062f3653c4d2082892d207f4dc3e577d979", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "robrichards/xmlseclibs": ">=3.1.1" - }, - "require-dev": { - "pdepend/pdepend": "^2.8.0", - "php-coveralls/php-coveralls": "^2.0", - "phploc/phploc": "^4.0 || ^5.0 || ^6.0 || ^7.0", - "phpunit/phpunit": "^9.5", - "sebastian/phpcpd": "^4.0 || ^5.0 || ^6.0 ", - "squizlabs/php_codesniffer": "^3.5.8" - }, - "suggest": { - "ext-curl": "Install curl lib to be able to use the IdPMetadataParser for parsing remote XMLs", - "ext-dom": "Install xml lib", - "ext-openssl": "Install openssl lib in order to handle with x509 certs (require to support sign and encryption)", - "ext-zlib": "Install zlib" - }, - "type": "library", - "autoload": { - "psr-4": { - "OneLogin\\": "src/" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], - "description": "OneLogin PHP SAML Toolkit", - "homepage": "https://developers.onelogin.com/saml/php", + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", "keywords": [ - "SAML2", - "onelogin", - "saml" + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" ], "support": { - "email": "sixto.garcia@onelogin.com", - "issues": "https://github.com/onelogin/php-saml/issues", - "source": "https://github.com/onelogin/php-saml/" + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2021-03-02T10:19:19+00:00" + "time": "2022-06-14T06:56:20+00:00" }, { "name": "paragonie/random_compat", @@ -5913,79 +5236,120 @@ "time": "2020-10-15T08:29:30+00:00" }, { - "name": "phenx/php-font-lib", - "version": "0.5.4", + "name": "paragonie/sodium_compat", + "version": "v1.20.0", "source": { "type": "git", - "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6", "shasum": "" }, "require": { - "ext-mbstring": "*" + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" }, "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5" + "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." }, "type": "library", "autoload": { - "psr-4": { - "FontLib\\": "src/FontLib" - } + "files": [ + "autoload.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "ISC" ], "authors": [ { - "name": "Fabien Ménager", - "email": "fabien.menager@gmail.com" - } + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" ], - "description": "A library to read, parse, export and make subsets of different types of font files.", - "homepage": "https://github.com/PhenX/php-font-lib", "support": { - "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0" }, - "time": "2021-12-17T19:44:54+00:00" + "time": "2023-04-30T00:54:53+00:00" }, { - "name": "phenx/php-svg-lib", - "version": "0.3.4", + "name": "phenx/php-font-lib", + "version": "0.5.6", "source": { "type": "git", - "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2" + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "a1681e9793040740a405ac5b189275059e2a9863" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/f627771eb854aa7f45f80add0f23c6c4d67ea0f2", - "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863", + "reference": "a1681e9793040740a405ac5b189275059e2a9863", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "sabberworm/php-css-parser": "^8.3" + "ext-mbstring": "*" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" }, "type": "library", "autoload": { "psr-4": { - "Svg\\": "src/Svg" + "FontLib\\": "src/FontLib" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-2.1-or-later" ], "authors": [ { @@ -5993,68 +5357,59 @@ "email": "fabien.menager@gmail.com" } ], - "description": "A library to read, parse and export to PDF SVG files.", - "homepage": "https://github.com/PhenX/php-svg-lib", + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", "support": { - "issues": "https://github.com/PhenX/php-svg-lib/issues", - "source": "https://github.com/PhenX/php-svg-lib/tree/0.3.4" + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6" }, - "time": "2021-10-18T02:13:32+00:00" + "time": "2024-01-29T14:45:26+00:00" }, { - "name": "php-cs-fixer/diff", - "version": "v1.3.1", + "name": "phenx/php-svg-lib", + "version": "0.5.3", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759" + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "0e46722c154726a5f9ac218197ccc28adba16fcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/0e46722c154726a5f9ac218197ccc28adba16fcf", + "reference": "0e46722c154726a5f9ac218197ccc28adba16fcf", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4" }, "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Svg\\": "src/Svg" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "LGPL-3.0-or-later" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "SpacePossum" + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" } ], - "description": "sebastian/diff v2 backport support for PHP5.6", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib", "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v1.3.1" + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.3" }, - "time": "2020-10-14T08:39:05+00:00" + "time": "2024-02-23T20:39:24+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -6103,20 +5458,24 @@ "reflection", "static analysis" ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -6127,7 +5486,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -6155,28 +5515,41 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-09-03T19:13:55+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -6200,7 +5573,11 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-09-17T18:55:26+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpoffice/phpspreadsheet", @@ -6309,16 +5686,16 @@ }, { "name": "phpoffice/phpword", - "version": "0.18.2", + "version": "0.18.3", "source": { "type": "git", "url": "https://github.com/PHPOffice/PHPWord.git", - "reference": "aca10785cf68dc95d7f6fac4fe854979fef3f8db" + "reference": "be0190cd5d8f95b4be08d5853b107aa4e352759a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/aca10785cf68dc95d7f6fac4fe854979fef3f8db", - "reference": "aca10785cf68dc95d7f6fac4fe854979fef3f8db", + "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/be0190cd5d8f95b4be08d5853b107aa4e352759a", + "reference": "be0190cd5d8f95b4be08d5853b107aa4e352759a", "shasum": "" }, "require": { @@ -6415,26 +5792,73 @@ ], "support": { "issues": "https://github.com/PHPOffice/PHPWord/issues", - "source": "https://github.com/PHPOffice/PHPWord/tree/0.18.2" + "source": "https://github.com/PHPOffice/PHPWord/tree/0.18.3" + }, + "time": "2022-02-17T15:40:03+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.27.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757", + "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "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/1.27.0" }, - "time": "2021-06-04T20:58:45+00:00" + "time": "2024-03-21T13:14:53+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -6454,7 +5878,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -6464,9 +5888,57 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/2.0.0" + }, + "time": "2021-02-03T23:23:37+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", @@ -6568,21 +6040,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -6602,7 +6074,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -6614,27 +6086,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -6654,7 +6126,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -6669,31 +6141,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -6708,7 +6180,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -6722,26 +6194,26 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/link", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/link.git", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -6765,6 +6237,7 @@ } ], "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", "keywords": [ "http", "http-link", @@ -6773,34 +6246,37 @@ "psr-13", "rest" ], - "time": "2016-10-28T16:06:13+00:00" + "support": { + "source": "https://github.com/php-fig/link/tree/1.1.1" + }, + "time": "2021-03-11T22:59:13+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6821,31 +6297,31 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/2.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:41:46+00:00" }, { "name": "psr/simple-cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -6860,7 +6336,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -6872,9 +6348,9 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, - "time": "2017-10-23T01:57:42+00:00" + "time": "2021-10-29T13:26:27+00:00" }, { "name": "ralouphie/getallheaders", @@ -6920,86 +6396,166 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, { "name": "ramsey/uuid", - "version": "3.9.4", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "be2451bef8147b7352a28fb4cddb08adc497ada3" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/be2451bef8147b7352a28fb4cddb08adc497ada3", - "reference": "be2451bef8147b7352a28fb4cddb08adc497ada3", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | ^9.99.99", - "php": "^5.4 | ^7 | ^8", - "symfony/polyfill-ctype": "^1.8" + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", - "moontoast/math": "^1.1", + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" + "captainhook": { + "force-install": true } }, "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ "guid", "identifier", @@ -7007,9 +6563,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid", - "wiki": "https://github.com/ramsey/uuid/wiki" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -7021,35 +6575,55 @@ "type": "tidelift" } ], - "time": "2021-08-06T20:32:15+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "ramsey/uuid-doctrine", - "version": "1.7.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid-doctrine.git", - "reference": "b250b9d425d5e806cd56a3ab8c60a575a611d786" + "reference": "b002676be0e5e342d857c47f1b68e24de6841d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/b250b9d425d5e806cd56a3ab8c60a575a611d786", - "reference": "b250b9d425d5e806cd56a3ab8c60a575a611d786", + "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/b002676be0e5e342d857c47f1b68e24de6841d08", + "reference": "b002676be0e5e342d857c47f1b68e24de6841d08", "shasum": "" }, "require": { - "doctrine/dbal": "^2.5", - "php": "^5.4 || ^7 || ^8", - "ramsey/uuid": "^3.5 || ^4" + "doctrine/dbal": "^2.8 || ^3.0", + "php": "^7.4 || ^8.0", + "ramsey/uuid": "^3.9.7 || ^4.0" }, "require-dev": { + "captainhook/plugin-composer": "^5.3", "doctrine/orm": "^2.5", - "mockery/mockery": "^0.9.11 || ^1", - "php-parallel-lint/php-parallel-lint": "^1", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7 || ^8 || ^9", - "squizlabs/php_codesniffer": "^3.5" + "ergebnis/composer-normalize": "^2.28.3", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-alpha4", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { "psr-4": { "Ramsey\\Uuid\\Doctrine\\": "src/" @@ -7076,7 +6650,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid-doctrine/issues", - "source": "https://github.com/ramsey/uuid-doctrine/tree/1.7.0" + "source": "https://github.com/ramsey/uuid-doctrine/tree/2.0.0" }, "funding": [ { @@ -7084,11 +6658,11 @@ "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid-doctrine", "type": "tidelift" } ], - "time": "2021-08-07T16:48:33+00:00" + "time": "2022-12-20T23:38:28+00:00" }, { "name": "respect/stringifier", @@ -7114,12 +6688,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "Respect\\Stringifier\\": "src/" - }, "files": [ "src/stringify.php" - ] + ], + "psr-4": { + "Respect\\Stringifier\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7146,44 +6720,42 @@ }, { "name": "respect/validation", - "version": "2.2.3", + "version": "2.3.6", "source": { "type": "git", "url": "https://github.com/Respect/Validation.git", - "reference": "4c21a7ffc9a4915673cb2c2843963919e664e627" + "reference": "263ae118fb9b0d3bc6692eb2154cd851deff7932" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Respect/Validation/zipball/4c21a7ffc9a4915673cb2c2843963919e664e627", - "reference": "4c21a7ffc9a4915673cb2c2843963919e664e627", + "url": "https://api.github.com/repos/Respect/Validation/zipball/263ae118fb9b0d3bc6692eb2154cd851deff7932", + "reference": "263ae118fb9b0d3bc6692eb2154cd851deff7932", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0", + "php": "^8.1 || ^8.2", "respect/stringifier": "^0.2.0", "symfony/polyfill-mbstring": "^1.2" }, "require-dev": { "egulias/email-validator": "^3.0", - "malukenho/docheader": "^0.1", + "giggsey/libphonenumber-for-php-lite": "^8.13", + "malukenho/docheader": "^1.0", "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^9.3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.6", "psr/http-message": "^1.0", - "respect/coding-standard": "^3.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/validator": "^3.0||^4.0", - "zendframework/zend-validator": "^2.1" + "respect/coding-standard": "^4.0", + "squizlabs/php_codesniffer": "^3.7" }, "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", + "egulias/email-validator": "Improves the Email rule if available", "ext-bcmath": "Arbitrary Precision Mathematics", "ext-fileinfo": "File Information", "ext-mbstring": "Multibyte String Functions", - "symfony/validator": "Use Symfony validator through Respect\\Validation", - "zendframework/zend-validator": "Use Zend Framework validator through Respect\\Validation" + "giggsey/libphonenumber-for-php-lite": "Enables the phone rule if available" }, "type": "library", "autoload": { @@ -7210,64 +6782,22 @@ ], "support": { "issues": "https://github.com/Respect/Validation/issues", - "source": "https://github.com/Respect/Validation/tree/2.2.3" - }, - "time": "2021-03-19T14:12:45+00:00" - }, - { - "name": "robrichards/xmlseclibs", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "php": ">= 5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "RobRichards\\XMLSecLibs\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "A PHP library for XML Security", - "homepage": "https://github.com/robrichards/xmlseclibs", - "keywords": [ - "security", - "signature", - "xml", - "xmldsig" - ], - "support": { - "issues": "https://github.com/robrichards/xmlseclibs/issues", - "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.1" + "source": "https://github.com/Respect/Validation/tree/2.3.6" }, - "time": "2020-09-05T13:00:25+00:00" + "time": "2024-03-24T18:49:24+00:00" }, { "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "version": "v8.5.1", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4a3d572b0f8b28bb6fd016ae8bbfc445facef152", + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152", "shasum": "" }, "require": { @@ -7275,13 +6805,17 @@ "php": ">=5.6.20" }, "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "phpunit/phpunit": "^5.7.27" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0.x-dev" + } + }, "autoload": { "psr-4": { "Sabberworm\\CSS\\": "src/" @@ -7294,6 +6828,14 @@ "authors": [ { "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" } ], "description": "Parser for CSS Files written in PHP", @@ -7304,23 +6846,23 @@ "stylesheet" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.5.1" }, - "time": "2021-12-11T13:40:54+00:00" + "time": "2024-02-15T16:41:13+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -7373,7 +6915,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -7381,20 +6923,20 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -7439,7 +6981,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -7447,20 +6989,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { @@ -7509,14 +7051,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -7524,20 +7066,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -7576,10 +7118,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -7587,7 +7129,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "setono/cron-expression-bundle", @@ -7647,40 +7189,36 @@ }, { "name": "spomky-labs/aes-key-wrap", - "version": "v6.0.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/aes-key-wrap.git", - "reference": "97388255a37ad6fb1ed332d07e61fa2b7bb62e0d" + "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/aes-key-wrap/zipball/97388255a37ad6fb1ed332d07e61fa2b7bb62e0d", - "reference": "97388255a37ad6fb1ed332d07e61fa2b7bb62e0d", + "url": "https://api.github.com/repos/Spomky-Labs/aes-key-wrap/zipball/fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", + "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", "shasum": "" }, "require": { "ext-mbstring": "*", - "lib-openssl": "*", - "php": ">=7.2", - "thecodingmachine/safe": "^1.1" + "ext-openssl": "*", + "php": ">=8.0" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-beberlei-assert": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "thecodingmachine/phpstan-safe-rule": "^1.0" + "infection/infection": "^0.25.4", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-beberlei-assert": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.0", + "rector/rector": "^0.12.5", + "symplify/easy-coding-standard": "^10.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { "AESKW\\": "src/" @@ -7711,39 +7249,68 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/aes-key-wrap/issues", - "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v6.0.0" + "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v7.0.0" }, - "time": "2020-08-01T14:07:55+00:00" + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2021-12-08T20:36:59+00:00" }, { - "name": "spomky-labs/base64url", - "version": "v2.0.4", + "name": "spomky-labs/pki-framework", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/Spomky-Labs/base64url.git", - "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d" + "url": "https://github.com/Spomky-Labs/pki-framework.git", + "reference": "86102bdd19379b2c6e5b0feb94fd490d40e7d133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/base64url/zipball/7752ce931ec285da4ed1f4c5aa27e45e097be61d", - "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/86102bdd19379b2c6e5b0feb94fd490d40e7d133", + "reference": "86102bdd19379b2c6e5b0feb94fd490d40e7d133", "shasum": "" }, "require": { - "php": ">=7.1" + "brick/math": "^0.10|^0.11|^0.12", + "ext-mbstring": "*", + "php": ">=8.1" }, "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.11|^0.12", - "phpstan/phpstan-beberlei-assert": "^0.11|^0.12", - "phpstan/phpstan-deprecation-rules": "^0.11|^0.12", - "phpstan/phpstan-phpunit": "^0.11|^0.12", - "phpstan/phpstan-strict-rules": "^0.11|^0.12" + "ekino/phpstan-banned-code": "^1.0", + "ext-gmp": "*", + "ext-openssl": "*", + "infection/infection": "^0.27", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-beberlei-assert": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^10.1", + "rector/rector": "^0.19", + "roave/security-advisories": "dev-latest", + "symfony/phpunit-bridge": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symplify/easy-coding-standard": "^12.0" + }, + "suggest": { + "ext-bcmath": "For better performance (or GMP)", + "ext-gmp": "For better performance (or BCMath)", + "ext-openssl": "For OpenSSL based cyphering" }, "type": "library", "autoload": { "psr-4": { - "Base64Url\\": "src/" + "SpomkyLabs\\Pki\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7751,22 +7318,49 @@ "MIT" ], "authors": [ + { + "name": "Joni Eskelinen", + "email": "jonieske@gmail.com", + "role": "Original developer" + }, { "name": "Florent Morselli", - "homepage": "https://github.com/Spomky-Labs/base64url/contributors" + "email": "florent.morselli@spomky-labs.com", + "role": "Spomky-Labs PKI Framework developer" } ], - "description": "Base 64 URL Safe Encoding/Decoding PHP Library", - "homepage": "https://github.com/Spomky-Labs/base64url", + "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", + "homepage": "https://github.com/spomky-labs/pki-framework", "keywords": [ - "base64", - "rfc4648", - "safe", - "url" + "DER", + "Private Key", + "ac", + "algorithm identifier", + "asn.1", + "asn1", + "attribute certificate", + "certificate", + "certification request", + "cryptography", + "csr", + "decrypt", + "ec", + "encrypt", + "pem", + "pkcs", + "public key", + "rsa", + "sign", + "signature", + "verify", + "x.509", + "x.690", + "x509", + "x690" ], "support": { - "issues": "https://github.com/Spomky-Labs/base64url/issues", - "source": "https://github.com/Spomky-Labs/base64url/tree/v2.0.4" + "issues": "https://github.com/Spomky-Labs/pki-framework/issues", + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.1" }, "funding": [ { @@ -7778,161 +7372,114 @@ "type": "patreon" } ], - "time": "2020-11-03T09:10:25+00:00" + "time": "2024-02-05T20:37:46+00:00" }, { "name": "stof/doctrine-extensions-bundle", - "version": "v1.6.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", - "reference": "ef469a9d3b8be23d4c746d558742cc1b3e2588cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/ef469a9d3b8be23d4c746d558742cc1b3e2588cb", - "reference": "ef469a9d3b8be23d4c746d558742cc1b3e2588cb", - "shasum": "" - }, - "require": { - "gedmo/doctrine-extensions": "^2.3.4 || ^3.0.0", - "php": "^7.1.3 || ^8.0", - "symfony/config": "^4.4 || ^5.2", - "symfony/dependency-injection": "^4.4 || ^5.2", - "symfony/event-dispatcher": "^4.4 || ^5.2", - "symfony/http-kernel": "^4.4 || ^5.2" - }, - "require-dev": { - "symfony/mime": "^4.4 || ^5.2", - "symfony/phpunit-bridge": "^v5.2.4", - "symfony/security-core": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/doctrine-bundle": "to use the ORM extensions", - "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions", - "symfony/mime": "To use the Mime component integration for Uploadable" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-4": { - "Stof\\DoctrineExtensionsBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Integration of the gedmo/doctrine-extensions with Symfony", - "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", - "keywords": [ - "behaviors", - "doctrine2", - "extensions", - "gedmo", - "loggable", - "nestedset", - "sluggable", - "sortable", - "timestampable", - "translatable", - "tree" - ], - "support": { - "issues": "https://github.com/stof/StofDoctrineExtensionsBundle/issues", - "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.6.0" - }, - "time": "2021-03-05T13:09:06+00:00" - }, - { - "name": "sumup/sumup-ecom-php-sdk", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/sumup/sumup-ecom-php-sdk.git", - "reference": "b294963b9861abaae53adb6db5ca209059fcf845" + "reference": "9f7023e4c8a1c00a5627d41c1027a3f89e477630" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sumup/sumup-ecom-php-sdk/zipball/b294963b9861abaae53adb6db5ca209059fcf845", - "reference": "b294963b9861abaae53adb6db5ca209059fcf845", + "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/9f7023e4c8a1c00a5627d41c1027a3f89e477630", + "reference": "9f7023e4c8a1c00a5627d41c1027a3f89e477630", "shasum": "" }, "require": { - "php": "^5.6|^7.0" + "gedmo/doctrine-extensions": "^3.15.0", + "php": "^7.4 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.5", + "phpstan/phpstan-symfony": "^1.3", + "symfony/mime": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^v6.4.1 || ^7.0.1", + "symfony/security-core": "^5.4 || ^6.0 || ^7.0" }, "suggest": { - "guzzlehttp/guzzle": "Allows for implementation of the Guzzle HTTP client" + "doctrine/doctrine-bundle": "to use the ORM extensions", + "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions", + "symfony/mime": "To use the Mime component integration for Uploadable" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "SumUp\\": "src/SumUp/" + "Stof\\DoctrineExtensionsBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "proprietary" + "MIT" ], "authors": [ { - "name": "SumUp", - "email": "integration@sumup.com", - "homepage": "https://github.com/sumup" + "name": "Christophe Coevoet", + "email": "stof@notk.org" } ], - "description": "SumUp eCom SDK for PHP", - "homepage": "https://developer.sumup.com", + "description": "Integration of the gedmo/doctrine-extensions with Symfony", + "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", "keywords": [ - "checkout", - "ecommerce", - "payment", - "payment processing", - "sdk", - "sumup" + "behaviors", + "doctrine2", + "extensions", + "gedmo", + "loggable", + "nestedset", + "sluggable", + "sortable", + "timestampable", + "translatable", + "tree" ], "support": { - "issues": "https://github.com/sumup/sumup-ecom-php-sdk/issues", - "source": "https://github.com/sumup/sumup-ecom-php-sdk/tree/master" + "issues": "https://github.com/stof/StofDoctrineExtensionsBundle/issues", + "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.11.0" }, - "time": "2019-08-28T14:48:03+00:00" + "time": "2024-02-13T14:43:20+00:00" }, { "name": "symfony/amqp-messenger", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "951969bd57b1087516fd8411e5ec2de122715351" + "reference": "456958ef89fffddc3935f3954a7eac255a5adb21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/951969bd57b1087516fd8411e5ec2de122715351", - "reference": "951969bd57b1087516fd8411e5ec2de122715351", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/456958ef89fffddc3935f3954a7eac255a5adb21", + "reference": "456958ef89fffddc3935f3954a7eac255a5adb21", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/messenger": "^5.3" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/messenger": "^5.3|^6.0" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" @@ -7958,7 +7505,7 @@ "description": "Symfony AMQP extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.3.14" + "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.36" }, "funding": [ { @@ -7974,34 +7521,34 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:52:31+00:00" + "time": "2024-02-14T16:15:37+00:00" }, { "name": "symfony/asset", - "version": "v5.3.11", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "547d3d91c759bae8e302630e68f6c4d415715bc3" + "reference": "0e98032106d18e57f57176d616e3fae80db7a845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/547d3d91c759bae8e302630e68f6c4d415715bc3", - "reference": "547d3d91c759bae8e302630e68f6c4d415715bc3", + "url": "https://api.github.com/repos/symfony/asset/zipball/0e98032106d18e57f57176d616e3fae80db7a845", + "reference": "0e98032106d18e57f57176d616e3fae80db7a845", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/http-foundation": "" @@ -8032,7 +7579,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.3.11" + "source": "https://github.com/symfony/asset/tree/v5.4.35" }, "funding": [ { @@ -8048,20 +7595,20 @@ "type": "tidelift" } ], - "time": "2021-11-05T16:25:46+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/cache", - "version": "v5.3.12", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "fe05bcb21c1287401d96d066ada7ed881418c6a1" + "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/fe05bcb21c1287401d96d066ada7ed881418c6a1", - "reference": "fe05bcb21c1287401d96d066ada7ed881418c6a1", + "url": "https://api.github.com/repos/symfony/cache/zipball/a30f316214d908cf5874f700f3f3fb29ceee91ba", + "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba", "shasum": "" }, "require": { @@ -8069,14 +7616,14 @@ "psr/cache": "^1.0|^2.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "conflict": { - "doctrine/dbal": "<2.10", + "doctrine/dbal": "<2.13.1", "symfony/dependency-injection": "<4.4", "symfony/http-kernel": "<4.4", "symfony/var-dumper": "<4.4" @@ -8089,15 +7636,15 @@ "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.10|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1", "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -8122,14 +7669,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", "keywords": [ "caching", "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.3.12" + "source": "https://github.com/symfony/cache/tree/v5.4.36" }, "funding": [ { @@ -8145,26 +7692,26 @@ "type": "tidelift" } ], - "time": "2021-11-23T18:33:50+00:00" + "time": "2024-02-19T13:08:14+00:00" }, { "name": "symfony/config", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "04695656c462fcadad350d5d82f5be81440fb4b2" + "reference": "0a4f363dc2f13d2f871f917cc563796d9ddc78d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/04695656c462fcadad350d5d82f5be81440fb4b2", - "reference": "04695656c462fcadad350d5d82f5be81440fb4b2", + "url": "https://api.github.com/repos/symfony/config/zipball/0a4f363dc2f13d2f871f917cc563796d9ddc78d1", + "reference": "0a4f363dc2f13d2f871f917cc563796d9ddc78d1", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/filesystem": "^4.4|^5.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", "symfony/polyfill-php81": "^1.22" @@ -8173,11 +7720,11 @@ "symfony/finder": "<4.4" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -8208,7 +7755,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/v5.3.14" + "source": "https://github.com/symfony/config/tree/v5.4.36" }, "funding": [ { @@ -8224,32 +7771,33 @@ "type": "tidelift" } ], - "time": "2022-01-03T09:49:07+00:00" + "time": "2024-02-23T16:13:23+00:00" }, { "name": "symfony/console", - "version": "v5.3.11", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3e7ab8f5905058984899b05a4648096f558bfeba" + "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3e7ab8f5905058984899b05a4648096f558bfeba", - "reference": "3e7ab8f5905058984899b05a4648096f558bfeba", + "url": "https://api.github.com/repos/symfony/console/zipball/39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", + "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { + "psr/log": ">=3", "symfony/dependency-injection": "<4.4", "symfony/dotenv": "<5.1", "symfony/event-dispatcher": "<4.4", @@ -8261,12 +7809,12 @@ }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -8301,12 +7849,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.11" + "source": "https://github.com/symfony/console/tree/v5.4.36" }, "funding": [ { @@ -8322,7 +7870,7 @@ "type": "tidelift" } ], - "time": "2021-11-21T19:41:05+00:00" + "time": "2024-02-20T16:33:57+00:00" }, { "name": "symfony/contracts", @@ -8427,23 +7975,24 @@ }, { "name": "symfony/dependency-injection", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b9de28b341247a92fa576315022b850c315ef82a" + "reference": "cc1fb237cd0e6da33005062b13b8485deb6e4440" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b9de28b341247a92fa576315022b850c315ef82a", - "reference": "b9de28b341247a92fa576315022b850c315ef82a", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/cc1fb237cd0e6da33005062b13b8485deb6e4440", + "reference": "cc1fb237cd0e6da33005062b13b8485deb6e4440", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { @@ -8451,16 +8000,16 @@ "symfony/config": "<5.3", "symfony/finder": "<4.4", "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4" + "symfony/yaml": "<4.4.26" }, "provide": { "psr/container-implementation": "1.0", "symfony/service-implementation": "1.0|2.0" }, "require-dev": { - "symfony/config": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4.26|^5.0|^6.0" }, "suggest": { "symfony/config": "", @@ -8495,7 +8044,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/v5.3.14" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.36" }, "funding": [ { @@ -8511,69 +8060,71 @@ "type": "tidelift" } ], - "time": "2022-01-24T19:55:49+00:00" + "time": "2024-02-22T18:43:31+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v5.3.11", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "9b220ebc6fb4d5f15a8b74887c059b4d57ba85f8" + "reference": "07ce0b69c4eed50aae2138916149da3f7d93dce7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/9b220ebc6fb4d5f15a8b74887c059b4d57ba85f8", - "reference": "9b220ebc6fb4d5f15a8b74887c059b4d57ba85f8", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/07ce0b69c4eed50aae2138916149da3f7d93dce7", + "reference": "07ce0b69c4eed50aae2138916149da3f7d93dce7", "shasum": "" }, "require": { "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2", + "doctrine/persistence": "^2|^3", "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/dbal": "<2.10", - "doctrine/orm": "<2.7.3", - "phpunit/phpunit": "<5.4.3", + "doctrine/dbal": "<2.13.1", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.7.4", + "symfony/cache": "<5.4", "symfony/dependency-injection": "<4.4", - "symfony/form": "<5.1", + "symfony/form": "<5.4.21|>=6,<6.2.7", "symfony/http-kernel": "<5", "symfony/messenger": "<4.4", "symfony/property-info": "<5", + "symfony/proxy-manager-bridge": "<4.4.19", "symfony/security-bundle": "<5", "symfony/security-core": "<5.3", - "symfony/validator": "<5.2" + "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" }, "require-dev": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.0", + "doctrine/annotations": "^1.10.4|^2", + "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.10|^3.0", - "doctrine/orm": "^2.7.3", - "symfony/cache": "^5.1", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/doctrine-messenger": "^5.1", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^5.1.3", - "symfony/http-kernel": "^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0", - "symfony/security-core": "^5.3", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^5.2", - "symfony/var-dumper": "^4.4|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.7.4|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/doctrine-messenger": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.0|^6.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.3|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "doctrine/data-fixtures": "", @@ -8609,7 +8160,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.3.11" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.37" }, "funding": [ { @@ -8625,38 +8176,38 @@ "type": "tidelift" } ], - "time": "2021-11-12T11:38:27+00:00" + "time": "2024-02-27T10:07:57+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "cace447168f67c72dbdeb7545defac66d9d120fc" + "reference": "14a1d0a43b93f9b52effad08fb8dd936f09653b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/cace447168f67c72dbdeb7545defac66d9d120fc", - "reference": "cace447168f67c72dbdeb7545defac66d9d120fc", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/14a1d0a43b93f9b52effad08fb8dd936f09653b0", + "reference": "14a1d0a43b93f9b52effad08fb8dd936f09653b0", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/messenger": "^5.1", - "symfony/service-contracts": "^1.1|^2" + "symfony/messenger": "^5.1|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/dbal": "<2.10", + "doctrine/dbal": "<2.13", "doctrine/persistence": "<1.3" }, "require-dev": { - "doctrine/dbal": "^2.10|^3.0", - "doctrine/persistence": "^1.3|^2", - "symfony/property-access": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "doctrine/dbal": "^2.13|^3|^4", + "doctrine/persistence": "^1.3|^2|^3", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": "" @@ -8682,7 +8233,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v5.3.14" + "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.36" }, "funding": [ { @@ -8698,28 +8249,29 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:52:31+00:00" + "time": "2024-02-15T21:03:16+00:00" }, { "name": "symfony/dotenv", - "version": "v5.3.10", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "97ffd3846f8a782086e82c1b5fdefb3f3ad078db" + "reference": "4de488440104b99d2e7c0717ee432e760b061e32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/97ffd3846f8a782086e82c1b5fdefb3f3ad078db", - "reference": "97ffd3846f8a782086e82c1b5fdefb3f3ad078db", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/4de488440104b99d2e7c0717ee432e760b061e32", + "reference": "4de488440104b99d2e7c0717ee432e760b061e32", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "require-dev": { - "symfony/process": "^4.4|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -8752,7 +8304,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.3.10" + "source": "https://github.com/symfony/dotenv/tree/v5.4.35" }, "funding": [ { @@ -8768,32 +8320,35 @@ "type": "tidelift" } ], - "time": "2021-10-28T21:34:29+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/error-handler", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8f93f4532c28cfe0488a9517bcd7f6169306ebb2" + "reference": "90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8f93f4532c28cfe0488a9517bcd7f6169306ebb2", - "reference": "8f93f4532c28cfe0488a9517bcd7f6169306ebb2", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1", + "reference": "90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -8820,7 +8375,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/v5.3.14" + "source": "https://github.com/symfony/error-handler/tree/v5.4.36" }, "funding": [ { @@ -8836,26 +8391,26 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-02-22T11:40:53+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6dc2d5b31cdf84fa6344f44056c32f939fcb8c4a" + "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6dc2d5b31cdf84fa6344f44056c32f939fcb8c4a", - "reference": "6dc2d5b31cdf84fa6344f44056c32f939fcb8c4a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7a69a85c7ea5bdd1e875806a99c51a87d3a74b38", + "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -8867,13 +8422,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -8905,7 +8460,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/v5.3.14" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.35" }, "funding": [ { @@ -8921,26 +8476,26 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/expression-language", - "version": "v5.3.11", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "652b72882caddcbfa68754a31b7baf0e4a84cddd" + "reference": "d59441c10a5a73cd9d4d778b8253595a16f6716d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/652b72882caddcbfa68754a31b7baf0e4a84cddd", - "reference": "652b72882caddcbfa68754a31b7baf0e4a84cddd", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/d59441c10a5a73cd9d4d778b8253595a16f6716d", + "reference": "d59441c10a5a73cd9d4d778b8253595a16f6716d", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "type": "library", "autoload": { @@ -8968,7 +8523,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.3.11" + "source": "https://github.com/symfony/expression-language/tree/v5.4.35" }, "funding": [ { @@ -8984,25 +8539,26 @@ "type": "tidelift" } ], - "time": "2021-11-17T12:16:12+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/filesystem", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "1c11c4846dff1b62c869a47d45fa5ed5e93faea2" + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/1c11c4846dff1b62c869a47d45fa5ed5e93faea2", - "reference": "1c11c4846dff1b62c869a47d45fa5ed5e93faea2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/5a553607d4ffbfa9c0ab62facadea296c9db7086", + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -9031,7 +8587,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.14" + "source": "https://github.com/symfony/filesystem/tree/v5.4.35" }, "funding": [ { @@ -9047,24 +8603,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/finder", - "version": "v5.3.7", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" + "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", + "url": "https://api.github.com/repos/symfony/finder/zipball/abe6d6f77d9465fed3cd2d029b29d03b56b56435", + "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -9093,7 +8650,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.7" + "source": "https://github.com/symfony/finder/tree/v5.4.35" }, "funding": [ { @@ -9109,20 +8666,20 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/flex", - "version": "v1.17.6", + "version": "v1.21.6", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc" + "reference": "06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/7a79135e1dc66b30042b4d968ecba0908f9374bc", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc", + "url": "https://api.github.com/repos/symfony/flex/zipball/06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8", + "reference": "06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8", "shasum": "" }, "require": { @@ -9158,7 +8715,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.17.6" + "source": "https://github.com/symfony/flex/tree/v1.21.6" }, "funding": [ { @@ -9174,60 +8731,60 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:39:37+00:00" + "time": "2024-03-02T08:16:37+00:00" }, { "name": "symfony/form", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "bda43cb6c7a94a65266c0d74bdffb3e500aa2696" + "reference": "3bbf663b8021a5a7b8f4bf9b868354db6611a514" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/bda43cb6c7a94a65266c0d74bdffb3e500aa2696", - "reference": "bda43cb6c7a94a65266c0d74bdffb3e500aa2696", + "url": "https://api.github.com/repos/symfony/form/zipball/3bbf663b8021a5a7b8f4bf9b868354db6611a514", + "reference": "3bbf663b8021a5a7b8f4bf9b868354db6611a514", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/options-resolver": "^5.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/options-resolver": "^5.1|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^5.0.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.23", + "symfony/property-access": "^5.0.8|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4", "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<4.4", + "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", "symfony/error-handler": "<4.4.5", "symfony/framework-bundle": "<4.4", "symfony/http-kernel": "<4.4", - "symfony/translation": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/translation-contracts": "<1.1.7", - "symfony/twig-bridge": "<4.4" - }, - "require-dev": { - "doctrine/collections": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4.17|^5.1.9", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7" + }, + "require-dev": { + "doctrine/collections": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^4.4.17|^5.1.9|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/security-csrf": "For protecting forms against CSRF attacks.", @@ -9260,7 +8817,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.3.14" + "source": "https://github.com/symfony/form/tree/v5.4.36" }, "funding": [ { @@ -9276,104 +8833,103 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:22:30+00:00" + "time": "2024-02-08T18:38:25+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.3.11", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "f463eb8252f675a51330b1a28c982739cb9005f2" + "reference": "224f69093099a507cf84d8c48ceb29e8653a5896" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f463eb8252f675a51330b1a28c982739cb9005f2", - "reference": "f463eb8252f675a51330b1a28c982739cb9005f2", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/224f69093099a507cf84d8c48ceb29e8653a5896", + "reference": "224f69093099a507cf84d8c48ceb29e8653a5896", "shasum": "" }, "require": { "ext-xml": "*", "php": ">=7.2.5", - "symfony/cache": "^5.2", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/event-dispatcher": "^5.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/cache": "^5.2|^6.0", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^5.4.5|^6.0.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.4.24|^6.2.11", + "symfony/http-kernel": "^5.4|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^5.3" + "symfony/polyfill-php81": "^1.22", + "symfony/routing": "^5.3|^6.0" }, "conflict": { + "doctrine/annotations": "<1.13.1", + "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", "symfony/asset": "<5.3", - "symfony/browser-kit": "<4.4", - "symfony/console": "<5.2.5", + "symfony/console": "<5.2.5|>=7.0", "symfony/dom-crawler": "<4.4", "symfony/dotenv": "<5.1", "symfony/form": "<5.2", "symfony/http-client": "<4.4", "symfony/lock": "<4.4", "symfony/mailer": "<5.2", - "symfony/messenger": "<4.4", + "symfony/messenger": "<5.4", "symfony/mime": "<4.4", "symfony/property-access": "<5.3", "symfony/property-info": "<4.4", - "symfony/security-core": "<5.3", "symfony/security-csrf": "<5.3", "symfony/serializer": "<5.2", + "symfony/service-contracts": ">=3.0", "symfony/stopwatch": "<4.4", "symfony/translation": "<5.3", "symfony/twig-bridge": "<4.4", "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.2", + "symfony/validator": "<5.3.11", "symfony/web-profiler-bundle": "<4.4", "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "doctrine/persistence": "^1.3|^2.0", - "paragonie/sodium_compat": "^1.8", + "doctrine/annotations": "^1.13.1|^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/persistence": "^1.3|^2|^3", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^5.2", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7", - "symfony/dotenv": "^5.1", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^5.2", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^5.2", - "symfony/messenger": "^5.2", - "symfony/mime": "^4.4|^5.0", - "symfony/notifier": "^5.3", - "symfony/phpunit-bridge": "^5.3", + "symfony/asset": "^5.3|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", + "symfony/dotenv": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.2|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/mailer": "^5.2|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-info": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/security-bundle": "^5.3", - "symfony/serializer": "^5.2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/string": "^5.0", - "symfony/translation": "^5.3", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", - "twig/twig": "^2.10|^3.0" + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-info": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/string": "^5.0|^6.0", + "symfony/translation": "^5.3|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.3.11|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.10|^3.0.4" }, "suggest": { "ext-apcu": "For best performance of the system caches", @@ -9411,7 +8967,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/v5.3.11" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.36" }, "funding": [ { @@ -9427,30 +8983,30 @@ "type": "tidelift" } ], - "time": "2021-11-20T15:01:50+00:00" + "time": "2024-02-20T14:48:43+00:00" }, { "name": "symfony/http-client", - "version": "v5.3.14", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "692eace552581e33f05969180289c93c43911d8e" + "reference": "63d93fd99523b9608929a38172da3365a6c0821c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/692eace552581e33f05969180289c93c43911d8e", - "reference": "692eace552581e33f05969180289c93c43911d8e", + "url": "https://api.github.com/repos/symfony/http-client/zipball/63d93fd99523b9608929a38172da3365a6c0821c", + "reference": "63d93fd99523b9608929a38172da3365a6c0821c", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/http-client-contracts": "^2.4", "symfony/polyfill-php73": "^1.11", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2" + "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", @@ -9466,11 +9022,12 @@ "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4.13|^5.1.5", - "symfony/process": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -9497,8 +9054,11 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.3.14" + "source": "https://github.com/symfony/http-client/tree/v5.4.37" }, "funding": [ { @@ -9514,33 +9074,36 @@ "type": "tidelift" } ], - "time": "2022-01-22T06:52:49+00:00" + "time": "2024-02-28T15:18:15+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f1ac8067e60bca740dc51160788c8e91fc9de75a" + "reference": "f2ab692a22aef1cd54beb893aa0068bdfb093928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f1ac8067e60bca740dc51160788c8e91fc9de75a", - "reference": "f1ac8067e60bca740dc51160788c8e91fc9de75a", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f2ab692a22aef1cd54beb893aa0068bdfb093928", + "reference": "f2ab692a22aef1cd54beb893aa0068bdfb093928", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -9571,7 +9134,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.14" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.35" }, "funding": [ { @@ -9587,36 +9150,35 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.3.16", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "a126e33084ed0ed2bf3251942911f26078b8c559" + "reference": "4ef7ed872564852b3c6c15fecf492975a52cbff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a126e33084ed0ed2bf3251942911f26078b8c559", - "reference": "a126e33084ed0ed2bf3251942911f26078b8c559", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4ef7ed872564852b3c6c15fecf492975a52cbff3", + "reference": "4ef7ed872564852b3c6c15fecf492975a52cbff3", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.4", + "symfony/browser-kit": "<5.4", "symfony/cache": "<5.0", "symfony/config": "<5.0", "symfony/console": "<4.4", @@ -9636,19 +9198,20 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -9683,7 +9246,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/v5.3.16" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.37" }, "funding": [ { @@ -9699,38 +9262,39 @@ "type": "tidelift" } ], - "time": "2022-03-01T08:28:00+00:00" + "time": "2024-03-04T20:55:44+00:00" }, { "name": "symfony/mailer", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "8ff0b648d030a7bd79cefe05104cc1d3853523d2" + "reference": "b57d722f2bf6e1dc08df9c86efbfdcaaba89693b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/8ff0b648d030a7bd79cefe05104cc1d3853523d2", - "reference": "8ff0b648d030a7bd79cefe05104cc1d3853523d2", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b57d722f2bf6e1dc08df9c86efbfdcaaba89693b", + "reference": "b57d722f2bf6e1dc08df9c86efbfdcaaba89693b", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", + "egulias/email-validator": "^2.1.10|^3|^4", "php": ">=7.2.5", + "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/mime": "^5.2.6", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2.6|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { "symfony/http-kernel": "<4.4" }, "require-dev": { - "symfony/http-client-contracts": "^1.1|^2", - "symfony/messenger": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -9758,7 +9322,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.3.14" + "source": "https://github.com/symfony/mailer/tree/v5.4.36" }, "funding": [ { @@ -9774,30 +9338,31 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-02-01T13:42:14+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "cea8d288409064badeb1634935a16ebdaf14cdac" + "reference": "fbb1f557f5da0d09bda2fa0fd3d415350f418295" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/cea8d288409064badeb1634935a16ebdaf14cdac", - "reference": "cea8d288409064badeb1634935a16ebdaf14cdac", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/fbb1f557f5da0d09bda2fa0fd3d415350f418295", + "reference": "fbb1f557f5da0d09bda2fa0fd3d415350f418295", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/mailer": "^5.2.6" + "psr/event-dispatcher": "^1", + "symfony/mailer": "^5.4.21|^6.2.7" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-mailer-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Mailer\\Bridge\\Mailgun\\": "" @@ -9823,95 +9388,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v5.3.14" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:51:59+00:00" - }, - { - "name": "symfony/maker-bundle", - "version": "v1.36.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/maker-bundle.git", - "reference": "716eee9c8b10b33e682df1b7d80b9061887e9691" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/716eee9c8b10b33e682df1b7d80b9061887e9691", - "reference": "716eee9c8b10b33e682df1b7d80b9061887e9691", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.2|^2.0", - "nikic/php-parser": "^4.11", - "php": ">=7.1.3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "require-dev": { - "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^1.12.3|^2.0", - "doctrine/orm": "^2.3", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.0|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-main": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\MakerBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", - "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", - "keywords": [ - "code generator", - "generator", - "scaffold", - "scaffolding" - ], - "support": { - "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.36.4" + "source": "https://github.com/symfony/mailgun-mailer/tree/v5.4.35" }, "funding": [ { @@ -9927,30 +9404,30 @@ "type": "tidelift" } ], - "time": "2021-12-01T00:27:38+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/messenger", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "411ff54cb051a594d1e778a8bbd26905ba4efcb4" + "reference": "2114101eac7d26a662c5fbc241d9694907bb7357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/411ff54cb051a594d1e778a8bbd26905ba4efcb4", - "reference": "411ff54cb051a594d1e778a8bbd26905ba4efcb4", + "url": "https://api.github.com/repos/symfony/messenger/zipball/2114101eac7d26a662c5fbc241d9694907bb7357", + "reference": "2114101eac7d26a662c5fbc241d9694907bb7357", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/amqp-messenger": "^5.1", - "symfony/deprecation-contracts": "^2.1", - "symfony/doctrine-messenger": "^5.1", + "symfony/amqp-messenger": "^5.1|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-messenger": "^5.1|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/redis-messenger": "^5.1" + "symfony/redis-messenger": "^5.1|^6.0" }, "conflict": { "symfony/event-dispatcher": "<4.4", @@ -9960,17 +9437,17 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/serializer": "^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0" + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0" }, "suggest": { "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." @@ -10001,7 +9478,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/v5.3.14" + "source": "https://github.com/symfony/messenger/tree/v5.4.36" }, "funding": [ { @@ -10017,25 +9494,25 @@ "type": "tidelift" } ], - "time": "2022-01-12T18:37:36+00:00" + "time": "2024-02-23T16:13:23+00:00" }, { "name": "symfony/mime", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "2769b338f999a7c53a88e3c124a3d69d7d3feb49" + "reference": "ee94d9b538f93abbbc1ee4ccff374593117b04a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2769b338f999a7c53a88e3c124a3d69d7d3feb49", - "reference": "2769b338f999a7c53a88e3c124a3d69d7d3feb49", + "url": "https://api.github.com/repos/symfony/mime/zipball/ee94d9b538f93abbbc1ee4ccff374593117b04a9", + "reference": "ee94d9b538f93abbbc1ee4ccff374593117b04a9", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16" @@ -10044,15 +9521,16 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.35|>=6,<6.3.12|>=6.4,<6.4.3" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3" }, "type": "library", "autoload": { @@ -10084,7 +9562,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.14" + "source": "https://github.com/symfony/mime/tree/v5.4.35" }, "funding": [ { @@ -10100,42 +9578,42 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-30T08:00:51+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "b3cb93cf917abf826d45d85514fea3b07e629335" + "reference": "83e7438fd2ead9af4fd2fac7bb9b6fc0e8823387" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/b3cb93cf917abf826d45d85514fea3b07e629335", - "reference": "b3cb93cf917abf826d45d85514fea3b07e629335", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/83e7438fd2ead9af4fd2fac7bb9b6fc0e8823387", + "reference": "83e7438fd2ead9af4fd2fac7bb9b6fc0e8823387", "shasum": "" }, "require": { "monolog/monolog": "^1.25.1|^2", "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { "symfony/console": "<4.4", "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mailer": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", @@ -10168,7 +9646,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.3.14" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.35" }, "funding": [ { @@ -10184,34 +9662,34 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.8.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "monolog/monolog": "^1.22 || ^2.0 || ^3.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -10249,7 +9727,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -10265,25 +9743,25 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.3.7", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e" + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4b78e55b179003a42523a362cc0e8327f7a69b5e", - "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16" }, @@ -10318,7 +9796,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.3.7" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" }, "funding": [ { @@ -10334,28 +9812,30 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/orm-pack", - "version": "v2.1.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/symfony/orm-pack.git", - "reference": "357f6362067b1ebb94af321b79f8939fc9118751" + "reference": "9d8729016b3a8b0db854c028d15c2dcf4d19b1b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/orm-pack/zipball/357f6362067b1ebb94af321b79f8939fc9118751", - "reference": "357f6362067b1ebb94af321b79f8939fc9118751", + "url": "https://api.github.com/repos/symfony/orm-pack/zipball/9d8729016b3a8b0db854c028d15c2dcf4d19b1b4", + "reference": "9d8729016b3a8b0db854c028d15c2dcf4d19b1b4", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "*", + "doctrine/dbal": "^3", "doctrine/doctrine-bundle": "*", "doctrine/doctrine-migrations-bundle": "*", - "doctrine/orm": "*", - "symfony/proxy-manager-bridge": "*" + "doctrine/orm": "*" + }, + "conflict": { + "php": "<8.1" }, "type": "symfony-pack", "notification-url": "https://packagist.org/downloads/", @@ -10365,7 +9845,7 @@ "description": "A pack for the Doctrine ORM", "support": { "issues": "https://github.com/symfony/orm-pack/issues", - "source": "https://github.com/symfony/orm-pack/tree/v2.1.0" + "source": "https://github.com/symfony/orm-pack/tree/v2.4.1" }, "funding": [ { @@ -10381,32 +9861,33 @@ "type": "tidelift" } ], - "time": "2020-12-22T16:33:52+00:00" + "time": "2024-02-13T17:58:44+00:00" }, { "name": "symfony/password-hasher", - "version": "v5.3.8", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "4bdaa0cca1fb3521bc1825160f3b5490c130bbda" + "reference": "a0c08f9045230ef73d25617b2c0e0b56d8feb0a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/4bdaa0cca1fb3521bc1825160f3b5490c130bbda", - "reference": "4bdaa0cca1fb3521bc1825160f3b5490c130bbda", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/a0c08f9045230ef73d25617b2c0e0b56d8feb0a2", + "reference": "a0c08f9045230ef73d25617b2c0e0b56d8feb0a2", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/security-core": "<5.3" }, "require-dev": { - "symfony/console": "^5", - "symfony/security-core": "^5.3" + "symfony/console": "^5.3|^6.0", + "symfony/security-core": "^5.3|^6.0" }, "type": "library", "autoload": { @@ -10438,7 +9919,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.3.8" + "source": "https://github.com/symfony/password-hasher/tree/v5.4.36" }, "funding": [ { @@ -10454,20 +9935,20 @@ "type": "tidelift" } ], - "time": "2021-09-03T12:22:16+00:00" + "time": "2024-02-10T16:59:05+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -10478,21 +9959,18 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10519,7 +9997,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -10535,20 +10013,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.26.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48" + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e407643d610e5f2c8a4b14189150f68934bf5e48", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", "shasum": "" }, "require": { @@ -10559,9 +10037,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10606,7 +10081,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" }, "funding": [ { @@ -10622,20 +10097,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2024-01-29T20:12:16+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -10648,9 +10123,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10693,7 +10165,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -10709,20 +10181,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -10733,9 +10205,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10777,7 +10246,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -10793,20 +10262,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -10820,9 +10289,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10860,75 +10326,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -10944,20 +10342,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "reference": "21bd091060673a1177ae842c0ef8fe30893114d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2", + "reference": "21bd091060673a1177ae842c0ef8fe30893114d2", "shasum": "" }, "require": { @@ -10965,9 +10363,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -11007,7 +10402,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0" }, "funding": [ { @@ -11023,20 +10418,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -11044,9 +10439,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -11090,7 +10482,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -11106,20 +10498,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { @@ -11127,9 +10519,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -11169,7 +10558,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -11185,20 +10574,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v5.3.12", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "e498803a6e95ede78e9d5646ad32a2255c033a6a" + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e498803a6e95ede78e9d5646ad32a2255c033a6a", - "reference": "e498803a6e95ede78e9d5646ad32a2255c033a6a", + "url": "https://api.github.com/repos/symfony/process/zipball/4fdf34004f149cc20b2f51d7d119aa500caad975", + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975", "shasum": "" }, "require": { @@ -11231,7 +10620,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.12" + "source": "https://github.com/symfony/process/tree/v5.4.36" }, "funding": [ { @@ -11247,30 +10636,30 @@ "type": "tidelift" } ], - "time": "2021-11-22T22:39:13+00:00" + "time": "2024-02-12T15:49:53+00:00" }, { "name": "symfony/property-access", - "version": "v5.3.8", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66" + "reference": "f1341758d8046cfff0ac748a0cad238f917191d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66", - "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66", + "url": "https://api.github.com/repos/symfony/property-access/zipball/f1341758d8046cfff0ac748a0cad238f917191d4", + "reference": "f1341758d8046cfff0ac748a0cad238f917191d4", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2" + "symfony/property-info": "^5.2|^6.0" }, "require-dev": { - "symfony/cache": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." @@ -11308,11 +10697,11 @@ "injection", "object", "property", - "property path", + "property-path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.3.8" + "source": "https://github.com/symfony/property-access/tree/v5.4.35" }, "funding": [ { @@ -11328,27 +10717,27 @@ "type": "tidelift" } ], - "time": "2021-09-10T11:55:24+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/property-info", - "version": "v5.3.8", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "39de5bed8c036f76ec0457ec52908e45d5497947" + "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/39de5bed8c036f76ec0457ec52908e45d5497947", - "reference": "39de5bed8c036f76ec0457ec52908e45d5497947", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d30d48f366ad2bfbf521256be85eb1c182c29198", + "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1" + "symfony/string": "^5.1|^6.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", @@ -11356,11 +10745,12 @@ "symfony/dependency-injection": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "suggest": { "phpdocumentor/reflection-docblock": "To use the PHPDoc", @@ -11402,7 +10792,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.3.8" + "source": "https://github.com/symfony/property-info/tree/v5.4.35" }, "funding": [ { @@ -11418,31 +10808,30 @@ "type": "tidelift" } ], - "time": "2021-09-07T07:41:40+00:00" + "time": "2024-01-23T15:43:50+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v5.3.11", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "c774a6a852fd702154414e76f8dcd4e96086c2a8" + "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/c774a6a852fd702154414e76f8dcd4e96086c2a8", - "reference": "c774a6a852fd702154414e76f8dcd4e96086c2a8", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/a4cf96f3acfa252503a216bea877478f9621c7c0", + "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", "friendsofphp/proxy-manager-lts": "^1.0.2", "php": ">=7.2.5", - "symfony/dependency-injection": "^5.0", + "symfony/dependency-injection": "^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/config": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0" }, "type": "symfony-bridge", "autoload": { @@ -11470,7 +10859,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.3.11" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.21" }, "funding": [ { @@ -11486,32 +10875,32 @@ "type": "tidelift" } ], - "time": "2021-11-17T12:16:12+00:00" + "time": "2023-02-16T09:33:00+00:00" }, { "name": "symfony/redis-messenger", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/redis-messenger.git", - "reference": "639c3679597fbe003fbc90036bef7202e879ad93" + "reference": "54b107003c5abc03cc5077c8847678b432b1e602" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/639c3679597fbe003fbc90036bef7202e879ad93", - "reference": "639c3679597fbe003fbc90036bef7202e879ad93", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/54b107003c5abc03cc5077c8847678b432b1e602", + "reference": "54b107003c5abc03cc5077c8847678b432b1e602", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/messenger": "^5.1" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/messenger": "^5.1|^6.0" }, "require-dev": { - "symfony/property-access": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Messenger\\Bridge\\Redis\\": "" @@ -11537,7 +10926,7 @@ "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.3.14" + "source": "https://github.com/symfony/redis-messenger/tree/v5.4.36" }, "funding": [ { @@ -11553,25 +10942,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:52:31+00:00" + "time": "2024-02-05T13:56:32+00:00" }, { "name": "symfony/routing", - "version": "v5.3.11", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "fcbc2b81d55984f04bb704c2269755fa5aaf5cca" + "reference": "48ae43e443693ddb4e574f7c12f0d17ce287694e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fcbc2b81d55984f04bb704c2269755fa5aaf5cca", - "reference": "fcbc2b81d55984f04bb704c2269755fa5aaf5cca", + "url": "https://api.github.com/repos/symfony/routing/zipball/48ae43e443693ddb4e574f7c12f0d17ce287694e", + "reference": "48ae43e443693ddb4e574f7c12f0d17ce287694e", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -11581,13 +10970,13 @@ "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "For using the all-in-one router or any loader", @@ -11627,7 +11016,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.3.11" + "source": "https://github.com/symfony/routing/tree/v5.4.37" }, "funding": [ { @@ -11643,20 +11032,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:37:19+00:00" + "time": "2024-02-27T09:52:32+00:00" }, { "name": "symfony/runtime", - "version": "v5.3.11", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "0345ba5dbfc06a878bc48a7ec18ebc144cc60800" + "reference": "a32a623d71fc0f699a2a196377b3b85c840bd39a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/0345ba5dbfc06a878bc48a7ec18ebc144cc60800", - "reference": "0345ba5dbfc06a878bc48a7ec18ebc144cc60800", + "url": "https://api.github.com/repos/symfony/runtime/zipball/a32a623d71fc0f699a2a196377b3b85c840bd39a", + "reference": "a32a623d71fc0f699a2a196377b3b85c840bd39a", "shasum": "" }, "require": { @@ -11669,10 +11058,10 @@ }, "require-dev": { "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^4.4|^5", - "symfony/dotenv": "^5.1", - "symfony/http-foundation": "^4.4|^5", - "symfony/http-kernel": "^4.4|^5" + "symfony/console": "^4.4.30|^5.4.9|^6.0.9", + "symfony/dotenv": "^5.1|^6.0", + "symfony/http-foundation": "^4.4.30|^5.3.7|^6.0", + "symfony/http-kernel": "^4.4.30|^5.3.7|^6.0" }, "type": "composer-plugin", "extra": { @@ -11703,8 +11092,11 @@ ], "description": "Enables decoupling PHP applications from global state", "homepage": "https://symfony.com", + "keywords": [ + "runtime" + ], "support": { - "source": "https://github.com/symfony/runtime/tree/v5.3.11" + "source": "https://github.com/symfony/runtime/tree/v5.4.35" }, "funding": [ { @@ -11720,37 +11112,38 @@ "type": "tidelift" } ], - "time": "2021-11-05T14:24:28+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-bundle", - "version": "v5.3.12", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "be52715f4a7fd490937e4f881dc00ff5c0dcfeb3" + "reference": "6773ef12fe2671a42f111e31f2c18af18e79c55c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/be52715f4a7fd490937e4f881dc00ff5c0dcfeb3", - "reference": "be52715f4a7fd490937e4f881dc00ff5c0dcfeb3", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6773ef12fe2671a42f111e31f2c18af18e79c55c", + "reference": "6773ef12fe2671a42f111e31f2c18af18e79c55c", "shasum": "" }, "require": { "ext-xml": "*", "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^5.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", - "symfony/password-hasher": "^5.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^5.3", - "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.3.2" + "symfony/security-http": "^5.4.30|^6.3.6", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { "symfony/browser-kit": "<4.4", @@ -11760,24 +11153,24 @@ "symfony/twig-bundle": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "symfony/asset": "^4.4|^5.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/ldap": "^5.3", - "symfony/process": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bridge": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/ldap": "^5.3|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/twig": "^2.13|^3.0.4" }, "type": "symfony-bundle", @@ -11806,7 +11199,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/v5.3.12" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.37" }, "funding": [ { @@ -11822,48 +11215,49 @@ "type": "tidelift" } ], - "time": "2021-11-24T08:15:08+00:00" + "time": "2024-03-01T19:35:15+00:00" }, { "name": "symfony/security-core", - "version": "v5.3.11", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "48c8ed9f4789439427917f0023f86895d64b73a7" + "reference": "3cbacefb2a350ed39950f93c8a054c2eb625fb69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/48c8ed9f4789439427917f0023f86895d64b73a7", - "reference": "48c8ed9f4789439427917f0023f86895d64b73a7", + "url": "https://api.github.com/repos/symfony/security-core/zipball/3cbacefb2a350ed39950f93c8a054c2eb625fb69", + "reference": "3cbacefb2a350ed39950f93c8a054c2eb625fb69", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^1.1|^2", - "symfony/password-hasher": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^1.1|^2|^3", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" + "symfony/service-contracts": "^1.1.6|^2|^3" }, "conflict": { "symfony/event-dispatcher": "<4.4", "symfony/http-foundation": "<5.3", "symfony/ldap": "<4.4", "symfony/security-guard": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/validator": "<5.2" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.0|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/ldap": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^5.2" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/ldap": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/validator": "^5.2|^6.0" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -11899,7 +11293,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.3.11" + "source": "https://github.com/symfony/security-core/tree/v5.4.35" }, "funding": [ { @@ -11915,32 +11309,33 @@ "type": "tidelift" } ], - "time": "2021-11-17T12:16:12+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-csrf", - "version": "v5.3.4", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e" + "reference": "6728ed79d7f9aae3b86fca7ea554f1c46bae1e0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/94b533195cf7fb21f3fae8ce349861c6401d969e", - "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/6728ed79d7f9aae3b86fca7ea554f1c46bae1e0b", + "reference": "6728ed79d7f9aae3b86fca7ea554f1c46bae1e0b", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4|^5.0" + "symfony/security-core": "^4.4|^5.0|^6.0" }, "conflict": { "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/http-foundation": "^5.3" + "symfony/http-foundation": "^5.3|^6.0" }, "suggest": { "symfony/http-foundation": "For using the class SessionTokenStorage." @@ -11971,7 +11366,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.3.4" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.35" }, "funding": [ { @@ -11987,24 +11382,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-guard", - "version": "v5.3.7", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "25f8d2a206505514a0ff14b16c4fb4e17a10cf18" + "reference": "b6fb8c88f7cd544db761de2d1c3618cbc5c1b9e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/25f8d2a206505514a0ff14b16c4fb4e17a10cf18", - "reference": "25f8d2a206505514a0ff14b16c4fb4e17a10cf18", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/b6fb8c88f7cd544db761de2d1c3618cbc5c1b9e7", + "reference": "b6fb8c88f7cd544db761de2d1c3618cbc5c1b9e7", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.15", "symfony/security-core": "^5.0", "symfony/security-http": "^5.3" @@ -12038,7 +11434,7 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.3.7" + "source": "https://github.com/symfony/security-guard/tree/v5.4.35" }, "funding": [ { @@ -12054,31 +11450,32 @@ "type": "tidelift" } ], - "time": "2021-08-13T15:54:02+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-http", - "version": "v5.3.11", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "c25090783bd4209a42f9c43a235280fd23315a62" + "reference": "87ee1ea2b86740fc6a0104f165bebbe0b08b66ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/c25090783bd4209a42f9c43a235280fd23315a62", - "reference": "c25090783bd4209a42f9c43a235280fd23315a62", + "url": "https://api.github.com/repos/symfony/security-http/zipball/87ee1ea2b86740fc6a0104f165bebbe0b08b66ba", + "reference": "87ee1ea2b86740fc6a0104f165bebbe0b08b66ba", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^4.4|^5.0", - "symfony/security-core": "^5.3" + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { "symfony/event-dispatcher": "<4.3", @@ -12087,11 +11484,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/routing": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", @@ -12123,7 +11520,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.3.11" + "source": "https://github.com/symfony/security-http/tree/v5.4.36" }, "funding": [ { @@ -12139,30 +11536,31 @@ "type": "tidelift" } ], - "time": "2021-11-05T16:25:46+00:00" + "time": "2024-02-23T16:13:23+00:00" }, { "name": "symfony/sendinblue-mailer", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/sendinblue-mailer.git", - "reference": "269383a0dac2ab4d5a1a0f0c042ba114d132cb24" + "reference": "574bea1d9cf28cf6e9182242fc4eae26ed85be48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/269383a0dac2ab4d5a1a0f0c042ba114d132cb24", - "reference": "269383a0dac2ab4d5a1a0f0c042ba114d132cb24", + "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/574bea1d9cf28cf6e9182242fc4eae26ed85be48", + "reference": "574bea1d9cf28cf6e9182242fc4eae26ed85be48", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/mailer": "^5.1" + "psr/event-dispatcher": "^1", + "symfony/mailer": "^5.4.21|^6.2.7" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-mailer-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Mailer\\Bridge\\Sendinblue\\": "" @@ -12188,7 +11586,7 @@ "description": "Symfony Sendinblue Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.3.14" + "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.4.35" }, "funding": [ { @@ -12204,25 +11602,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/serializer", - "version": "v5.3.12", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "bf570839e289e0bdde69c9fa867d3a42f5e8fde1" + "reference": "05137a513f4c5a5e56ffbcf53847a93284b49f67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/bf570839e289e0bdde69c9fa867d3a42f5e8fde1", - "reference": "bf570839e289e0bdde69c9fa867d3a42f5e8fde1", + "url": "https://api.github.com/repos/symfony/serializer/zipball/05137a513f4c5a5e56ffbcf53847a93284b49f67", + "reference": "05137a513f4c5a5e56ffbcf53847a93284b49f67", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16" }, @@ -12231,29 +11629,30 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/dependency-injection": "<4.4", - "symfony/property-access": "<4.4", - "symfony/property-info": "<5.3", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.3", "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4.9|^5.0.9", - "symfony/property-info": "^5.3", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0", - "symfony/var-exporter": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4.26|^6.3", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "For using the metadata cache.", @@ -12290,54 +11689,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/v5.3.12" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-24T08:13:09+00:00" - }, - { - "name": "symfony/serializer-pack", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/serializer-pack.git", - "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer-pack/zipball/61173947057d5e1bf1c79e2a6ab6a8430be0602e", - "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "phpdocumentor/reflection-docblock": "*", - "symfony/property-access": "*", - "symfony/property-info": "*", - "symfony/serializer": "*" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for the Symfony serializer", - "support": { - "issues": "https://github.com/symfony/serializer-pack/issues", - "source": "https://github.com/symfony/serializer-pack/tree/v1.0.4" + "source": "https://github.com/symfony/serializer/tree/v5.4.36" }, "funding": [ { @@ -12353,25 +11705,25 @@ "type": "tidelift" } ], - "time": "2020-10-19T08:52:16+00:00" + "time": "2024-02-22T18:40:43+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.3.4", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "b24c6a92c6db316fee69e38c80591e080e41536c" + "reference": "887762aa99ff16f65dc8b48aafead415f942d407" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b24c6a92c6db316fee69e38c80591e080e41536c", - "reference": "b24c6a92c6db316fee69e38c80591e080e41536c", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/887762aa99ff16f65dc8b48aafead415f942d407", + "reference": "887762aa99ff16f65dc8b48aafead415f942d407", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/service-contracts": "^1.0|^2" + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { @@ -12399,7 +11751,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.3.4" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.35" }, "funding": [ { @@ -12415,20 +11767,20 @@ "type": "tidelift" } ], - "time": "2021-07-10T08:58:57+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/string", - "version": "v5.3.10", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b", + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b", "shasum": "" }, "require": { @@ -12439,20 +11791,23 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "~1.15" }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -12482,7 +11837,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.10" + "source": "https://github.com/symfony/string/tree/v5.4.36" }, "funding": [ { @@ -12498,31 +11853,32 @@ "type": "tidelift" } ], - "time": "2021-10-27T18:21:46+00:00" + "time": "2024-02-01T08:49:30+00:00" }, { "name": "symfony/translation", - "version": "v5.3.11", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a" + "reference": "77d7d1e46f52827585e65e6cd6f52a2542e59c72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/17a965c8f3b1b348cf15d903ac53942984561f8a", - "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a", + "url": "https://api.github.com/repos/symfony/translation/zipball/77d7d1e46f52827585e65e6cd6f52a2542e59c72", + "reference": "77d7d1e46f52827585e65e6cd6f52a2542e59c72", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation-contracts": "^2.3" }, "conflict": { "symfony/config": "<4.4", + "symfony/console": "<5.3", "symfony/dependency-injection": "<5.0", "symfony/http-kernel": "<5.0", "symfony/twig-bundle": "<5.0", @@ -12533,15 +11889,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -12577,7 +11934,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.11" + "source": "https://github.com/symfony/translation/tree/v5.4.35" }, "funding": [ { @@ -12593,65 +11950,65 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:37:19+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/twig-bridge", - "version": "v5.3.11", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "90e2f25b2a5b1a6d626c26cafcb00da9583fcd66" + "reference": "14a73aa32c9769b823f7a6f6c018d7c576e49fe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/90e2f25b2a5b1a6d626c26cafcb00da9583fcd66", - "reference": "90e2f25b2a5b1a6d626c26cafcb00da9583fcd66", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/14a73aa32c9769b823f7a6f6c018d7c576e49fe7", + "reference": "14a73aa32c9769b823f7a6f6c018d7c576e49fe7", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<4.4", - "symfony/form": "<5.3", + "symfony/console": "<5.3", + "symfony/form": "<5.4.21|>=6,<6.2.7", "symfony/http-foundation": "<5.3", "symfony/http-kernel": "<4.4", "symfony/translation": "<5.2", "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.12", - "egulias/email-validator": "^2.1.10|^3", + "doctrine/annotations": "^1.12|^2", + "egulias/email-validator": "^2.1.10|^3|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^5.3", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^5.2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/console": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1", - "symfony/routing": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/security-http": "^4.4|^5.0", - "symfony/serializer": "^5.2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-http": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" @@ -12698,7 +12055,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.3.11" + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.36" }, "funding": [ { @@ -12714,51 +12071,53 @@ "type": "tidelift" } ], - "time": "2021-11-20T16:42:42+00:00" + "time": "2024-02-15T11:19:14+00:00" }, { "name": "symfony/twig-bundle", - "version": "v5.3.10", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "70157db4357eadf33f38e4e7efa5da4b294e17de" + "reference": "37a338733c456fc8cd056c2e0f20bae020cbec70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/70157db4357eadf33f38e4e7efa5da4b294e17de", - "reference": "70157db4357eadf33f38e4e7efa5da4b294e17de", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/37a338733c456fc8cd056c2e0f20bae020cbec70", + "reference": "37a338733c456fc8cd056c2e0f20bae020cbec70", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3", + "symfony/twig-bridge": "^5.3|^6.0", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/dependency-injection": "<5.3", "symfony/framework-bundle": "<5.0", + "symfony/service-contracts": ">=3.0", "symfony/translation": "<5.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.0|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -12786,7 +12145,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/v5.3.10" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.36" }, "funding": [ { @@ -12802,61 +12161,63 @@ "type": "tidelift" } ], - "time": "2021-10-28T13:28:41+00:00" + "time": "2024-02-15T11:19:14+00:00" }, { "name": "symfony/validator", - "version": "v5.3.12", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "379ca8939ebcab78d835e188673396a9f8d6eee8" + "reference": "e80028e0f7814a8824fc1f474f1566a7bddceec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/379ca8939ebcab78d835e188673396a9f8d6eee8", - "reference": "379ca8939ebcab78d835e188673396a9f8d6eee8", + "url": "https://api.github.com/repos/symfony/validator/zipball/e80028e0f7814a8824fc1f474f1566a7bddceec5", + "reference": "e80028e0f7814a8824fc1f474f1566a7bddceec5", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<5.4.3", + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", + "doctrine/lexer": "<1.1", "symfony/dependency-injection": "<4.4", "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", "symfony/intl": "<4.4", "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^5.1", - "symfony/finder": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.3", - "symfony/translation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "doctrine/annotations": "^1.13|^2", + "doctrine/cache": "^1.11|^2.0", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "egulias/email-validator": "Strict (RFC compliant) email validation", @@ -12896,7 +12257,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.3.12" + "source": "https://github.com/symfony/validator/tree/v5.4.36" }, "funding": [ { @@ -12912,20 +12273,20 @@ "type": "tidelift" } ], - "time": "2021-11-22T22:24:25+00:00" + "time": "2024-02-21T11:39:05+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.14", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "daf799d0fbad76a40f2d4691d732641793103700" + "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/daf799d0fbad76a40f2d4691d732641793103700", - "reference": "daf799d0fbad76a40f2d4691d732641793103700", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90", + "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90", "shasum": "" }, "require": { @@ -12934,13 +12295,14 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -12984,7 +12346,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.14" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.36" }, "funding": [ { @@ -13000,28 +12362,28 @@ "type": "tidelift" } ], - "time": "2022-01-17T16:28:15+00:00" + "time": "2024-02-15T11:19:14+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.3.14", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "1ca85c38c0c70201c599264923b86e588ddf8878" + "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1ca85c38c0c70201c599264923b86e588ddf8878", - "reference": "1ca85c38c0c70201c599264923b86e588ddf8878", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0bd342e24aef49fc82a21bd4eedd3e665d177e5b", + "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -13054,10 +12416,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.3.14" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.4" }, "funding": [ { @@ -13073,20 +12437,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-02-26T08:37:45+00:00" }, { "name": "symfony/web-link", - "version": "v5.3.4", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1" + "reference": "5eb4930dd8bdf233d32e4e3c2dfa8241051b6320" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/0075c9949c30a61d9b9e7483686d72d261480ef1", - "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1", + "url": "https://api.github.com/repos/symfony/web-link/zipball/5eb4930dd8bdf233d32e4e3c2dfa8241051b6320", + "reference": "5eb4930dd8bdf233d32e4e3c2dfa8241051b6320", "shasum": "" }, "require": { @@ -13101,7 +12465,7 @@ "psr/link-implementation": "1.0" }, "require-dev": { - "symfony/http-kernel": "^5.3" + "symfony/http-kernel": "^5.3|^6.0" }, "suggest": { "symfony/http-kernel": "" @@ -13144,7 +12508,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v5.3.4" + "source": "https://github.com/symfony/web-link/tree/v5.4.35" }, "funding": [ { @@ -13160,42 +12524,43 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v5.3.8", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "9ba1e05fdc7a46979047ba6c8949bd35e3a386a5" + "reference": "93df9846358093676fe0b029d0c4725f7935742f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/9ba1e05fdc7a46979047ba6c8949bd35e3a386a5", - "reference": "9ba1e05fdc7a46979047ba6c8949bd35e3a386a5", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/93df9846358093676fe0b029d0c4725f7935742f", + "reference": "93df9846358093676fe0b029d0c4725f7935742f", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0,<6.4", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/dependency-injection": "<5.2", "symfony/form": "<4.4", + "symfony/mailer": "<5.4", "symfony/messenger": "<4.4" }, "require-dev": { - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -13223,7 +12588,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.8" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.36" }, "funding": [ { @@ -13239,32 +12604,32 @@ "type": "tidelift" } ], - "time": "2021-09-17T08:55:39+00:00" + "time": "2024-02-20T07:10:08+00:00" }, { "name": "symfony/yaml", - "version": "v5.3.11", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "226638aa877bc4104e619a15f27d8141cd6b4e4a" + "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/226638aa877bc4104e619a15f27d8141cd6b4e4a", - "reference": "226638aa877bc4104e619a15f27d8141cd6b4e4a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e78db7f5c70a21f0417a31f414c4a95fe76c07e4", + "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -13298,7 +12663,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.11" + "source": "https://github.com/symfony/yaml/tree/v5.4.35" }, "funding": [ { @@ -13314,50 +12679,50 @@ "type": "tidelift" } ], - "time": "2021-11-20T16:42:42+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "thecodingmachine/safe", - "version": "v1.3.3", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/thecodingmachine/safe.git", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc" + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", "shasum": "" }, "require": { - "php": ">=7.2" + "php": "^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12", + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^9.5", "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^0.12" + "thecodingmachine/phpstan-strict-rules": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.1-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { - "psr-4": { - "Safe\\": [ - "lib/", - "deprecated/", - "generated/" - ] - }, "files": [ "deprecated/apc.php", + "deprecated/array.php", + "deprecated/datetime.php", "deprecated/libevent.php", + "deprecated/misc.php", + "deprecated/password.php", "deprecated/mssql.php", "deprecated/stats.php", + "deprecated/strings.php", "lib/special_cases.php", + "deprecated/mysqli.php", "generated/apache.php", "generated/apcu.php", "generated/array.php", @@ -13378,6 +12743,7 @@ "generated/fpm.php", "generated/ftp.php", "generated/funchand.php", + "generated/gettext.php", "generated/gmp.php", "generated/gnupg.php", "generated/hash.php", @@ -13387,7 +12753,6 @@ "generated/image.php", "generated/imap.php", "generated/info.php", - "generated/ingres-ii.php", "generated/inotify.php", "generated/json.php", "generated/ldap.php", @@ -13396,20 +12761,14 @@ "generated/mailparse.php", "generated/mbstring.php", "generated/misc.php", - "generated/msql.php", "generated/mysql.php", - "generated/mysqli.php", - "generated/mysqlndMs.php", - "generated/mysqlndQc.php", "generated/network.php", "generated/oci8.php", "generated/opcache.php", "generated/openssl.php", "generated/outcontrol.php", - "generated/password.php", "generated/pcntl.php", "generated/pcre.php", - "generated/pdf.php", "generated/pgsql.php", "generated/posix.php", "generated/ps.php", @@ -13420,7 +12779,6 @@ "generated/sem.php", "generated/session.php", "generated/shmop.php", - "generated/simplexml.php", "generated/sockets.php", "generated/sodium.php", "generated/solr.php", @@ -13442,6 +12800,13 @@ "generated/yaz.php", "generated/zip.php", "generated/zlib.php" + ], + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "deprecated/Exceptions/", + "generated/Exceptions/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -13451,42 +12816,46 @@ "description": "PHP core functions that throw exceptions instead of returning FALSE on error", "support": { "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v1.3.3" + "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" }, - "time": "2020-10-28T17:51:34+00:00" + "time": "2023-04-05T11:54:14+00:00" }, { "name": "theofidry/alice-data-fixtures", - "version": "1.4.0", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/theofidry/AliceDataFixtures.git", - "reference": "bcfdf64bc940eb4a7b40b46d9ca5251e5692cc11" + "reference": "c05882a3ba35f8858de189aec0029b0598de7dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/bcfdf64bc940eb4a7b40b46d9ca5251e5692cc11", - "reference": "bcfdf64bc940eb4a7b40b46d9ca5251e5692cc11", + "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/c05882a3ba35f8858de189aec0029b0598de7dce", + "reference": "c05882a3ba35f8858de189aec0029b0598de7dce", "shasum": "" }, "require": { - "nelmio/alice": "^3.5", - "php": "^7.3 | ^8.0", - "psr/log": "^1.0" + "nelmio/alice": "^3.10", + "php": "^8.2", + "psr/log": "^1 || ^2 || ^3", + "webmozart/assert": "^1.10" }, "conflict": { + "doctrine/dbal": "<3.0", "doctrine/orm": "<2.6.3", - "illuminate/database": "<5.5", + "doctrine/persistence": "<2.0", + "illuminate/database": "<8.12", "ocramius/proxy-manager": "<2.1", - "symfony/framework-bundle": "<3.4", + "symfony/framework-bundle": "<5.4 || >=6.0 <6.4", "zendframework/zend-code": "<3.3.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.1", - "phpspec/prophecy": "^1.6", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.3", - "symfony/phpunit-bridge": "^5.1.3" + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/annotations": "^1.13", + "phpspec/prophecy": "^1.14.0", + "phpspec/prophecy-phpunit": "^2.0.1", + "phpunit/phpunit": "^9.5.10", + "symfony/phpunit-bridge": "^5.3.8 || ^6.4" }, "suggest": { "alcaeus/mongo-php-adapter": "To use Doctrine with the MongoDB flavour", @@ -13503,7 +12872,8 @@ "type": "library", "extra": { "bamarni-bin": { - "bin-links": false + "bin-links": false, + "forward-command": false }, "branch-alias": { "dev-master": "1.x-dev" @@ -13536,7 +12906,7 @@ ], "support": { "issues": "https://github.com/theofidry/AliceDataFixtures/issues", - "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.4.0" + "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.7.1" }, "funding": [ { @@ -13544,37 +12914,33 @@ "type": "github" } ], - "time": "2021-01-25T10:07:17+00:00" + "time": "2024-03-18T12:41:21+00:00" }, { "name": "twig/twig", - "version": "v3.4.3", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Twig\\": "src/" @@ -13608,7 +12974,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.3" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -13620,40 +12986,43 @@ "type": "tidelift" } ], - "time": "2022-09-28T08:42:51+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { "name": "web-token/jwt-framework", - "version": "v2.2.11", + "version": "3.3.4", "source": { "type": "git", "url": "https://github.com/web-token/jwt-framework.git", - "reference": "643cced197e32471418bd89e7a44b69fd04eb9de" + "reference": "734744207ae4f8e0dd5cd6463c8535155e61b92e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/643cced197e32471418bd89e7a44b69fd04eb9de", - "reference": "643cced197e32471418bd89e7a44b69fd04eb9de", + "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/734744207ae4f8e0dd5cd6463c8535155e61b92e", + "reference": "734744207ae4f8e0dd5cd6463c8535155e61b92e", "shasum": "" }, "require": { - "brick/math": "^0.8.17|^0.9", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "fgrosse/phpasn1": "^2.0", - "php": ">=7.2", + "paragonie/constant_time_encoding": "^2.6", + "paragonie/sodium_compat": "^1.20", + "php": ">=8.1", + "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", - "spomky-labs/aes-key-wrap": "^5.0|^6.0", - "spomky-labs/base64url": "^1.0|^2.0", - "symfony/config": "^4.2|^5.0", - "symfony/console": "^4.2|^5.0", - "symfony/dependency-injection": "^4.2|^5.0", - "symfony/event-dispatcher": "^4.2|^5.0", - "symfony/http-kernel": "^4.2|^5.0", + "spomky-labs/aes-key-wrap": "^7.0", + "spomky-labs/pki-framework": "^1.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/polyfill-mbstring": "^1.12" }, "conflict": { @@ -13665,7 +13034,6 @@ "web-token/jwt-checker": "self.version", "web-token/jwt-console": "self.version", "web-token/jwt-core": "self.version", - "web-token/jwt-easy": "self.version", "web-token/jwt-encryption": "self.version", "web-token/jwt-encryption-algorithm-aescbc": "self.version", "web-token/jwt-encryption-algorithm-aesgcm": "self.version", @@ -13676,7 +13044,9 @@ "web-token/jwt-encryption-algorithm-experimental": "self.version", "web-token/jwt-encryption-algorithm-pbes2": "self.version", "web-token/jwt-encryption-algorithm-rsa": "self.version", + "web-token/jwt-experimental": "self.version", "web-token/jwt-key-mgmt": "self.version", + "web-token/jwt-library": "self.version", "web-token/jwt-nested-token": "self.version", "web-token/jwt-signature": "self.version", "web-token/jwt-signature-algorithm-ecdsa": "self.version", @@ -13685,39 +13055,45 @@ "web-token/jwt-signature-algorithm-hmac": "self.version", "web-token/jwt-signature-algorithm-none": "self.version", "web-token/jwt-signature-algorithm-rsa": "self.version", + "web-token/jwt-signature-pack": "self.version", "web-token/jwt-util-ecc": "self.version", "web-token/signature-pack": "self.version" }, "require-dev": { - "bjeavons/zxcvbn-php": "^1.0", - "blackfire/php-sdk": "^1.14", + "bjeavons/zxcvbn-php": "^1.3", + "ekino/phpstan-banned-code": "^1.0", "ext-curl": "*", "ext-gmp": "*", - "friendsofphp/php-cs-fixer": "^2.16", - "infection/infection": "^0.15|^0.16|^0.17|^0.18|^0.19|^0.20", - "matthiasnoback/symfony-config-test": "^3.1|^4.0", - "nyholm/psr7": "^1.3", - "php-coveralls/php-coveralls": "^2.0", - "php-http/mock-client": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0|^9.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/finder": "^4.2|^5.0", - "symfony/framework-bundle": "^4.2|^5.0", - "symfony/http-client": "^5.2", - "symfony/phpunit-bridge": "^4.2|^5.0", - "symfony/serializer": "^4.2|^5.0", - "symfony/var-dumper": "^4.2|^5.0" + "infection/infection": "^0.27", + "matthiasnoback/symfony-config-test": "^5.0", + "nyholm/psr7": "^1.8", + "php-http/mock-client": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "qossmic/deptrac-shim": "^1.0", + "rector/rector": "^1.0", + "roave/security-advisories": "dev-latest", + "symfony/browser-kit": "^6.1|^7.0", + "symfony/finder": "^6.1|^7.0", + "symfony/framework-bundle": "^6.1|^7.0", + "symfony/phpunit-bridge": "^6.1|^7.0", + "symfony/serializer": "^6.1|^7.0", + "symfony/var-dumper": "^6.1|^7.0", + "symfony/yaml": "^6.1|^7.0", + "symplify/easy-coding-standard": "^12.0" }, "suggest": { "bjeavons/zxcvbn-php": "Adds key quality check for oct keys.", - "ext-sodium": "Sodium is required for OKP key creation, EdDSA signature algorithm and ECDH-ES key encryption with OKP keys", "php-http/httplug": "To enable JKU/X5U support.", "php-http/httplug-bundle": "To enable JKU/X5U support.", "php-http/message-factory": "To enable JKU/X5U support.", + "spomky-labs/aes-key-wrap": "To enable AES Key Wrap algorithm.", "symfony/serializer": "Use the Symfony serializer to serialize/unserialize JWS and JWE tokens.", "symfony/var-dumper": "Used to show data on the debug toolbar." }, @@ -13725,32 +13101,9 @@ "autoload": { "psr-4": { "Jose\\": "src/", - "Jose\\Component\\Signature\\Algorithm\\": [ - "src/SignatureAlgorithm/ECDSA", - "src/SignatureAlgorithm/EdDSA", - "src/SignatureAlgorithm/HMAC", - "src/SignatureAlgorithm/None", - "src/SignatureAlgorithm/RSA", - "src/SignatureAlgorithm/Experimental" - ], - "Jose\\Component\\Core\\Util\\Ecc\\": [ - "src/Ecc" - ], - "Jose\\Component\\Encryption\\Algorithm\\": [ - "src/EncryptionAlgorithm/Experimental" - ], - "Jose\\Component\\Encryption\\Algorithm\\KeyEncryption\\": [ - "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW", - "src/EncryptionAlgorithm/KeyEncryption/AESKW", - "src/EncryptionAlgorithm/KeyEncryption/Direct", - "src/EncryptionAlgorithm/KeyEncryption/ECDHES", - "src/EncryptionAlgorithm/KeyEncryption/PBES2", - "src/EncryptionAlgorithm/KeyEncryption/RSA" - ], - "Jose\\Component\\Encryption\\Algorithm\\ContentEncryption\\": [ - "src/EncryptionAlgorithm/ContentEncryption/AESGCM", - "src/EncryptionAlgorithm/ContentEncryption/AESCBC" - ] + "Jose\\Component\\": "src/Library/", + "Jose\\Experimental\\": "src/Experimental/", + "Jose\\Bundle\\JoseFramework\\": "src/Bundle/" } }, "notification-url": "https://packagist.org/downloads/", @@ -13764,7 +13117,7 @@ }, { "name": "All contributors", - "homepage": "https://github.com/web-token/jwt-framework/contributors" + "homepage": "https://github.com/web-token/jwt-bundle/contributors" } ], "description": "JSON Object Signing and Encryption library for PHP and Symfony Bundle.", @@ -13789,33 +13142,37 @@ ], "support": { "issues": "https://github.com/web-token/jwt-framework/issues", - "source": "https://github.com/web-token/jwt-framework/tree/v2.2.11" + "source": "https://github.com/web-token/jwt-framework/tree/3.3.4" }, "funding": [ { "url": "https://github.com/Spomky", "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" } ], - "time": "2021-06-25T15:59:52+00:00" + "time": "2024-03-24T09:57:06+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -13851,20 +13208,24 @@ "check", "validate" ], - "time": "2021-03-09T10:59:23+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" }, { "name": "willdurand/negotiation", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/willdurand/Negotiation.git", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c" + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", "shasum": "" }, "require": { @@ -13903,26 +13264,89 @@ "header", "negotiation" ], - "time": "2020-09-25T08:01:41+00:00" + "support": { + "issues": "https://github.com/willdurand/Negotiation/issues", + "source": "https://github.com/willdurand/Negotiation/tree/3.1.0" + }, + "time": "2022-01-30T20:08:53+00:00" } ], "packages-dev": [ + { + "name": "nikic/php-parser", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + }, + "time": "2024-03-05T20:51:40+00:00" + }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -13963,9 +13387,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -14018,92 +13448,25 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, { "name": "phpunit/php-code-coverage", - "version": "9.2.7", + "version": "9.2.31", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.12.0", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -14118,8 +13481,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -14152,7 +13515,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" }, "funding": [ { @@ -14160,7 +13524,7 @@ "type": "github" } ], - "time": "2021-09-17T05:39:03+00:00" + "time": "2024-03-02T06:37:42+00:00" }, { "name": "phpunit/php-file-iterator", @@ -14405,20 +13769,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.14", + "version": "9.6.18", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1883687169c017d6ae37c58883ca3994cfc34189" + "reference": "32c2c2d6580b1d8ab3c10b1e9e4dc263cc69bb04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1883687169c017d6ae37c58883ca3994cfc34189", - "reference": "1883687169c017d6ae37c58883ca3994cfc34189", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/32c2c2d6580b1d8ab3c10b1e9e4dc263cc69bb04", + "reference": "32c2c2d6580b1d8ab3c10b1e9e4dc263cc69bb04", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -14429,31 +13793,26 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -14461,7 +13820,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -14492,7 +13851,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.14" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.18" }, "funding": [ { @@ -14502,22 +13862,26 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-02-18T12:54:07+00:00" + "time": "2024-03-21T12:07:32+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { @@ -14552,7 +13916,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -14560,7 +13924,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -14675,20 +14039,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -14720,7 +14084,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -14728,20 +14092,20 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -14783,7 +14147,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -14791,20 +14155,20 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { @@ -14847,7 +14211,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -14855,24 +14219,24 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -14904,7 +14268,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -14912,7 +14276,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -15028,16 +14392,16 @@ }, { "name": "sebastian/resource-operations", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", "shasum": "" }, "require": { @@ -15049,7 +14413,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -15070,8 +14434,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" }, "funding": [ { @@ -15079,32 +14442,32 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2024-03-14T16:00:52+00:00" }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -15127,7 +14490,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -15135,7 +14498,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -15192,28 +14555,28 @@ }, { "name": "symfony/browser-kit", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "84d0dc472df8dc05b0fa92e39272255fe42fc5d0" + "reference": "2f6f979b579ed1c051465c3c2fb81daf5bb4a002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/84d0dc472df8dc05b0fa92e39272255fe42fc5d0", - "reference": "84d0dc472df8dc05b0fa92e39272255fe42fc5d0", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2f6f979b579ed1c051465c3c2fb81daf5bb4a002", + "reference": "2f6f979b579ed1c051465c3c2fb81daf5bb4a002", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/process": "" @@ -15244,7 +14607,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/v5.3.14" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.35" }, "funding": [ { @@ -15260,20 +14623,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/css-selector", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "9e3a9e99095fd55fb68c0ffe2f7e10ae13ac66ee" + "reference": "9e615d367e2bed41f633abb383948c96a2dbbfae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/9e3a9e99095fd55fb68c0ffe2f7e10ae13ac66ee", - "reference": "9e3a9e99095fd55fb68c0ffe2f7e10ae13ac66ee", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/9e615d367e2bed41f633abb383948c96a2dbbfae", + "reference": "9e615d367e2bed41f633abb383948c96a2dbbfae", "shasum": "" }, "require": { @@ -15310,7 +14673,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.14" + "source": "https://github.com/symfony/css-selector/tree/v5.4.35" }, "funding": [ { @@ -15326,25 +14689,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.3.14", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "076dd4b4de41d060b1397319dfbed8cd56a6a484" + "reference": "e3b4806f88abf106a411847a78619a542e71de29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/076dd4b4de41d060b1397319dfbed8cd56a6a484", - "reference": "076dd4b4de41d060b1397319dfbed8cd56a6a484", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/e3b4806f88abf106a411847a78619a542e71de29", + "reference": "e3b4806f88abf106a411847a78619a542e71de29", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -15354,7 +14717,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -15385,7 +14748,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.3.14" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.35" }, "funding": [ { @@ -15401,20 +14764,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.1.2", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "899fdec151add3dc339cf394a15100a1acc177ad" + "reference": "16ed5bdfd18e14fc7de347c8688e8ac479284222" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/899fdec151add3dc339cf394a15100a1acc177ad", - "reference": "899fdec151add3dc339cf394a15100a1acc177ad", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/16ed5bdfd18e14fc7de347c8688e8ac479284222", + "reference": "16ed5bdfd18e14fc7de347c8688e8ac479284222", "shasum": "" }, "require": { @@ -15424,11 +14787,9 @@ "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3.0", - "symfony/error-handler": "^5.4|^6.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/polyfill-php81": "^1.27" }, "bin": [ "bin/simple-phpunit" @@ -15468,7 +14829,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.1.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.4" }, "funding": [ { @@ -15484,20 +14845,20 @@ "type": "tidelift" } ], - "time": "2022-06-20T12:01:07+00:00" + "time": "2024-02-08T14:08:19+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -15526,7 +14887,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -15534,20 +14895,16 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "conduction/commongroundbundle": 20, - "conduction/digidbundle": 20, - "conduction/samlbundle": 20 - }, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.4.0", + "php": "^7.4.0 || ^8.1.0 || ^8.2.0", "ext-ctype": "*", "ext-fileinfo": "*", "ext-iconv": "*", diff --git a/api/config/bundles.php b/api/config/bundles.php index b03f4530d..b804ad652 100644 --- a/api/config/bundles.php +++ b/api/config/bundles.php @@ -1,24 +1,22 @@ ['all' => true], - Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], - Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], - Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], - Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], - Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], - ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], - Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], - Knp\Bundle\MarkdownBundle\KnpMarkdownBundle::class => ['all' => true], - Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], - Conduction\CommonGroundBundle\CommonGroundBundle::class => ['all' => true], - Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['all' => true], + Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], + ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['all' => true], Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle::class => ['all' => true], - Hautelook\AliceBundle\HautelookAliceBundle::class => ['all' => true], - Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['all' => true], - Setono\CronExpressionBundle\SetonoCronExpressionBundle::class => ['all' => true], - CommonGateway\CoreBundle\CoreBundle::class => ['all' => true], - Endroid\QrCodeBundle\EndroidQrCodeBundle::class => ['all' => true], - Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], - League\FlysystemBundle\FlysystemBundle::class => ['all' => true], + Hautelook\AliceBundle\HautelookAliceBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['all' => true], + Setono\CronExpressionBundle\SetonoCronExpressionBundle::class => ['all' => true], + CommonGateway\CoreBundle\CoreBundle::class => ['all' => true], + Endroid\QrCodeBundle\EndroidQrCodeBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + League\FlysystemBundle\FlysystemBundle::class => ['all' => true], + Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle::class => ['all' => true], ]; diff --git a/api/config/packages/doctrine.yaml b/api/config/packages/doctrine.yaml index 4a17d0314..605bd6b64 100644 --- a/api/config/packages/doctrine.yaml +++ b/api/config/packages/doctrine.yaml @@ -6,7 +6,7 @@ doctrine: url: '%env(resolve:DATABASE_URL)%' types: uuid: Ramsey\Uuid\Doctrine\UuidType - datetime: Conduction\CommonGroundBundle\Types\UTCDateTimeType #We override the default doctrine datetime with a UTC based version +# datetime: Conduction\CommonGroundBundle\Types\UTCDateTimeType #We override the default doctrine datetime with a UTC based version orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware diff --git a/api/config/packages/messenger.yaml b/api/config/packages/messenger.yaml index 275f9164d..944c8b384 100755 --- a/api/config/packages/messenger.yaml +++ b/api/config/packages/messenger.yaml @@ -27,5 +27,3 @@ framework: routing: # Route your messages to the transports 'App\Message\ActionMessage': async - 'App\Message\NotificationMessage': async - 'App\Message\SyncPageMessage': async diff --git a/api/config/packages/prod/messenger.yaml b/api/config/packages/prod/messenger.yaml index 24641e04e..09236c02c 100644 --- a/api/config/packages/prod/messenger.yaml +++ b/api/config/packages/prod/messenger.yaml @@ -27,7 +27,5 @@ framework: routing: # Route your messages to the transports 'App\Message\ActionMessage': async - 'App\Message\NotificationMessage': async - 'App\Message\SyncPageMessage': async 'CommonGateway\CoreBundle\Message\CacheMessage': async 'CommonGateway\CoreBundle\Message\ValueMessage': async diff --git a/api/config/packages/ramsey_uuid_doctrine.yaml b/api/config/packages/ramsey_uuid_doctrine.yaml new file mode 100644 index 000000000..cfc3036f9 --- /dev/null +++ b/api/config/packages/ramsey_uuid_doctrine.yaml @@ -0,0 +1,4 @@ +doctrine: + dbal: + types: + uuid: 'Ramsey\Uuid\Doctrine\UuidType' diff --git a/api/config/packages/stof_doctrine_extensions.yaml b/api/config/packages/stof_doctrine_extensions.yaml new file mode 100644 index 000000000..b258add36 --- /dev/null +++ b/api/config/packages/stof_doctrine_extensions.yaml @@ -0,0 +1,4 @@ +# Read the documentation: https://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html +# See the official DoctrineExtensions documentation for more details: https://github.com/doctrine-extensions/DoctrineExtensions/tree/main/doc +stof_doctrine_extensions: + default_locale: en_US diff --git a/api/config/packages/translation.yaml b/api/config/packages/translation.yaml index abb76aae8..b3f8f9cfe 100644 --- a/api/config/packages/translation.yaml +++ b/api/config/packages/translation.yaml @@ -4,10 +4,4 @@ framework: default_path: '%kernel.project_dir%/translations' fallbacks: - en -# providers: -# crowdin: -# dsn: '%env(CROWDIN_DSN)%' -# loco: -# dsn: '%env(LOCO_DSN)%' -# lokalise: -# dsn: '%env(LOKALISE_DSN)%' + providers: diff --git a/api/docker/nginx/conf.d/default.conf b/api/docker/nginx/conf.d/default.conf index 9a38eac52..0e4c58db5 100644 --- a/api/docker/nginx/conf.d/default.conf +++ b/api/docker/nginx/conf.d/default.conf @@ -1,6 +1,6 @@ server { root /srv/api/public; - add_header Content-Security-Policy "default-src 'self'"; + add_header Content-Security-Policy "default-src 'self'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'"; add_header Permissions-Policy "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(self), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=(), conversion-measurement=(self),focus-without-user-activation=(), hid=(), idle-detection=(), serial=(),sync-script=(), trust-token-redemption=(), vertical-scroll=(self)"; client_max_body_size 51M; diff --git a/api/migrations/Version20240311121033.php b/api/migrations/Version20240311121033.php new file mode 100644 index 000000000..54cc33f36 --- /dev/null +++ b/api/migrations/Version20240311121033.php @@ -0,0 +1,31 @@ +addSql('ALTER INDEX idx_8d93d6499e6b1585 RENAME TO IDX_8D93D64932C8A3DE'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER INDEX idx_8d93d64932c8a3de RENAME TO idx_8d93d6499e6b1585'); + } +} diff --git a/api/migrations/Version20240311132843.php b/api/migrations/Version20240311132843.php new file mode 100644 index 000000000..39b2bfc04 --- /dev/null +++ b/api/migrations/Version20240311132843.php @@ -0,0 +1,36 @@ +addSql('CREATE TABLE endpoint_gateway (endpoint_id UUID NOT NULL, gateway_id UUID NOT NULL, PRIMARY KEY(endpoint_id, gateway_id))'); + $this->addSql('CREATE INDEX IDX_39C1245121AF7E36 ON endpoint_gateway (endpoint_id)'); + $this->addSql('CREATE INDEX IDX_39C12451577F8E00 ON endpoint_gateway (gateway_id)'); + $this->addSql('ALTER TABLE endpoint_gateway ADD CONSTRAINT FK_39C1245121AF7E36 FOREIGN KEY (endpoint_id) REFERENCES endpoint (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE endpoint_gateway ADD CONSTRAINT FK_39C12451577F8E00 FOREIGN KEY (gateway_id) REFERENCES gateway (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP TABLE endpoint_gateway'); + } +} diff --git a/api/migrations/Version20240314120005.php b/api/migrations/Version20240314120005.php new file mode 100644 index 000000000..923adc92d --- /dev/null +++ b/api/migrations/Version20240314120005.php @@ -0,0 +1,39 @@ +addSql('CREATE SEQUENCE database_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); + $this->addSql('CREATE TABLE database (id UUID NOT NULL, name VARCHAR(255) NOT NULL, description TEXT DEFAULT NULL, reference VARCHAR(255) NOT NULL, version VARCHAR(255) NOT NULL DEFAULT \'0.0.0\', uri VARCHAR(255) NOT NULL, date_created TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, date_modified TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('ALTER TABLE organization ADD database_id UUID DEFAULT NULL'); + $this->addSql('ALTER TABLE organization ADD CONSTRAINT FK_C1EE637CF0AA09DB FOREIGN KEY (database_id) REFERENCES database (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('CREATE INDEX IDX_C1EE637CF0AA09DB ON organization (database_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE organization DROP CONSTRAINT FK_C1EE637CF0AA09DB'); + $this->addSql('DROP INDEX IDX_C1EE637CF0AA09DB'); + $this->addSql('ALTER TABLE organization DROP database_id'); + $this->addSql('DROP SEQUENCE database_id_seq CASCADE'); + $this->addSql('DROP TABLE database'); + } +} diff --git a/api/migrations/Version20240321082004.php b/api/migrations/Version20240321082004.php new file mode 100644 index 000000000..08de35d0f --- /dev/null +++ b/api/migrations/Version20240321082004.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE endpoint ADD proxy_overrules_authentication BOOLEAN DEFAULT false'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE endpoint DROP proxy_overrules_authentication'); + } +} diff --git a/api/public/.well-known/security.txt b/api/public/.well-known/security.txt new file mode 100644 index 000000000..4890493b6 --- /dev/null +++ b/api/public/.well-known/security.txt @@ -0,0 +1,22 @@ +# Information related to reporting security vulnerabilities of this site. + +# How to communicate about security issues. +Contact: mailto:info@conduction.nl + +# Date and time after which this data is considered stale +Expires: 2024-12-31T23:00:00.000Z + +# Encryption + +# Acknowledgements + +# Preferred languages for communication. +Preferred-Languages: nl, en + +# Canonical + +# Policy + +# Hiring + +# Please see https://securitytxt.org/ for details of the specification of this file. diff --git a/api/public/bundles/apiplatform/fonts/open-sans/400.css b/api/public/bundles/apiplatform/fonts/open-sans/400.css index 72d89b076..e6c28c969 100644 --- a/api/public/bundles/apiplatform/fonts/open-sans/400.css +++ b/api/public/bundles/apiplatform/fonts/open-sans/400.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-cyrillic-ext-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; } /* open-sans-cyrillic-400-normal*/ @font-face { @@ -14,7 +14,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-cyrillic-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; } /* open-sans-greek-ext-400-normal*/ @font-face { @@ -34,6 +34,15 @@ src: url('./files/open-sans-greek-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); unicode-range: U+0370-03FF; } +/* open-sans-hebrew-400-normal*/ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url('./files/open-sans-hebrew-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); + unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F; +} /* open-sans-vietnamese-400-normal*/ @font-face { font-family: 'Open Sans'; @@ -41,7 +50,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-vietnamese-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; } /* open-sans-latin-ext-400-normal*/ @font-face { @@ -50,7 +59,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-latin-ext-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* open-sans-latin-400-normal*/ @font-face { @@ -59,5 +68,5 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-latin-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } diff --git a/api/public/bundles/apiplatform/fonts/open-sans/700.css b/api/public/bundles/apiplatform/fonts/open-sans/700.css index a41de9de1..e8bb937c3 100644 --- a/api/public/bundles/apiplatform/fonts/open-sans/700.css +++ b/api/public/bundles/apiplatform/fonts/open-sans/700.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-cyrillic-ext-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; } /* open-sans-cyrillic-700-normal*/ @font-face { @@ -14,7 +14,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-cyrillic-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; } /* open-sans-greek-ext-700-normal*/ @font-face { @@ -34,6 +34,15 @@ src: url('./files/open-sans-greek-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); unicode-range: U+0370-03FF; } +/* open-sans-hebrew-700-normal*/ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url('./files/open-sans-hebrew-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); + unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F; +} /* open-sans-vietnamese-700-normal*/ @font-face { font-family: 'Open Sans'; @@ -41,7 +50,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-vietnamese-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; } /* open-sans-latin-ext-700-normal*/ @font-face { @@ -50,7 +59,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-latin-ext-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* open-sans-latin-700-normal*/ @font-face { @@ -59,5 +68,5 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-latin-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-400-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-400-normal.woff2 index 4c5a6f0f4..6bc81f45b 100644 Binary files a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-400-normal.woff2 and b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-400-normal.woff2 differ diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 index 43d5a7cad..26f70ab04 100644 Binary files a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 and b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 differ diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-400-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-400-normal.woff2 index 1f2f58842..e1d9435cc 100644 Binary files a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-400-normal.woff2 and b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-400-normal.woff2 differ diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-700-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-700-normal.woff2 index f1ae68562..8925e5215 100644 Binary files a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-700-normal.woff2 and b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-700-normal.woff2 differ diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-400-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-400-normal.woff2 index 3770a39d6..ce49b50c0 100644 Binary files a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-400-normal.woff2 and b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-400-normal.woff2 differ diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-700-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-700-normal.woff2 index eff71c001..25f9dbd1e 100644 Binary files a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-700-normal.woff2 and b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-700-normal.woff2 differ diff --git a/api/public/bundles/commonground/images/conduction/conduction_white_on_blue.svg b/api/public/bundles/commonground/images/conduction/conduction_white_on_blue.svg deleted file mode 100644 index 5652f3b72..000000000 --- a/api/public/bundles/commonground/images/conduction/conduction_white_on_blue.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/conduction/condution_blue_on_transparant.svg b/api/public/bundles/commonground/images/conduction/condution_blue_on_transparant.svg deleted file mode 100644 index 1603bca89..000000000 --- a/api/public/bundles/commonground/images/conduction/condution_blue_on_transparant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/conduction/condution_blue_on_white.svg b/api/public/bundles/commonground/images/conduction/condution_blue_on_white.svg deleted file mode 100644 index f02ee545d..000000000 --- a/api/public/bundles/commonground/images/conduction/condution_blue_on_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/conduction/condution_white_on_transparant.svg b/api/public/bundles/commonground/images/conduction/condution_white_on_transparant.svg deleted file mode 100644 index 3bd4bcce3..000000000 --- a/api/public/bundles/commonground/images/conduction/condution_white_on_transparant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/municipalities/s-hertogenbosch.svg b/api/public/bundles/commonground/images/municipalities/s-hertogenbosch.svg deleted file mode 100644 index 1c558d0c0..000000000 --- a/api/public/bundles/commonground/images/municipalities/s-hertogenbosch.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/municipalities/utrecht.svg b/api/public/bundles/commonground/images/municipalities/utrecht.svg deleted file mode 100644 index 7ba03c2af..000000000 --- a/api/public/bundles/commonground/images/municipalities/utrecht.svg +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/api/src/Controller/LoginController.php b/api/src/Controller/LoginController.php index 0ca3a1caf..e88dd1b7c 100644 --- a/api/src/Controller/LoginController.php +++ b/api/src/Controller/LoginController.php @@ -4,9 +4,6 @@ namespace App\Controller; -use App\Service\ObjectEntityService; -use App\Service\UserService; -use Conduction\CommonGroundBundle\Service\CommonGroundService; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Cache\Adapter\AdapterInterface as CacheInterface; @@ -40,9 +37,8 @@ public function __construct(CacheInterface $cache, EntityManagerInterface $entit * @Route("/me") * @Route("api/users/me", methods={"get"}) */ - public function MeAction(Request $request, CommonGroundService $commonGroundService, ObjectEntityService $objectEntityService) + public function MeAction(Request $request) { - $userService = new UserService($commonGroundService, $objectEntityService); if ($this->getUser()) { $result = [ 'id' => $this->getUser()->getUserIdentifier(), @@ -52,8 +48,8 @@ public function MeAction(Request $request, CommonGroundService $commonGroundServ 'last_name' => $this->getUser()->getLastName(), 'name' => $this->getUser()->getName(), 'email' => $this->getUser()->getEmail(), - 'person' => $userService->getPersonForUser($this->getUser()), // Get person ObjectEntity (->Entity with function = person) by id - 'organization' => $userService->getOrganizationForUser($this->getUser()), // Get organization ObjectEntity (->Entity with function = organization) by id + 'person' => $this->getUser()->getPerson(), // Get person ObjectEntity (->Entity with function = person) by id + 'organization' => $this->getUser()->getOrganization(), // Get organization ObjectEntity (->Entity with function = organization) by id ]; $result = json_encode($result); } else { @@ -73,7 +69,7 @@ public function MeAction(Request $request, CommonGroundService $commonGroundServ * * @return array */ - private function createPersonForUser(CommonGroundService $commonGroundService): array + private function createPersonForUser(): array { $person = [ 'givenName' => $this->getUser()->getFirstName(), diff --git a/api/src/Controller/UserController.php b/api/src/Controller/UserController.php index 4cc28408a..cdc9ba715 100644 --- a/api/src/Controller/UserController.php +++ b/api/src/Controller/UserController.php @@ -292,142 +292,10 @@ private function cleanupLoginResponse(array $userArray): array return $userArray; } - private function getActiveOrganization(array $user, array $organizations): ?string - { - if ($user['organization']) { - return $user['organization']; - } - // If user has no organization, we default activeOrganization to an organization of a userGroup this user has - if (count($organizations) > 0) { - return $organizations[0]; - } - // If we still have no organization, get the organization from the application - if ($this->session->get('application')) { - $application = $this->entityManager->getRepository('App:Application')->findOneBy(['id' => $this->session->get('application')]); - if (!empty($application) && $application->getOrganization()) { - return $application->getOrganization(); - } - } - - return null; - } - - /** - * Get all the child organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getSubOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (!empty($organization['subOrganizations']) && count($organization['subOrganizations']) > 0) { - foreach ($organization['subOrganizations'] as $subOrganization) { - if (!in_array($subOrganization['@id'], $organizations)) { - $organizations[] = $subOrganization['@id']; - $this->getSubOrganizations($organizations, $subOrganization['@id'], $commonGroundService, $functionService); - } - } - } - } - - return $organizations; - } - - /** - * Get al the parent organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getParentOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (array_key_exists('parentOrganization', $organization) && $organization['parentOrganization'] != null - && !in_array($organization['parentOrganization']['@id'], $organizations)) { - $organizations[] = $organization['parentOrganization']['@id']; - $organizations = $this->getParentOrganizations($organizations, $organization['parentOrganization']['@id'], $commonGroundService, $functionService); - } - } - - return $organizations; - } - - /** - * @Route("users/request_password_reset", methods={"POST"}) - * @Route("api/users/request_password_reset", methods={"POST"}) - */ - public function requestResetAction(Request $request, CommonGroundService $commonGroundService) - { - $data = json_decode($request->getContent(), true); - $users = $commonGroundService->getResourceList(['component' => 'uc', 'type' => 'users'], ['username' => urlencode($data['username'])])['hydra:member']; - if (count($users) > 0) { - $user = $users[0]; - } else { - return new Response(json_encode(['username' =>$data['username']]), 200, ['Content-type' => 'application/json']); - } - $this->authenticationService->sendTokenMail($user, 'Je wachtwoord herstellen', $request->headers->get('Referer', $request->headers->get('referer'))); - - return new Response(json_encode(['username' =>$data['username']]), 200, ['Content-type' => 'application/json']); - } - - /** - * @Route("users/reset_password", methods={"POST"}) - * @Route("api/users/reset_password", methods={"POST"}) - */ - public function resetAction(Request $request, CommonGroundService $commonGroundService) - { - $data = json_decode($request->getContent(), true); - if (!isset($data['username']) || !isset($data['password']) || !isset($data['token'])) { - $status = 400; - $user = [ - 'message' => 'Data missing', - 'type' => 'error', - 'path' => 'users/reset_password', - 'data' => [], - ]; - isset($data['username']) ?? $user['data']['username'] = null; - isset($data['password']) ?? $user['data']['password'] = null; - isset($data['token']) ?? $user['data']['token'] = null; - - return new Response(json_encode($user), $status, ['Content-type' => 'application/json']); - } - - try { - $user = $commonGroundService->createResource(['username' => $data['username'], 'password' => $data['password'], 'token' => $data['token']], ['component' => 'uc', 'type' => 'users/token']); - $status = 200; - $user['username'] = $data['username']; - } catch (ClientException $exception) { - $status = 400; - $user = [ - 'message' => 'Invalid token, username or password', - 'type' => 'error', - 'path' => 'users/reset_password', - 'data' => ['username' => $data['username'], 'password' => $data['password'], 'token'=>$data['token']], - ]; - } - - return new Response(json_encode($user), $status, ['Content-type' => 'application/json']); - } - /** * @Route("api/users/logout", methods={"POST", "GET"}) */ - public function ApiLogoutAction(Request $request, CommonGroundService $commonGroundService) + public function ApiLogoutAction(Request $request) { $request->getSession()->clear(); $request->getSession()->invalidate(); @@ -450,7 +318,7 @@ public function ApiLogoutAction(Request $request, CommonGroundService $commonGro return $response; } - public function ApiMeAction(Request $request, CommonGroundService $commonGroundService) + public function ApiMeAction(Request $request) { $token = substr($request->headers->get('Authorization'), strlen('Bearer ')); if (!$token) { @@ -490,18 +358,6 @@ public function ApiMeAction(Request $request, CommonGroundService $commonGroundS return new Response(json_encode($user), $status, ['Content-type' => 'application/json']); } - /** - * @Route("login/digispoof") - */ - public function DigispoofAction(Request $request, CommonGroundService $commonGroundService) - { - $redirect = $commonGroundService->cleanUrl(['component' => 'ds']); - - $responseUrl = $request->getSchemeAndHttpHost().$this->generateUrl('app_user_digispoof'); - - return $this->redirect($redirect.'?responseUrl='.$responseUrl.'&backUrl='.$request->headers->get('referer')); - } - /** * @Route("login/{method}/{identifier}") */ diff --git a/api/src/Controller/ZZController.php b/api/src/Controller/ZZController.php index 8806b7fed..337f68281 100644 --- a/api/src/Controller/ZZController.php +++ b/api/src/Controller/ZZController.php @@ -105,7 +105,7 @@ public function dynamicAction( * * @return array The parameter arrau */ - private function getParametersFromRequest(?array $parameters = [], ?Request $request): array + private function getParametersFromRequest(?array $parameters = [], ?Request $request = null): array { // Lets make sure that we always have a path if (!isset($parameters['path'])) { diff --git a/api/src/DataFixtures/AppFixtures.php b/api/src/DataFixtures/AppFixtures.php index 6c20526f4..987f6fe95 100644 --- a/api/src/DataFixtures/AppFixtures.php +++ b/api/src/DataFixtures/AppFixtures.php @@ -7,7 +7,7 @@ class AppFixtures extends Fixture { - public function load(ObjectManager $manager) + public function load(ObjectManager $manager): void { // $product = new Product(); // $manager->persist($product); diff --git a/api/src/Entity/DashboardCard.php b/api/src/Entity/DashboardCard.php index 8e78148ce..ba010283a 100644 --- a/api/src/Entity/DashboardCard.php +++ b/api/src/Entity/DashboardCard.php @@ -110,7 +110,7 @@ class DashboardCard * * @ORM\Column(type="uuid") */ - private Uuid $entityId; + private UuidInterface $entityId; /** * @Groups({"read","write"}) @@ -245,12 +245,12 @@ public function setObject($object): self return $this; } - public function getEntityId(): Uuid + public function getEntityId(): UuidInterface { return $this->entityId; } - public function setEntityId($entityId): self + public function setEntityId(UuidInterface $entityId): self { $this->entityId = $entityId; diff --git a/api/src/Entity/Database.php b/api/src/Entity/Database.php new file mode 100644 index 000000000..1a2bbf60a --- /dev/null +++ b/api/src/Entity/Database.php @@ -0,0 +1,368 @@ +getName(); + } + + public function __construct() + { + $this->organizations = new ArrayCollection(); + } + + /** + * Create or update this Database from an external schema array. + * + * This function is used to update and create databases form database.json objects. + * + * @param array $schema The schema to load. + * + * @return $this This Database. + */ + public function fromSchema(array $schema): self + { + // Basic stuff + if (array_key_exists('$id', $schema)) { + $this->setReference($schema['$id']); + } + if (array_key_exists('version', $schema)) { + $this->setVersion($schema['version']); + } + + array_key_exists('title', $schema) ? $this->setName($schema['title']) : ''; + array_key_exists('description', $schema) ? $this->setDescription($schema['description']) : ''; + array_key_exists('uri', $schema) ? $this->setUri($schema['uri']) : ''; + + return $this; + } + + /** + * Convert this Gateway to a schema. + * + * @return array Schema array. + */ + public function toSchema(): array + { + // Do not return jwt, secret, password or apikey this way! + return [ + '$id' => $this->getReference(), //@todo dit zou een interne uri verwijzing moeten zijn maar hebben we nog niet + '$schema' => 'https://docs.commongateway.nl/schemas/Database.schema.json', + 'title' => $this->getName(), + 'description' => $this->getDescription(), + 'version' => $this->getVersion(), + 'name' => $this->getName(), + 'uri' => $this->getUri(), + ]; + } + + public function getId() + { + return $this->id; + } + + public function setId(string $id): self + { + $this->id = Uuid::fromString($id); + + return $this; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + public function getReference(): ?string + { + return $this->reference; + } + + public function setReference(string $reference): self + { + $this->reference = $reference; + + return $this; + } + + public function getVersion(): ?string + { + return $this->version; + } + + public function setVersion(string $version): self + { + $this->version = $version; + + return $this; + } + + public function getUri(): ?string + { + return $this->uri; + } + + public function setUri(?string $uri): self + { + $this->uri = $uri; + + return $this; + } + + /** + * @return Collection|Organization[] + */ + public function getOrganizations(): Collection + { + return $this->organizations; + } + + public function addOrganization(Organization $organization): self + { + if (!$this->organizations->contains($organization)) { + $this->organizations[] = $organization; + $organization->setDatabase($this); + } + + return $this; + } + + public function removeOrganization(Organization $organization): self + { + if ($this->organizations->removeElement($organization)) { + // set the owning side to null (unless already changed) + if ($organization->getDatabase() === $this) { + $organization->setDatabase(null); + } + } + + return $this; + } + + public function getDateCreated(): ?DateTimeInterface + { + return $this->dateCreated; + } + + public function setDateCreated(DateTimeInterface $dateCreated): self + { + $this->dateCreated = $dateCreated; + + return $this; + } + + public function getDateModified(): ?DateTimeInterface + { + return $this->dateModified; + } + + public function setDateModified(DateTimeInterface $dateModified): self + { + $this->dateModified = $dateModified; + + return $this; + } +} diff --git a/api/src/Entity/Endpoint.php b/api/src/Entity/Endpoint.php index 1eb7c2772..d519f46ea 100644 --- a/api/src/Entity/Endpoint.php +++ b/api/src/Entity/Endpoint.php @@ -136,17 +136,13 @@ class Endpoint */ private ?string $tag = null; - // @TODO remove totally? - // /** - // * @var string The type of this Endpoint. - // * - // * @Assert\NotNull - // * @Assert\Choice({"gateway-endpoint", "entity-route", "entity-endpoint", "documentation-endpoint"}) - // * - // * @Groups({"read", "write"}) - // * @ORM\Column(type="string") - // */ - // private string $type; + /** + * @var bool Whether or not the proxy should overrule the authentication from the request. + * + * @Groups({"read", "write"}) + * @ORM\Column(type="boolean", options={"default":false}, nullable=true) + */ + private ?bool $proxyOverrulesAuthentication = false; /** * @var array|null The path of this Endpoint. @@ -340,6 +336,15 @@ class Endpoint */ private string $version = '0.0.0'; + /** + * @var Collection The proxies that can be used for federated calls. + * + * @MaxDepth(1) + * @Groups({"read", "write"}) + * @ORM\ManyToMany(targetEntity=Gateway::class, inversedBy="federationEndpoints") + */ + private Collection $federationProxies; + /** * Constructor for creating an Endpoint. Use $entity to create an Endpoint for an Entity or * use $source to create an Endpoint for a source, a proxy Endpoint. @@ -357,6 +362,7 @@ public function __construct(?Entity $entity = null, ?Source $source = null, ?arr $this->collections = new ArrayCollection(); $this->properties = new ArrayCollection(); $this->entities = new ArrayCollection(); + $this->federationProxies = new ArrayCollection(); if (!$entity && !$source && isset($configuration['entities']) === false) { return; @@ -605,18 +611,6 @@ public function setTag(?string $tag): self return $this; } - // public function getType(): ?string - // { - // return $this->type; - // } - - // public function setType(string $type): self - // { - // $this->type = $type; - - // return $this; - // } - public function getPath(): ?array { return $this->path; @@ -962,4 +956,40 @@ public function setVersion(?string $version): self return $this; } + + /** + * @return Collection|Gateway[] + */ + public function getFederationProxies(): Collection + { + return $this->federationProxies; + } + + public function addFederationProxy(Gateway $federationProxy): self + { + if (!$this->federationProxies->contains($federationProxy)) { + $this->federationProxies[] = $federationProxy; + } + + return $this; + } + + public function removeFederationProxy(Gateway $federationProxy): self + { + $this->federationProxies->removeElement($federationProxy); + + return $this; + } + + public function getProxyOverrulesAuthentication(): ?bool + { + return $this->proxyOverrulesAuthentication; + } + + public function setProxyOverrulesAuthentication(bool $proxyOverrulesAuthentication): self + { + $this->proxyOverrulesAuthentication = $proxyOverrulesAuthentication; + + return $this; + } } diff --git a/api/src/Entity/Entity.php b/api/src/Entity/Entity.php index c5086fc58..b2294f398 100644 --- a/api/src/Entity/Entity.php +++ b/api/src/Entity/Entity.php @@ -1185,7 +1185,7 @@ public function toSchema(?ObjectEntity $objectEntity = null): array $attribute->getFormat() && $property['format'] = $attribute->getFormat(); } - $stringReplace = str_replace('“', "'", $attribute->getDescription()); + $stringReplace = str_replace('“', "'", $attribute->getDescription() ?? ''); $decodedDescription = str_replace('”', "'", $stringReplace); $attribute->getDescription() && $property['description'] = $decodedDescription; diff --git a/api/src/Entity/Gateway.php b/api/src/Entity/Gateway.php index e3251a52c..bbd2e4794 100644 --- a/api/src/Entity/Gateway.php +++ b/api/src/Entity/Gateway.php @@ -767,6 +767,15 @@ class Gateway */ private $proxies; + /** + * @var Collection The endpoints for which this endpoint is a federated proxy. + * + * @MaxDepth(1) + * @Groups({"read", "write"}) + * @ORM\ManyToMany(targetEntity=Endpoint::class, mappedBy="federationProxies") + */ + private Collection $federationEndpoints; + /** * Constructor for Gateway. * @@ -781,6 +790,7 @@ public function __construct(?array $configuration = []) if ($configuration) { $this->fromSchema($configuration); } + $this->federationEndpoints = new ArrayCollection(); } /** @@ -1166,7 +1176,7 @@ public function getLoggingConfig(): ?array public function setLoggingConfig(array $loggingConfig): self { - $this->loggingConfig = array_merge($loggingConfig); + $this->loggingConfig = array_merge($this->loggingConfig, $loggingConfig); return $this; } @@ -1411,4 +1421,31 @@ public function removeProxy(Endpoint $proxy): self return $this; } + + /** + * @return Collection|Endpoint[] + */ + public function getFederationEndpoints(): Collection + { + return $this->federationEndpoints; + } + + public function addFederationEndpoint(Endpoint $federationEndpoint): self + { + if (!$this->federationEndpoints->contains($federationEndpoint)) { + $this->federationEndpoints[] = $federationEndpoint; + $federationEndpoint->addFederationProxy($this); + } + + return $this; + } + + public function removeFederationEndpoint(Endpoint $federationEndpoint): self + { + if ($this->federationEndpoints->removeElement($federationEndpoint)) { + $federationEndpoint->removeFederationProxy($this); + } + + return $this; + } } diff --git a/api/src/Entity/ObjectEntity.php b/api/src/Entity/ObjectEntity.php index 85926ccfa..f2a300666 100644 --- a/api/src/Entity/ObjectEntity.php +++ b/api/src/Entity/ObjectEntity.php @@ -1128,6 +1128,11 @@ public function toArray(array $configuration = []): array 'dateCreated' => $this->getDateCreated() ? $this->getDateCreated()->format('c') : null, 'dateModified' => $this->getDateModified() ? $this->getDateModified()->format('c') : null, 'dateDeleted' => null, + 'database' => [ + 'id' => $this->getOrganization() && $this->getOrganization()->getDatabase() ? $this->getOrganization()->getDatabase()->getId()->toString() : null, + 'name' => $this->getOrganization() && $this->getOrganization()->getDatabase() ? $this->getOrganization()->getDatabase()->getName() : null, + 'ref' => $this->getOrganization() && $this->getOrganization()->getDatabase() ? $this->getOrganization()->getDatabase()->getReference() : null + ], 'owner' => [ 'id' => $this->getOwner(), 'name' => isset($configuration['user']) ? $configuration['user']->getName() : $this->getOwner(), @@ -1244,6 +1249,9 @@ public function toArray(array $configuration = []): array } } elseif (count($valueObject->getObjects()) === 0) { $array[$attribute->getName()] = []; + if (empty($valueObject->getArrayValue()) === false) { + $array[$attribute->getName()] = $valueObject->getArrayValue(); + } } else { $currentObjects[] = $valueObject->getObjects()->toArray(); foreach ($valueObject->getObjects() as $object) { diff --git a/api/src/Entity/Organization.php b/api/src/Entity/Organization.php index 7043caac4..24f85144d 100644 --- a/api/src/Entity/Organization.php +++ b/api/src/Entity/Organization.php @@ -20,6 +20,7 @@ use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Serializer\Annotation\MaxDepth; use Symfony\Component\Validator\Constraints as Assert; +use Symfony\Component\VarDumper\Cloner\Data; /** * This entity holds the information about an Organization. @@ -119,6 +120,17 @@ class Organization */ private string $version = '0.0.0'; + /** + * The database that this organization uses to store its objects. + * + * @Groups({"read", "write"}) + * + * @ORM\ManyToOne(targetEntity=Database::class, inversedBy="organizations") + * + * @MaxDepth(1) + */ + private ?Database $database = null; + /** * @Groups({"read", "write"}) * @@ -286,6 +298,18 @@ public function setVersion(?string $version): self return $this; } + public function getDatabase(): ?Database + { + return $this->database; + } + + public function setDatabase(?Database $database): self + { + $this->database = $database; + + return $this; + } + /** * @return Collection|Application[] */ diff --git a/api/src/Logger/SessionDataProcessor.php b/api/src/Logger/SessionDataProcessor.php index e16385ee2..4ce307ff1 100644 --- a/api/src/Logger/SessionDataProcessor.php +++ b/api/src/Logger/SessionDataProcessor.php @@ -4,8 +4,8 @@ use App\Event\ActionEvent; use Doctrine\ORM\EntityManagerInterface; -use Exception; -use Psr\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\HttpFoundation\Exception\JsonException; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -140,7 +140,7 @@ private function addErrorContext(array $context, string $levelName): array if ($this->requestStack->getMainRequest() !== null && $levelName !== 'ERROR') { try { $context['body'] = $this->requestStack->getMainRequest()->toArray(); - } catch (Exception $exception) { + } catch (JsonException $exception) { $context['body'] = ''; } $context['crude_body'] = $this->requestStack->getMainRequest() ? $this->requestStack->getMainRequest()->getContent() : ''; @@ -183,10 +183,10 @@ public function dispatchLogCreateAction(array $record): array * * @return array The updated log record. */ + public function __invoke(array $record): array { $record['context'] = $this->updateContext($record); - return $this->dispatchLogCreateAction($record); } } diff --git a/api/src/Message/NotificationMessage.php b/api/src/Message/NotificationMessage.php deleted file mode 100644 index b6cad4d0a..000000000 --- a/api/src/Message/NotificationMessage.php +++ /dev/null @@ -1,27 +0,0 @@ -objectEntityId = $objectEntityId; - $this->method = $method; - } - - public function getObjectEntityId(): UuidInterface - { - return $this->objectEntityId; - } - - public function getMethod(): string - { - return $this->method; - } -} diff --git a/api/src/Message/PromiseMessage.php b/api/src/Message/PromiseMessage.php deleted file mode 100644 index 0dd50f3ab..000000000 --- a/api/src/Message/PromiseMessage.php +++ /dev/null @@ -1,27 +0,0 @@ -objectEntityId = $objectEntityId; - $this->method = $method; - } - - public function getObjectEntityId(): UuidInterface - { - return $this->objectEntityId; - } - - public function getMethod(): string - { - return $this->method; - } -} diff --git a/api/src/Message/SyncPageMessage.php b/api/src/Message/SyncPageMessage.php deleted file mode 100644 index 9ae361688..000000000 --- a/api/src/Message/SyncPageMessage.php +++ /dev/null @@ -1,47 +0,0 @@ -callServiceData = $callServiceData; - $this->page = $page; - $this->entityId = $entityId; - $this->sessionData = $sessionData; - } - - public function getCallServiceData(): array - { - return $this->callServiceData; - } - - public function getPage(): int - { - return $this->page; - } - - public function getEntityId(): string - { - return $this->entityId; - } - - public function getSessionData(): array - { - return $this->sessionData; - } -} diff --git a/api/src/MessageHandler/NotificationMessageHandler.php b/api/src/MessageHandler/NotificationMessageHandler.php deleted file mode 100644 index 32966cdb3..000000000 --- a/api/src/MessageHandler/NotificationMessageHandler.php +++ /dev/null @@ -1,32 +0,0 @@ -objectEntityService = $objectEntityService; - $this->repository = $repository; - } - - public function __invoke(NotificationMessage $message): void - { - $object = $this->repository->find($message->getObjectEntityId()); - if ($object instanceof ObjectEntity) { -// var_dump('DispatchNotification: '.$object->getEntity()->getName().' - '.$message->getObjectEntityId()->toString().' - '.$object->getExternalId().' - '.$message->getMethod()); - $this->objectEntityService->notify($object, $message->getMethod()); - } else { -// var_dump('No ObjectEntity found with id: '.$message->getObjectEntityId()->toString()); - } - } -} diff --git a/api/src/MessageHandler/PromiseMessageHandler.php b/api/src/MessageHandler/PromiseMessageHandler.php deleted file mode 100644 index 30fc45173..000000000 --- a/api/src/MessageHandler/PromiseMessageHandler.php +++ /dev/null @@ -1,89 +0,0 @@ -objectEntityRepository = $objectEntityRepository; - $this->objectEntityService = $objectEntityService; - $this->entityManager = $entityManager; - $this->messageBus = $messageBus; - } - - public function __invoke(PromiseMessage $promiseMessage): void - { - $this->objectEntityService->notifications = []; // Make sure we reset notifications array. - $object = $this->objectEntityRepository->find($promiseMessage->getObjectEntityId()); - $this->objectEntityService->functionService->removeResultFromCache = []; - $promises = $this->getPromises($object, [], $promiseMessage->getMethod()); - if (!empty($promises)) { - Utils::settle($promises)->wait(); - - foreach ($promises as $promise) { - echo $promise->wait(); - } - } - $this->entityManager->persist($object); - $this->entityManager->flush(); - - foreach ($this->objectEntityService->notifications as $notification) { - $this->messageBus->dispatch(new NotificationMessage($notification['id'], $notification['method'])); - } - } - - public function getPromises(ObjectEntity $objectEntity, array $parentObjects, string $method, int $level = 0): array - { - $promises = []; - if (in_array($objectEntity, $parentObjects) || $level > 3) { - return $promises; - } - $parentObjects[] = $objectEntity; - foreach ($objectEntity->getSubresources() as $subresource) { - $promises = array_merge($promises, $this->getPromises($subresource, $parentObjects, $method, $level + 1)); - } - if ($objectEntity->getEntity()->getSource()) { - // createPromise will add a notification if promise is successful - $promise = $this->objectEntityService->createPromise($objectEntity, $method); - $promises[] = $promise; - $objectEntity->addPromise($promise); - } else { - // todo: very hacky code - // The code below makes sure that if we do not create a promise^, the method of the notification won't ... - // ... be POST when the ObjectEntity already exists for more than 5 minutes. In this case we want a ... - // ... notification with method = PUT not POST. - $now = new DateTime(); - $interval = $objectEntity->getDateCreated()->diff($now); - $compareDate = new DateTime(); - $compareDate->add($interval); - $now->add(new DateInterval('PT5M')); - if ($compareDate > $now) { - $method = 'PUT'; - } - - // Create Notification -// var_dump('NOTIFICATION: '.$objectEntity->getEntity()->getName().' - '.$objectEntity->getId()->toString().' - '.$objectEntity->getExternalId().' - '.$method); - $this->objectEntityService->notifications[] = ['id' => $objectEntity->getId(), 'method' => $method]; - } - - return $promises; - } -} diff --git a/api/src/MessageHandler/SyncPageMessageHandler.php b/api/src/MessageHandler/SyncPageMessageHandler.php deleted file mode 100644 index 1c519f57a..000000000 --- a/api/src/MessageHandler/SyncPageMessageHandler.php +++ /dev/null @@ -1,150 +0,0 @@ -commonGroundService = $commonGroundService; - $this->objectEntityRepository = $objectEntityRepository; - $this->entityRepository = $entityRepository; - } - - /** - * Handles a SyncPageMessage message. - * - * @param SyncPageMessage $message - * - * @throws Exception - * - * @return void - */ - public function __invoke(SyncPageMessage $message): void - { - $callServiceData = $message->getCallServiceData(); - $requiredKeys = ['component', 'url', 'query', 'headers']; - if (count(array_intersect_key($callServiceData, array_flip($requiredKeys))) !== count($requiredKeys)) { - throw new Exception('CallServiceData is missing one of the following keys: '.implode(', ', $requiredKeys)); - } - $entity = $this->entityRepository->find($message->getEntityId()); - - // Get objects from extern api - $externObjects = $this->getExternObjects($message, $entity); - - // Loop through all extern objects and update or create an ObjectEntity for it in the gateway. - $newGatewayObjects = $this->saveObjects($externObjects, ['message' => $message, 'entity' => $entity]); - - // Dump so we can see what's happening in the worker pod online. - var_dump('Entity: '.$entity->getName().' - Page: '.$message->getPage().' - New / changed gateway objects = '.count($newGatewayObjects)); - } - - /** - * Uses callService with info from the SyncPageMessage to get all objects from an extern api for one specific page. - * - * @param SyncPageMessage $message - * @param Entity $entity - * - * @return array - */ - private function getExternObjects(SyncPageMessage $message, Entity $entity): array - { - $callServiceData = $message->getCallServiceData(); - - $response = $this->commonGroundService->callService( - $callServiceData['component'], - $callServiceData['url'], - '', - array_merge($callServiceData['query'], $message->getPage() !== 1 ? ['page' => $message->getPage()] : []), - $callServiceData['headers'], - false, - 'GET' - ); - if (is_array($response)) { - var_dump('callService error: '.$response); //Throw error? //todo? - } - $response = json_decode($response->getBody()->getContents(), true); - - // Now get response from the correct place in the response - $collectionConfigResults = explode('.', $entity->getCollectionConfig()['results']); - foreach ($collectionConfigResults as $item) { - $response = $response[$item]; - } - - return $response; - } - - /** - * Loop through all extern objects and update or create an ObjectEntity for it in the gateway. - * - * @param array $externObjects - * @param array $messageData Must contain key 'message' (SyncPageMessage) and key 'entity' (Entity) - * - * @return ArrayCollection - */ - private function saveObjects(array $externObjects, array $messageData): ArrayCollection - { - $newGatewayObjects = new ArrayCollection(); - $collectionConfigEnvelope = []; - if (array_key_exists('envelope', $messageData['entity']->getCollectionConfig())) { - $collectionConfigEnvelope = explode('.', $messageData['entity']->getCollectionConfig()['envelope']); - } - $collectionConfigId = []; - if (array_key_exists('id', $messageData['entity']->getCollectionConfig())) { - $collectionConfigId = explode('.', $messageData['entity']->getCollectionConfig()['id']); - } - foreach ($externObjects as $externObject) { - $object = $this->saveObject( - $externObject, - [ - 'collectionConfigEnvelope' => $collectionConfigEnvelope, - 'collectionConfigId' => $collectionConfigId, - ], - $messageData - ); - - if ($object instanceof ObjectEntity) { - $newGatewayObjects->add($object); - } - } - - return $newGatewayObjects; - } - - private function saveObject(array $externObject, array $config, array $messageData): ?ObjectEntity - { - $id = $config['collectionConfigId'] !== [] ? $externObject : null; - // Make sure to get this item from the correct place in $externObject - foreach ($config['collectionConfigEnvelope'] as $item) { - $externObject = $externObject[$item]; - } - // Make sure to get id of this item from the correct place in $externObject - if ($id !== null) { - foreach ($config['collectionConfigId'] as $item) { - $id = $id[$item]; - } - } - - // We want to update all objects, unless specified not to, needs config option: -// if (!$this->objectEntityRepository->findOneBy(['entity' => $messageData['entity'], 'externalId' => $id])) { - // Convert this object to a gateway object - // todo: We could use the handleOwner function here to set the owner of this object, but should we set the owner to the person/user that uses the /sync api-call? -// } - - return $object ?? null; - } -} diff --git a/api/src/Repository/DatabaseRepository.php b/api/src/Repository/DatabaseRepository.php new file mode 100644 index 000000000..a3da5d9ff --- /dev/null +++ b/api/src/Repository/DatabaseRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('d.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Database + { + return $this->createQueryBuilder('d') + ->andWhere('d.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/api/src/Repository/ObjectEntityRepository.php b/api/src/Repository/ObjectEntityRepository.php index 9f3b68051..b20e36304 100644 --- a/api/src/Repository/ObjectEntityRepository.php +++ b/api/src/Repository/ObjectEntityRepository.php @@ -974,4 +974,23 @@ private function makeKeySqlFriendly(string $key): string // todo, probably add more special characters to replace... return str_replace('-', 'Dash', $key); } + + /** + * Finds all object entities with references. + * + * @param array $references The entity references + * + * @return mixed ObjectEntities + */ + public function findByReferences(array $references) + { + $qb = $this->createQueryBuilder('o') + ->innerJoin('o.entity', 'e') + ->where('e.reference IN (:references)') + ->setParameter('references', $references); + + $query = $qb->getQuery(); + + return $query->getResult(); + }//end findByReferences() } diff --git a/api/src/Security/ApiKeyAuthenticator.php b/api/src/Security/ApiKeyAuthenticator.php index 4bf905852..70df9aa1b 100644 --- a/api/src/Security/ApiKeyAuthenticator.php +++ b/api/src/Security/ApiKeyAuthenticator.php @@ -3,11 +3,9 @@ namespace App\Security; use App\Entity\Application; +use App\Entity\Endpoint; use App\Entity\User; -use App\Service\FunctionService; -use Conduction\CommonGroundBundle\Service\AuthenticationService; -use Conduction\CommonGroundBundle\Service\CommonGroundService; -use Conduction\SamlBundle\Security\User\AuthenticationUser; +use App\Security\User\AuthenticationUser; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\HttpFoundation\JsonResponse; @@ -24,26 +22,14 @@ class ApiKeyAuthenticator extends \Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator { - private CommonGroundService $commonGroundService; - private ParameterBagInterface $parameterBag; - private AuthenticationService $authenticationService; private SessionInterface $session; - private FunctionService $functionService; private EntityManagerInterface $entityManager; public function __construct( - CommonGroundService $commonGroundService, - AuthenticationService $authenticationService, - ParameterBagInterface $parameterBag, SessionInterface $session, - FunctionService $functionService, EntityManagerInterface $entityManager ) { - $this->commonGroundService = $commonGroundService; - $this->parameterBag = $parameterBag; - $this->authenticationService = $authenticationService; $this->session = $session; - $this->functionService = $functionService; $this->entityManager = $entityManager; } @@ -52,63 +38,18 @@ public function __construct( */ public function supports(Request $request): ?bool { - return $request->headers->has('Authorization') && - strpos($request->headers->get('Authorization'), 'Bearer') === false; - } - - /** - * Get all the child organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getSubOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (!empty($organization['subOrganizations']) && count($organization['subOrganizations']) > 0) { - foreach ($organization['subOrganizations'] as $subOrganization) { - if (!in_array($subOrganization['@id'], $organizations)) { - $organizations[] = $subOrganization['@id']; - $this->getSubOrganizations($organizations, $subOrganization['@id'], $commonGroundService, $functionService); - } - } + if($request->headers->has('Authorization') === true && + strpos($request->headers->get('Authorization'), 'Bearer') === false) { + + $pathTemp = explode('/api/', $request->getPathInfo(), 2); + $endpoint = null; + if(count($pathTemp) > 1) { + $path = $pathTemp[1]; + $endpoint = $this->entityManager->getRepository(Endpoint::class)->findByMethodRegex($request->getMethod(), $path); } + return ($endpoint instanceof Endpoint === false || $endpoint->getProxyOverrulesAuthentication() == false); } - - return $organizations; - } - - /** - * Get al the parent organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getParentOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (array_key_exists('parentOrganization', $organization) && $organization['parentOrganization'] != null - && !in_array($organization['parentOrganization']['@id'], $organizations)) { - $organizations[] = $organization['parentOrganization']['@id']; - $organizations = $this->getParentOrganizations($organizations, $organization['parentOrganization']['@id'], $commonGroundService, $functionService); - } - } - - return $organizations; + return false; } private function prefixRoles(array $roles): array @@ -171,7 +112,7 @@ public function authenticate(Request $request): PassportInterface } // Set apiKey Application id in session - $this->session->set('apiKeyApplication', $application->getId()->toString()); + $this->session->set('application', $application->getId()->toString()); // Set organization id and user id in session $this->session->set('user', $user->getId()->toString()); @@ -200,6 +141,7 @@ public function authenticate(Request $request): PassportInterface 'roles' => $roleArray['roles'], ]; + return new Passport( new UserBadge($userArray['id'], function ($userIdentifier) use ($userArray) { return new AuthenticationUser( diff --git a/api/src/Security/DigispoofAuthenticator.php b/api/src/Security/DigispoofAuthenticator.php deleted file mode 100644 index 6ff43990c..000000000 --- a/api/src/Security/DigispoofAuthenticator.php +++ /dev/null @@ -1,157 +0,0 @@ -params = $params; - $this->commonGroundService = $commonGroundService; - $this->router = $router; - $this->cache = $cache; - $this->tokenStorage = $tokenStorage; - } - - /** - * Called on every request to decide if this authenticator should be - * used for the request. Returning false will cause this authenticator - * to be skipped. - */ - public function supports(Request $request) - { - return 'app_user_digispoof' === $request->attributes->get('_route') - && $request->isMethod('POST'); - } - - /** - * Called on every request. Return whatever credentials you want to - * be passed to getUser() as $credentials. - */ - public function getCredentials(Request $request) - { - $credentials = [ - 'bsn' => $request->request->get('bsn'), - - ]; - - return $credentials; - } - - public function getUser($credentials, UserProviderInterface $userProvider) - { - // Aan de hand van BSN persoon ophalen uit haal centraal - try { - $user = $this->commonGroundService->getResource(['component' => 'brp', 'type' => 'ingeschrevenpersonen', 'id' => $credentials['bsn']]); - } catch (\Throwable $e) { - return; - } - - if (!isset($user['roles'])) { - $user['roles'] = []; - } - - if (!in_array('ROLE_USER', $user['roles'])) { - $user['roles'][] = 'ROLE_USER'; - } - - array_push($user['roles'], 'scope.vrc.requests.read'); - array_push($user['roles'], 'scope.orc.orders.read'); - array_push($user['roles'], 'scope.cmc.messages.read'); - array_push($user['roles'], 'scope.bc.invoices.read'); - array_push($user['roles'], 'scope.arc.events.read'); - array_push($user['roles'], 'scope.irc.assents.read'); - - return new CommongroundUser($user['burgerservicenummer'], $user['naam']['voornamen'], $user['naam']['voornamen'], $user['naam']['voornamen'], null, $user['roles'], $this->commonGroundService->cleanUrl(['component'=>'brp', 'type'=>'ingeschrevenpersonen', 'id' => $user['burgerservicenummer']]), null, 'person', false); - } - - public function checkCredentials($credentials, UserInterface $user) - { - try { - $user = $this->commonGroundService->getResource(['component' => 'brp', 'type' => 'ingeschrevenpersonen', 'id' => $credentials['bsn']]); - } catch (\Throwable $e) { - return; - } - - // no adtional credential check is needed in this case so return true to cause authentication success - return true; - } - - public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) - { - $backUrl = $request->request->get('back_url'); - $bsn = $request->request->get('bsn'); - $user = $this->commonGroundService->getResource(['component' => 'brp', 'type' => 'ingeschrevenpersonen', 'id' => $bsn]); - - $this->tokenStorage->setToken(); - - $item = $this->cache->getItem('code_'.base64_encode($bsn)); - $item->set($bsn); - $this->cache->save($item); - - return new RedirectResponse($backUrl.'?bsn='.$bsn.'&name='.$user['naam']['aanschrijfwijze']); - } - - public function onAuthenticationFailure(Request $request, AuthenticationException $exception) - { - if ($this->params->get('app_subpath') && $this->params->get('app_subpath') != 'false') { - return new RedirectResponse('/'.$this->params->get('app_subpath').$this->router->generate('app_user_digispoof', [])); - } - - return new RedirectResponse(filter_var($this->router->generate('app_user_digispoof', ['response' => $request->request->get('back_url'), 'back_url' => $request->request->get('back_url')]), FILTER_SANITIZE_URL)); - } - - /** - * Called when authentication is needed, but it's not sent. - */ - public function start(Request $request, AuthenticationException $authException = null) - { - if ($this->params->get('app_subpath') && $this->params->get('app_subpath') != 'false') { - return new RedirectResponse('/'.$this->params->get('app_subpath').$this->router->generate('app_user_digispoof', [])); - } else { - return new RedirectResponse($this->router->generate('app_user_digispoof', ['response' => $request->request->get('back_url'), 'back_url' => $request->request->get('back_url')])); - } - } - - public function supportsRememberMe() - { - return true; - } - - protected function getLoginUrl() - { - if ($this->params->get('app_subpath') && $this->params->get('app_subpath') != 'false') { - return '/'.$this->params->get('app_subpath').$this->router->generate('app_user_digispoof', [], UrlGeneratorInterface::RELATIVE_PATH); - } else { - return $this->router->generate('app_user_digispoof', [], UrlGeneratorInterface::RELATIVE_PATH); - } - } -} diff --git a/api/src/Security/OauthAuthenticator.php b/api/src/Security/OauthAuthenticator.php deleted file mode 100644 index 0972e9216..000000000 --- a/api/src/Security/OauthAuthenticator.php +++ /dev/null @@ -1,145 +0,0 @@ -params = $params; - $this->commonGroundService = $commonGroundService; - $this->router = $router; - $this->session = $session; - $this->tokenStorage = $tokenStorage; - $this->authenticationService = $authenticationService; - } - - /** - * Called on every request to decide if this authenticator should be - * used for the request. Returning false will cause this authenticator - * to be skipped. - */ - public function supports(Request $request) - { - return 'app_user_authenticate' === $request->attributes->get('_route') - && $request->isMethod('GET') && $request->query->get('code'); - } - - /** - * Called on every request. Return whatever credentials you want to - * be passed to getUser() as $credentials. - */ - public function getCredentials(Request $request) - { - $code = $request->query->get('code'); - $method = $this->session->get('method'); - $identifier = $this->session->get('identifier'); - - $result = $this->authenticationService->authenticate($method, $identifier, $code); - - $credentials = [ - 'username' => $result['email'] ?? $result['upn'], - 'email' => $result['email'] ?? $result['upn'], - 'givenName' => $result['given_name'], - 'familyName' => $result['family_name'], - 'id' => $result['sub'], - ]; - - return $credentials; - } - - public function getUser($credentials, UserProviderInterface $userProvider) - { - return new AuthenticationUser( - $credentials['username'], - $credentials['username'], - '', - $credentials['givenName'], - $credentials['familyName'], - $credentials['givenName'].' '.$credentials['familyName'], - null, - ['ROLE_USER'], - $credentials['email'] - ); - } - - public function checkCredentials($credentials, UserInterface $user) - { - return true; - } - - public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) - { - $backUrl = $this->session->get('backUrl'); - - $this->session->remove('backUrl'); - $this->session->remove('method'); - $this->session->remove('identifier'); - - return new RedirectResponse($backUrl); - } - - public function onAuthenticationFailure(Request $request, AuthenticationException $exception) - { - return new RedirectResponse($this->router->generate( - 'app_user_authenticate', - ['method' => $this->session->get('method'), 'identifier' => $this->session->get('identifier')] - )); - } - - /** - * Called when authentication is needed, but it's not sent. - */ - public function start(Request $request, AuthenticationException $authException = null) - { - if ($this->params->get('app_subpath') && $this->params->get('app_subpath') != 'false') { - return new RedirectResponse('/'.$this->params->get('app_subpath').$this->router->generate('app_user_digispoof', [])); - } else { - return new RedirectResponse(filter_var($this->router->generate('app_user_digispoof', ['response' => $request->request->get('back_url'), 'back_url' => $request->request->get('back_url')]), FILTER_SANITIZE_URL)); - } - } - - public function supportsRememberMe() - { - return true; - } - - protected function getLoginUrl() - { - if ($this->params->get('app_subpath') && $this->params->get('app_subpath') != 'false') { - return '/'.$this->params->get('app_subpath').$this->router->generate('app_user_digispoof', [], UrlGeneratorInterface::RELATIVE_PATH); - } else { - return $this->router->generate('app_user_digispoof', [], UrlGeneratorInterface::RELATIVE_PATH); - } - } -} diff --git a/api/src/Security/TokenAuthenticator.php b/api/src/Security/TokenAuthenticator.php index f12845b68..e0b886b23 100644 --- a/api/src/Security/TokenAuthenticator.php +++ b/api/src/Security/TokenAuthenticator.php @@ -3,6 +3,7 @@ namespace App\Security; use App\Entity\Authentication; +use App\Entity\Endpoint; use App\Entity\SecurityGroup; use App\Exception\GatewayException; use App\Security\User\AuthenticationUser; @@ -52,8 +53,18 @@ public function __construct( */ public function supports(Request $request): ?bool { - return $request->headers->has('Authorization') && - strpos($request->headers->get('Authorization'), 'Bearer') === 0; + if($request->headers->has('Authorization') === true && + strpos($request->headers->get('Authorization'), 'Bearer') === 0) { + + $pathTemp = explode('/api/', $request->getPathInfo(), 2); + $endpoint = null; + if(count($pathTemp) > 1) { + $path = $pathTemp[1]; + $endpoint = $this->entityManager->getRepository(Endpoint::class)->findByMethodRegex($request->getMethod(), $path); + } + return ($endpoint instanceof Endpoint === false || $endpoint->getProxyOverrulesAuthentication() == false); + } + return false; } /** diff --git a/api/src/Security/User/AuthenticationProvider.php b/api/src/Security/User/AuthenticationProvider.php index bb8dea505..2af7d7e89 100644 --- a/api/src/Security/User/AuthenticationProvider.php +++ b/api/src/Security/User/AuthenticationProvider.php @@ -15,15 +15,6 @@ */ class AuthenticationProvider implements UserProviderInterface { - private $params; - private $commonGroundService; - - public function __construct(ParameterBagInterface $params, CommonGroundService $commonGroundService) - { - $this->params = $params; - $this->commonGroundService = $commonGroundService; - } - public function loadUserByUsername($username) { return $this->fetchUser($username); diff --git a/api/src/Service/ApplicationService.php b/api/src/Service/ApplicationService.php index 6536ff90c..a83d16b70 100644 --- a/api/src/Service/ApplicationService.php +++ b/api/src/Service/ApplicationService.php @@ -44,15 +44,6 @@ public function getApplication(): Application } } - // If an api-key is used for authentication we already know which application is used - if ($this->session->has('apiKeyApplication')) { - $application = $this->entityManager->getRepository('App:Application')->findOneBy(['id' => $this->session->get('apiKeyApplication')]); - if ($application !== null) { - $this->session->set('application', $application->getId()->toString()); - return $application; - } - } - // Find application using the publicKey $public = ($this->request->headers->get('public') ?? $this->request->query->get('public')); if (empty($public) === false) { diff --git a/api/src/Service/AuthenticationService.php b/api/src/Service/AuthenticationService.php index 4d6da8a09..8868e5133 100644 --- a/api/src/Service/AuthenticationService.php +++ b/api/src/Service/AuthenticationService.php @@ -33,102 +33,19 @@ class AuthenticationService private EntityManagerInterface $entityManager; private Client $client; private Security $security; - private CommonGroundService $commonGroundService; private Environment $twig; private ParameterBagInterface $parameterBag; - public function __construct(SessionInterface $session, EntityManagerInterface $entityManager, Security $security, CommonGroundService $commonGroundService, Environment $twig, ParameterBagInterface $parameterBag) + public function __construct(SessionInterface $session, EntityManagerInterface $entityManager, Security $security, Environment $twig, ParameterBagInterface $parameterBag) { $this->session = $session; $this->entityManager = $entityManager; $this->client = new Client(); $this->security = $security; - $this->commonGroundService = $commonGroundService; $this->twig = $twig; $this->parameterBag = $parameterBag; } - public function generateJwt() - { - $user = $this->retrieveCurrentUser(); - - $array = [ - 'username' => $user->getUsername(), - 'password' => $user->getPassword(), - ]; - - $user = $this->commonGroundService->createResource($array, ['component' => 'uc', 'type' => 'login']); - - return $user['jwtToken']; - } - - /** - * Validates a JWT token with the public key stored in the component. - * - * @param string $jws The signed JWT token to validate - * @param string $publicKey - * - * @throws Exception Thrown when the JWT token could not be verified - * - * @return bool Whether the jwt is valid - */ - public function validateJWTAndGetPayload(string $jws, string $publicKey): bool - { - try { - $serializer = new CompactSerializer(); - $jwt = $serializer->unserialize($jws); - $algorithmManager = new AlgorithmManager([new RS512()]); - $pem = $this->writeFile($publicKey, 'pem'); - $public = JWKFactory::createFromKeyFile($pem); - $this->removeFiles([$pem]); - - $jwsVerifier = new JWSVerifier($algorithmManager); - - if ($jwsVerifier->verifyWithKey($jwt, $public, 0)) { - return true; - } - - return false; - } catch (\Throwable $e) { - return false; - } - } - - public function checkJWTExpiration($token): bool - { - $data = $this->retrieveJWTContents($token); - - if (!is_array($token) || !array_key_exists('exp', $token) || strtotime('now') >= $data['exp']) { - return false; - } - - return true; - } - - public function retrieveJWTUser($token): bool - { - $data = $this->retrieveJWTContents($token); - - try { - $user = $this->commonGroundService->getResource(['component' => 'uc', 'type' => 'users', 'id' => $data['userId']]); - } catch (\Throwable $e) { - return false; - } - - return true; - } - - public function retrieveJWTContents($token): array - { - try { - $json = base64_decode(explode('.', $token))[1]; - - return json_decode($json, true); - } catch (\Exception $exception) { - return []; - } - } - /** * Writes a temporary file in the component file system. * @@ -157,17 +74,6 @@ public function removeFiles(array $files): void } } - public function retrieveCurrentUser() - { - $user = $this->security->getUser(); - - if ($user) { - return $user; - } - - throw new AccessDeniedException('Unable to find logged in user'); - } - public function authenticate(string $method, string $identifier, string $code): array { if (!$method || !$identifier) { @@ -188,12 +94,12 @@ public function retrieveData(string $method, string $code, Authentication $authe case 'oidc': case 'adfs': return $this->retrieveAdfsData($code, $authentication, $redirectUrl); - break; case 'digid': break; default: throw new BadRequestException('Authentication method not supported'); } + return []; } public function refreshAccessToken(string $refreshToken, string $authenticator): array @@ -253,12 +159,13 @@ public function buildRedirectUrl(string $method, string $redirectUrl, Authentica return $this->handleOidcRedirectUrl($redirectUrl, $authentication); case 'adfs': return $this->handleAdfsRedirectUrl($redirectUrl, $authentication); - break; case 'digid': break; default: throw new BadRequestException('Authentication method not supported'); } + + return null; } public function handleOidcRedirectUrl(string $redirectUrl, Authentication $authentication): string @@ -288,36 +195,4 @@ public function retrieveAuthentication(string $identifier): Authentication return $authentications[0]; } - - public function sendTokenMail(array $user, string $subject, string $frontend): bool - { - $response = $this->commonGroundService->getResourceList(['component' => 'uc', 'type' => 'users', 'id' => "{$user['id']}/token"], ['type' => 'SET_PASSWORD']); - $person = $this->commonGroundService->isResource($user['person']); - - $service = $this->commonGroundService->getResourceList(['component' => 'bs', 'type' => 'services'])['hydra:member'][0]; - $parameters = [ - 'fullname' => $person['name'] ?? $user['username'], - 'base64_encoded_email' => base64_encode($user['username']), - 'base64_encoded_token' => base64_encode($response['token']), - 'app_base_url' => rtrim($frontend, '/'), - 'subject' => $subject, - ]; - - $content = $this->twig->render('password-forgot-e-mail.html.twig', $parameters); - - $message = $this->commonGroundService->createResource( - [ - 'reciever' => $user['username'], - 'sender' => 'taalhuizen@biscutrecht.nl', - 'content' => $content, - 'type' => 'email', - 'status' => 'queued', - 'service' => '/services/'.$service['id'], - 'subject' => $subject, - ], - ['component' => 'bs', 'type' => 'messages'] - ); - - return true; - } } diff --git a/api/src/Service/AuthorizationService.php b/api/src/Service/AuthorizationService.php index 13add636a..ecee30606 100644 --- a/api/src/Service/AuthorizationService.php +++ b/api/src/Service/AuthorizationService.php @@ -4,8 +4,6 @@ use App\Entity\Attribute; use App\Entity\Entity; -use Conduction\CommonGroundBundle\Service\CommonGroundService; -use Conduction\CommonGroundBundle\Service\SerializerService; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\EntityManagerInterface; use Psr\Cache\CacheException; @@ -29,7 +27,6 @@ class AuthorizationService { private ParameterBagInterface $parameterBag; - private CommonGroundService $commonGroundService; private Security $security; private SessionInterface $session; private CacheInterface $cache; @@ -37,14 +34,12 @@ class AuthorizationService public function __construct( ParameterBagInterface $parameterBag, - CommonGroundService $commonGroundService, Security $security, SessionInterface $session, CacheInterface $cache, EntityManagerInterface $entityManager ) { $this->parameterBag = $parameterBag; - $this->commonGroundService = $commonGroundService; $this->security = $security; $this->session = $session; $this->cache = $cache; diff --git a/api/src/Service/DocumentService.php b/api/src/Service/DocumentService.php index 4e8258b97..bf8f2cc3e 100644 --- a/api/src/Service/DocumentService.php +++ b/api/src/Service/DocumentService.php @@ -18,22 +18,16 @@ */ class DocumentService { - private CommonGroundService $commonGroundService; private EavService $eavService; - private ResponseService $responseService; private GatewayService $gatewayService; - private SerializerInterface $serializer; private ParameterBagInterface $parameterBag; private TranslationService $translationService; private TemplateService $templateService; - public function __construct(EavService $eavService, ResponseService $responseService, CommonGroundService $commonGroundService, GatewayService $gatewayService, SerializerInterface $serializer, ParameterBagInterface $parameterBag, TranslationService $translationService, TemplateService $templateService) + public function __construct(EavService $eavService, GatewayService $gatewayService, ParameterBagInterface $parameterBag, TranslationService $translationService, TemplateService $templateService) { $this->eavService = $eavService; - $this->responseService = $responseService; - $this->commonGroundService = $commonGroundService; $this->gatewayService = $gatewayService; - $this->serializer = $serializer; $this->parameterBag = $parameterBag; $this->translationService = $translationService; $this->templateService = $templateService; diff --git a/api/src/Service/EavDocumentationService.php b/api/src/Service/EavDocumentationService.php index e56829191..2edfd7565 100644 --- a/api/src/Service/EavDocumentationService.php +++ b/api/src/Service/EavDocumentationService.php @@ -4,7 +4,6 @@ use App\Entity\Attribute; use App\Entity\Entity; -use Conduction\CommonGroundBundle\Service\CommonGroundService; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Yaml\Yaml; @@ -19,13 +18,11 @@ class EavDocumentationService { private EntityManagerInterface $em; - private CommonGroundService $commonGroundService; private array $supportedValidators; - public function __construct(EntityManagerInterface $em, CommonGroundService $commonGroundService) + public function __construct(EntityManagerInterface $em) { $this->em = $em; - $this->commonGroundService = $commonGroundService; // Lets define the validator that we support for docummentation right now $this->supportedValidators = $this->supportedValidators(); diff --git a/api/src/Service/EavService.php b/api/src/Service/EavService.php index 1a5dad5a9..7c283a091 100644 --- a/api/src/Service/EavService.php +++ b/api/src/Service/EavService.php @@ -41,47 +41,21 @@ class EavService { private EntityManagerInterface $em; - private CommonGroundService $commonGroundService; - private SerializerService $serializerService; - private SerializerInterface $serializer; - private AuthorizationService $authorizationService; private SessionInterface $session; - private ObjectEntityService $objectEntityService; - private ResponseService $responseService; - private ParameterBagInterface $parameterBag; - private TranslationService $translationService; - private FunctionService $functionService; - private CacheInterface $cache; private Stopwatch $stopwatch; + private FunctionService $functionService; public function __construct( EntityManagerInterface $em, - CommonGroundService $commonGroundService, - SerializerService $serializerService, - SerializerInterface $serializer, AuthorizationService $authorizationService, SessionInterface $session, - ObjectEntityService $objectEntityService, - ResponseService $responseService, - ParameterBagInterface $parameterBag, - TranslationService $translationService, - FunctionService $functionService, - CacheInterface $cache, - Stopwatch $stopwatch + Stopwatch $stopwatch, + FunctionService $functionService ) { $this->em = $em; - $this->commonGroundService = $commonGroundService; - $this->serializerService = $serializerService; - $this->serializer = $serializer; - $this->authorizationService = $authorizationService; $this->session = $session; - $this->objectEntityService = $objectEntityService; - $this->responseService = $responseService; - $this->parameterBag = $parameterBag; - $this->translationService = $translationService; - $this->functionService = $functionService; - $this->cache = $cache; $this->stopwatch = $stopwatch; + $this->functionService = $functionService; } /** @@ -1299,74 +1273,4 @@ public function handleDelete(ObjectEntity $object, ArrayCollection $maxDepth = n return []; } - - /** - * @param ObjectEntity $createdObject - * @param ObjectEntity|null $motherObject - * - * @return void - * @deprecated - */ - private function handleDeleteObjectOnError(ObjectEntity $createdObject) - { - $this->em->clear(); - //TODO: test and make sure extern objects are not created after an error, and if they are, maybe add this; - // var_dump($createdObject->getUri()); - // if ($createdObject->getEntity()->getSource() && $createdObject->getEntity()->getSource()->getLocation() && $createdObject->getEntity()->getEndpoint() && $createdObject->getExternalId()) { - // try { - // $resource = $this->commonGroundService->getResource($createdObject->getUri(), [], false); - // var_dump('Delete extern object for: '.$createdObject->getEntity()->getName()); - // $this->commonGroundService->deleteResource(null, $createdObject->getUri()); // could use $resource instead? - // } catch (\Throwable $e) { - // $resource = null; - // } - // } - // var_dump('Delete: '.$createdObject->getEntity()->getName()); - // var_dump('Values on this^ object '.count($createdObject->getObjectValues())); - foreach ($createdObject->getObjectValues() as $value) { - if ($value->getAttribute()->getType() == 'object') { - foreach ($value->getObjects() as $object) { - $object->removeSubresourceOf($value); - } - } - - try { - $this->em->remove($value); - $this->em->flush(); - // var_dump($value->getAttribute()->getEntity()->getName().' -> '.$value->getAttribute()->getName()); - } catch (Exception $exception) { - // var_dump($exception->getMessage()); - // var_dump($value->getId()->toString()); - // var_dump($value->getValue()); - // var_dump($value->getAttribute()->getEntity()->getName().' -> '.$value->getAttribute()->getName().' GAAT MIS'); - continue; - } - } - - try { - $this->em->remove($createdObject); - $this->em->flush(); - // var_dump('Deleted: '.$createdObject->getEntity()->getName()); - } catch (Exception $exception) { - // var_dump($createdObject->getEntity()->getName().' GAAT MIS'); - } - } - - /** - * Builds the error response for an objectEntity that contains errors. - * - * @param ObjectEntity $objectEntity - * - * @return array - * @deprecated - */ - public function returnErrors(ObjectEntity $objectEntity): array - { - return [ - 'message' => 'The where errors', - 'type' => 'error', - 'path' => $objectEntity->getEntity()->getName(), - 'data' => $objectEntity->getAllErrors(), - ]; - } } diff --git a/api/src/Service/FormIOService.php b/api/src/Service/FormIOService.php index 5545b6a6f..3e98d03e0 100644 --- a/api/src/Service/FormIOService.php +++ b/api/src/Service/FormIOService.php @@ -121,7 +121,7 @@ private function createIDComponent(string $id, string $preSetKey = null): array * * @return string Extended key */ - private function extendPreSetKey(?string $preSetKey = null, string $attrName): string + private function extendPreSetKey(string $attrName, ?string $preSetKey = null): string { return $preSetKey ? $preSetKey = $preSetKey.'['.$attrName.']' : $preSetKey = $attrName; } @@ -172,7 +172,7 @@ private function checkIfWeAreLooping(Attribute $attr, string $parentAttribute) */ private function createEntityAsAttribute(Attribute $attr, string $preSetKey = null, $defaultValue = null): array { - $preSetKey = $this->extendPreSetKey($preSetKey, $attr->getName()); + $preSetKey = $this->extendPreSetKey($attr->getName(), $preSetKey); // if ($preSetKey == 'taxonomies[openpubAudience]') { // var_dump($preSetKey); @@ -296,7 +296,7 @@ private function createUriAttribute(Attribute $attr, string $preSetKey = null, $ */ private function createNormalAttribute(Attribute $attr, string $preSetKey = null, $defaultValue = null): array { - $preSetKey = $this->extendPreSetKey($preSetKey, $attr->getName()); + $preSetKey = $this->extendPreSetKey($attr->getName(), $preSetKey); $component = $this->basicComponent; $component['label'] = $attr->getName().($attr->getRequired() ? '*' : ''); diff --git a/api/src/Service/FunctionService.php b/api/src/Service/FunctionService.php index d36564fc2..3ce9ec623 100644 --- a/api/src/Service/FunctionService.php +++ b/api/src/Service/FunctionService.php @@ -3,7 +3,6 @@ namespace App\Service; use App\Entity\ObjectEntity; -use Conduction\CommonGroundBundle\Service\CommonGroundService; use Doctrine\Common\Collections\ArrayCollection; use Psr\Cache\InvalidArgumentException; use Symfony\Component\Cache\Adapter\AdapterInterface as CacheInterface; @@ -20,171 +19,14 @@ class FunctionService { private CacheInterface $cache; - private CommonGroundService $commonGroundService; - private ObjectEntityService $objectEntityService; public array $removeResultFromCache; - public function __construct(CacheInterface $cache, CommonGroundService $commonGroundService, ObjectEntityService $objectEntityService) + public function __construct(CacheInterface $cache) { $this->cache = $cache; - $this->commonGroundService = $commonGroundService; - $this->objectEntityService = $objectEntityService; $this->removeResultFromCache = []; } - /** - * Handles the function of an Entity, this can be done in very different situations. That is why the data array should always contains a few specific keys! - * - * @param ObjectEntity $objectEntity - * @param string $function - * @param array $data Should at least contain the following key: method - * - * @return ObjectEntity - */ - public function handleFunction(ObjectEntity $objectEntity, string $function, array $data): ObjectEntity - { - switch ($function) { - case 'organization': - if ($data['method'] == 'POST') { - if (array_key_exists('organizationType', $data) && $data['organizationType']) { - $organizationType = $data['organizationType']; - } else { - $organizationType = $objectEntity->getValue('type'); - } - $objectEntity = $this->createOrganization($objectEntity, $data['uri'], $organizationType); - } - break; - case 'userGroup': - if ($data['method'] == 'PUT') { - if (array_key_exists('userGroupName', $data) && $data['userGroupName']) { - $userGroupName = $data['userGroupName']; - } else { - $userGroupName = $objectEntity->getValue('name'); - } - $objectEntity = $this->updateUserGroup($objectEntity, $userGroupName); - } - break; - default: - break; - } - - return $objectEntity; - } - - //todo: note: this createOrganization function is also used in different places than only the handleFunction function above^ - /** - * Performs the organization function. This is called when a new ObjectEntity is created for an Entity with function = 'organization'. - * - * @param ObjectEntity $objectEntity - * @param string $uri - * @param string|null $organizationType This is nullable so that it won't trigger 500's when no organization type is given, but a nice and correct error (if organization type is configured to be required, as it should) - * - * @return ObjectEntity - */ - public function createOrganization(ObjectEntity $objectEntity, string $uri, ?string $organizationType): ObjectEntity - { - if ($organizationType == 'taalhuis') { - $objectEntity->setOrganization($uri); - - $id = substr($uri, strrpos($uri, '/') + 1); - if (!$organization = $this->isResource($uri)) { - if (!$organization = $this->objectEntityService->getObjectByUri($uri)) { - $organization = $this->objectEntityService->getOrganizationObject($id); - } - } - // Invalidate all changed & related organizations from cache - if (!empty($organization)) { - $tags = ['organization_'.base64_encode($uri)]; - if (array_key_exists('subOrganizations', $organization) && count($organization['subOrganizations']) > 0) { - foreach ($organization['subOrganizations'] as $subOrganization) { - $tags[] = 'organization_'.base64_encode($subOrganization['@id']); - } - } - if (array_key_exists('parentOrganization', $organization) && $organization['parentOrganization'] != null) { - $tags[] = 'organization_'.base64_encode($organization['parentOrganization']['@id']); - } - $this->cache->invalidateTags($tags); - } - } - - return $objectEntity; - } - - /** - * Performs the userGroup function. - * - * @param ObjectEntity $objectEntity - * @param string|null $userGroupName This is nullable so that it won't trigger 500's when no group name is given - * - * @return ObjectEntity - */ - public function updateUserGroup(ObjectEntity $objectEntity, ?string $userGroupName): ObjectEntity - { - if ($userGroupName == 'ANONYMOUS') { - $this->cache->invalidateTags(['anonymousScopes']); - } - - return $objectEntity; - } - - /** - * Gets an organization for an url from cache or url, depending on cache. - * - * @TODO: move this elsewhere. - * - * @param $url - * - * @throws \Psr\Cache\CacheException - * @throws InvalidArgumentException - * - * @return array - */ - public function getOrganizationFromCache($url): array - { - return []; - // todo: stop using this code... deprecated - - $item = $this->cache->getItem('organizations_'.base64_encode("$url")); - if ($item->isHit()) { - return $item->get(); - } - - $id = substr($url, strrpos($url, '/') + 1); - if (!$organization = $this->isResource($url)) { - if (!$organization = $this->objectEntityService->getObjectByUri($url)) { - $organization = $this->objectEntityService->getOrganizationObject($id); - } - } - if (!empty($organization)) { - $item->set($organization); - $item->tag('organization_'.base64_encode("$url")); - - $this->cache->save($item); - - return $organization; - } - - return []; - } - - /** - * IsResource function from commongroundService without caching. - * - * @TODO: Make cache settable in CGB and remove. - * - * @param $url - * - * @return array|false|mixed|string|null - */ - public function isResource($url) - { - try { - return $this->commonGroundService->getResource($url, [], false); - } catch (\Throwable $e) { - return false; - } - } - /** * Removes all responses saved for the given ObjectEntity from the cache. Also does the same for all parent objects of the given object. * Always use $this->functionService->removeResultFromCache = []; before using this function to reset the list of objects that already got removed from cache. diff --git a/api/src/Service/GatewayService.php b/api/src/Service/GatewayService.php index 4e88f9b96..518b23e01 100644 --- a/api/src/Service/GatewayService.php +++ b/api/src/Service/GatewayService.php @@ -23,98 +23,19 @@ */ class GatewayService { - private CommonGroundService $commonGroundService; private EntityManagerInterface $entityManager; private Security $security; - private AuthenticationService $authenticationService; private RequestStack $requestStack; private TranslationService $translationService; - public function __construct(CommonGroundService $commonGroundService, EntityManagerInterface $entityManager, Security $security, AuthenticationService $authenticationService, RequestStack $requestStack, TranslationService $translationService) + public function __construct(EntityManagerInterface $entityManager, Security $security, AuthenticationService $authenticationService, RequestStack $requestStack, TranslationService $translationService) { - $this->commonGroundService = $commonGroundService; $this->entityManager = $entityManager; $this->security = $security; - $this->authenticationService = $authenticationService; $this->requestStack = $requestStack; $this->translationService = $translationService; } - /** - * Processes the call to the Source and returns the response. - * - * @param string $name Name of the Source. - * @param string $endpoint Endpoint of the Source to send the request to. - * @param string $method Method to use against the Source. - * @param string $content Content to send to the Source. - * @param array $query Query parameters to send to the Source. - * - * @return Response Created response received from Source or error received from Source. - */ - public function processSource(string $name, string $endpoint, string $method, string $content, array $query, array $headers): Response - { -// $this->checkAuthentication(); - $source = $this->retrieveSource($name); - if (!$source->getIsEnabled()) { - return new Response( - json_encode(['Message' => "This Source is not enabled: {$name}"]), - Response::HTTP_OK, - ['content-type' => 'application/json'] - ); - } - $this->checkSource($source); - $component = $this->sourceToArray($source); - $url = $source->getLocation().'/'.$endpoint; - - $newHeaders = $source->getHeaders(); - $newHeaders['accept'] = $headers['accept'][0]; - - //update query params - if (array_key_exists('query', $source->getTranslationConfig())) { - $query = array_merge($query, $source->getTranslationConfig()['query']); - } - - //translate query params - foreach ($query as $key => &$value) { - if (!is_array($value)) { - $value = $this->translationService->parse($value); - } - } - - $result = $this->commonGroundService->callService($component, $url, $content, $query, $newHeaders, false, $method); - - if (is_array($result)) { - $result['error'] = json_decode($result['error'], true); - - return new Response( - json_encode($result), - Response::HTTP_OK, - ['content-type' => 'application/json'] - ); - } - - return $this->createResponse($result); - } - - public function checkAuthentication(): void - { - $request = $this->requestStack->getCurrentRequest(); - $authorized = true; - $user = $this->security->getUser(); - - $token = str_replace('Bearer ', '', $request->headers->get('Authorization')); - - if (!$user) { - $authorized = $this->authenticationService->validateJWTAndGetPayload($token, $this->commonGroundService->getResourceList(['component' => 'uc', 'type' => 'public_key'])); - $authorized = $this->authenticationService->checkJWTExpiration($token); - $authorized = $this->authenticationService->retrieveJWTUser($token); - } - - if (!$authorized) { - throw new AccessDeniedHttpException('Access denied.'); - } - } - /** * Creates Response object based on the guzzle response. * diff --git a/api/src/Service/HandlerService.php b/api/src/Service/HandlerService.php index bc1219d9a..2e119d0db 100644 --- a/api/src/Service/HandlerService.php +++ b/api/src/Service/HandlerService.php @@ -41,7 +41,6 @@ class HandlerService private LogService $logService; private ProcessingLogService $processingLogService; private TemplateService $templateService; - private ObjectEntityService $objectEntityService; private CacheInterface $cache; private GatewayService $gatewayService; private Stopwatch $stopwatch; @@ -78,7 +77,6 @@ public function __construct( ProcessingLogService $processingLogService, Environment $twig, TemplateService $templateService, - ObjectEntityService $objectEntityService, CacheInterface $cache, GatewayService $gatewayService, Stopwatch $stopwatch, @@ -94,7 +92,6 @@ public function __construct( $this->processingLogService = $processingLogService; $this->templating = $twig; $this->templateService = $templateService; - $this->objectEntityService = $objectEntityService->addServices($eavService); // todo: temp fix untill we no longer need these services here $this->cache = $cache; $this->gatewayService = $gatewayService; $this->stopwatch = $stopwatch; @@ -102,227 +99,7 @@ public function __construct( $this->requestService = $requestService; } - /** - * This function sets the endpoint in the session and executes handleHandler with its found Handler. - */ - public function handleEndpoint(Endpoint $endpoint, array $parameters): Response - { - $this->stopwatch->start('invalidateTags-grantedScopes', 'handleEndpoint'); - $this->cache->invalidateTags(['grantedScopes']); - $this->stopwatch->stop('invalidateTags-grantedScopes'); - - $event = new ActionEvent('commongateway.handler.pre', ['request' => $this->getDataFromRequest(), 'response' => []]); - $this->stopwatch->start('newSession', 'handleEndpoint'); - $session = new Session(); - $this->stopwatch->stop('newSession'); - - $this->stopwatch->start('saveEndpointInSession', 'handleEndpoint'); - $session->set('endpoint', $endpoint->getId()->toString()); - $this->stopwatch->stop('saveEndpointInSession'); - - $this->stopwatch->start('saveParametersInSession', 'handleEndpoint'); - $session->set('parameters', $parameters); - $this->stopwatch->stop('saveParametersInSession'); - $this->eventDispatcher->dispatch($event, 'commongateway.handler.pre'); - - // @todo creat logicdata, generalvaribales uit de translationservice - - $this->stopwatch->start('handleHandlers', 'handleEndpoint'); - foreach ($endpoint->getHandlers() as $handler) { - // Check if handler should be used for this method - if ($handler->getMethods() !== null) { - $methods = array_map('strtoupper', $handler->getMethods()); - } - if (!in_array('*', $methods) && !in_array($this->request->getMethod(), $methods)) { - $this->stopwatch->lap('handleHandlers'); - continue; - } - if ($handler->getConditions() === '{}' || JsonLogic::apply(json_decode($handler->getConditions(), true), $this->getDataFromRequest())) { - $this->stopwatch->start('saveHandlerInSession', 'handleEndpoint'); - $session->set('handler', $handler->getId()); - $this->stopwatch->stop('saveHandlerInSession'); - - $this->stopwatch->start('handleHandler', 'handleEndpoint'); - $result = $this->handleHandler($handler, $endpoint, $event->getData()['request'] ?: []); - $this->stopwatch->stop('handleHandler'); - $this->stopwatch->stop('handleHandlers'); - - $event = new ActionEvent('commongateway.handler.post', array_merge($event->getData(), ['result' => $result])); - $this->eventDispatcher->dispatch($event, 'commongateway.handler.post'); - - return $result; - } - } - - // If no handlers are found check if endpoint throws events - // Throw event if set - if ($endpoint->getThrows() !== null || !empty($endpoint->getThrows())) { - if (count($endpoint->getThrows()) == 0) { - return $this->requestService->requestHandler($parameters, []); - } - - // Will use the first throw in array - foreach ($endpoint->getThrows() as $throw) { - if ($this->request->getMethod() == 'POST' || $this->request->getMethod() == 'PUT') { - $response = json_decode($this->requestService->requestHandler($parameters, [])->getContent(), true); - $event = new ActionEvent('commongateway.action.event', ['request' => $this->getDataFromRequest(), 'response' => $response, 'parameters' => $this->request], $throw); - $this->eventDispatcher->dispatch($event, 'commongateway.action.event'); - } else { - $event = new ActionEvent('commongateway.action.event', ['request' => $this->getDataFromRequest(), 'response' => [], 'parameters' => $this->request], $throw); - $this->eventDispatcher->dispatch($event, 'commongateway.action.event'); - - return $this->requestService->requestHandler($parameters, []); - } - } - - return $this->createResponse($event->getData()['response'], $endpoint); - } - - // Let default - return $this->requestService->requestHandler($parameters, []); - - // - //throw new GatewayException('No handler found for endpoint: '.$endpoint->getName().' and method: '.$this->request->getMethod(), null, null, ['data' => ['id' => $endpoint->getId()], 'path' => null, 'responseType' => Response::HTTP_NOT_FOUND]); - } - - public function cutPath(array $pathParams): string - { - $path = parse_url($this->request->getUri())['path']; - - return substr($path, strlen('/api/'.$pathParams[0])); - } - - public function proxy(Handler $handler, Endpoint $endpoint, string $method): Response - { - $path = $this->cutPath($endpoint->getPath()); - - return $this->gatewayService->processSource($handler->getProxyGateway(), $path, $method, $this->request->getContent(), $this->request->query->all(), $this->request->headers->all()); - } - - public function getMethodOverrides(string &$method, ?string &$operationType, Handler $handler) - { - $overrides = $handler->getMethodOverrides(); - if (!isset($overrides[$this->request->getMethod()])) { - return; - } - $content = new \Adbar\Dot($this->getDataFromRequest()); - - foreach ($overrides[$this->request->getMethod()] as $override) { - if (key_exists($method, $overrides) && (!array_key_exists('condition', $override) || $content->has($override['condition']))) { - $method = array_key_exists('method', $override) ? $override['method'] : $method; - $operationType = array_key_exists('operationType', $override) ? $override['operationType'] : $operationType; - $parameters = $this->request->getSession()->get('parameters'); - if (isset($override['pathValues'])) { - foreach ($override['pathValues'] as $key => $value) { - $parameters['path'][$key] = $content->get($value); - } - } - if (isset($override['queryParameters'])) { - foreach ($override['queryParameters'] as $key => $value) { - if ($key == 'fields' || $key == '_fields') { - $this->request->query->set('fields', $value); - } else { - $this->request->query->set($key, $content->get($value)); - } - } - } - $this->request->getSession()->set('parameters', $parameters); - } elseif (key_exists($method, $overrides) && (!array_key_exists('condition', $override) || $this->request->query->has($override['condition']))) { - $method = array_key_exists('method', $override) ? $override['method'] : $method; - $operationType = array_key_exists('operationType', $override) ? $override['operationType'] : $operationType; - $parameters = $this->request->getSession()->get('parameters'); - foreach ($override['pathValues'] as $key => $value) { - $parameters['path'][$key] = $this->request->query->get($value); - } - - $this->request->getSession()->set('parameters', $parameters); - } - } - } - - /** - * This function walks through the $handler with $data from the request to perform mapping, translating and fetching/saving from/to the eav. - * - * @todo remove old eav code if new way is finished and working - * @todo better check if $data is a document/template line 199 - */ - public function handleHandler(Handler $handler = null, Endpoint $endpoint, array $data = []): Response - { - $originalData = $data; - $method = $this->request->getMethod(); - $operationType = $endpoint->getOperationType(); - - if ($handler->getProxyGateway()) { - return $this->proxy($handler, $endpoint, $method); - } - - $this->getMethodOverrides($method, $operationType, $handler); - - // Form.io components array - // if ($method === 'GET' && $this->getRequestType('accept') === 'form.io' && $handler->getEntity() && $handler->getEntity()->getAttributes()) { - // return new Response( - // $this->serializer->serialize($this->formIOService->createFormIOArray($handler->getEntity()), 'json'), - // Response::HTTP_OK, - // ['content-type' => 'json'] - // ); - // } - - // To start it al off we need the data from the incomming request - if (in_array($method, ['POST', 'PUT', 'PATCH']) && ($data == null || empty($data))) { - throw new GatewayException('Faulty body or no body given', null, null, ['data' => null, 'path' => 'Request body', 'responseType' => Response::HTTP_NOT_FOUND]); - } - - // Update current Log - isset($data) ? $this->logService->saveLog($this->request, null, 0, json_encode($data)) : $this->logService->saveLog($this->request, null, 0, null); - - // Only do mapping and translation -in for calls with body - in_array($method, ['POST', 'PUT', 'PATCH']) && $handler && $data = $this->handleDataBeforeEAV($data, $handler); - - // eav new way - // dont get collection if accept type is formio - if (($this->getRequestType('accept') === 'form.io' && ($method === 'GET' && $operationType === 'item')) || $this->getRequestType('accept') !== 'form.io') { - $handler->getEntity() !== null && $data = $this->objectEntityService->handleObject($handler, $endpoint, $data ?? null, $method, $this->getRequestType('accept')); - } - - // Form.io components array - if ($method === 'GET' && $this->getRequestType('accept') === 'form.io' && $handler->getEntity() && $handler->getEntity()->getAttributes()) { - return new Response( - $this->serializer->serialize($this->formIOService->createFormIOArray($handler->getEntity(), $data ?? null), 'json'), - Response::HTTP_OK, - ['content-type' => 'json'] - ); - } - - // @todo remove this when eav part works and catch this->objectEntityService->handleObject instead - if (!isset($data)) { - throw new GatewayException('Could not fetch object(s) on endpoint: /'.implode('/'.$endpoint->getPath()), null, null, ['data' => null, 'path' => null, 'responseType' => Response::HTTP_NOT_FOUND]); - } - - // If data contains error dont execute following code and create response - if (!(isset($data['type']) && isset($data['message']))) { - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 2, json_encode($data)); - $event = new ActionEvent('commongateway.response.pre', ['entity' => $handler->getEntity()->getReference() ?? $handler->getEntity()->getReference(), 'httpRequest' => $this->request, 'request' => $originalData, 'response' => $data, 'queryParameters' => $this->request->query->all()]); - $this->eventDispatcher->dispatch($event, 'commongateway.response.pre'); - $data = $event->getData()['response']; - - $handler && $data = $this->handleDataAfterEAV($data, $handler); - } - - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 3, json_encode($data)); - - // An lastly we want to create a response - $response = $this->createResponse($data, $endpoint); - - // Final update Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, $response, 4, null, true); - - $this->processingLogService->saveProcessingLog(); - - return $response; - } /** * Checks content type and decodes that if needed. @@ -364,112 +141,6 @@ public function getDataFromRequest() } } - /** - * This function creates and prepares the response. - * - * @todo throw error if $data is not string when creating pdf - */ - public function createResponse(array $data, ?Endpoint $endpoint = null): Response - { - // We only end up here if there are no errors, so we only suply best case senario's - switch ($this->request->getMethod()) { - case 'GET': - $status = Response::HTTP_OK; - break; - case 'POST': - $status = Response::HTTP_CREATED; - break; - case 'PUT': - $status = Response::HTTP_OK; - break; - case 'UPDATE': - $status = Response::HTTP_OK; - break; - case 'DELETE': - $status = Response::HTTP_NO_CONTENT; - break; - default: - $status = Response::HTTP_OK; - } - - $this->stopwatch->start('getRequestType', 'createResponse'); - $acceptType = $this->getRequestType('accept', $endpoint); - $this->stopwatch->stop('getRequestType'); - - // Lets fill in some options - $options = []; - $this->stopwatch->start('switchAcceptType', 'createResponse'); - switch ($acceptType) { - case 'text/csv': - // @todo do something with options? - $options = [ - CsvEncoder::ENCLOSURE_KEY => '"', - CsvEncoder::ESCAPE_CHAR_KEY => '+', - ]; - $data = $this->serializer->encode($data, 'csv'); - - break; - case 'pdf': - $document = new Document(); - // @todo find better name for document - $document->setName('pdf'); - $document->setDocumentType($acceptType); - $document->setType('pdf'); - // If data is not a template json_encode it - if (isset($data) && !is_string($data)) { - $data = json_encode($data); - } - $document->setContent($data); - $result = $this->templateService->renderPdf($document); - break; - case 'xml': - $options['xml_root_node_name'] = array_keys($data)[0]; - $options['xml_encoding'] = 'utf-8'; - $data = $data[array_keys($data)[0]]; - break; - } - $this->stopwatch->stop('switchAcceptType'); - - // Lets seriliaze the shizle (if no document and we have a result) - $this->stopwatch->start('serialize', 'createResponse'); - - try { - !isset($document) && $result = $this->serializer->serialize($data, $acceptType, $options); - } catch (NotEncodableValueException $e) { - !isset($document) && $result = $this->serializer->serialize($data, 'json', $options); - // throw new GatewayException($e->getMessage(), null, null, ['data' => null, 'path' => null, 'responseType' => Response::HTTP_UNSUPPORTED_MEDIA_TYPE]); - } - $this->stopwatch->stop('serialize'); - - // Lets create the actual response - $this->stopwatch->start('newResponse', 'createResponse'); - $response = new Response( - $result, - $status, -// ['content-type' => $this->acceptHeaderToSerialiazation[array_search($acceptType, $this->acceptHeaderToSerialiazation)]] - //todo: should be ^ for taalhuizen we need accept = application/json to result in content-type = application/json - ['content-type' => array_search($acceptType, $this->acceptHeaderToSerialiazation)] - ); - $this->stopwatch->stop('newResponse'); - - // Lets handle file responses - $this->stopwatch->start('routeParameters', 'createResponse'); - $routeParameters = $this->request->attributes->get('_route_params'); - if (array_key_exists('extension', $routeParameters) && $extension = $routeParameters['extension']) { - $date = new \DateTime(); - $date = $date->format('Ymd_His'); - $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, "{$routeParameters['route']}_{$date}.{$acceptType}"); - $response->headers->set('Content-Disposition', $disposition); - } - $this->stopwatch->stop('routeParameters'); - - $this->stopwatch->start('prepareResponse', 'createResponse'); - $response->prepare($this->request); - $this->stopwatch->stop('prepareResponse'); - - return $response; - } - /** * Validates content or accept type from request. * @@ -510,115 +181,6 @@ public function getRequestType(string $type, ?Endpoint $endpoint = null): string throw new GatewayException('Unsupported content type', null, null, ['data' => $this->request->getAcceptableContentTypes(), 'path' => null, 'responseType' => Response::HTTP_UNSUPPORTED_MEDIA_TYPE]); } - /** - * Checks template type on handler and creates template. - * - * @todo Add global variables - */ - private function renderTemplate(Handler $handler, array $data): string - { - /* @todo add global variables */ - $variables = $data; - - // We only end up here if there are no errors, so we only suply best case senario's - switch (strtoupper($handler->getTemplateType())) { - case 'TWIG': - $document = $this->templating->createTemplate($handler->getTemplate()); - - return $document->render($variables); - break; - case 'MD': - return $handler->getTemplate(); - break; - case 'RST': - return $handler->getTemplate(); - break; - case 'HTML': - return $handler->getTemplate(); - break; - default: - throw new GatewayException('Unsupported template type', null, null, ['data' => $this->request->getAcceptableContentTypes(), 'path' => null, 'responseType' => Response::HTTP_UNSUPPORTED_MEDIA_TYPE]); - } - } - - private function handleDataBeforeEAV(array $data, Handler $handler): array - { - // Then we want to do the mapping in the incomming request - $skeleton = $handler->getSkeletonIn(); - if (!$skeleton || empty($skeleton)) { - $skeleton = $data; - } - - $data = $this->translationService->dotHydrator($skeleton, $data, $handler->getMappingIn()); - - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 5, json_encode($data)); - - if (!empty($handler->getTranslationsIn())) { - // Then we want to do translations on the incomming request - $transRepo = $this->entityManager->getRepository('App:Translation'); - - $translations = $transRepo->getTranslations($handler->getTranslationsIn()); - - if (!empty($translations)) { - $data = $this->translationService->parse($data, true, $translations); - } - } - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 6, json_encode($data)); - - return $data; - } - - private function handleDataAfterEAV(array $data, Handler $handler): array - { - $data = $this->translationService->addPrefix($data, $handler->getPrefix()); - - // Then we want to do to mapping on the outgoing response - $skeleton = $handler->getSkeletonOut(); - if (!$skeleton || empty($skeleton)) { - $skeleton = $data; - } - $this->stopwatch->start('dotHydrator2', 'handleDataAfterEAV'); - $data = $this->translationService->dotHydrator($skeleton, $data, $handler->getMappingOut()); - - $this->stopwatch->stop('dotHydrator2'); - - // Update current Log - $this->stopwatch->start('saveLog7', 'handleDataAfterEAV'); - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 7, json_encode($data)); - $this->stopwatch->stop('saveLog7'); - - if (!empty($handler->getTranslationsOut())) { - // Then we want to do translations on the outgoing response - $transRepo = $this->entityManager->getRepository('App:Translation'); - - $this->stopwatch->start('getTranslations2', 'handleDataAfterEAV'); - $translations = $transRepo->getTranslations($handler->getTranslationsOut()); - $this->stopwatch->stop('getTranslations2'); - - if (!empty($translations)) { - $this->stopwatch->start('parse2', 'handleDataAfterEAV'); - $data = $this->translationService->parse($data, true, $translations); - $this->stopwatch->stop('parse2'); - } - } - - // Update current Log - $this->stopwatch->start('saveLog8', 'handleDataAfterEAV'); - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 8, json_encode($data)); - $this->stopwatch->stop('saveLog8'); - - // Lets see if we need te use a template - if ($handler->getTemplatetype() && $handler->getTemplate()) { - $this->stopwatch->start('renderTemplate', 'handleDataAfterEAV'); - $data = $this->renderTemplate($handler, $data); - $this->stopwatch->stop('renderTemplate'); - } - - return $data; - } - /** * Gets a handler for an endpoint method combination. * diff --git a/api/src/Service/OasParserService.php b/api/src/Service/OasParserService.php index 9dbaf7d75..423618478 100644 --- a/api/src/Service/OasParserService.php +++ b/api/src/Service/OasParserService.php @@ -30,6 +30,7 @@ class OasParserService private array $handlersToCreate; private array $oas; + private array $schemaRefs; /** * @param EntityManagerInterface $entityManager diff --git a/api/src/Service/ObjectEntityService.php b/api/src/Service/ObjectEntityService.php index bc35f4468..36be40dfd 100644 --- a/api/src/Service/ObjectEntityService.php +++ b/api/src/Service/ObjectEntityService.php @@ -52,60 +52,23 @@ class ObjectEntityService { private Security $security; - private Request $request; - private AuthorizationService $authorizationService; - private ApplicationService $applicationService; -// private ValidatorService $validatorService; private SessionInterface $session; - private ?EavService $eavService; private EntityManagerInterface $entityManager; - private CommonGroundService $commonGroundService; - private ResponseService $responseService; - public FunctionService $functionService; - private MessageBusInterface $messageBus; - private GatewayService $gatewayService; - private LogService $logService; private EventDispatcherInterface $eventDispatcher; public array $notifications; - private Environment $twig; private SymfonyStyle $io; - private TranslationService $translationService; public function __construct( Security $security, - RequestStack $requestStack, - AuthorizationService $authorizationService, - ApplicationService $applicationService, -// ValidatorService $validatorService, SessionInterface $session, EntityManagerInterface $entityManager, - CommonGroundService $commonGroundService, - ResponseService $responseService, - CacheInterface $cache, - MessageBusInterface $messageBus, - GatewayService $gatewayService, - TranslationService $translationService, - LogService $logService, - EventDispatcherInterface $eventDispatcher, - Environment $twig + EventDispatcherInterface $eventDispatcher ) { $this->security = $security; - $this->request = $requestStack->getCurrentRequest() ?: new Request(); - $this->authorizationService = $authorizationService; - $this->applicationService = $applicationService; -// $this->validatorService = $validatorService; $this->session = $session; $this->entityManager = $entityManager; - $this->commonGroundService = $commonGroundService; - $this->responseService = $responseService; - $this->functionService = new FunctionService($cache, $commonGroundService, $this); - $this->messageBus = $messageBus; - $this->gatewayService = $gatewayService; - $this->translationService = $translationService; - $this->logService = $logService; $this->notifications = []; $this->eventDispatcher = $eventDispatcher; - $this->twig = $twig; } /** @@ -216,64 +179,6 @@ private function dispatchTriggerParentEvents(ObjectEntity $object, ArrayCollecti } } - /** - * Add services for using the handleObject function todo: temp fix untill we no longer use these services here. - * - * @param EavService $eavService - * - * @return $this - * @deprecated - */ - public function addServices(EavService $eavService): ObjectEntityService - { - // EavService uses the ObjectEntityService for the handleOwner and checkOwner function. - // The only reason we need this service in this ObjectEntityService is for the handleObject function, - // because we use an 'old' way to create, update and get ObjectEntities there. - $this->eavService = $eavService; - - return $this; - } - - /** - * A function we want to call when doing a post or put, to set the owner of an ObjectEntity, if it hasn't one already. - * - * @param ObjectEntity $result The object entity - * @param string|null $owner The owner of the object - defaulted to owner - * - * @return ObjectEntity|array - * @deprecated - */ - public function handleOwner(ObjectEntity $result, ?string $owner = 'owner') - { - $user = $this->security->getUser(); - - if ($user && !$result->getOwner()) { - if ($owner == 'owner') { - $result->setOwner($user->getUserIdentifier()); - } else { - // $owner is allowed to be null or a valid uuid of a UC user - if ($owner !== null) { - if (!Uuid::isValid($owner)) { - $errorMessage = '@owner ('.$owner.') is not a valid uuid.'; - } elseif (!$this->commonGroundService->isResource($this->commonGroundService->cleanUrl(['component' => 'uc', 'type' => 'users', 'id' => $owner]))) { - $errorMessage = '@owner ('.$owner.') is not an existing user uuid.'; - } - if (isset($errorMessage)) { - return [ - 'message' => $errorMessage, - 'type' => 'Bad Request', - 'path' => $result->getEntity()->getName(), - 'data' => ['@owner' => $owner], - ]; - } - } - $result->setOwner($owner); - } - } - - return $result; - } - /** * This function checks the owner of the object. * diff --git a/api/src/Service/ResponseService.php b/api/src/Service/ResponseService.php deleted file mode 100644 index c088b6d51..000000000 --- a/api/src/Service/ResponseService.php +++ /dev/null @@ -1,849 +0,0 @@ - - * - * @license EUPL - * - * @category Service - * @deprecated - */ -class ResponseService -{ - private EntityManagerInterface $em; - private CommonGroundService $commonGroundService; - private AuthorizationService $authorizationService; - private SessionInterface $session; - private Security $security; - private CacheInterface $cache; - // todo: maybe start using one or more array properties to save data in, so we don't have to pass down all this... - // todo: ...data in RenderResult (and other function after that, untill we come back to RenderResult again, because of 'recursion') - // todo: other examples we could use this for when we cleanup this service: $fields, $extend, $acceptType, $skipAuthCheck - // todo: use this as example (checking for $level when setting this data only once is very important): - public array $xCommongatewayMetadata; - - public function __construct(EntityManagerInterface $em, CommonGroundService $commonGroundService, AuthorizationService $authorizationService, SessionInterface $session, Security $security, CacheInterface $cache) - { - $this->em = $em; - $this->commonGroundService = $commonGroundService; - $this->authorizationService = $authorizationService; - $this->session = $session; - $this->security = $security; - $this->cache = $cache; - } - - // todo remove responseService from the ObjectEntityService, so we can use the ObjectEntityService->createSelf() function here - /** - * Returns the string used for {at sign}id or self->href for the given objectEntity. This function will use the ObjectEntity->Entity - * to first look for the get item endpoint and else use the Entity route or name to generate the correct string. - * - * @param ObjectEntity $objectEntity - * - * @return string - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - public function createSelf(ObjectEntity $objectEntity): string - { - // We need to persist if this is a new ObjectEntity in order to set and getId to generate the self... - $this->em->persist($objectEntity); - $endpoints = $this->em->getRepository('App:Endpoint')->findGetItemByEntity($objectEntity->getEntity()); - if (count($endpoints) > 0 && $endpoints[0] instanceof Endpoint) { - $pathArray = $endpoints[0]->getPath(); - $foundId = in_array('{id}', $pathArray) ? $pathArray[array_search('{id}', $pathArray)] = $objectEntity->getId() : - (in_array('{uuid}', $pathArray) ? $pathArray[array_search('{uuid}', $pathArray)] = $objectEntity->getId() : false); - if ($foundId !== false) { - $path = implode('/', $pathArray); - - return '/api/'.$path; - } - } - - return '/api'.($objectEntity->getEntity()->getRoute() ?? $objectEntity->getEntity()->getName()).'/'.$objectEntity->getId(); - } - - /** - * Get the last date read for the given ObjectEntity, for the current user. (uses sql to search in logs). - * - * @param ObjectEntity $objectEntity - * - * @return DateTimeInterface|null - * @deprecated moved this function to CoreBundle->ReadUnreadService->getDateRead() - */ - private function getDateRead(ObjectEntity $objectEntity): ?DateTimeInterface - { - $user = $this->security->getUser(); - if ($user === null) { - return null; - } - - // First, check if there is an Unread object for this Object+User. If so, return null. - $unreads = $this->em->getRepository('App:Unread')->findBy(['object' => $objectEntity, 'userId' => $user->getUserIdentifier()]); - if (!empty($unreads)) { - return null; - } - - // Use sql to find last get item log of the current user for the given object. - $logs = $this->em->getRepository('App:Log')->findDateRead($objectEntity->getId()->toString(), $user->getUserIdentifier()); - - if (!empty($logs) and $logs[0] instanceof Log) { - return $logs[0]->getDateCreated(); - } - - return null; - } - - /** - * Filters fields that should not be displayed. - * - * @param array $response The full response - * @param ObjectEntity $result The objectEntity that contains the results - * @param bool $skipAuthCheck Whether the authorization should be checked - * - * @return array The resulting response - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - public function filterResult(array $response, ObjectEntity $result, bool $skipAuthCheck): array - { - return array_filter($response, function ($value, $key) use ($result) { - if (str_starts_with($key, '@') || $key == 'id') { - return true; - } - $attribute = $this->em->getRepository('App:Attribute')->findOneBy(['name' => $key, 'entity' => $result->getEntity()]); - // todo: this breaks SynchronizationService -// if (!$skipAuthCheck && !empty($attribute)) { -// try { -// if (!$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['attribute' => $attribute, 'value' => $value]); -// } -// } catch (AccessDeniedException $exception) { -// return false; -// } -// } - - return true; - }, ARRAY_FILTER_USE_BOTH); - } - - /** - * Renders the result for a ObjectEntity that will be used for the response after a successful api call. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param bool $skipAuthCheck - * @param bool $flat todo: $flat and $acceptType = 'json' should have the same result, so remove $flat? - * @param int $level - * - * @throws CacheException|InvalidArgumentException - * - * @return array|string[]|string Only returns a string if $level is higher than 3 and acceptType is not jsonld. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - public function renderResult(ObjectEntity $result, ?array $fields, ?array $extend, string $acceptType = 'json', bool $skipAuthCheck = false, bool $flat = false, int $level = 0) - { - $response = []; - if ($level === 0) { - $this->xCommongatewayMetadata = []; - if (is_array($extend) && array_key_exists('x-commongateway-metadata', $extend)) { - $this->xCommongatewayMetadata = $extend['x-commongateway-metadata']; - unset($extend['x-commongateway-metadata']); - if (empty($extend)) { - $extend = null; - } - } - } - - if ( - $result->getEntity()->getSource() !== null && - ($result->getEntity()->getSource()->getType() == 'soap' || - $result->getEntity()->getSource()->getType() == 'xml' || - $result->getEntity()->getSource()->getAuth() == 'vrijbrp-jwt') - ) { - return $response; - } - - $user = $this->security->getUser(); - $userId = $user !== null ? $user->getUserIdentifier() : 'anonymous'; - $item = $this->cache->getItem( - 'object_' - .base64_encode( - $result->getId() - .'userId_'.$userId - .'acceptType_'.$acceptType - .'level_'.$level - .'fields_'.http_build_query($fields ?? [], '', ',') - .'extend_'.http_build_query($extend ?? [], '', ',') - .'xCommongatewayMetadata_'.http_build_query($this->xCommongatewayMetadata ?? [], '', ',') - ) - ); - // Todo: what to do with dateRead and caching... this works for now: - if ($item->isHit() && !isset($this->xCommongatewayMetadata['dateRead']) && !isset($this->xCommongatewayMetadata['all'])) { -// var_dump('FromCache: '.$result->getId().'userId_'.$userId.'acceptType_'.$acceptType.'level_'.$level.'fields_'.http_build_query($fields ?? [], '', ',').'extend_'.http_build_query($extend ?? [], '', ',').'xCommongatewayMetadata_'.http_build_query($this->xCommongatewayMetadata ?? [], '', ',')); - return $this->filterResult($item->get(), $result, $skipAuthCheck); - } - $item->tag('object_'.base64_encode($result->getId()->toString())); - $item->tag('object_userId_'.base64_encode($userId)); - - // Make sure to break infinite render loops! ('New' MaxDepth) - if ($level > 3) { - if ($acceptType === 'jsonld') { - return [ - '@id' => $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(), - ]; - } - - return $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(); - } - - // todo: do we still want to do this if we have BL for syncing objects? - // Lets start with the external result - if ($result->getEntity()->getSource() && $result->getEntity()->getEndpoint()) { - if (!empty($result->getExternalResult())) { - $response = array_merge($response, $result->getExternalResult()); - } elseif (!$result->getExternalResult() === [] && $this->commonGroundService->isResource($result->getExternalResult())) { - $response = array_merge($response, $this->commonGroundService->getResource($result->getExternalResult())); - } elseif ($this->commonGroundService->isResource($result->getUri())) { - $response = array_merge($response, $this->commonGroundService->getResource($result->getUri())); - } - - // Only render the attributes that are available for this Entity (filters out unwanted properties from external results) - if (!is_null($result->getEntity()->getAvailableProperties() || !empty($fields))) { - $response = array_filter($response, function ($propertyName) use ($result, $fields) { - $attTypeObject = false; - if ($attribute = $result->getAttributeObject($propertyName)) { - $attTypeObject = $attribute->getType() === 'object'; - } - - return - (empty($fields) || array_key_exists($propertyName, $fields)) && - (!$attTypeObject || $attribute->getExtend() || (!empty($extend) && (array_key_exists('all', $extend) || array_key_exists($propertyName, $extend)))) && - (empty($result->getEntity()->getAvailableProperties()) || in_array($propertyName, $result->getEntity()->getAvailableProperties())); - }, ARRAY_FILTER_USE_KEY); - } - } - - // Let overwrite the id with the gateway id - $response['id'] = $result->getId()->toString(); // todo: remove this line of code if $flat is removed - - // Let get the internal results - $renderValues = $this->renderValues($result, $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - $response = array_merge($response, $renderValues['renderValuesResponse']); - - // Lets sort the result alphabeticly - ksort($response); - - // Lets skip the pritty styff when dealing with a flat object - // todo: $flat and $acceptType = 'json' should have the same result, so remove $flat? - if ($flat) { - $item->set($response); - $this->cache->save($item); - - return $response; - } - - $response = $this->handleAcceptType($result, $fields, $extend, $acceptType, $level, $response, $renderValues['renderValuesEmbedded']); - - // Todo: what to do with dateRead and caching... this works for now: - if (!isset($this->xCommongatewayMetadata['dateRead']) && !isset($this->xCommongatewayMetadata['all'])) { - $item->set($response); - $this->cache->save($item); - } - - return $response; - } - - /** - * Returns a response array for renderResult function. This response is different depending on the acceptType. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param int $level - * @param array $response - * @param array $embedded - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleAcceptType(ObjectEntity $result, ?array $fields, ?array $extend, string $acceptType, int $level, array $response, array $embedded): array - { - $gatewayContext = []; - switch ($acceptType) { - case 'jsonld': - $jsonLd = $this->handleJsonLd($result, $fields, $extend, $level, $response, $embedded); - $gatewayContext = $jsonLd['gatewayContext']; - $embedded = $jsonLd['embedded']; - break; - case 'jsonhal': - $jsonHal = $this->handleJsonHal($result, $fields, $extend, $level, $response, $embedded); - $gatewayContext = $jsonHal['gatewayContext']; - $embedded = $jsonHal['embedded']; - break; - case 'json': - default: - if ($this->xCommongatewayMetadata !== []) { - $gatewayContext['x-commongateway-metadata'] = $this->handleXCommongatewayMetadata($result, $fields, $extend, $level, $response); - } - if (!empty($embedded)) { - $embedded['embedded'] = $embedded; - } - break; - } - - $gatewayContext['id'] = $result->getId(); - - return $gatewayContext + $response + $embedded; - } - - /** - * Returns a response array for renderResult function. This response conforms to the acceptType jsonLd. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param int $level - * @param array $response - * @param array $embedded - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleJsonLd(ObjectEntity $result, ?array $fields, ?array $extend, int $level, array $response, array $embedded): array - { - $gatewayContext['@id'] = $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(); - $gatewayContext['@type'] = ucfirst($result->getEntity()->getName()); - $gatewayContext['@context'] = '/contexts/'.ucfirst($result->getEntity()->getName()); - $gatewayContext['@dateCreated'] = $result->getDateCreated(); - $gatewayContext['@dateModified'] = $result->getDateModified(); - if ($level === 0) { - $this->addToMetadata($gatewayContext, 'dateRead', $result, '@dateRead'); - } - $gatewayContext['@owner'] = $result->getOwner(); - $gatewayContext['@organization'] = $result->getOrganization(); - $gatewayContext['@application'] = $result->getApplication() !== null ? $result->getApplication()->getId() : null; - $gatewayContext['@uri'] = $result->getUri(); - $gatewayContext['@gateway/id'] = $result->getExternalId() ?? (array_key_exists('id', $response) ? $response['id'] : null); - if (array_key_exists('@type', $response)) { - $gatewayContext['@gateway/type'] = $response['@type']; - } - if (array_key_exists('@context', $response)) { - $gatewayContext['@gateway/context'] = $response['@context']; - } - $gatewayContext['@synchronizations'] = $result->getReadableSyncDataArray(); - if (is_array($extend)) { - $gatewayContext['@extend'] = $extend; - } - if (is_array($fields)) { - $gatewayContext['@fields'] = $fields; - } - $gatewayContext['@level'] = $level; - if (!empty($embedded)) { - $embedded['@embedded'] = $embedded; - } - - return [ - 'gatewayContext' => $gatewayContext, - 'embedded' => $embedded, - ]; - } - - /** - * Returns a response array for renderResult function. This response conforms to the acceptType jsonHal. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param int $level - * @param array $response - * @param array $embedded - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleJsonHal(ObjectEntity $result, ?array $fields, ?array $extend, int $level, array $response, array $embedded): array - { - $gatewayContext['_links']['self']['href'] = $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(); - $gatewayContext['_metadata'] = [ - '_type' => ucfirst($result->getEntity()->getName()), - '_context' => '/contexts/'.ucfirst($result->getEntity()->getName()), - '_dateCreated' => $result->getDateCreated(), - '_dateModified' => $result->getDateModified(), - ]; - if ($level === 0) { - $this->addToMetadata($gatewayContext['_metadata'], 'dateRead', $result, '_dateRead'); - } - $gatewayContext['_metadata'] = array_merge($gatewayContext['_metadata'], [ - '_owner' => $result->getOwner(), - '_organization' => $result->getOrganization(), - '_application' => $result->getApplication() !== null ? $result->getApplication()->getId() : null, - '_uri' => $result->getUri(), - '_gateway/id' => $result->getExternalId() ?? (array_key_exists('id', $response) ? $response['id'] : null), - ]); - if (array_key_exists('@type', $response)) { - $gatewayContext['_metadata']['_gateway/type'] = $response['@type']; - } - if (array_key_exists('@context', $response)) { - $gatewayContext['_metadata']['_gateway/context'] = $response['@context']; - } - $gatewayContext['_metadata']['_synchronizations'] = $result->getReadableSyncDataArray(); - if (is_array($extend)) { - $gatewayContext['_metadata']['_extend'] = $extend; - } - if (is_array($fields)) { - $gatewayContext['_metadata']['_fields'] = $fields; - } - $gatewayContext['_metadata']['_level'] = $level; - if (!empty($embedded)) { - $embedded['_embedded'] = $embedded; - } - - return [ - 'gatewayContext' => $gatewayContext, - 'embedded' => $embedded, - ]; - } - - /** - * Returns a response array for renderResult function. - * This function is called and used to show metadata for AcceptTypes json or 'default' when the extend query param contains x-commongateway-metadata. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param int $level - * @param array $response - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleXCommongatewayMetadata(ObjectEntity $result, ?array $fields, ?array $extend, int $level, array $response): array - { - $metadata = []; - $this->addToMetadata( - $metadata, - 'self', - $result->getSelf() ?? $result->setSelf($this->createSelf($result))->getSelf() - ); - $this->addToMetadata($metadata, 'type', ucfirst($result->getEntity()->getName())); - $this->addToMetadata($metadata, 'context', '/contexts/'.ucfirst($result->getEntity()->getName())); - $this->addToMetadata($metadata, 'dateCreated', $result->getDateCreated()); - $this->addToMetadata($metadata, 'dateModified', $result->getDateModified()); - if ($level === 0) { - $this->addToMetadata($metadata, 'dateRead', $result); - } - $this->addToMetadata($metadata, 'owner', $result->getOwner()); - $this->addToMetadata($metadata, 'organization', $result->getOrganization()); - $this->addToMetadata( - $metadata, - 'application', - $result->getApplication() !== null ? $result->getApplication()->getId() : null - ); - $this->addToMetadata($metadata, 'uri', $result->getUri()); - $this->addToMetadata( - $metadata, - 'gateway/id', - $result->getExternalId() ?? (array_key_exists('id', $response) ? $response['id'] : null) - ); - if (array_key_exists('@type', $response)) { - $this->addToMetadata($metadata, 'gateway/type', $response['@type']); - } - if (array_key_exists('@context', $response)) { - $this->addToMetadata($metadata, 'gateway/context', $response['@context']); - } - $this->addToMetadata($metadata, 'synchronizations', $result->getReadableSyncDataArray()); - if (is_array($extend)) { - $this->addToMetadata($metadata, 'extend', $extend); - } - if (is_array($fields)) { - $this->addToMetadata($metadata, 'fields', $fields); - } - $this->addToMetadata($metadata, 'level', $level); - - return $metadata; - } - - /** - * Adds a key and value to the given $metadata array. But only if all or the $key is present in $this->xCommongatewayMetadata. - * If $key contains dateRead this will also trigger some specific BL we only want to do if specifically asked for. - * - * @param array $metadata - * @param string $key - * @param $value - * @param string|null $overwriteKey Default = null, if a string is given this will be used instead of $key, for the key to add to the $metadata array. - * - * @return void - * @deprecated moved this function for dateRead only to CoreBundle->ReadUnreadService->addDateRead() - */ - public function addToMetadata(array &$metadata, string $key, $value, ?string $overwriteKey = null) - { - if (array_key_exists('all', $this->xCommongatewayMetadata) || array_key_exists($key, $this->xCommongatewayMetadata)) { - // Make sure we only do getDateRead function when it is present in $this->xCommongatewayMetadata - if ($key === 'dateRead') { - // If the api-call is an getItem call show NOW instead! - $value = isset($this->xCommongatewayMetadata['dateRead']) && $this->xCommongatewayMetadata['dateRead'] === 'getItem' - ? new DateTime() : $this->getDateRead($value); - $value = $value == null ? $value : $value->format('c'); - } - $metadata[$overwriteKey ?? $key] = $value; - } - } - - /** - * Renders the values of an ObjectEntity for the renderResult function. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param bool $skipAuthCheck - * @param bool $flat - * @param int $level - * - * @throws CacheException|InvalidArgumentException - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderValues(ObjectEntity $result, ?array $fields, ?array $extend, string $acceptType, bool $skipAuthCheck = false, bool $flat = false, int $level = 0): array - { - $response = []; - $embedded = []; - - // Lets keep track of how deep in the tree we are - $level++; - - $entity = $result->getEntity(); - foreach ($entity->getAttributes() as $attribute) { - // Only render the attributes that are used && don't render attributes that are writeOnly - if ((!is_null($entity->getUsedProperties()) && !in_array($attribute->getName(), $entity->getUsedProperties())) - || $attribute->getWriteOnly() - ) { - continue; - } - - // Lets deal with fields filtering - if (is_array($fields) and !array_key_exists($attribute->getName(), $fields)) { - continue; - } - - // Check if user is allowed to see this - // todo: this breaks SynchronizationService -// try { -// if (!$skipAuthCheck && !$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['attribute' => $attribute, 'object' => $result]); -// } -// } catch (AccessDeniedException $exception) { -// continue; -// } - - $valueObject = $result->getValueObject($attribute); - if ($attribute->getType() == 'object') { - // Lets deal with extending - if (!$this->checkExtendAttribute($response, $attribute, $valueObject, $extend, $acceptType)) { - continue; - } - - // Let's deal with subFields filtering - $subFields = null; - if (is_array($fields) && array_key_exists($attribute->getName(), $fields)) { - if (is_array($fields[$attribute->getName()])) { - $subFields = $fields[$attribute->getName()]; - } elseif ($fields[$attribute->getName()] == false) { - continue; - } - } - - // Let's deal with subExtend extending - $subExtend = is_array($extend) ? $this->attributeSubExtend($extend, $attribute) : null; - - $renderObjects = $this->renderObjects($result, $embedded, $valueObject, $subFields, $subExtend, $acceptType, $skipAuthCheck, $flat, $level); - $response[$attribute->getName()] = is_array($renderObjects) && array_key_exists('renderObjectsObjectsArray', $renderObjects) ? $renderObjects['renderObjectsObjectsArray'] : $renderObjects; - if (is_array($renderObjects) && array_key_exists('renderObjectsEmbedded', $renderObjects)) { - $embedded = $renderObjects['renderObjectsEmbedded']; - } - - continue; - } elseif ($attribute->getType() == 'file') { - $response[$attribute->getName()] = $this->renderFiles($valueObject); - continue; - } - $response[$attribute->getName()] = $valueObject->getValue(); - } - - return [ - 'renderValuesResponse' => $response, - 'renderValuesEmbedded' => isset($renderObjects) && is_array($renderObjects) && array_key_exists('renderObjectsEmbedded', $renderObjects) ? $renderObjects['renderObjectsEmbedded'] : [], - ]; - } - - /** - * Checks if a given attribute should be extended. Will return true if it should be extended and false if not. - * Will also add a reference to an object to the response if the attribute should not be extended. Or null if there is no value. - * - * @param array $response The response array we will be adding object references to, if needed. - * @param Attribute $attribute The attribute we are checking if it needs extending. - * @param Value $valueObject The value(Object) of the objectEntity for the attribute we are rendering. - * @param array|null $extend The extend array used in the api-call. - * @param string $acceptType The acceptType used in the api-call. - * - * @return bool Will return true if the attribute should be extended and false if not. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function checkExtendAttribute(array &$response, Attribute $attribute, Value $valueObject, ?array $extend, string $acceptType): bool - { - if ($attribute->getExtend() !== true && - (!is_array($extend) || (!array_key_exists('all', $extend) && !array_key_exists($attribute->getName(), $extend))) - ) { - $attribute->getMultiple() ? - $this->renderObjectReferences($response, $attribute, $valueObject, $acceptType) : - $this->renderObjectReference($response, $attribute, $valueObject, $acceptType); - - return false; - } - - return true; - } - - /** - * For a multiple=false attribute, add a reference to a single object to the response if that attribute should not be extended. - * Or adds null instead if there is no value at all. - * - * @param array $response The response array we will be adding an object references (or null) to. - * @param Attribute $attribute The attribute that does not need to be extended for the current result we are rendering. - * @param Value $valueObject The value(Object) of the objectEntity for the attribute we are rendering. - * @param string $acceptType The acceptType used in the api-call. - * - * @return void - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjectReference(array &$response, Attribute $attribute, Value $valueObject, string $acceptType) - { - $object = $valueObject->getValue(); - if (!$object instanceof ObjectEntity) { - $response[$attribute->getName()] = null; - - return; - } - $response[$attribute->getName()] = $this->renderObjectSelf($object, $acceptType); - } - - /** - * For a multiple=true attribute, add one or more references to one or more objects to the response if that attribute should not be extended. - * Or adds null instead if there is no value at all. - * - * @param array $response The response array we will be adding one or more object references (or null) to. - * @param Attribute $attribute The attribute that does not need to be extended for the current result we are rendering. - * @param Value $valueObject The value(Object) of the objectEntity for the attribute we are rendering. - * @param string $acceptType The acceptType used in the api-call. - * - * @return void - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjectReferences(array &$response, Attribute $attribute, Value $valueObject, string $acceptType) - { - $objects = $valueObject->getValue(); - if (!is_countable($objects)) { - $response[$attribute->getName()] = []; - - return; - } - foreach ($objects as $object) { - $response[$attribute->getName()][] = $this->renderObjectSelf($object, $acceptType); - } - } - - /** - * Renders the 'self' of a given object, result will differ depending on the acceptType. - * - * @param ObjectEntity $object The object to render 'self' for. - * @param string $acceptType The acceptType that will influence the way this 'self' is rendered. - * - * @return string|string[] The 'self' string or array with this string in it, depending on acceptType. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjectSelf(ObjectEntity $object, string $acceptType) - { - $objectSelf = $object->getSelf() ?? '/api'.($object->getEntity()->getRoute() ?? $object->getEntity()->getName()).'/'.$object->getId(); - // todo: if we add more different acceptTypes to this list, use a switch: - if ($acceptType === 'jsonld') { - return ['@id' => $objectSelf]; - } - - return $objectSelf; - } - - /** - * Checks if a given attribute is present in the extend array and the value/object for this attribute should be extended. - * This function will decide how the subExtend array for this attribute should look like. - * - * @param array $extend The extend array used in the api-call. - * @param Attribute $attribute The attribute we are checking if it needs extending. - * - * @return array|null Will return the subExtend array for rendering the subresources if they should be extended. Will return empty array if attribute should not be extended. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function attributeSubExtend(array $extend, Attribute $attribute): ?array - { - if (array_key_exists('all', $extend)) { - return $extend; - } elseif (array_key_exists($attribute->getName(), $extend) && is_array($extend[$attribute->getName()])) { - return $extend[$attribute->getName()]; - } - - return null; - } - - /** - * Renders the objects of a value with attribute type 'object' for the renderValues function. If attribute is extended. - * - * @param ObjectEntity $result - * @param array $embedded - * @param Value $value - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param bool $skipAuthCheck - * @param bool $flat - * @param int $level - * - * @throws CacheException - * @throws InvalidArgumentException - * - * @return string|array|null - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjects(ObjectEntity $result, array $embedded, Value $value, ?array $fields, ?array $extend, string $acceptType, bool $skipAuthCheck = false, bool $flat = false, int $level = 0) - { - $attribute = $value->getAttribute(); - - if ($value->getValue() == null) { - return [ - 'renderObjectsObjectsArray' => $attribute->getMultiple() ? [] : null, - 'renderObjectsEmbedded' => $embedded, - ]; - } - - // If we have only one Object (because multiple = false) - if (!$attribute->getMultiple()) { - try { - // todo: this breaks SynchronizationService -// // if you have permission to see the entire parent object, you are allowed to see it's attributes, but you might not have permission to see that property if it is an object -// if (!$skipAuthCheck && !$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['entity' => $attribute->getObject(), 'object' => $value->getValue()]); -// } - - if ($attribute->getInclude()) { - return $this->renderResult($value->getValue(), $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - } else { - $embedded[$attribute->getName()] = $this->renderResult($value->getValue(), $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - } - - $object = $value->getValue(); - - return [ - 'renderObjectsObjectsArray' => $this->renderObjectSelf($object, $acceptType), - 'renderObjectsEmbedded' => $embedded, - ]; - } catch (AccessDeniedException $exception) { - return null; - } - } - - // If we can have multiple Objects (because multiple = true) - $objects = $value->getValue(); - $objectsArray = []; - foreach ($objects as $object) { - try { - // todo: this breaks SynchronizationService -// // if you have permission to see the entire parent object, you are allowed to see it's attributes, but you might not have permission to see that property if it is an object -// if (!$skipAuthCheck && !$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['entity' => $attribute->getObject(), 'object' => $object]); -// } - if ($attribute->getInclude()) { - $objectsArray[] = $this->renderResult($object, $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - continue; - } else { - $embedded[$attribute->getName()][] = $this->renderResult($object, $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - } - - $objectsArray[] = $this->renderObjectSelf($object, $acceptType); - } catch (AccessDeniedException $exception) { - continue; - } - } - - return [ - 'renderObjectsObjectsArray' => $objectsArray, - 'renderObjectsEmbedded' => $embedded, - ]; - } - - /** - * Renders the files of a value with attribute type 'file' for the renderValues function. - * - * @param Value $value - * - * @return array|null - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderFiles(Value $value): ?array - { - $attribute = $value->getAttribute(); - - if ($value->getValue() == null) { - return null; - } - if (!$attribute->getMultiple()) { - return $this->renderFileResult($value->getValue()); - } - $files = $value->getValue(); - $filesArray = []; - foreach ($files as $file) { - $filesArray[] = $this->renderFileResult($file); - } - - return $filesArray; - } - - /** - * Renders the result for a File that will be used (in renderFiles) for the response after a successful api call. - * - * @param File $file - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderFileResult(File $file): array - { - return [ - 'id' => $file->getId()->toString(), - 'name' => $file->getName(), - 'extension' => $file->getExtension(), - 'mimeType' => $file->getMimeType(), - 'size' => $file->getSize(), - 'base64' => $file->getBase64(), - ]; - } -} diff --git a/api/src/Service/SynchronizationService.php b/api/src/Service/SynchronizationService.php index b3ef73c37..143e262dc 100644 --- a/api/src/Service/SynchronizationService.php +++ b/api/src/Service/SynchronizationService.php @@ -80,7 +80,6 @@ class SynchronizationService * @param LogService $logService * @param MessageBusInterface $messageBus * @param TranslationService $translationService - * @param ObjectEntityService $objectEntityService * @param EavService $eavService * @param Environment $twig * @param EventDispatcherInterface $eventDispatcher @@ -97,7 +96,6 @@ public function __construct( LogService $logService, MessageBusInterface $messageBus, TranslationService $translationService, - ObjectEntityService $objectEntityService, EavService $eavService, Environment $twig, EventDispatcherInterface $eventDispatcher, @@ -113,8 +111,6 @@ public function __construct( $this->logService = $logService; $this->messageBus = $messageBus; $this->translationService = $translationService; - $this->objectEntityService = $objectEntityService; - $this->objectEntityService->addServices($eavService); $this->eavService = $eavService; $this->configuration = []; $this->data = []; @@ -163,6 +159,34 @@ public function synchronizationItemHandler(array $data, array $configuration): a return $data; } + /** + * Implodes a multidimensional array to a string. + * + * @param array $array + * @param string $separator + * @param string $keyValueSeparator + * + * @return string + */ + public function implodeMultiArray(array $array, string $separator = ', ', string $keyValueSeparator = '='): string + { + $str = ''; + + foreach ($array as $key => $value) { + $currentSeparator = $separator; + if ($key === array_key_first($array)) { + $currentSeparator = ''; + } + if (is_array($value)) { + $str .= "$currentSeparator\"$key\"{$keyValueSeparator}[{$this->implodeMultiArray($value, $separator, $keyValueSeparator)}]"; + } else { + $str .= "$currentSeparator\"$key\"$keyValueSeparator\"$value\""; + } + } + + return $str; + } + /** * Synchronises objects in the gateway to a source. * @@ -550,8 +574,8 @@ private function getObjectsFromSource(Source $source): array new TableSeparator(), ['Source' => "Source \"{$source->getName()}\" ({$source->getId()->toString()})"], ['Endpoint' => $callServiceConfig['endpoint']], - ['Query' => is_array($callServiceConfig['query']) ? "[{$this->objectEntityService->implodeMultiArray($callServiceConfig['query'])}]" : $callServiceConfig['query']], - ['Headers' => is_array($callServiceConfig['headers']) ? "[{$this->objectEntityService->implodeMultiArray($callServiceConfig['headers'])}]" : $callServiceConfig['headers']], + ['Query' => is_array($callServiceConfig['query']) ? "[{$this->implodeMultiArray($callServiceConfig['query'])}]" : $callServiceConfig['query']], + ['Headers' => is_array($callServiceConfig['headers']) ? "[{$this->implodeMultiArray($callServiceConfig['headers'])}]" : $callServiceConfig['headers']], ['Method' => $callServiceConfig['method'] ?? 'GET'], ); } diff --git a/api/src/Service/UserService.php b/api/src/Service/UserService.php deleted file mode 100644 index 0925445d0..000000000 --- a/api/src/Service/UserService.php +++ /dev/null @@ -1,89 +0,0 @@ -, Wilco Louwerse - * - * @license EUPL - * - * @category Service - */ -class UserService -{ - private CommonGroundService $commonGroundService; - private ObjectEntityService $objectEntityService; - - public function __construct(CommonGroundService $commonGroundService, ObjectEntityService $objectEntityService) - { - $this->commonGroundService = $commonGroundService; - $this->objectEntityService = $objectEntityService; - } - - public function getPersonForUser(UserInterface $user): array - { - if (!($user instanceof AuthenticationUser)) { - return []; - } - if ($user->getPerson() && $person = $this->objectEntityService->getObjectByUri($user->getPerson())) { - return $person; - } elseif ($user->getPerson()) { - try { - $id = substr($user->getPerson(), strrpos($user->getPerson(), '/') + 1); - - if (!$this->commonGroundService->getComponent('cc') || - !$person = $this->commonGroundService->getResource($user->getPerson())) { - $person = $this->objectEntityService->getPersonObject($id); - } - if (empty($person)) { - throw new Exception(); - } - } catch (Exception $exception) { - $person = $this->objectEntityService->getUserObjectEntity($user->getUsername()); - } - } else { - $person = $this->objectEntityService->getUserObjectEntity($user->getUsername()); - } - - return $person; - } - - public function getOrganizationForUser(UserInterface $user): array - { - if (!($user instanceof AuthenticationUser)) { - return []; - } - if (!$user->getOrganization()) { - return []; - } else { - $organizationFields = [ - 'name' => true, 'type' => true, 'addresses' => true, 'emails' => true, 'telephones' => true, - 'parentOrganization' => [ - 'name' => true, 'type' => true, 'addresses' => true, 'emails' => true, 'telephones' => true, - ], - ]; - if (!($organization = $this->objectEntityService->getObjectByUri($user->getOrganization(), $organizationFields, $organizationFields))) { - try { - $id = substr($user->getOrganization(), strrpos($user->getOrganization(), '/') + 1); - - if (!$this->commonGroundService->getComponent('cc') || - !$organization = $this->commonGroundService->getResource($user->getOrganization())) { - $organization = $this->objectEntityService->getOrganizationObject($id); - } - if (empty($organization)) { - throw new Exception(); - } - } catch (Exception $exception) { - return []; - } - } - } - - return $organization; - } -} diff --git a/api/symfony.lock b/api/symfony.lock index d20a5abee..790d1a783 100644 --- a/api/symfony.lock +++ b/api/symfony.lock @@ -5,9 +5,6 @@ "alcaeus/mongo-php-adapter": { "version": "1.2.2" }, - "api-platform/api-pack": { - "version": "v1.3.0" - }, "api-platform/core": { "version": "2.5", "recipe": { @@ -22,17 +19,11 @@ "./src/Entity/.gitignore" ] }, - "api-platform/schema-generator": { - "version": "v3.0.0" - }, "bacon/bacon-qr-code": { "version": "2.0.7" }, - "beberlei/doctrineextensions": { - "version": "v1.3.0" - }, "behat/transliterator": { - "version": "v1.3.0" + "version": "v1.5.0" }, "brick/math": { "version": "0.9.3" @@ -44,7 +35,7 @@ "version": "dev-master" }, "composer/ca-bundle": { - "version": "1.2.10" + "version": "1.3.7" }, "composer/package-versions-deprecated": { "version": "1.11.99.3" @@ -53,19 +44,10 @@ "version": "1.0.1" }, "composer/semver": { - "version": "3.2.5" + "version": "3.4.0" }, "composer/xdebug-handler": { - "version": "2.0.2" - }, - "conduction/commongroundbundle": { - "version": "dev-feature-gateway" - }, - "conduction/digidbundle": { - "version": "dev-master" - }, - "conduction/samlbundle": { - "version": "dev-master" + "version": "3.0.3" }, "dasprid/enum": { "version": "1.0.3" @@ -117,12 +99,12 @@ ] }, "doctrine/doctrine-fixtures-bundle": { - "version": "3.0", + "version": "3.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "3.0", - "ref": "e5b542d4ef47d8a003c91beb35650c76907f7e53" + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" }, "files": [ "src/DataFixtures/AppFixtures.php" @@ -171,9 +153,6 @@ "dragonmantank/cron-expression": { "version": "v3.3.1" }, - "easyrdf/easyrdf": { - "version": "1.1.1" - }, "egulias/email-validator": { "version": "3.2.1" }, @@ -189,29 +168,11 @@ "fakerphp/faker": { "version": "v1.15.0" }, - "fgrosse/phpasn1": { - "version": "v2.3.0" - }, - "fig/link-util": { - "version": "1.1.2" - }, - "friendsofphp/php-cs-fixer": { - "version": "2.19", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "2.19", - "ref": "34d1a22f840953909c581b8f993093b14cc9491b" - }, - "files": [ - ".php-cs-fixer.dist.php" - ] - }, "friendsofphp/proxy-manager-lts": { "version": "v1.0.5" }, "gedmo/doctrine-extensions": { - "version": "v3.1.0" + "version": "v3.2.0" }, "guzzlehttp/guzzle": { "version": "6.5.5" @@ -245,9 +206,6 @@ "khanamiryan/qrcode-detector-decoder": { "version": "1.0.6" }, - "knplabs/knp-markdown-bundle": { - "version": "1.9.0" - }, "laminas/laminas-code": { "version": "4.4.2" }, @@ -274,7 +232,7 @@ "version": "2.4.2" }, "league/html-to-markdown": { - "version": "4.10.0" + "version": "5.1.1" }, "league/mime-type-detection": { "version": "1.11.0" @@ -282,12 +240,6 @@ "masterminds/html5": { "version": "2.7.5" }, - "michelf/php-markdown": { - "version": "1.9.0" - }, - "mollie/mollie-api-php": { - "version": "v2.37.1" - }, "mongodb/mongodb": { "version": "1.15.0" }, @@ -328,12 +280,6 @@ "nikic/php-parser": { "version": "v4.12.0" }, - "onelogin/php-saml": { - "version": "4.0.0" - }, - "paragonie/random_compat": { - "version": "v9.99.100" - }, "phar-io/manifest": { "version": "2.0.3" }, @@ -346,9 +292,6 @@ "phenx/php-svg-lib": { "version": "0.3.4" }, - "php-cs-fixer/diff": { - "version": "v1.3.1" - }, "phpdocumentor/reflection-common": { "version": "2.2.0" }, @@ -421,16 +364,19 @@ "version": "3.0.3" }, "ramsey/uuid": { - "version": "3.9.4" + "version": "4.7.5" }, "ramsey/uuid-doctrine": { - "version": "1.3", + "version": "2.0", "recipe": { "repo": "github.com/symfony/recipes-contrib", - "branch": "master", + "branch": "main", "version": "1.3", "ref": "471aed0fbf5620b8d7f92b7a5ebbbf6c0945c27a" - } + }, + "files": [ + "config/packages/ramsey_uuid_doctrine.yaml" + ] }, "respect/stringifier": { "version": "0.2.0" @@ -438,9 +384,6 @@ "respect/validation": { "version": "2.2.3" }, - "robrichards/xmlseclibs": { - "version": "3.1.1" - }, "sabberworm/php-css-parser": { "version": "8.4.0" }, @@ -498,20 +441,17 @@ "spomky-labs/aes-key-wrap": { "version": "v6.0.0" }, - "spomky-labs/base64url": { - "version": "v2.0.4" - }, "stof/doctrine-extensions-bundle": { - "version": "1.2", + "version": "1.11", "recipe": { "repo": "github.com/symfony/recipes-contrib", - "branch": "master", + "branch": "main", "version": "1.2", - "ref": "6c1ceb662f8997085f739cd089bfbef67f245983" - } - }, - "sumup/sumup-ecom-php-sdk": { - "version": "1.0.2" + "ref": "e805aba9eff5372e2d149a9ff56566769e22819d" + }, + "files": [ + "config/packages/stof_doctrine_extensions.yaml" + ] }, "symfony/amqp-messenger": { "version": "v5.3.14" @@ -640,15 +580,6 @@ "ref": "addcb559b32d9dbb4843826b063565e1b15a2a57" } }, - "symfony/maker-bundle": { - "version": "1.0", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.0", - "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" - } - }, "symfony/messenger": { "version": "5.3", "recipe": { @@ -682,9 +613,6 @@ "symfony/options-resolver": { "version": "v5.3.4" }, - "symfony/orm-pack": { - "version": "v2.1.0" - }, "symfony/password-hasher": { "version": "v5.3.4" }, @@ -718,9 +646,6 @@ "symfony/polyfill-mbstring": { "version": "v1.23.1" }, - "symfony/polyfill-php70": { - "version": "v1.20.0" - }, "symfony/polyfill-php73": { "version": "v1.23.0" }, @@ -731,7 +656,7 @@ "version": "v1.23.0" }, "symfony/process": { - "version": "v5.3.4" + "version": "v5.3.14" }, "symfony/property-access": { "version": "v5.3.4" @@ -797,9 +722,6 @@ "symfony/serializer": { "version": "v5.3.4" }, - "symfony/serializer-pack": { - "version": "v1.0.4" - }, "symfony/stopwatch": { "version": "v5.3.4" }, @@ -807,12 +729,12 @@ "version": "v5.3.3" }, "symfony/translation": { - "version": "5.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "5.3", - "ref": "da64f5a2b6d96f5dc24914517c0350a5f91dee43" + "ref": "e28e27f53663cc34f0be2837aba18e3a1bef8e7b" }, "files": [ "config/packages/translation.yaml",