From dacc84fb86f0d333cb91c2f77ee55f0b72126be6 Mon Sep 17 00:00:00 2001 From: Anne-Julia Seitz Date: Tue, 29 Nov 2022 23:35:20 +0100 Subject: [PATCH 01/28] CD: add debug workflow to see --- .github/workflows/debug.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/debug.yml diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml new file mode 100644 index 00000000..6460d2a6 --- /dev/null +++ b/.github/workflows/debug.yml @@ -0,0 +1,20 @@ +name: Context testing +on: push + +jobs: + dump_contexts_to_log: + runs-on: ubuntu-latest + steps: + - name: Dump GitHub context + id: github_context_step + run: echo '${{ toJSON(github) }}' + - name: Dump job context + run: echo '${{ toJSON(job) }}' + - name: Dump steps context + run: echo '${{ toJSON(steps) }}' + - name: Dump runner context + run: echo '${{ toJSON(runner) }}' + - name: Dump strategy context + run: echo '${{ toJSON(strategy) }}' + - name: Dump matrix context + run: echo '${{ toJSON(matrix) }}' \ No newline at end of file From fba61b5367c30ab01c99904646299d48561394f8 Mon Sep 17 00:00:00 2001 From: Anne-Julia Seitz Date: Wed, 30 Nov 2022 00:06:19 +0100 Subject: [PATCH 02/28] CD: add CD workflow to see --- .github/workflows/cd.yml | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/cd.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 00000000..00f57cec --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,41 @@ +name: Run CD for ArtefactGuide +on: push +#on: +# push: +# branches: +# - 'main' +# tags: +# - 'v*.*.*' + +jobs: + build: + name: Buid and push Docker image to GitHub Container registry + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Checkout the repository + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to GitHub container registry + uses: docker/login-action@v1.10.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and Push Docker Image + env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + uses: docker/build-push-action@v3 + with: + context: . + file: ./devops/docker/frankenphp/Dockerfile + target: final + push: true + tags: $REGISTRY/$IMAGE_NAME:latest \ No newline at end of file From 5bd78af209f8e7e463aa60f3524bdbf0275aee3c Mon Sep 17 00:00:00 2001 From: Anne-Julia Seitz Date: Wed, 30 Nov 2022 00:13:02 +0100 Subject: [PATCH 03/28] CD: tweak workflow --- .github/workflows/cd.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 00f57cec..275bb161 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -1,4 +1,4 @@ -name: Run CD for ArtefactGuide +name: Continuous Delivery for ArtefactGuide on: push #on: # push: @@ -19,10 +19,10 @@ jobs: uses: actions/checkout@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 - name: Log in to GitHub container registry - uses: docker/login-action@v1.10.0 + uses: docker/login-action@v2.1 with: registry: ghcr.io username: ${{ github.actor }} @@ -32,10 +32,10 @@ jobs: env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v3.2 with: context: . file: ./devops/docker/frankenphp/Dockerfile target: final push: true - tags: $REGISTRY/$IMAGE_NAME:latest \ No newline at end of file + tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ No newline at end of file From 5c44bb8d9d6e20b8829428057a4aeef5a37742f6 Mon Sep 17 00:00:00 2001 From: Anne-Julia Seitz Date: Wed, 30 Nov 2022 00:17:37 +0100 Subject: [PATCH 04/28] CD: use the right versions of actions --- devops/docker/frankenphp/Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/devops/docker/frankenphp/Dockerfile b/devops/docker/frankenphp/Dockerfile index 8497cb46..81c8a738 100644 --- a/devops/docker/frankenphp/Dockerfile +++ b/devops/docker/frankenphp/Dockerfile @@ -29,3 +29,7 @@ RUN curl https://xdebug.org/files/xdebug-3.2.0RC2.tgz --output /tmp/xdebug.tgz COPY ./devops/docker/frankenphp/conf.d/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini +# CD stage +FROM production as final + +COPY . /app \ No newline at end of file From dc27cd24d69d4fda2b4070a6d3291c60f9fd4452 Mon Sep 17 00:00:00 2001 From: Anne-Julia Seitz Date: Wed, 30 Nov 2022 00:17:43 +0100 Subject: [PATCH 05/28] CD: use the right versions of actions --- .github/workflows/cd.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 275bb161..53d2ae31 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -18,21 +18,21 @@ jobs: - name: Checkout the repository uses: actions/checkout@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + - name: Docker Setup Buildx + uses: docker/setup-buildx-action@v2.2.1 - - name: Log in to GitHub container registry - uses: docker/login-action@v2.1 + - name: Docker Login + uses: docker/login-action@v2.1.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and Push Docker Image + - name: Build and push Docker images + uses: docker/build-push-action@v3.2.0 env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} - uses: docker/build-push-action@v3.2 with: context: . file: ./devops/docker/frankenphp/Dockerfile From 59a24b253c89ec0c97fff6be59c2b731305917d7 Mon Sep 17 00:00:00 2001 From: dazz Date: Sat, 31 Dec 2022 10:15:48 +0100 Subject: [PATCH 06/28] CD: Set stages and copy into image --- devops/docker/frankenphp/Dockerfile | 60 ++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/devops/docker/frankenphp/Dockerfile b/devops/docker/frankenphp/Dockerfile index 81c8a738..0597cd98 100644 --- a/devops/docker/frankenphp/Dockerfile +++ b/devops/docker/frankenphp/Dockerfile @@ -1,5 +1,15 @@ +ARG FRANKENPHP_VERSION="sha-4332bbe" FROM composer:2 as composer -FROM dunglas/frankenphp:latest as production +FROM dunglas/frankenphp:${FRANKENPHP_VERSION} as base + +COPY --from=composer /usr/bin/composer /usr/bin/composer +ENV COMPOSER_ALLOW_SUPERUSER=1 + +RUN apt-get update && apt-get install --no-install-recommends -y \ + unzip \ + yarnpkg \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* RUN install-php-extensions \ opcache \ @@ -8,17 +18,9 @@ RUN install-php-extensions \ zip # DEV stage -FROM production as dev - -COPY --from=composer /usr/bin/composer /usr/bin/composer -ENV COMPOSER_ALLOW_SUPERUSER=1 - -RUN apt-get update && apt-get install -y \ - unzip \ - yarnpkg \ - && rm -rf /var/lib/apt/lists/* +FROM base as dev -RUN curl https://xdebug.org/files/xdebug-3.2.0RC2.tgz --output /tmp/xdebug.tgz \ +RUN curl https://xdebug.org/files/xdebug-3.2.0RC2.tgz --output /tmp/xdebug.tgz \ && mkdir /tmp/xdebug \ && tar -xzf /tmp/xdebug.tgz -C /tmp/xdebug --strip-components=1 \ && cd /tmp/xdebug \ @@ -30,6 +32,38 @@ RUN curl https://xdebug.org/files/xdebug-3.2.0RC2.tgz --output /tmp/xdebug.tgz COPY ./devops/docker/frankenphp/conf.d/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini # CD stage -FROM production as final +FROM base as build + +ENV APP_ENV=prod +ENV APP_DEBUG=0 + +# get the code +COPY --chown=www-data:www-data . /app + +RUN make install-production + +# production stage +FROM dunglas/frankenphp:${FRANKENPHP_VERSION} as production + +ENV APP_ENV=prod +ENV APP_DEBUG=0 + +RUN install-php-extensions \ + opcache \ + pdo_pgsql \ + intl \ + zip + +COPY --from=build /app/bin/console /app/bin/console +COPY --from=build /app/config /app/config +COPY --from=build /app/migrations /app/migrations +COPY --from=build /app/public/build /app/public/build +COPY --from=build /app/public/index.php /app/public/index.php +COPY --from=build /app/src /app/src +COPY --from=build /app/templates /app/templates +COPY --from=build /app/vendor /app/vendor + +RUN mkdir -p /app/var/cache/prod /app/var/log/prod /app/ var/database \ + && chown -R www-data:www-data /app/var/ -COPY . /app \ No newline at end of file +USER www-data \ No newline at end of file From 600509a53ff6b03f40b0f9710c8d15cf5f0a023e Mon Sep 17 00:00:00 2001 From: dazz Date: Sat, 31 Dec 2022 10:18:16 +0100 Subject: [PATCH 07/28] CI/CD: Update jobs --- .dockerignore | 1 + .github/workflows/cd.yml | 30 +++++++++++++++++++++++++++--- .github/workflows/ci.yaml | 10 ++++++---- .github/workflows/debug.yml | 2 +- .gitignore | 3 +++ Makefile | 19 ++++++++++++++++++- 6 files changed, 56 insertions(+), 9 deletions(-) diff --git a/.dockerignore b/.dockerignore index ef484ea4..ec5044d8 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,4 @@ +.git .github devops !devops/docker/frankenphp/conf.d/xdebug.ini diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 53d2ae31..999ad60e 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -9,7 +9,7 @@ on: push jobs: build: - name: Buid and push Docker image to GitHub Container registry + name: Build and push Docker image to GitHub Container registry runs-on: ubuntu-latest permissions: packages: write @@ -36,6 +36,30 @@ jobs: with: context: . file: ./devops/docker/frankenphp/Dockerfile - target: final + target: production push: true - tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ No newline at end of file + tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + + deploy: + name: Deploy image to host + runs-on: ubuntu-latest + environment: production + permissions: + packages: read + contents: read + steps: + - name: Deploy to Docker Host via docker-compose + uses: wshihadeh/docker-deployment-action@878e5822321b7acbcee5fe5fdb926d61d27656d6 + with: + remote_docker_host: cbag_deployer@${{ secrets.DOCKER_REMOTE_HOST}} # user@myswarm.com + #remote_docker_port: 22 + ssh_public_key: ${{ secrets.DOCKER_SSH_KNOWN_HOSTS }} + ssh_private_key: ${{ secrets.DOCKER_SSH_PRIVATE_KEY }} + deployment_mode: docker-compose + copy_stack_file: true + deploy_path: ${{ secrets.DOCKER_DEPLOY_PATH }} + stack_file_name: docker-compose.prod.yml + pull_images_first: true + keep_files: 5 + docker_prune: false + #args: my_applicaion \ No newline at end of file diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6b858b58..bb6bf55c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -16,11 +16,13 @@ jobs: uses: actions/checkout@v3 # Docs: https://github.com/shivammathur/setup-php - - name: Setup PHP - uses: shivammathur/setup-php@v2 + - name: Setup PHP Action + uses: shivammathur/setup-php@2.22.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # to not run into ratelimits with: php-version: ${{ matrix.php-versions }} - extensions: mbstring, xml, ctype, iconv, intl, pgsql + extensions: mbstring, xml, ctype, iconv, intl, pdo_pgsql coverage: xdebug - name: Get composer cache directory @@ -28,7 +30,7 @@ jobs: run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache composer dependencies - uses: actions/cache@v3 + uses: actions/cache@v3.0.11 with: path: ${{ steps.composer-cache.outputs.dir }} # Use composer.json for key, if composer.lock is not committed. diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index 6460d2a6..fedee8c8 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -1,4 +1,4 @@ -name: Context testing +name: Debug output on: push jobs: diff --git a/.gitignore b/.gitignore index c6b8784e..8ed101ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ +/devops/ci/vendor/* +/devops/ci/cache/* + ###> symfony/framework-bundle ### /.env.local /.env.local.php diff --git a/Makefile b/Makefile index 22adac02..b884c8b0 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,11 @@ install: ## install ./bin/composer install ./bin/composer install -d ./devops/ci +install-production: + composer install --no-ansi --no-dev --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader + composer dump-env prod + yarnpkg build + dev-start: ## start dev env ./bin/symfony server:start -d dev-stop: ## stop dev env @@ -75,4 +80,16 @@ test-php: ## Run tests ./vendor/bin/phpunit -c ./devops/ci/config/phpunit.xml test-php-coverage: ## Run tests with coverage - XDEBUG_MODE=coverage ./vendor/bin/phpunit -c ./devops/ci/config/phpunit.xml --coverage-text --coverage-html ./devops/ci/result/phpunit/coverage-html \ No newline at end of file + XDEBUG_MODE=coverage ./vendor/bin/phpunit -c ./devops/ci/config/phpunit.xml --coverage-text --coverage-html ./devops/ci/result/phpunit/coverage-html + +push: + docker-compose tag artefactguide ghcr.io/c-base/cbag3:latest + +build-dev: + docker build -f ./devops/docker/frankenphp/Dockerfile --target dev -t ghcr.io/c-base/cbag3:dev-latest . + +build-production: + docker build -f ./devops/docker/frankenphp/Dockerfile --target production -t ghcr.io/c-base/cbag3:prod-latest-2 . + +lint-docker: ## Lint Dockerfiles + cat ./devops/docker/frankenphp/Dockerfile | docker run --rm -i hadolint/hadolint || true \ No newline at end of file From fe931b3118918916094a648a36b7bea261d4b1fe Mon Sep 17 00:00:00 2001 From: dazz Date: Sat, 31 Dec 2022 10:20:08 +0100 Subject: [PATCH 08/28] CI: Add image to docker compose file --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6b8f3766..19e283e5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.9' services: artefactguide: - container_name: artefactguide + image: ghcr.io/c-base/cbag3:dev-latest build: dockerfile: ./devops/docker/frankenphp/Dockerfile target: dev From 26a3e75c5e7b8afeea4bbb8c413542b1a89c4215 Mon Sep 17 00:00:00 2001 From: dazz Date: Mon, 2 Jan 2023 13:15:02 +0100 Subject: [PATCH 09/28] CI: Application moved into app directory --- app/.gitignore | 35 + app/Makefile | 81 + {assets => app/assets}/App/App.css | 0 {assets => app/assets}/App/App.js | 0 {assets => app/assets}/App/actions.js | 0 {assets => app/assets}/App/middleware.js | 0 {assets => app/assets}/App/reducer.js | 0 {assets => app/assets}/App/sagas.js | 0 {assets => app/assets}/App/selectors.js | 0 .../assets}/Artefact/ArtefactCollection.js | 0 .../assets}/Artefact/ArtefactDetail.js | 2 +- .../assets}/Artefact/ArtefactSlugList.js | 0 {assets => app/assets}/Artefact/actions.js | 0 {assets => app/assets}/Artefact/reducer.js | 0 {assets => app/assets}/Artefact/sagas.js | 2 +- {assets => app/assets}/Artefact/selectors.js | 0 {assets => app/assets}/Authentication/Auth.js | 2 +- .../assets}/Authentication/actions.js | 0 .../assets}/Authentication/reducer.js | 0 .../assets}/Authentication/sagas.js | 0 .../assets}/Authentication/selectors.js | 0 {assets => app/assets}/Gallery/Gallery.js | 0 {assets => app/assets}/Gallery/ImageUpload.js | 2 +- {assets => app/assets}/Gallery/actions.js | 0 {assets => app/assets}/Gallery/reducer.js | 0 {assets => app/assets}/Gallery/sagas.js | 0 {assets => app/assets}/Gallery/selectors.js | 0 {assets => app/assets}/img/stars_only.png | Bin {assets => app/assets}/index.css | 2 +- {assets => app/assets}/index.js | 0 {assets => app/assets}/reducers.js | 0 {assets => app/assets}/sagas.js | 0 {bin => app/bin}/console | 6 +- {bin => app/bin}/phpunit | 4 +- composer.json => app/composer.json | 2 +- composer.lock => app/composer.lock | 1319 ++++++++++------- {config => app/config}/bundles.php | 0 {config => app/config}/packages/assets.yaml | 0 {config => app/config}/packages/cache.yaml | 0 .../config}/packages/dev/debug.yaml | 0 .../config}/packages/dev/monolog.yaml | 0 .../config}/packages/dev/web_profiler.yaml | 0 {config => app/config}/packages/doctrine.yaml | 0 .../config}/packages/doctrine_migrations.yaml | 0 .../config}/packages/framework.yaml | 0 .../config}/packages/knpu_oauth2_client.yaml | 0 .../config}/packages/prod/deprecations.yaml | 0 .../config}/packages/prod/doctrine.yaml | 0 .../config}/packages/prod/monolog.yaml | 0 .../config}/packages/prod/webpack_encore.yaml | 0 {config => app/config}/packages/routing.yaml | 0 {config => app/config}/packages/security.yaml | 0 .../packages/sensio_framework_extra.yaml | 0 .../config}/packages/test/doctrine.yaml | 0 .../config}/packages/test/monolog.yaml | 0 .../config}/packages/test/web_profiler.yaml | 0 .../config}/packages/test/webpack_encore.yaml | 0 {config => app/config}/packages/twig.yaml | 0 .../config}/packages/webpack_encore.yaml | 0 {config => app/config}/preload.php | 0 {config => app/config}/routes.yaml | 0 .../config}/routes/annotations.yaml | 0 .../config}/routes/dev/web_profiler.yaml | 0 {config => app/config}/routes/framework.yaml | 0 {config => app/config}/services.yaml | 0 {config => app/config}/services_test.yaml | 0 .../migrations}/Version20221027093032.php | 0 package.json => app/package.json | 0 {public => app/public}/favicon.ico | Bin {public => app/public}/index.php | 2 + .../Controller/IndexController.php | 0 .../Listener/AddResourcesToFrontendConfig.php | 0 {src => app/src}/App/Kernel.php | 0 .../ListArtefacts/ListArtefactsHandler.php | 0 .../ListArtefacts/ListArtefactsQuery.php | 0 .../Action/ListImages/ListImagesHandler.php | 0 .../Action/ListImages/ListImagesQuery.php | 0 .../UpdateArtefact/UpdateArtefactCommand.php | 0 .../UpdateArtefact/UpdateArtefactHandler.php | 0 .../Action/UploadImage/UploadImageCommand.php | 0 .../Action/UploadImage/UploadImageHandler.php | 0 .../Console/CbagRestoreCommand.php | 0 .../Application/Controller/ListArtefacts.php | 0 .../Application/Controller/ListImages.php | 0 .../Application/Controller/UpdateArtefact.php | 0 .../Application/Controller/UploadImage.php | 0 .../Listener/AddContentToFrontendConfig.php | 0 .../src}/ArtefactGuide/Domain/Artefact.php | 0 .../Domain/ArtefactCollection.php | 0 .../Domain/ArtefactRepository.php | 0 .../src}/ArtefactGuide/Domain/Image.php | 0 .../ArtefactGuide/Domain/ImageCollection.php | 0 .../ArtefactGuide/Domain/ImageRepository.php | 0 .../src}/ArtefactGuide/Domain/Licence.php | 0 .../src}/ArtefactGuide/Domain/Slug.php | 0 .../Persistence/Doctrine/ArtefactIdType.php | 0 .../Persistence/Doctrine/ImageIdType.php | 0 .../Repository/DoctrineArtefactRepository.php | 0 .../Repository/DoctrineImageRepository.php | 0 .../Application/Controller/Authenticate.php | 0 .../Listener/AddAuthToFrontendConfig.php | 0 .../src}/Authentication/Domain/User.php | 0 .../Infrastructure/OAuth2/Authenticator.php | 0 .../Infrastructure/OAuth2/Client.php | 0 .../Infrastructure/OAuth2/Provider.php | 0 .../Infrastructure/OAuth2/UserProvider.php | 0 .../Shared/Domain/Aggregate/AggregateRoot.php | 0 {src => app/src}/Shared/Domain/ArtefactId.php | 0 {src => app/src}/Shared/Domain/Collection.php | 0 .../src}/Shared/Domain/Contract/Creatable.php | 0 .../Shared/Domain/Contract/UuidCreatable.php | 0 .../src}/Shared/Domain/FrontendConfig.php | 0 {src => app/src}/Shared/Domain/ImageId.php | 0 {src => app/src}/Shared/Domain/MemberName.php | 0 .../Shared/Domain/Utils/CollectionUtils.php | 0 .../src}/Shared/Domain/Utils/StringUtils.php | 0 .../src}/Shared/Domain/UuidGenerator.php | 0 .../src}/Shared/Domain/ValueObject/Enum.php | 0 .../Domain/ValueObject/IntValueObject.php | 0 .../Domain/ValueObject/StringValueObject.php | 0 .../src}/Shared/Domain/ValueObject/Uuid.php | 0 .../Doctrine/Dbal/DoctrineCustomType.php | 0 .../Doctrine/DoctrineRepository.php | 0 .../Persistence/Doctrine/UuidType.php | 0 .../Infrastructure/RamseyUuidGenerator.php | 0 symfony.lock => app/symfony.lock | 0 .../templates}/app/index.html.twig | 0 {templates => app/templates}/base.html.twig | 0 .../ListArtefactsHandlerTest.php | 0 .../ListImages/ListImagesHandlerTest.php | 0 .../UpdateArtefactHandlerTest.php | 0 .../UploadImage/UploadImageHandlerTest.php | 0 .../Action/UploadImage/spacestation.jpg | Bin .../Domain/ArtefactCollectionTest.php | 0 .../ArtefactGuide/Domain/ArtefactTest.php | 0 .../ArtefactGuide/Domain/LicenceTest.php | 0 .../Persistence/ArtefactRepositoryTest.php | 0 .../ArtefactGuideInfrastructureTestCase.php | 0 .../Factory/ArtefactGuide/ArtefactFactory.php | 0 .../Factory/ArtefactGuide/ImageFactory.php | 0 .../tests}/Factory/FakerCapability.php | 0 .../Doctrine/InMemoryArtefactRepository.php | 0 .../Doctrine/InMemoryImageRepository.php | 0 .../tests}/Shared/Domain/CollectionTest.php | 0 .../Shared/Domain/FrontendConfigTest.php | 0 .../Domain/Utils/CollectionUtilsTest.php | 0 .../Shared/Domain/Utils/StringUtilsTest.php | 0 .../ValueObject/StringValueObjectTest.php | 0 .../Shared/Domain/ValueObject/UuidTest.php | 0 .../PhpUnit/InfrastructureTestCase.php | 0 .../Infrastructure/PhpUnit/UnitTestCase.php | 0 {tests => app/tests}/bootstrap.php | 2 +- webpack.config.js => app/webpack.config.js | 0 yarn.lock => app/yarn.lock | 0 154 files changed, 953 insertions(+), 508 deletions(-) create mode 100644 app/.gitignore create mode 100644 app/Makefile rename {assets => app/assets}/App/App.css (100%) rename {assets => app/assets}/App/App.js (100%) rename {assets => app/assets}/App/actions.js (100%) rename {assets => app/assets}/App/middleware.js (100%) rename {assets => app/assets}/App/reducer.js (100%) rename {assets => app/assets}/App/sagas.js (100%) rename {assets => app/assets}/App/selectors.js (100%) rename {assets => app/assets}/Artefact/ArtefactCollection.js (100%) rename {assets => app/assets}/Artefact/ArtefactDetail.js (99%) rename {assets => app/assets}/Artefact/ArtefactSlugList.js (100%) rename {assets => app/assets}/Artefact/actions.js (100%) rename {assets => app/assets}/Artefact/reducer.js (100%) rename {assets => app/assets}/Artefact/sagas.js (96%) rename {assets => app/assets}/Artefact/selectors.js (100%) rename {assets => app/assets}/Authentication/Auth.js (93%) rename {assets => app/assets}/Authentication/actions.js (100%) rename {assets => app/assets}/Authentication/reducer.js (100%) rename {assets => app/assets}/Authentication/sagas.js (100%) rename {assets => app/assets}/Authentication/selectors.js (100%) rename {assets => app/assets}/Gallery/Gallery.js (100%) rename {assets => app/assets}/Gallery/ImageUpload.js (98%) rename {assets => app/assets}/Gallery/actions.js (100%) rename {assets => app/assets}/Gallery/reducer.js (100%) rename {assets => app/assets}/Gallery/sagas.js (100%) rename {assets => app/assets}/Gallery/selectors.js (100%) rename {assets => app/assets}/img/stars_only.png (100%) rename {assets => app/assets}/index.css (85%) rename {assets => app/assets}/index.js (100%) rename {assets => app/assets}/reducers.js (100%) rename {assets => app/assets}/sagas.js (100%) rename {bin => app/bin}/console (66%) rename {bin => app/bin}/phpunit (76%) rename composer.json => app/composer.json (98%) rename composer.lock => app/composer.lock (89%) rename {config => app/config}/bundles.php (100%) rename {config => app/config}/packages/assets.yaml (100%) rename {config => app/config}/packages/cache.yaml (100%) rename {config => app/config}/packages/dev/debug.yaml (100%) rename {config => app/config}/packages/dev/monolog.yaml (100%) rename {config => app/config}/packages/dev/web_profiler.yaml (100%) rename {config => app/config}/packages/doctrine.yaml (100%) rename {config => app/config}/packages/doctrine_migrations.yaml (100%) rename {config => app/config}/packages/framework.yaml (100%) rename {config => app/config}/packages/knpu_oauth2_client.yaml (100%) rename {config => app/config}/packages/prod/deprecations.yaml (100%) rename {config => app/config}/packages/prod/doctrine.yaml (100%) rename {config => app/config}/packages/prod/monolog.yaml (100%) rename {config => app/config}/packages/prod/webpack_encore.yaml (100%) rename {config => app/config}/packages/routing.yaml (100%) rename {config => app/config}/packages/security.yaml (100%) rename {config => app/config}/packages/sensio_framework_extra.yaml (100%) rename {config => app/config}/packages/test/doctrine.yaml (100%) rename {config => app/config}/packages/test/monolog.yaml (100%) rename {config => app/config}/packages/test/web_profiler.yaml (100%) rename {config => app/config}/packages/test/webpack_encore.yaml (100%) rename {config => app/config}/packages/twig.yaml (100%) rename {config => app/config}/packages/webpack_encore.yaml (100%) rename {config => app/config}/preload.php (100%) rename {config => app/config}/routes.yaml (100%) rename {config => app/config}/routes/annotations.yaml (100%) rename {config => app/config}/routes/dev/web_profiler.yaml (100%) rename {config => app/config}/routes/framework.yaml (100%) rename {config => app/config}/services.yaml (100%) rename {config => app/config}/services_test.yaml (100%) rename {migrations => app/migrations}/Version20221027093032.php (100%) rename package.json => app/package.json (100%) rename {public => app/public}/favicon.ico (100%) rename {public => app/public}/index.php (77%) rename {src => app/src}/App/Application/Controller/IndexController.php (100%) rename {src => app/src}/App/Application/Listener/AddResourcesToFrontendConfig.php (100%) rename {src => app/src}/App/Kernel.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandler.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsQuery.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/ListImages/ListImagesHandler.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/ListImages/ListImagesQuery.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactCommand.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandler.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/UploadImage/UploadImageCommand.php (100%) rename {src => app/src}/ArtefactGuide/Application/Action/UploadImage/UploadImageHandler.php (100%) rename {src => app/src}/ArtefactGuide/Application/Console/CbagRestoreCommand.php (100%) rename {src => app/src}/ArtefactGuide/Application/Controller/ListArtefacts.php (100%) rename {src => app/src}/ArtefactGuide/Application/Controller/ListImages.php (100%) rename {src => app/src}/ArtefactGuide/Application/Controller/UpdateArtefact.php (100%) rename {src => app/src}/ArtefactGuide/Application/Controller/UploadImage.php (100%) rename {src => app/src}/ArtefactGuide/Application/Listener/AddContentToFrontendConfig.php (100%) rename {src => app/src}/ArtefactGuide/Domain/Artefact.php (100%) rename {src => app/src}/ArtefactGuide/Domain/ArtefactCollection.php (100%) rename {src => app/src}/ArtefactGuide/Domain/ArtefactRepository.php (100%) rename {src => app/src}/ArtefactGuide/Domain/Image.php (100%) rename {src => app/src}/ArtefactGuide/Domain/ImageCollection.php (100%) rename {src => app/src}/ArtefactGuide/Domain/ImageRepository.php (100%) rename {src => app/src}/ArtefactGuide/Domain/Licence.php (100%) rename {src => app/src}/ArtefactGuide/Domain/Slug.php (100%) rename {src => app/src}/ArtefactGuide/Infrastructure/Persistence/Doctrine/ArtefactIdType.php (100%) rename {src => app/src}/ArtefactGuide/Infrastructure/Persistence/Doctrine/ImageIdType.php (100%) rename {src => app/src}/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php (100%) rename {src => app/src}/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php (100%) rename {src => app/src}/Authentication/Application/Controller/Authenticate.php (100%) rename {src => app/src}/Authentication/Application/Listener/AddAuthToFrontendConfig.php (100%) rename {src => app/src}/Authentication/Domain/User.php (100%) rename {src => app/src}/Authentication/Infrastructure/OAuth2/Authenticator.php (100%) rename {src => app/src}/Authentication/Infrastructure/OAuth2/Client.php (100%) rename {src => app/src}/Authentication/Infrastructure/OAuth2/Provider.php (100%) rename {src => app/src}/Authentication/Infrastructure/OAuth2/UserProvider.php (100%) rename {src => app/src}/Shared/Domain/Aggregate/AggregateRoot.php (100%) rename {src => app/src}/Shared/Domain/ArtefactId.php (100%) rename {src => app/src}/Shared/Domain/Collection.php (100%) rename {src => app/src}/Shared/Domain/Contract/Creatable.php (100%) rename {src => app/src}/Shared/Domain/Contract/UuidCreatable.php (100%) rename {src => app/src}/Shared/Domain/FrontendConfig.php (100%) rename {src => app/src}/Shared/Domain/ImageId.php (100%) rename {src => app/src}/Shared/Domain/MemberName.php (100%) rename {src => app/src}/Shared/Domain/Utils/CollectionUtils.php (100%) rename {src => app/src}/Shared/Domain/Utils/StringUtils.php (100%) rename {src => app/src}/Shared/Domain/UuidGenerator.php (100%) rename {src => app/src}/Shared/Domain/ValueObject/Enum.php (100%) rename {src => app/src}/Shared/Domain/ValueObject/IntValueObject.php (100%) rename {src => app/src}/Shared/Domain/ValueObject/StringValueObject.php (100%) rename {src => app/src}/Shared/Domain/ValueObject/Uuid.php (100%) rename {src => app/src}/Shared/Infrastructure/Persistence/Doctrine/Dbal/DoctrineCustomType.php (100%) rename {src => app/src}/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php (100%) rename {src => app/src}/Shared/Infrastructure/Persistence/Doctrine/UuidType.php (100%) rename {src => app/src}/Shared/Infrastructure/RamseyUuidGenerator.php (100%) rename symfony.lock => app/symfony.lock (100%) rename {templates => app/templates}/app/index.html.twig (100%) rename {templates => app/templates}/base.html.twig (100%) rename {tests => app/tests}/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandlerTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Application/Action/ListImages/ListImagesHandlerTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Application/Action/UploadImage/spacestation.jpg (100%) rename {tests => app/tests}/ArtefactGuide/Domain/ArtefactCollectionTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Domain/ArtefactTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Domain/LicenceTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Infrastructure/Persistence/ArtefactRepositoryTest.php (100%) rename {tests => app/tests}/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php (100%) rename {tests => app/tests}/Factory/ArtefactGuide/ArtefactFactory.php (100%) rename {tests => app/tests}/Factory/ArtefactGuide/ImageFactory.php (100%) rename {tests => app/tests}/Factory/FakerCapability.php (100%) rename {tests => app/tests}/Fake/Infrastructure/Doctrine/InMemoryArtefactRepository.php (100%) rename {tests => app/tests}/Fake/Infrastructure/Doctrine/InMemoryImageRepository.php (100%) rename {tests => app/tests}/Shared/Domain/CollectionTest.php (100%) rename {tests => app/tests}/Shared/Domain/FrontendConfigTest.php (100%) rename {tests => app/tests}/Shared/Domain/Utils/CollectionUtilsTest.php (100%) rename {tests => app/tests}/Shared/Domain/Utils/StringUtilsTest.php (100%) rename {tests => app/tests}/Shared/Domain/ValueObject/StringValueObjectTest.php (100%) rename {tests => app/tests}/Shared/Domain/ValueObject/UuidTest.php (100%) rename {tests => app/tests}/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php (100%) rename {tests => app/tests}/Shared/Infrastructure/PhpUnit/UnitTestCase.php (100%) rename {tests => app/tests}/bootstrap.php (72%) rename webpack.config.js => app/webpack.config.js (100%) rename yarn.lock => app/yarn.lock (100%) diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..21195049 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,35 @@ + +/ci/vendor/* +/ci/cache/* + + +###> symfony/framework-bundle ### +/.env.local +/.env.local.php +/.env.*.local +/config/secrets/prod/prod.decrypt.private.php +/public/bundles/ +/var/ +/vendor/ +###< symfony/framework-bundle ### + +###> symfony/webpack-encore-bundle ### +/node_modules/ +/public/build/ +/public/uploads/ +npm-debug.log +yarn-error.log +###< symfony/webpack-encore-bundle ### +/.php-cs-fixer.cache + +###> symfony/phpunit-bridge ### +.phpunit.result.cache +.phpunit.cache +/phpunit.xml +###< symfony/phpunit-bridge ### + +###> phpunit/phpunit ### +/phpunit.xml +.phpunit.result.cache +.phpunit.cache +###< phpunit/phpunit ### diff --git a/app/Makefile b/app/Makefile new file mode 100644 index 00000000..47dc6d5c --- /dev/null +++ b/app/Makefile @@ -0,0 +1,81 @@ +.DEFAULT_GOAL := help +.PHONY: help + +help: ## Helping devs since 2016 + @cat $(MAKEFILE_LIST) | grep -e "^[\%a-zA-Z_\-]*: *.*## *" | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + @echo "For additional commands have a look at the Makefile" + +install: install-ci install-dev ## Install ci-tools and vendors + +install-ci: ## Install ci + composer install -d ./ci + +install-dev: ## install dev + composer install + +install-production: ## Install production + composer install --no-ansi --no-dev --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader + yarnpkg build + +install-frontend-dev: ## install frontend dev + yarnpkg encore dev + +install-frontend-prod: ## install frontend production + yarn encore production + +data-restore: ## drop and restore data + #rm -f ./migrations/* + ./bin/console doctrine:database:drop --force --quiet + ./bin/console doctrine:database:create --if-not-exists --quiet + #./bin/console doctrine:migrations:di --no-interaction --quiet + ./bin/console doctrine:migrations:migrate --no-interaction --quiet + ./bin/console cbag:restore + +database-setup: + ./bin/console doctrine:migrations:migrate + +database-dump: ## dumps database to a file + ./bin/symfony run pg_dump --data-only > var/dump.sql + +database-restore: ## restores the database from a file + ./bin/symfony run psql < var/dump.sql + +ci: composer analyze lint test ## run CI + +composer: + composer validate + composer outdated --direct + composer validate -d ./ci + composer outdated --direct -d ./ci + +analyze: analyze-phpstan ## Run all analyzer tools + +analyze-deptrac: ## Run deptrac + ./ci/vendor/bin/deptrac analyse --config-file=./ci/config/depfile.yaml --cache-file=./ci/cache/.deptrac.cache + +analyze-phpstan: ## run phpstan + php -d memory_limit=-1 ./ci/vendor/bin/phpstan analyse --configuration ./ci/config/phpstan.neon --xdebug + +analyze-phpstan-baseline: ## run phpstan and update the baseline + php -d memory_limit=-1 ./ci/vendor/bin/phpstan analyse --configuration ./ci/config/phpstan.neon --generate-baseline ./ci/config/phpstan-baseline.neon --xdebug + +analyze-rector: ## Run rector + php ./ci/vendor/bin/rector process --config=./ci/config/rector.php --xdebug --clear-cache + +lint: lint-php ## Runn all lint tools + +lint-php: ## cs fixer dry-run + PHP_CS_FIXER_IGNORE_ENV=1 ./ci/vendor/bin/php-cs-fixer fix --show-progress=dots --diff --dry-run src + PHP_CS_FIXER_IGNORE_ENV=1 ./ci/vendor/bin/php-cs-fixer fix --show-progress=dots --diff --dry-run tests + +lint-php-fix: ## cs fixer + PHP_CS_FIXER_IGNORE_ENV=1 ./ci/vendor/bin/php-cs-fixer fix --show-progress=dots --diff src + PHP_CS_FIXER_IGNORE_ENV=1 ./ci/vendor/bin/php-cs-fixer fix --show-progress=dots --diff tests + +test: test-php ## Run all tests + +test-php: ## Run tests + ./vendor/bin/phpunit -c ./ci/config/phpunit.xml + +test-php-coverage: ## Run tests with coverage + XDEBUG_MODE=coverage ./vendor/bin/phpunit -c ./ci/config/phpunit.xml --coverage-text --coverage-html ./ci/result/phpunit/coverage-html diff --git a/assets/App/App.css b/app/assets/App/App.css similarity index 100% rename from assets/App/App.css rename to app/assets/App/App.css diff --git a/assets/App/App.js b/app/assets/App/App.js similarity index 100% rename from assets/App/App.js rename to app/assets/App/App.js diff --git a/assets/App/actions.js b/app/assets/App/actions.js similarity index 100% rename from assets/App/actions.js rename to app/assets/App/actions.js diff --git a/assets/App/middleware.js b/app/assets/App/middleware.js similarity index 100% rename from assets/App/middleware.js rename to app/assets/App/middleware.js diff --git a/assets/App/reducer.js b/app/assets/App/reducer.js similarity index 100% rename from assets/App/reducer.js rename to app/assets/App/reducer.js diff --git a/assets/App/sagas.js b/app/assets/App/sagas.js similarity index 100% rename from assets/App/sagas.js rename to app/assets/App/sagas.js diff --git a/assets/App/selectors.js b/app/assets/App/selectors.js similarity index 100% rename from assets/App/selectors.js rename to app/assets/App/selectors.js diff --git a/assets/Artefact/ArtefactCollection.js b/app/assets/Artefact/ArtefactCollection.js similarity index 100% rename from assets/Artefact/ArtefactCollection.js rename to app/assets/Artefact/ArtefactCollection.js diff --git a/assets/Artefact/ArtefactDetail.js b/app/assets/Artefact/ArtefactDetail.js similarity index 99% rename from assets/Artefact/ArtefactDetail.js rename to app/assets/Artefact/ArtefactDetail.js index ec67286b..7fb4797f 100644 --- a/assets/Artefact/ArtefactDetail.js +++ b/app/assets/Artefact/ArtefactDetail.js @@ -7,7 +7,7 @@ import { assignImageToArtefact, } from './actions' import {getArtefact, getSelectedArtefact, getSelectedArtefactImageIds} from './selectors' -import { getGalleryImages } from './../Gallery/selectors' +import { getGalleryImages } from '../Gallery/selectors' import { useParams } from "react-router-dom"; import {run as runHolder} from "holderjs"; import { PhotoStar, PhotoPlus } from 'tabler-icons-react'; diff --git a/assets/Artefact/ArtefactSlugList.js b/app/assets/Artefact/ArtefactSlugList.js similarity index 100% rename from assets/Artefact/ArtefactSlugList.js rename to app/assets/Artefact/ArtefactSlugList.js diff --git a/assets/Artefact/actions.js b/app/assets/Artefact/actions.js similarity index 100% rename from assets/Artefact/actions.js rename to app/assets/Artefact/actions.js diff --git a/assets/Artefact/reducer.js b/app/assets/Artefact/reducer.js similarity index 100% rename from assets/Artefact/reducer.js rename to app/assets/Artefact/reducer.js diff --git a/assets/Artefact/sagas.js b/app/assets/Artefact/sagas.js similarity index 96% rename from assets/Artefact/sagas.js rename to app/assets/Artefact/sagas.js index b0db0c07..b00c178b 100644 --- a/assets/Artefact/sagas.js +++ b/app/assets/Artefact/sagas.js @@ -1,6 +1,6 @@ import { put, takeEvery, select } from 'redux-saga/effects' import { initArtefactCollection, initArtefactCollectionDone, updateArtefactDone, updateArtefactFailed } from './actions' -import { getResourceById } from './../App/selectors' +import { getResourceById } from '../App/selectors' import { authenticationRequired } from "../Authentication/actions"; function* fetchArtefacts() { diff --git a/assets/Artefact/selectors.js b/app/assets/Artefact/selectors.js similarity index 100% rename from assets/Artefact/selectors.js rename to app/assets/Artefact/selectors.js diff --git a/assets/Authentication/Auth.js b/app/assets/Authentication/Auth.js similarity index 93% rename from assets/Authentication/Auth.js rename to app/assets/Authentication/Auth.js index fbd389da..b108391c 100644 --- a/assets/Authentication/Auth.js +++ b/app/assets/Authentication/Auth.js @@ -2,7 +2,7 @@ import React from 'react' import { connect } from "react-redux" import { Button, Badge } from 'react-bootstrap' import { isAuthenticated, getUsername } from "./selectors" -import { getResourceById } from "./../App/selectors" +import { getResourceById } from "../App/selectors" import { User } from 'tabler-icons-react' diff --git a/assets/Authentication/actions.js b/app/assets/Authentication/actions.js similarity index 100% rename from assets/Authentication/actions.js rename to app/assets/Authentication/actions.js diff --git a/assets/Authentication/reducer.js b/app/assets/Authentication/reducer.js similarity index 100% rename from assets/Authentication/reducer.js rename to app/assets/Authentication/reducer.js diff --git a/assets/Authentication/sagas.js b/app/assets/Authentication/sagas.js similarity index 100% rename from assets/Authentication/sagas.js rename to app/assets/Authentication/sagas.js diff --git a/assets/Authentication/selectors.js b/app/assets/Authentication/selectors.js similarity index 100% rename from assets/Authentication/selectors.js rename to app/assets/Authentication/selectors.js diff --git a/assets/Gallery/Gallery.js b/app/assets/Gallery/Gallery.js similarity index 100% rename from assets/Gallery/Gallery.js rename to app/assets/Gallery/Gallery.js diff --git a/assets/Gallery/ImageUpload.js b/app/assets/Gallery/ImageUpload.js similarity index 98% rename from assets/Gallery/ImageUpload.js rename to app/assets/Gallery/ImageUpload.js index ecc1c139..4fb638b6 100644 --- a/assets/Gallery/ImageUpload.js +++ b/app/assets/Gallery/ImageUpload.js @@ -4,7 +4,7 @@ import { connect, useDispatch, useSelector } from "react-redux" import { Button, Badge, Form, FloatingLabel, Row, Col } from 'react-bootstrap' import { uploadGalleryImage } from './actions' -import { getLicences } from './../App/selectors' +import { getLicences } from '../App/selectors' function ErrorMessage({message}) { if (message === undefined) { diff --git a/assets/Gallery/actions.js b/app/assets/Gallery/actions.js similarity index 100% rename from assets/Gallery/actions.js rename to app/assets/Gallery/actions.js diff --git a/assets/Gallery/reducer.js b/app/assets/Gallery/reducer.js similarity index 100% rename from assets/Gallery/reducer.js rename to app/assets/Gallery/reducer.js diff --git a/assets/Gallery/sagas.js b/app/assets/Gallery/sagas.js similarity index 100% rename from assets/Gallery/sagas.js rename to app/assets/Gallery/sagas.js diff --git a/assets/Gallery/selectors.js b/app/assets/Gallery/selectors.js similarity index 100% rename from assets/Gallery/selectors.js rename to app/assets/Gallery/selectors.js diff --git a/assets/img/stars_only.png b/app/assets/img/stars_only.png similarity index 100% rename from assets/img/stars_only.png rename to app/assets/img/stars_only.png diff --git a/assets/index.css b/app/assets/index.css similarity index 85% rename from assets/index.css rename to app/assets/index.css index 72f76751..5c4cbe2b 100644 --- a/assets/index.css +++ b/app/assets/index.css @@ -1,7 +1,7 @@ body { margin: 0; padding: 0; - background: url(./img/stars_only.png) repeat, #020303; + background: url(img/stars_only.png) repeat, #020303; display: flex; flex-flow: column; color: #3d688f; diff --git a/assets/index.js b/app/assets/index.js similarity index 100% rename from assets/index.js rename to app/assets/index.js diff --git a/assets/reducers.js b/app/assets/reducers.js similarity index 100% rename from assets/reducers.js rename to app/assets/reducers.js diff --git a/assets/sagas.js b/app/assets/sagas.js similarity index 100% rename from assets/sagas.js rename to app/assets/sagas.js diff --git a/bin/console b/app/bin/console similarity index 66% rename from bin/console rename to app/bin/console index 7f62c95c..ef15c649 100755 --- a/bin/console +++ b/app/bin/console @@ -4,11 +4,13 @@ use Cbase\App\Kernel; use Symfony\Bundle\FrameworkBundle\Console\Application; -if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) { +$_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true; + +if (!is_file(dirname(__DIR__) . '/vendor/autoload_runtime.php')) { throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".'); } -require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; +require_once dirname(__DIR__) . '/vendor/autoload_runtime.php'; return function (array $context) { $kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); diff --git a/bin/phpunit b/app/bin/phpunit similarity index 76% rename from bin/phpunit rename to app/bin/phpunit index f26f2c72..057f61f3 100755 --- a/bin/phpunit +++ b/app/bin/phpunit @@ -5,8 +5,8 @@ if (!ini_get('date.timezone')) { ini_set('date.timezone', 'UTC'); } -if (is_file(dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit')) { - define('PHPUNIT_COMPOSER_INSTALL', dirname(__DIR__).'/vendor/autoload.php'); +if (is_file(dirname(__DIR__) . '/vendor/phpunit/phpunit/phpunit')) { + define('PHPUNIT_COMPOSER_INSTALL', dirname(__DIR__) . '/vendor/autoload.php'); require PHPUNIT_COMPOSER_INSTALL; PHPUnit\TextUI\Command::main(); } else { diff --git a/composer.json b/app/composer.json similarity index 98% rename from composer.json rename to app/composer.json index 715e3a48..fb95fc0f 100644 --- a/composer.json +++ b/app/composer.json @@ -16,7 +16,7 @@ "doctrine/doctrine-migrations-bundle": "^3.3", "doctrine/orm": "^2.14", "knpuniversity/oauth2-client-bundle": "dev-master", - "ramsey/uuid": "^5.x-dev", + "ramsey/uuid": "^4.x-dev", "runtime/frankenphp-symfony": "dev-main", "sensio/framework-extra-bundle": "^6.2", "symfony/console": "^6.3", diff --git a/composer.lock b/app/composer.lock similarity index 89% rename from composer.lock rename to app/composer.lock index 76b3aab9..8e20b6fe 100644 --- a/composer.lock +++ b/app/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4884c7e0f87b0c672c73fb2bef9bb357", + "content-hash": "671485829217b83759d6b6e61c9115d4", "packages": [ { "name": "beberlei/assert", @@ -132,20 +132,20 @@ }, { "name": "doctrine/annotations", - "version": "1.14.x-dev", + "version": "1.15.x-dev", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "8708a312e86218d1e597bffbb1e4bbd5f04daa08" + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/8708a312e86218d1e597bffbb1e4bbd5f04daa08", - "reference": "8708a312e86218d1e597bffbb1e4bbd5f04daa08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" @@ -204,7 +204,7 @@ "issues": "https://github.com/doctrine/annotations/issues", "source": "https://github.com/doctrine/annotations/tree/1.14.x" }, - "time": "2022-10-12T16:24:37+00:00" + "time": "2022-12-15T06:48:22+00:00" }, { "name": "doctrine/cache", @@ -212,12 +212,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "ccc37d458899aa4ef0f6b4fb99be5fc0be667b54" + "reference": "7e6ea80079a053064d0934d468e6c2570d59dc93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/ccc37d458899aa4ef0f6b4fb99be5fc0be667b54", - "reference": "ccc37d458899aa4ef0f6b4fb99be5fc0be667b54", + "url": "https://api.github.com/repos/doctrine/cache/zipball/7e6ea80079a053064d0934d468e6c2570d59dc93", + "reference": "7e6ea80079a053064d0934d468e6c2570d59dc93", "shasum": "" }, "require": { @@ -298,7 +298,7 @@ "type": "tidelift" } ], - "time": "2022-05-20T20:50:17+00:00" + "time": "2022-12-19T11:27:20+00:00" }, { "name": "doctrine/collections", @@ -306,12 +306,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "6dcf4033483a46fc4e1792c61f1e931aef0c4865" + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/6dcf4033483a46fc4e1792c61f1e931aef0c4865", - "reference": "6dcf4033483a46fc4e1792c61f1e931aef0c4865", + "url": "https://api.github.com/repos/doctrine/collections/zipball/db8cda536a034337f7dd63febecc713d4957f9ee", + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee", "shasum": "" }, "require": { @@ -369,7 +369,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.1.x" + "source": "https://github.com/doctrine/collections/tree/2.1.2" }, "funding": [ { @@ -385,7 +385,7 @@ "type": "tidelift" } ], - "time": "2022-11-23T21:55:25+00:00" + "time": "2022-12-27T23:41:38+00:00" }, { "name": "doctrine/common", @@ -480,16 +480,16 @@ }, { "name": "doctrine/dbal", - "version": "3.5.x-dev", + "version": "3.6.x-dev", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "82483595da680180c1d360ea7fbff1ea8fb08142" + "reference": "186a3fb37ad3486adae292ebc92c102570a611c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/82483595da680180c1d360ea7fbff1ea8fb08142", - "reference": "82483595da680180c1d360ea7fbff1ea8fb08142", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/186a3fb37ad3486adae292ebc92c102570a611c7", + "reference": "186a3fb37ad3486adae292ebc92c102570a611c7", "shasum": "" }, "require": { @@ -502,21 +502,20 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "10.0.0", - "jetbrains/phpstorm-stubs": "2022.2", - "phpstan/phpstan": "1.9.1", + "doctrine/coding-standard": "11.0.0", + "jetbrains/phpstorm-stubs": "2022.3", + "phpstan/phpstan": "1.9.4", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "9.5.26", - "psalm/plugin-phpunit": "0.18.0", + "phpunit/phpunit": "9.5.27", + "psalm/plugin-phpunit": "0.18.4", "squizlabs/php_codesniffer": "3.7.1", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", - "vimeo/psalm": "4.29.0" + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." }, - "default-branch": true, "bin": [ "bin/doctrine-dbal" ], @@ -572,7 +571,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.5.x" + "source": "https://github.com/doctrine/dbal/tree/3.6.x" }, "funding": [ { @@ -588,7 +587,7 @@ "type": "tidelift" } ], - "time": "2022-11-06T21:39:48+00:00" + "time": "2022-12-31T13:16:25+00:00" }, { "name": "doctrine/deprecations", @@ -639,58 +638,60 @@ "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "03ad8e6b848ab52e01057d25523fb9b3c2bd62d0" + "reference": "1c7a4f3a69c8f4fa31d177f5aa3cb21e4ead6756" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/03ad8e6b848ab52e01057d25523fb9b3c2bd62d0", - "reference": "03ad8e6b848ab52e01057d25523fb9b3c2bd62d0", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/1c7a4f3a69c8f4fa31d177f5aa3cb21e4ead6756", + "reference": "1c7a4f3a69c8f4fa31d177f5aa3cb21e4ead6756", "shasum": "" }, "require": { - "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", "doctrine/dbal": "^3.4.0", "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.4 || ^8.0", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/config": "^4.4.3 || ^5.4 || ^6.0", - "symfony/console": "^4.4 || ^5.4 || ^6.0", - "symfony/dependency-injection": "^4.4.18 || ^5.4 || ^6.0", + "symfony/cache": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/dependency-injection": "^5.4 || ^6.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^4.4.22 || ^5.4 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/doctrine-bridge": "^5.4.7 || ^6.0.7", + "symfony/framework-bundle": "^5.4 || ^6.0", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { + "doctrine/annotations": ">=3.0", "doctrine/orm": "<2.11 || >=3.0", "twig/twig": "<1.34 || >=2.0,<2.4" }, "require-dev": { + "doctrine/annotations": "^1 || ^2", "doctrine/coding-standard": "^9.0", "doctrine/orm": "^2.11 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^9.5.26 || ^10.0", - "psalm/plugin-phpunit": "^0.16.1", - "psalm/plugin-symfony": "^3", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^4", "psr/log": "^1.1.4 || ^2.0 || ^3.0", "symfony/phpunit-bridge": "^6.1", - "symfony/property-info": "^4.4 || ^5.4 || ^6.0", - "symfony/proxy-manager-bridge": "^4.4 || ^5.4 || ^6.0", - "symfony/security-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/twig-bridge": "^4.4 || ^5.4 || ^6.0", - "symfony/validator": "^4.4 || ^5.4 || ^6.0", - "symfony/web-profiler-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0", + "symfony/property-info": "^5.4 || ^6.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0", + "symfony/security-bundle": "^5.4 || ^6.0", + "symfony/twig-bridge": "^5.4 || ^6.0", + "symfony/validator": "^5.4 || ^6.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", - "vimeo/psalm": "^4.7" + "vimeo/psalm": "^4.30" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", "ext-pdo": "*", "symfony/web-profiler-bundle": "To use the data collector." }, + "default-branch": true, "type": "symfony-bundle", "autoload": { "psr-4": { @@ -745,7 +746,7 @@ "type": "tidelift" } ], - "time": "2022-11-16T09:04:07+00:00" + "time": "2022-12-30T13:50:50+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1017,31 +1018,32 @@ }, { "name": "doctrine/instantiator", - "version": "1.5.x-dev", + "version": "2.0.x-dev", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "be82c048640f95d3a43beb720ab411272bb1be44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/be82c048640f95d3a43beb720ab411272bb1be44", + "reference": "be82c048640f95d3a43beb720ab411272bb1be44", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -1067,7 +1069,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.x" + "source": "https://github.com/doctrine/instantiator/tree/2.0.x" }, "funding": [ { @@ -1083,20 +1085,20 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T18:52:38+00:00" }, { "name": "doctrine/lexer", - "version": "1.3.x-dev", + "version": "2.1.x-dev", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "9d695a24c351ad053f145c181c982e9db0c207e4" + "reference": "e74756f7517d72c238b9163fcd1ed54eb1f92bd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/9d695a24c351ad053f145c181c982e9db0c207e4", - "reference": "9d695a24c351ad053f145c181c982e9db0c207e4", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e74756f7517d72c238b9163fcd1ed54eb1f92bd0", + "reference": "e74756f7517d72c238b9163fcd1ed54eb1f92bd0", "shasum": "" }, "require": { @@ -1107,12 +1109,14 @@ "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1144,7 +1148,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.3.x" + "source": "https://github.com/doctrine/lexer/tree/2.1.x" }, "funding": [ { @@ -1160,7 +1164,7 @@ "type": "tidelift" } ], - "time": "2022-11-28T18:52:09+00:00" + "time": "2022-12-29T09:22:42+00:00" }, { "name": "doctrine/migrations", @@ -1168,24 +1172,24 @@ "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "1f8f6f0d656b5a73d6e56113fe0d01446147b080" + "reference": "7fa9d14fdee68edac7e2f1109d8c7c66a1414a34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/1f8f6f0d656b5a73d6e56113fe0d01446147b080", - "reference": "1f8f6f0d656b5a73d6e56113fe0d01446147b080", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/7fa9d14fdee68edac7e2f1109d8c7c66a1414a34", + "reference": "7fa9d14fdee68edac7e2f1109d8c7c66a1414a34", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.4.3", + "doctrine/dbal": "^3.5.1", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", "symfony/console": "^4.4.16 || ^5.4 || ^6.0", - "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0" + "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0", + "symfony/var-exporter": "^6.2" }, "conflict": { "doctrine/orm": "<2.12" @@ -1195,14 +1199,13 @@ "doctrine/orm": "^2.12", "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", "phpstan/phpstan": "^1.5", "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.1", "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^9.5.24", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/process": "^4.4 || ^5.4 || ^6.0", "symfony/yaml": "^4.4 || ^5.4 || ^6.0" @@ -1215,12 +1218,6 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" @@ -1269,33 +1266,33 @@ "type": "tidelift" } ], - "time": "2022-09-18T17:39:35+00:00" + "time": "2022-12-09T11:22:12+00:00" }, { "name": "doctrine/orm", - "version": "2.14.x-dev", + "version": "2.15.x-dev", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "d5ef6be4cc7a0a54534477c7b253a58099a4c079" + "reference": "10d27c18ea98d6ae1f259a59ae74d8679a5eb300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/d5ef6be4cc7a0a54534477c7b253a58099a4c079", - "reference": "d5ef6be4cc7a0a54534477c7b253a58099a4c079", + "url": "https://api.github.com/repos/doctrine/orm/zipball/10d27c18ea98d6ae1f259a59ae74d8679a5eb300", + "reference": "10d27c18ea98d6ae1f259a59ae74d8679a5eb300", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5 || ^2.0", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", "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.2.3", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^1.2.3 || ^2", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", @@ -1305,19 +1302,20 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/annotations": "<1.13 || >= 2.0" + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/annotations": "^1.13", - "doctrine/coding-standard": "^9.0.2 || ^10.0", - "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.9.2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^11.0", + "phpbench/phpbench": "^0.16.10 || ^1.0 || dev-master", + "phpstan/phpstan": "~1.4.10 || 1.9.4", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5.28@dev", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.1", "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.0.0-rc1" + "vimeo/psalm": "4.30.0 || 5.3.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1367,9 +1365,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.14.x" + "source": "https://github.com/doctrine/orm/tree/2.15.x" }, - "time": "2022-11-27T20:59:00+00:00" + "time": "2022-12-30T18:52:12+00:00" }, { "name": "doctrine/persistence", @@ -1377,12 +1375,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "2a9c70a5e21f8968c5a46b79f819ea52f322080b" + "reference": "8eb0f727f5ea07e52635a12a6fed4d3637b74b49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/2a9c70a5e21f8968c5a46b79f819ea52f322080b", - "reference": "2a9c70a5e21f8968c5a46b79f819ea52f322080b", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/8eb0f727f5ea07e52635a12a6fed4d3637b74b49", + "reference": "8eb0f727f5ea07e52635a12a6fed4d3637b74b49", "shasum": "" }, "require": { @@ -1391,20 +1389,18 @@ "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.7 || >=2.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1.7", - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.8.8", + "phpstan/phpstan": "1.9.4", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.29.0" + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { @@ -1453,7 +1449,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.1.0" + "source": "https://github.com/doctrine/persistence/tree/3.2.x" }, "funding": [ { @@ -1469,7 +1465,7 @@ "type": "tidelift" } ], - "time": "2022-11-18T14:10:19+00:00" + "time": "2022-12-19T16:51:46+00:00" }, { "name": "doctrine/sql-formatter", @@ -1826,12 +1822,12 @@ "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "67c26b443f348a51926030c83481b85718457d3d" + "reference": "ddb46aeea6423f504136cff6989ae39064301eef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", - "reference": "67c26b443f348a51926030c83481b85718457d3d", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/ddb46aeea6423f504136cff6989ae39064301eef", + "reference": "ddb46aeea6423f504136cff6989ae39064301eef", "shasum": "" }, "require": { @@ -1922,7 +1918,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.3" + "source": "https://github.com/guzzle/psr7/tree/master" }, "funding": [ { @@ -1938,7 +1934,7 @@ "type": "tidelift" } ], - "time": "2022-10-26T14:07:24+00:00" + "time": "2022-12-27T19:02:55+00:00" }, { "name": "knpuniversity/oauth2-client-bundle", @@ -1946,12 +1942,12 @@ "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "40299709691f5a22e3c7618e1b5657f17bd97d13" + "reference": "fd5092b8a4e16fb2302fd73aa66396675fc9aaad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/40299709691f5a22e3c7618e1b5657f17bd97d13", - "reference": "40299709691f5a22e3c7618e1b5657f17bd97d13", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/fd5092b8a4e16fb2302fd73aa66396675fc9aaad", + "reference": "fd5092b8a4e16fb2302fd73aa66396675fc9aaad", "shasum": "" }, "require": { @@ -1999,33 +1995,33 @@ "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues", "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/master" }, - "time": "2022-10-31T14:02:30+00:00" + "time": "2022-12-20T02:47:25+00:00" }, { "name": "laminas/laminas-code", - "version": "4.8.x-dev", + "version": "4.9.x-dev", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "224f5d71719668c0753a50df55ef6bfb7aa6b587" + "reference": "c5091bbeb44b1378b4465a52da10ef038ad2578c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/224f5d71719668c0753a50df55ef6bfb7aa6b587", - "reference": "224f5d71719668c0753a50df55ef6bfb7aa6b587", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/c5091bbeb44b1378b4465a52da10ef038ad2578c", + "reference": "c5091bbeb44b1378b4465a52da10ef038ad2578c", "shasum": "" }, "require": { - "php": "~8.1.0" + "php": "~8.1.0 || ~8.2.0" }, "require-dev": { - "doctrine/annotations": "^1.13.3", + "doctrine/annotations": "^2.0.0", "ext-phar": "*", "laminas/laminas-coding-standard": "^2.3.0", "laminas/laminas-stdlib": "^3.6.1", "phpunit/phpunit": "^9.5.26", "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^4.29.0" + "vimeo/psalm": "^5.1.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -2063,7 +2059,7 @@ "type": "community_bridge" } ], - "time": "2022-11-25T16:45:47+00:00" + "time": "2022-12-19T20:23:34+00:00" }, { "name": "league/oauth2-client", @@ -2705,24 +2701,115 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "ramsey/collection", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php81": "^1.23" + }, + "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/1.3.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-27T19:12:24+00:00" + }, { "name": "ramsey/uuid", - "version": "5.x-dev", + "version": "4.x-dev", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "b34c4c34d0c9202b0fe550a7e0dee4a67f11da83" + "reference": "8a3bbe4ac8ab5547ebf841e1d270f1dbe49a5e71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/b34c4c34d0c9202b0fe550a7e0dee4a67f11da83", - "reference": "b34c4c34d0c9202b0fe550a7e0dee4a67f11da83", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8a3bbe4ac8ab5547ebf841e1d270f1dbe49a5e71", + "reference": "8a3bbe4ac8ab5547ebf841e1d270f1dbe49a5e71", "shasum": "" }, "require": { "brick/math": "^0.8.8 || ^0.9 || ^0.10", "ext-json": "*", - "php": "^8.1" + "php": "^8.0", + "ramsey/collection": "^1.2" }, "replace": { "rhumsaa/uuid": "self.version" @@ -2734,6 +2821,7 @@ "doctrine/annotations": "^1.8", "ergebnis/composer-normalize": "^2.15", "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", "php-mock/php-mock": "^2.2", "php-mock/php-mock-mockery": "^1.3", "php-parallel-lint/php-parallel-lint": "^1.1", @@ -2742,18 +2830,20 @@ "phpstan/phpstan": "^1.8", "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.16.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.9" }, "suggest": { "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-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, + "default-branch": true, "type": "library", "extra": { "captainhook": { @@ -2780,7 +2870,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/5.x" + "source": "https://github.com/ramsey/uuid/tree/4.x" }, "funding": [ { @@ -2792,7 +2882,7 @@ "type": "tidelift" } ], - "time": "2022-09-12T22:12:23+00:00" + "time": "2022-12-22T16:38:25+00:00" }, { "name": "runtime/frankenphp-symfony", @@ -2923,6 +3013,7 @@ "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.9" }, + "abandoned": "Symfony", "time": "2022-11-01T17:17:13+00:00" }, { @@ -3003,20 +3094,20 @@ "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "64cb231dfb25677097d18503d1ad4d016b19f19c" + "reference": "ea8e6a576fac06ea73ccd0a844d015928f960131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/64cb231dfb25677097d18503d1ad4d016b19f19c", - "reference": "64cb231dfb25677097d18503d1ad4d016b19f19c", + "url": "https://api.github.com/repos/symfony/cache/zipball/ea8e6a576fac06ea73ccd0a844d015928f960131", + "reference": "ea8e6a576fac06ea73ccd0a844d015928f960131", "shasum": "" }, "require": { "php": ">=8.1", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2|^3", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/var-exporter": "^6.2" }, "conflict": { @@ -3075,7 +3166,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/6.2" + "source": "https://github.com/symfony/cache/tree/6.3" }, "funding": [ { @@ -3091,7 +3182,7 @@ "type": "tidelift" } ], - "time": "2022-11-24T11:58:37+00:00" + "time": "2022-12-29T16:29:24+00:00" }, { "name": "symfony/cache-contracts", @@ -3099,12 +3190,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "f7d00057552710222fd787b1f9d1f836a1716989" + "reference": "e8d1a5fc43534063204b74c080ebe36307d12271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/f7d00057552710222fd787b1f9d1f836a1716989", - "reference": "f7d00057552710222fd787b1f9d1f836a1716989", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/e8d1a5fc43534063204b74c080ebe36307d12271", + "reference": "e8d1a5fc43534063204b74c080ebe36307d12271", "shasum": "" }, "require": { @@ -3118,7 +3209,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -3155,7 +3246,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/main" + "source": "https://github.com/symfony/cache-contracts/tree/v3.2.0" }, "funding": [ { @@ -3171,7 +3262,7 @@ "type": "tidelift" } ], - "time": "2022-09-02T15:04:41+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/config", @@ -3179,28 +3270,29 @@ "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "ebf27792246165a2a0b6b69ec9c620cac8c5a2f0" + "reference": "acd584dd0bd0be4dd769b0e8a3df382cedaa866a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ebf27792246165a2a0b6b69ec9c620cac8c5a2f0", - "reference": "ebf27792246165a2a0b6b69ec9c620cac8c5a2f0", + "url": "https://api.github.com/repos/symfony/config/zipball/acd584dd0bd0be4dd769b0e8a3df382cedaa866a", + "reference": "acd584dd0bd0be4dd769b0e8a3df382cedaa866a", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/filesystem": "^5.4|^6.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<5.4" + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { "symfony/event-dispatcher": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", "symfony/messenger": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0" }, "suggest": { @@ -3232,7 +3324,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/v6.2.0-BETA3" + "source": "https://github.com/symfony/config/tree/6.3" }, "funding": [ { @@ -3248,7 +3340,7 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/console", @@ -3256,19 +3348,19 @@ "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "54f790fd94f1e83d7845ebb8e5f2aa252d74dc86" + "reference": "f453070a12ad80dc345901140860db2f07030e81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/54f790fd94f1e83d7845ebb8e5f2aa252d74dc86", - "reference": "54f790fd94f1e83d7845ebb8e5f2aa252d74dc86", + "url": "https://api.github.com/repos/symfony/console/zipball/f453070a12ad80dc345901140860db2f07030e81", + "reference": "f453070a12ad80dc345901140860db2f07030e81", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -3328,7 +3420,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/6.2" + "source": "https://github.com/symfony/console/tree/6.3" }, "funding": [ { @@ -3344,7 +3436,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T19:00:27+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/dependency-injection", @@ -3352,26 +3444,26 @@ "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b418d7abe51203ec92af2d37760601e55b9b83eb" + "reference": "d7ae88b09a5fdfc42e679cfe4b3ac824b857065b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b418d7abe51203ec92af2d37760601e55b9b83eb", - "reference": "b418d7abe51203ec92af2d37760601e55b9b83eb", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d7ae88b09a5fdfc42e679cfe4b3ac824b857065b", + "reference": "d7ae88b09a5fdfc42e679cfe4b3ac824b857065b", "shasum": "" }, "require": { "php": ">=8.1", "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/service-contracts": "^1.1.6|^2.0|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", "symfony/var-exporter": "^6.2" }, "conflict": { "ext-psr": "<1.1|>=2", "symfony/config": "<6.1", "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.2", + "symfony/proxy-manager-bridge": "<6.3", "symfony/yaml": "<5.4" }, "provide": { @@ -3387,7 +3479,6 @@ "symfony/config": "", "symfony/expression-language": "For using expressions in service container configuration", "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", "symfony/yaml": "" }, "type": "library", @@ -3432,7 +3523,7 @@ "type": "tidelift" } ], - "time": "2022-11-26T09:23:15+00:00" + "time": "2022-12-29T13:34:15+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3440,12 +3531,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "dc6c2f7633f6ed7d518c285f5772fff7fdf815e7" + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/dc6c2f7633f6ed7d518c285f5772fff7fdf815e7", - "reference": "dc6c2f7633f6ed7d518c285f5772fff7fdf815e7", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", "shasum": "" }, "require": { @@ -3455,7 +3546,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -3484,7 +3575,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/main" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" }, "funding": [ { @@ -3500,7 +3591,7 @@ "type": "tidelift" } ], - "time": "2022-07-29T11:13:32+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/doctrine-bridge", @@ -3508,31 +3599,33 @@ "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "11c13fff0cd2fe1528ea1e60638fb23c9a0c748f" + "reference": "86c54db49c53411683dd0013834740ad0438e911" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/11c13fff0cd2fe1528ea1e60638fb23c9a0c748f", - "reference": "11c13fff0cd2fe1528ea1e60638fb23c9a0c748f", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/86c54db49c53411683dd0013834740ad0438e911", + "reference": "86c54db49c53411683dd0013834740ad0438e911", "shasum": "" }, "require": { "doctrine/event-manager": "^1.2|^2", "doctrine/persistence": "^2|^3", "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "doctrine/annotations": "<1.13.1", "doctrine/dbal": "<2.13.1", "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.7.4", + "doctrine/orm": "<2.12", "phpunit/phpunit": "<5.4.3", "symfony/cache": "<5.4", - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.2", "symfony/form": "<5.4", + "symfony/http-foundation": "<6.3", "symfony/http-kernel": "<6.2", "symfony/messenger": "<5.4", "symfony/property-info": "<5.4", @@ -3541,15 +3634,15 @@ "symfony/validator": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.13.1|^2", "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", "doctrine/dbal": "^2.13.1|^3.0", - "doctrine/orm": "^2.7.4", + "doctrine/orm": "^2.12", "psr/log": "^1|^2|^3", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", + "symfony/dependency-injection": "^6.2", "symfony/doctrine-messenger": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/form": "^5.4.9|^6.0.9", @@ -3599,7 +3692,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/6.2" + "source": "https://github.com/symfony/doctrine-bridge/tree/6.3" }, "funding": [ { @@ -3615,7 +3708,7 @@ "type": "tidelift" } ], - "time": "2022-11-28T12:28:19+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/dotenv", @@ -3697,12 +3790,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "d9894724a9d20afd3329e36b36e45835b5c2ab3e" + "reference": "fb6a7ed7098e011379b89b2bd8cf89bb09445390" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/d9894724a9d20afd3329e36b36e45835b5c2ab3e", - "reference": "d9894724a9d20afd3329e36b36e45835b5c2ab3e", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/fb6a7ed7098e011379b89b2bd8cf89bb09445390", + "reference": "fb6a7ed7098e011379b89b2bd8cf89bb09445390", "shasum": "" }, "require": { @@ -3710,8 +3803,11 @@ "psr/log": "^1|^2|^3", "symfony/var-dumper": "^5.4|^6.0" }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0" }, @@ -3744,7 +3840,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/v6.2.0-BETA3" + "source": "https://github.com/symfony/error-handler/tree/6.3" }, "funding": [ { @@ -3760,7 +3856,7 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/event-dispatcher", @@ -3768,20 +3864,21 @@ "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9efb1618fabee89515fe031314e8ed5625f85a53" + "reference": "66ff08dd0b2ab0ea7af595174f4ee966d56607db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9efb1618fabee89515fe031314e8ed5625f85a53", - "reference": "9efb1618fabee89515fe031314e8ed5625f85a53", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/66ff08dd0b2ab0ea7af595174f4ee966d56607db", + "reference": "66ff08dd0b2ab0ea7af595174f4ee966d56607db", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -3794,7 +3891,7 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, "suggest": { @@ -3827,7 +3924,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/v6.2.0-BETA3" + "source": "https://github.com/symfony/event-dispatcher/tree/6.3" }, "funding": [ { @@ -3843,7 +3940,7 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3851,12 +3948,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "aed7f3a79a01a8c1f1d8b2b5d0446c99e73d1a3a" + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aed7f3a79a01a8c1f1d8b2b5d0446c99e73d1a3a", - "reference": "aed7f3a79a01a8c1f1d8b2b5d0446c99e73d1a3a", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae", + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae", "shasum": "" }, "require": { @@ -3870,7 +3967,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -3907,7 +4004,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/main" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0" }, "funding": [ { @@ -3923,7 +4020,7 @@ "type": "tidelift" } ], - "time": "2022-08-25T15:27:04+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/filesystem", @@ -3994,12 +4091,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "eb2355f69519e4ef33f1835bca4c935f5d42e570" + "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/eb2355f69519e4ef33f1835bca4c935f5d42e570", - "reference": "eb2355f69519e4ef33f1835bca4c935f5d42e570", + "url": "https://api.github.com/repos/symfony/finder/zipball/81eefbddfde282ee33b437ba5e13d7753211ae8e", + "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e", "shasum": "" }, "require": { @@ -4034,7 +4131,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.0-BETA1" + "source": "https://github.com/symfony/finder/tree/6.2" }, "funding": [ { @@ -4050,7 +4147,7 @@ "type": "tidelift" } ], - "time": "2022-10-09T08:55:40+00:00" + "time": "2022-12-22T17:55:15+00:00" }, { "name": "symfony/flex", @@ -4058,12 +4155,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "876d61c5bc850b0fdf482dd586311fd2e8a9936e" + "reference": "52baff1adb29faf443c6710cb775bd88b9627381" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/876d61c5bc850b0fdf482dd586311fd2e8a9936e", - "reference": "876d61c5bc850b0fdf482dd586311fd2e8a9936e", + "url": "https://api.github.com/repos/symfony/flex/zipball/52baff1adb29faf443c6710cb775bd88b9627381", + "reference": "52baff1adb29faf443c6710cb775bd88b9627381", "shasum": "" }, "require": { @@ -4115,7 +4212,7 @@ "type": "tidelift" } ], - "time": "2022-11-22T07:41:35+00:00" + "time": "2022-12-20T07:19:39+00:00" }, { "name": "symfony/framework-bundle", @@ -4123,12 +4220,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "e6545946a969a05b81a24e2528e3ac74659b61df" + "reference": "5667705e65e905ba0cfdbf27746bc605274da222" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/e6545946a969a05b81a24e2528e3ac74659b61df", - "reference": "e6545946a969a05b81a24e2528e3ac74659b61df", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/5667705e65e905ba0cfdbf27746bc605274da222", + "reference": "5667705e65e905ba0cfdbf27746bc605274da222", "shasum": "" }, "require": { @@ -4138,13 +4235,13 @@ "symfony/cache": "^5.4|^6.0", "symfony/config": "^6.1", "symfony/dependency-injection": "^6.2", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.1", "symfony/event-dispatcher": "^5.4|^6.0", "symfony/filesystem": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2", + "symfony/http-kernel": "^6.2.1", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^5.4|^6.0" }, @@ -4155,6 +4252,7 @@ "phpdocumentor/type-resolver": "<1.4.0", "phpunit/phpunit": "<5.4.3", "symfony/asset": "<5.4", + "symfony/clock": "<6.3", "symfony/console": "<5.4", "symfony/dom-crawler": "<5.4", "symfony/dotenv": "<5.4", @@ -4162,7 +4260,7 @@ "symfony/http-client": "<5.4", "symfony/lock": "<5.4", "symfony/mailer": "<5.4", - "symfony/messenger": "<6.2", + "symfony/messenger": "<6.3", "symfony/mime": "<6.2", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", @@ -4178,14 +4276,14 @@ "symfony/workflow": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.13.1", + "doctrine/annotations": "^1.13.1|^2", "doctrine/persistence": "^1.3|^2|^3", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/asset": "^5.4|^6.0", "symfony/browser-kit": "^5.4|^6.0", "symfony/console": "^5.4.9|^6.0.9", "symfony/css-selector": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", + "symfony/dom-crawler": "^6.3", "symfony/dotenv": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/form": "^5.4|^6.0", @@ -4193,7 +4291,7 @@ "symfony/http-client": "^5.4|^6.0", "symfony/lock": "^5.4|^6.0", "symfony/mailer": "^5.4|^6.0", - "symfony/messenger": "^6.2", + "symfony/messenger": "^6.3", "symfony/mime": "^6.2", "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", @@ -4250,7 +4348,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/6.2" + "source": "https://github.com/symfony/framework-bundle/tree/6.3" }, "funding": [ { @@ -4266,7 +4364,7 @@ "type": "tidelift" } ], - "time": "2022-11-28T10:27:48+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/http-foundation", @@ -4274,23 +4372,25 @@ "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "edc56ed49a2955383d59e9b7043fd3bbc26f1854" + "reference": "5018a632c53587f68a2071bf53219b28532595ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/edc56ed49a2955383d59e9b7043fd3bbc26f1854", - "reference": "edc56ed49a2955383d59e9b7043fd3bbc26f1854", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5018a632c53587f68a2071bf53219b28532595ca", + "reference": "5018a632c53587f68a2071bf53219b28532595ca", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "conflict": { "symfony/cache": "<6.2" }, "require-dev": { + "doctrine/dbal": "^2.13.1|^3.0", "predis/predis": "~1.0", "symfony/cache": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", @@ -4328,7 +4428,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/6.2" + "source": "https://github.com/symfony/http-foundation/tree/6.3" }, "funding": [ { @@ -4344,7 +4444,7 @@ "type": "tidelift" } ], - "time": "2022-11-21T16:03:04+00:00" + "time": "2022-12-29T13:44:53+00:00" }, { "name": "symfony/http-kernel", @@ -4352,18 +4452,18 @@ "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b0b729fba73ec3bb1a43aa46957b817d4c626af4" + "reference": "86261d90ed549c460bc986548feb142c2daa5e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b0b729fba73ec3bb1a43aa46957b817d4c626af4", - "reference": "b0b729fba73ec3bb1a43aa46957b817d4c626af4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/86261d90ed549c460bc986548feb142c2daa5e4b", + "reference": "86261d90ed549c460bc986548feb142c2daa5e4b", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.1", "symfony/event-dispatcher": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", @@ -4378,9 +4478,11 @@ "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", "symfony/validator": "<5.4", "twig/twig": "<2.13" @@ -4391,6 +4493,7 @@ "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", @@ -4398,12 +4501,12 @@ "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^5.4|^6.0", "symfony/routing": "^5.4|^6.0", "symfony/stopwatch": "^5.4|^6.0", "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, @@ -4455,7 +4558,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T09:27:18+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/mime", @@ -4463,12 +4566,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "1e8005a7cbd79fb824ad81308ef2a76592a08bc0" + "reference": "8c98bf40406e791043890a163f6f6599b9cfa1ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/1e8005a7cbd79fb824ad81308ef2a76592a08bc0", - "reference": "1e8005a7cbd79fb824ad81308ef2a76592a08bc0", + "url": "https://api.github.com/repos/symfony/mime/zipball/8c98bf40406e791043890a163f6f6599b9cfa1ed", + "reference": "8c98bf40406e791043890a163f6f6599b9cfa1ed", "shasum": "" }, "require": { @@ -4538,7 +4641,7 @@ "type": "tidelift" } ], - "time": "2022-11-28T12:28:19+00:00" + "time": "2022-12-14T16:38:10+00:00" }, { "name": "symfony/monolog-bridge", @@ -4546,19 +4649,19 @@ "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "a549937e3d2da2753fdf816b05cc4fec8e5d68da" + "reference": "cd70bec6170593e89f60378b7bed755cb11b3dac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/a549937e3d2da2753fdf816b05cc4fec8e5d68da", - "reference": "a549937e3d2da2753fdf816b05cc4fec8e5d68da", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/cd70bec6170593e89f60378b7bed755cb11b3dac", + "reference": "cd70bec6170593e89f60378b7bed755cb11b3dac", "shasum": "" }, "require": { "monolog/monolog": "^1.25.1|^2|^3", "php": ">=8.1", "symfony/http-kernel": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/console": "<5.4", @@ -4605,7 +4708,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.2.0-BETA1" + "source": "https://github.com/symfony/monolog-bridge/tree/6.3" }, "funding": [ { @@ -4621,7 +4724,7 @@ "type": "tidelift" } ], - "time": "2022-10-20T07:00:24+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/monolog-bundle", @@ -4629,12 +4732,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "reference": "aca8fb9efd1dc2d38d7b73b32bcece9372b95a47" }, "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/aca8fb9efd1dc2d38d7b73b32bcece9372b95a47", + "reference": "aca8fb9efd1dc2d38d7b73b32bcece9372b95a47", "shasum": "" }, "require": { @@ -4687,7 +4790,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/master" }, "funding": [ { @@ -4703,7 +4806,7 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2022-12-05T13:49:44+00:00" }, { "name": "symfony/password-hasher", @@ -5200,23 +5303,181 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/polyfill-php81", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "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 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/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-php83", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "c3c1a89daffd479eb4b0ed46294818d11c0d300d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/c3c1a89daffd479eb4b0ed46294818d11c0d300d", + "reference": "c3c1a89daffd479eb4b0ed46294818d11c0d300d", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + } + }, + "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 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/main" + }, + "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-12-01T13:47:09+00:00" + }, { "name": "symfony/property-access", "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "ed937ca8e103fdcefb43020c8784f87d3e5d09c3" + "reference": "acc5dcb8d10bcc3d796e1e756accc052c847fde8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/ed937ca8e103fdcefb43020c8784f87d3e5d09c3", - "reference": "ed937ca8e103fdcefb43020c8784f87d3e5d09c3", + "url": "https://api.github.com/repos/symfony/property-access/zipball/acc5dcb8d10bcc3d796e1e756accc052c847fde8", + "reference": "acc5dcb8d10bcc3d796e1e756accc052c847fde8", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/property-info": "^5.4|^6.0" }, "require-dev": { @@ -5262,7 +5523,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.2.0-BETA2" + "source": "https://github.com/symfony/property-access/tree/6.3" }, "funding": [ { @@ -5278,7 +5539,7 @@ "type": "tidelift" } ], - "time": "2022-10-28T16:24:13+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/property-info", @@ -5286,12 +5547,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "ddfa5c49812d7bcfea21f9ad5341092daa82e4cc" + "reference": "b4cbbbcc8679460cfeb1d5bdcb8127a2e85c376c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/ddfa5c49812d7bcfea21f9ad5341092daa82e4cc", - "reference": "ddfa5c49812d7bcfea21f9ad5341092daa82e4cc", + "url": "https://api.github.com/repos/symfony/property-info/zipball/b4cbbbcc8679460cfeb1d5bdcb8127a2e85c376c", + "reference": "b4cbbbcc8679460cfeb1d5bdcb8127a2e85c376c", "shasum": "" }, "require": { @@ -5304,7 +5565,7 @@ "symfony/dependency-injection": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0", "symfony/cache": "^5.4|^6.0", @@ -5351,7 +5612,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/6.2" + "source": "https://github.com/symfony/property-info/tree/6.3" }, "funding": [ { @@ -5367,7 +5628,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T07:37:13+00:00" + "time": "2022-12-20T16:41:15+00:00" }, { "name": "symfony/proxy-manager-bridge", @@ -5375,18 +5636,19 @@ "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "8d26854dc5a5152832be9fd0956f7d4d4fec3498" + "reference": "4d4105f10521d9fa60beb8cae50c9e4f6a485348" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/8d26854dc5a5152832be9fd0956f7d4d4fec3498", - "reference": "8d26854dc5a5152832be9fd0956f7d4d4fec3498", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/4d4105f10521d9fa60beb8cae50c9e4f6a485348", + "reference": "4d4105f10521d9fa60beb8cae50c9e4f6a485348", "shasum": "" }, "require": { "friendsofphp/proxy-manager-lts": "^1.0.2", "php": ">=8.1", - "symfony/dependency-injection": "^6.2" + "symfony/dependency-injection": "^6.3", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { "symfony/config": "^6.1" @@ -5417,7 +5679,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.2.0-BETA1" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/6.3" }, "funding": [ { @@ -5433,7 +5695,7 @@ "type": "tidelift" } ], - "time": "2022-09-05T13:58:42+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/routing", @@ -5441,12 +5703,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "857ac6f4df371470fbdefa2f5967a2618dbf1852" + "reference": "3ecde5bf1fca49663857f339c36cb216b0bc6437" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/857ac6f4df371470fbdefa2f5967a2618dbf1852", - "reference": "857ac6f4df371470fbdefa2f5967a2618dbf1852", + "url": "https://api.github.com/repos/symfony/routing/zipball/3ecde5bf1fca49663857f339c36cb216b0bc6437", + "reference": "3ecde5bf1fca49663857f339c36cb216b0bc6437", "shasum": "" }, "require": { @@ -5459,7 +5721,7 @@ "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", "symfony/config": "^6.2", "symfony/dependency-injection": "^5.4|^6.0", @@ -5505,7 +5767,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.0-BETA3" + "source": "https://github.com/symfony/routing/tree/6.3" }, "funding": [ { @@ -5521,7 +5783,7 @@ "type": "tidelift" } ], - "time": "2022-11-09T13:28:29+00:00" + "time": "2022-12-22T14:38:49+00:00" }, { "name": "symfony/runtime", @@ -5605,12 +5867,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "7de7c361b29986d87bccfb7c53b133eab858dc3e" + "reference": "8a1c1db930a0e98fcdc6ab5218d161d597040372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/7de7c361b29986d87bccfb7c53b133eab858dc3e", - "reference": "7de7c361b29986d87bccfb7c53b133eab858dc3e", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/8a1c1db930a0e98fcdc6ab5218d161d597040372", + "reference": "8a1c1db930a0e98fcdc6ab5218d161d597040372", "shasum": "" }, "require": { @@ -5635,7 +5897,7 @@ "symfony/twig-bundle": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "symfony/asset": "^5.4|^6.0", "symfony/browser-kit": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", @@ -5697,7 +5959,7 @@ "type": "tidelift" } ], - "time": "2022-11-28T12:28:29+00:00" + "time": "2022-12-22T17:55:28+00:00" }, { "name": "symfony/security-core", @@ -5705,19 +5967,19 @@ "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "aa8d792c3f4fd48f64e4be8f426a220c8fc8ac14" + "reference": "79419c487fc5a601876fd9ffcbf000828b5471ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/aa8d792c3f4fd48f64e4be8f426a220c8fc8ac14", - "reference": "aa8d792c3f4fd48f64e4be8f426a220c8fc8ac14", + "url": "https://api.github.com/repos/symfony/security-core/zipball/79419c487fc5a601876fd9ffcbf000828b5471ae", + "reference": "79419c487fc5a601876fd9ffcbf000828b5471ae", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^1.1|^2|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3", "symfony/password-hasher": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.6|^2|^3" + "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/event-dispatcher": "<5.4", @@ -5772,7 +6034,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.2.0-BETA3" + "source": "https://github.com/symfony/security-core/tree/6.3" }, "funding": [ { @@ -5788,7 +6050,7 @@ "type": "tidelift" } ], - "time": "2022-11-18T07:19:04+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/security-csrf", @@ -5867,17 +6129,17 @@ "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "5bfd903d3bb1a582b0d4c9b912ce09e1c4cff01c" + "reference": "34467ee92d9fd283ff3820b7d22b2d45ca834bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/5bfd903d3bb1a582b0d4c9b912ce09e1c4cff01c", - "reference": "5bfd903d3bb1a582b0d4c9b912ce09e1c4cff01c", + "url": "https://api.github.com/repos/symfony/security-http/zipball/34467ee92d9fd283ff3820b7d22b2d45ca834bf0", + "reference": "34467ee92d9fd283ff3820b7d22b2d45ca834bf0", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-foundation": "^5.4|^6.0", "symfony/http-kernel": "^6.2", "symfony/polyfill-mbstring": "~1.0", @@ -5928,7 +6190,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/6.2" + "source": "https://github.com/symfony/security-http/tree/6.3" }, "funding": [ { @@ -5944,7 +6206,7 @@ "type": "tidelift" } ], - "time": "2022-11-24T13:34:45+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/serializer", @@ -5952,12 +6214,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "cf8df288db70003681b729b87a022d436b81035f" + "reference": "3eb456ca5a0a2395c1a2a374f66e311c59e91941" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/cf8df288db70003681b729b87a022d436b81035f", - "reference": "cf8df288db70003681b729b87a022d436b81035f", + "url": "https://api.github.com/repos/symfony/serializer/zipball/3eb456ca5a0a2395c1a2a374f66e311c59e91941", + "reference": "3eb456ca5a0a2395c1a2a374f66e311c59e91941", "shasum": "" }, "require": { @@ -5967,7 +6229,7 @@ "conflict": { "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/type-resolver": "<1.4.0|>=1.7.0", "symfony/dependency-injection": "<5.4", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", @@ -5975,7 +6237,7 @@ "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", @@ -6029,7 +6291,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/v6.2.0-BETA3" + "source": "https://github.com/symfony/serializer/tree/6.3" }, "funding": [ { @@ -6045,7 +6307,7 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2022-12-20T16:41:47+00:00" }, { "name": "symfony/service-contracts", @@ -6053,12 +6315,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "3d6faa9b58ecbe38c85a64caac0508e503475276" + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/3d6faa9b58ecbe38c85a64caac0508e503475276", - "reference": "3d6faa9b58ecbe38c85a64caac0508e503475276", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75", + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75", "shasum": "" }, "require": { @@ -6075,7 +6337,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -6115,7 +6377,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/main" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.0" }, "funding": [ { @@ -6131,7 +6393,7 @@ "type": "tidelift" } ], - "time": "2022-08-25T15:27:04+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/stopwatch", @@ -6139,17 +6401,17 @@ "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "266636bb8f3fbdccc302491df7b3a1b9a8c238a7" + "reference": "569c0411d7d1c9ec1f9a51707d683f4880ba0f01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/266636bb8f3fbdccc302491df7b3a1b9a8c238a7", - "reference": "266636bb8f3fbdccc302491df7b3a1b9a8c238a7", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/569c0411d7d1c9ec1f9a51707d683f4880ba0f01", + "reference": "569c0411d7d1c9ec1f9a51707d683f4880ba0f01", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/service-contracts": "^1|^2|^3" + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -6177,7 +6439,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.2.0-BETA1" + "source": "https://github.com/symfony/stopwatch/tree/6.3" }, "funding": [ { @@ -6193,7 +6455,7 @@ "type": "tidelift" } ], - "time": "2022-09-28T16:00:52+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/string", @@ -6201,12 +6463,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ba9fd9b020a450d07d02972a3d450d7895f14066" + "reference": "d0bd9e0cb4c307c9a25b711995c21252e9285ebf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ba9fd9b020a450d07d02972a3d450d7895f14066", - "reference": "ba9fd9b020a450d07d02972a3d450d7895f14066", + "url": "https://api.github.com/repos/symfony/string/zipball/d0bd9e0cb4c307c9a25b711995c21252e9285ebf", + "reference": "d0bd9e0cb4c307c9a25b711995c21252e9285ebf", "shasum": "" }, "require": { @@ -6217,13 +6479,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -6263,7 +6525,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.0-BETA3" + "source": "https://github.com/symfony/string/tree/6.3" }, "funding": [ { @@ -6279,7 +6541,7 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/translation-contracts", @@ -6287,12 +6549,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "6c828f3d272ff0767e31e27c8ce5d2b51038f251" + "reference": "68cce71402305a015f8c1589bfada1280dc64fe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/6c828f3d272ff0767e31e27c8ce5d2b51038f251", - "reference": "6c828f3d272ff0767e31e27c8ce5d2b51038f251", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/68cce71402305a015f8c1589bfada1280dc64fe7", + "reference": "68cce71402305a015f8c1589bfada1280dc64fe7", "shasum": "" }, "require": { @@ -6305,7 +6567,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -6345,7 +6607,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/main" + "source": "https://github.com/symfony/translation-contracts/tree/v3.2.0" }, "funding": [ { @@ -6361,7 +6623,7 @@ "type": "tidelift" } ], - "time": "2022-10-28T16:24:13+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/twig-bridge", @@ -6369,17 +6631,17 @@ "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "45f9070b3409871237782135330acd7cc7d39b42" + "reference": "57333eebae3fd73ce2bffa5757552c3635d1398b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/45f9070b3409871237782135330acd7cc7d39b42", - "reference": "45f9070b3409871237782135330acd7cc7d39b42", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/57333eebae3fd73ce2bffa5757552c3635d1398b", + "reference": "57333eebae3fd73ce2bffa5757552c3635d1398b", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { @@ -6394,7 +6656,7 @@ "symfony/workflow": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "egulias/email-validator": "^2.1.10|^3", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", @@ -6469,7 +6731,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.2.0-BETA3" + "source": "https://github.com/symfony/twig-bridge/tree/6.3" }, "funding": [ { @@ -6485,7 +6747,7 @@ "type": "tidelift" } ], - "time": "2022-11-04T07:42:34+00:00" + "time": "2022-12-28T14:47:09+00:00" }, { "name": "symfony/twig-bundle", @@ -6493,12 +6755,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "d1dfb3c8fbe7e70cef86a8940f6a86544c99e9b1" + "reference": "8f1acc9dcf9a0af2ec00d0ed43caea2f6233e076" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d1dfb3c8fbe7e70cef86a8940f6a86544c99e9b1", - "reference": "d1dfb3c8fbe7e70cef86a8940f6a86544c99e9b1", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/8f1acc9dcf9a0af2ec00d0ed43caea2f6233e076", + "reference": "8f1acc9dcf9a0af2ec00d0ed43caea2f6233e076", "shasum": "" }, "require": { @@ -6516,7 +6778,7 @@ "symfony/translation": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "symfony/asset": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", @@ -6554,7 +6816,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/v6.2.0-BETA1" + "source": "https://github.com/symfony/twig-bundle/tree/6.3" }, "funding": [ { @@ -6570,7 +6832,7 @@ "type": "tidelift" } ], - "time": "2022-09-13T06:25:34+00:00" + "time": "2022-12-20T16:41:47+00:00" }, { "name": "symfony/var-dumper", @@ -6578,12 +6840,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "eefb4e899f77fc9d7271072ab213d17d09bb4d52" + "reference": "0dd4f98c4d1227857ad66cb8dca178a594745990" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/eefb4e899f77fc9d7271072ab213d17d09bb4d52", - "reference": "eefb4e899f77fc9d7271072ab213d17d09bb4d52", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0dd4f98c4d1227857ad66cb8dca178a594745990", + "reference": "0dd4f98c4d1227857ad66cb8dca178a594745990", "shasum": "" }, "require": { @@ -6642,7 +6904,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.0-BETA3" + "source": "https://github.com/symfony/var-dumper/tree/6.3" }, "funding": [ { @@ -6658,7 +6920,7 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2022-12-22T17:55:28+00:00" }, { "name": "symfony/var-exporter", @@ -6666,12 +6928,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0437f26ca0c648071cc15ddacd26152cc65f4cd6" + "reference": "d055d12b20b42e407e607460e7552a1fe6d27f08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0437f26ca0c648071cc15ddacd26152cc65f4cd6", - "reference": "0437f26ca0c648071cc15ddacd26152cc65f4cd6", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d055d12b20b42e407e607460e7552a1fe6d27f08", + "reference": "d055d12b20b42e407e607460e7552a1fe6d27f08", "shasum": "" }, "require": { @@ -6732,7 +6994,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T08:33:31+00:00" + "time": "2022-12-22T17:55:15+00:00" }, { "name": "symfony/webpack-encore-bundle", @@ -6813,12 +7075,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "f2570f21bd4adc3589aa3133323273995109bae0" + "reference": "240ccc237b59b38c6efda123ad64c2c1f67bfff7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/f2570f21bd4adc3589aa3133323273995109bae0", - "reference": "f2570f21bd4adc3589aa3133323273995109bae0", + "url": "https://api.github.com/repos/symfony/yaml/zipball/240ccc237b59b38c6efda123ad64c2c1f67bfff7", + "reference": "240ccc237b59b38c6efda123ad64c2c1f67bfff7", "shasum": "" }, "require": { @@ -6863,7 +7125,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/6.2" + "source": "https://github.com/symfony/yaml/tree/6.3" }, "funding": [ { @@ -6879,7 +7141,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T19:00:27+00:00" + "time": "2022-12-19T08:23:22+00:00" }, { "name": "twig/extra-bundle", @@ -6887,12 +7149,12 @@ "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "2e58256b0e9fe52f30149347c0547e4633304765" + "reference": "edfcdbdc943b52101011d57ec546af393dc56537" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/2e58256b0e9fe52f30149347c0547e4633304765", - "reference": "2e58256b0e9fe52f30149347c0547e4633304765", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/edfcdbdc943b52101011d57ec546af393dc56537", + "reference": "edfcdbdc943b52101011d57ec546af393dc56537", "shasum": "" }, "require": { @@ -6915,7 +7177,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.5-dev" } }, "autoload": { @@ -6958,7 +7220,7 @@ "type": "tidelift" } ], - "time": "2022-01-04T13:58:53+00:00" + "time": "2022-12-27T12:23:36+00:00" }, { "name": "twig/twig", @@ -6966,12 +7228,12 @@ "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "b5ec7ab1cdfebf3e0ab0a5fddc342dbd903763fa" + "reference": "7b4d2a69f3a80dfaa6e9aaf17c14bde7eaf5fb96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/b5ec7ab1cdfebf3e0ab0a5fddc342dbd903763fa", - "reference": "b5ec7ab1cdfebf3e0ab0a5fddc342dbd903763fa", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7b4d2a69f3a80dfaa6e9aaf17c14bde7eaf5fb96", + "reference": "7b4d2a69f3a80dfaa6e9aaf17c14bde7eaf5fb96", "shasum": "" }, "require": { @@ -6987,7 +7249,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "3.5-dev" } }, "autoload": { @@ -7035,7 +7297,7 @@ "type": "tidelift" } ], - "time": "2022-11-18T09:55:04+00:00" + "time": "2022-12-28T13:50:47+00:00" } ], "packages-dev": [ @@ -7045,16 +7307,16 @@ "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "504778e7b251241f15c03638a517cc9aa3b7b1f1" + "reference": "d571441810ad98f689e86d7cfc8865743aa477e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/504778e7b251241f15c03638a517cc9aa3b7b1f1", - "reference": "504778e7b251241f15c03638a517cc9aa3b7b1f1", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d571441810ad98f689e86d7cfc8865743aa477e2", + "reference": "d571441810ad98f689e86d7cfc8865743aa477e2", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -7065,7 +7327,8 @@ "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", @@ -7078,7 +7341,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.20-dev" + "dev-main": "v1.21-dev" } }, "autoload": { @@ -7105,7 +7368,7 @@ "issues": "https://github.com/FakerPHP/Faker/issues", "source": "https://github.com/FakerPHP/Faker/tree/main" }, - "time": "2022-11-11T21:58:05+00:00" + "time": "2022-12-13T16:22:28+00:00" }, { "name": "masterminds/html5", @@ -7243,12 +7506,12 @@ "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1df465cd901414affcf9a04ef041cf3aedad73b1" + "reference": "3182d12b55895a2e71ed6684f9bd5cd13527e94e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1df465cd901414affcf9a04ef041cf3aedad73b1", - "reference": "1df465cd901414affcf9a04ef041cf3aedad73b1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3182d12b55895a2e71ed6684f9bd5cd13527e94e", + "reference": "3182d12b55895a2e71ed6684f9bd5cd13527e94e", "shasum": "" }, "require": { @@ -7292,7 +7555,7 @@ "issues": "https://github.com/nikic/PHP-Parser/issues", "source": "https://github.com/nikic/PHP-Parser/tree/4.x" }, - "time": "2022-11-13T15:33:17+00:00" + "time": "2022-12-14T20:51:15+00:00" }, { "name": "nyholm/nsa", @@ -7477,12 +7740,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ece01403be5bb259a71f6037054be51d0aa7d450" + "reference": "a1998dc8a224f124f25698c8b017baa20265f9f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ece01403be5bb259a71f6037054be51d0aa7d450", - "reference": "ece01403be5bb259a71f6037054be51d0aa7d450", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/a1998dc8a224f124f25698c8b017baa20265f9f7", + "reference": "a1998dc8a224f124f25698c8b017baa20265f9f7", "shasum": "" }, "require": { @@ -7547,7 +7810,7 @@ "type": "github" } ], - "time": "2022-11-20T05:58:14+00:00" + "time": "2022-12-28T12:42:03+00:00" }, { "name": "phpunit/php-file-iterator", @@ -7555,12 +7818,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "9e816fc4f455d9b6c20214e1e326c7d0550186ee" + "reference": "44fc4b968d126f588e7e0ff6dd7226fffcd74835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/9e816fc4f455d9b6c20214e1e326c7d0550186ee", - "reference": "9e816fc4f455d9b6c20214e1e326c7d0550186ee", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/44fc4b968d126f588e7e0ff6dd7226fffcd74835", + "reference": "44fc4b968d126f588e7e0ff6dd7226fffcd74835", "shasum": "" }, "require": { @@ -7608,7 +7871,7 @@ "type": "github" } ], - "time": "2022-11-07T16:06:14+00:00" + "time": "2022-12-24T05:49:54+00:00" }, { "name": "phpunit/php-invoker", @@ -7616,12 +7879,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "8bf0ec64bc5df7c43fd4afca036050d30d3da7cf" + "reference": "3535d067854f370156a9e1239b1fb80dea063067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/8bf0ec64bc5df7c43fd4afca036050d30d3da7cf", - "reference": "8bf0ec64bc5df7c43fd4afca036050d30d3da7cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/3535d067854f370156a9e1239b1fb80dea063067", + "reference": "3535d067854f370156a9e1239b1fb80dea063067", "shasum": "" }, "require": { @@ -7672,7 +7935,7 @@ "type": "github" } ], - "time": "2022-11-07T16:06:23+00:00" + "time": "2022-12-24T05:50:02+00:00" }, { "name": "phpunit/php-text-template", @@ -7680,12 +7943,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "d7336a33e750c8fb2c78c380365e8ceeb9509261" + "reference": "70014fbb03c2da9822e13ecf5cea9b5110ec827f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d7336a33e750c8fb2c78c380365e8ceeb9509261", - "reference": "d7336a33e750c8fb2c78c380365e8ceeb9509261", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/70014fbb03c2da9822e13ecf5cea9b5110ec827f", + "reference": "70014fbb03c2da9822e13ecf5cea9b5110ec827f", "shasum": "" }, "require": { @@ -7732,7 +7995,7 @@ "type": "github" } ], - "time": "2022-11-07T16:06:52+00:00" + "time": "2022-12-24T05:50:26+00:00" }, { "name": "phpunit/php-timer", @@ -7740,12 +8003,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1f52e1a1fd5b3db81d50770a354ce511a14323f4" + "reference": "abe66ab13a84b4758e6d6106d713f02c9366fd89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1f52e1a1fd5b3db81d50770a354ce511a14323f4", - "reference": "1f52e1a1fd5b3db81d50770a354ce511a14323f4", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/abe66ab13a84b4758e6d6106d713f02c9366fd89", + "reference": "abe66ab13a84b4758e6d6106d713f02c9366fd89", "shasum": "" }, "require": { @@ -7792,7 +8055,7 @@ "type": "github" } ], - "time": "2022-11-07T16:06:33+00:00" + "time": "2022-12-24T05:50:10+00:00" }, { "name": "phpunit/phpunit", @@ -7800,12 +8063,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "35136a4fb2045460949428bd138c9c091441e5be" + "reference": "0f420c1babd1dec8162588845687da2df2175d63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/35136a4fb2045460949428bd138c9c091441e5be", - "reference": "35136a4fb2045460949428bd138c9c091441e5be", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0f420c1babd1dec8162588845687da2df2175d63", + "reference": "0f420c1babd1dec8162588845687da2df2175d63", "shasum": "" }, "require": { @@ -7832,6 +8095,7 @@ "sebastian/exporter": "^5.0", "sebastian/global-state": "^6.0", "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", "sebastian/version": "^4.0" }, @@ -7892,7 +8156,7 @@ "type": "tidelift" } ], - "time": "2022-11-26T09:05:30+00:00" + "time": "2022-12-30T16:53:11+00:00" }, { "name": "sebastian/cli-parser", @@ -7900,12 +8164,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "45fa90ccb4731ab064ae4c2693171711e208104d" + "reference": "d60b4e09f505e98ee8e7f6c2344454c24b60b1e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/45fa90ccb4731ab064ae4c2693171711e208104d", - "reference": "45fa90ccb4731ab064ae4c2693171711e208104d", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/d60b4e09f505e98ee8e7f6c2344454c24b60b1e8", + "reference": "d60b4e09f505e98ee8e7f6c2344454c24b60b1e8", "shasum": "" }, "require": { @@ -7949,7 +8213,7 @@ "type": "github" } ], - "time": "2022-11-07T16:07:25+00:00" + "time": "2022-12-24T05:50:52+00:00" }, { "name": "sebastian/code-unit", @@ -7957,12 +8221,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "7cd0f25a56b480f34bedd50212725f17bdc0b151" + "reference": "c47d7ba9136a0ea9d5c8dd05a2fb5cb04c081102" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/7cd0f25a56b480f34bedd50212725f17bdc0b151", - "reference": "7cd0f25a56b480f34bedd50212725f17bdc0b151", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/c47d7ba9136a0ea9d5c8dd05a2fb5cb04c081102", + "reference": "c47d7ba9136a0ea9d5c8dd05a2fb5cb04c081102", "shasum": "" }, "require": { @@ -8006,7 +8270,7 @@ "type": "github" } ], - "time": "2022-11-07T16:04:42+00:00" + "time": "2022-12-24T05:48:42+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -8014,12 +8278,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "d5b7282296a0d5c87036d62e4da38ccff83238ad" + "reference": "e3b82937a6a8702b31e1db661b41c371e7e9f911" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/d5b7282296a0d5c87036d62e4da38ccff83238ad", - "reference": "d5b7282296a0d5c87036d62e4da38ccff83238ad", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/e3b82937a6a8702b31e1db661b41c371e7e9f911", + "reference": "e3b82937a6a8702b31e1db661b41c371e7e9f911", "shasum": "" }, "require": { @@ -8062,7 +8326,7 @@ "type": "github" } ], - "time": "2022-11-07T16:04:53+00:00" + "time": "2022-12-24T05:48:50+00:00" }, { "name": "sebastian/comparator", @@ -8070,12 +8334,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "d38d667bc0593d1a9c41cb2c6c04906ef40df339" + "reference": "dbac3b2a695e43fb460402a5b91ec726fcf6fba5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d38d667bc0593d1a9c41cb2c6c04906ef40df339", - "reference": "d38d667bc0593d1a9c41cb2c6c04906ef40df339", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dbac3b2a695e43fb460402a5b91ec726fcf6fba5", + "reference": "dbac3b2a695e43fb460402a5b91ec726fcf6fba5", "shasum": "" }, "require": { @@ -8139,7 +8403,7 @@ "type": "github" } ], - "time": "2022-11-07T16:05:05+00:00" + "time": "2022-12-24T05:48:58+00:00" }, { "name": "sebastian/complexity", @@ -8147,12 +8411,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "10b5a307e535010a7dec09a300bc4001f5420eb3" + "reference": "d33e4a40faa4810042301b3917f6d80fd4d72cbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/10b5a307e535010a7dec09a300bc4001f5420eb3", - "reference": "10b5a307e535010a7dec09a300bc4001f5420eb3", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/d33e4a40faa4810042301b3917f6d80fd4d72cbd", + "reference": "d33e4a40faa4810042301b3917f6d80fd4d72cbd", "shasum": "" }, "require": { @@ -8197,7 +8461,7 @@ "type": "github" } ], - "time": "2022-11-07T16:07:03+00:00" + "time": "2022-12-24T05:50:35+00:00" }, { "name": "sebastian/diff", @@ -8205,12 +8469,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "846e3311a0459939734ac181b0eda2a760684060" + "reference": "e5a097f7d6959a2327b5ff75c419f3b5b5b5d2b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/846e3311a0459939734ac181b0eda2a760684060", - "reference": "846e3311a0459939734ac181b0eda2a760684060", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/e5a097f7d6959a2327b5ff75c419f3b5b5b5d2b1", + "reference": "e5a097f7d6959a2327b5ff75c419f3b5b5b5d2b1", "shasum": "" }, "require": { @@ -8264,7 +8528,7 @@ "type": "github" } ], - "time": "2022-11-07T16:05:15+00:00" + "time": "2022-12-24T05:49:06+00:00" }, { "name": "sebastian/environment", @@ -8272,12 +8536,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6aa420417efb164a78a9742d547c7971ce45a7f0" + "reference": "2c3faab67129a0b6a0b70395dfa269422600dc1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6aa420417efb164a78a9742d547c7971ce45a7f0", - "reference": "6aa420417efb164a78a9742d547c7971ce45a7f0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/2c3faab67129a0b6a0b70395dfa269422600dc1a", + "reference": "2c3faab67129a0b6a0b70395dfa269422600dc1a", "shasum": "" }, "require": { @@ -8328,7 +8592,7 @@ "type": "github" } ], - "time": "2022-11-07T16:05:25+00:00" + "time": "2022-12-24T05:49:14+00:00" }, { "name": "sebastian/exporter", @@ -8336,12 +8600,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "507ebe2a23c4bdd27ac8152283937dc80407a6f0" + "reference": "2f7e9a57005e1af9e1c92a21515e2af77c923565" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/507ebe2a23c4bdd27ac8152283937dc80407a6f0", - "reference": "507ebe2a23c4bdd27ac8152283937dc80407a6f0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/2f7e9a57005e1af9e1c92a21515e2af77c923565", + "reference": "2f7e9a57005e1af9e1c92a21515e2af77c923565", "shasum": "" }, "require": { @@ -8406,7 +8670,7 @@ "type": "github" } ], - "time": "2022-11-07T16:05:35+00:00" + "time": "2022-12-24T05:49:22+00:00" }, { "name": "sebastian/global-state", @@ -8414,12 +8678,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "87458d35f486ac935b933f56417446ba871dba61" + "reference": "cde7978a055c5a53544bb9883ad3da09e09840f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/87458d35f486ac935b933f56417446ba871dba61", - "reference": "87458d35f486ac935b933f56417446ba871dba61", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/cde7978a055c5a53544bb9883ad3da09e09840f7", + "reference": "cde7978a055c5a53544bb9883ad3da09e09840f7", "shasum": "" }, "require": { @@ -8468,7 +8732,7 @@ "type": "github" } ], - "time": "2022-11-07T16:05:45+00:00" + "time": "2022-12-24T05:49:30+00:00" }, { "name": "sebastian/lines-of-code", @@ -8476,12 +8740,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1b93ca63763b5d2e1e29e4d649e86a99f278113" + "reference": "fddc238a612d00f9fe9798d61f7e9d1e284789b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1b93ca63763b5d2e1e29e4d649e86a99f278113", - "reference": "e1b93ca63763b5d2e1e29e4d649e86a99f278113", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/fddc238a612d00f9fe9798d61f7e9d1e284789b2", + "reference": "fddc238a612d00f9fe9798d61f7e9d1e284789b2", "shasum": "" }, "require": { @@ -8526,7 +8790,7 @@ "type": "github" } ], - "time": "2022-11-07T16:07:14+00:00" + "time": "2022-12-24T05:50:44+00:00" }, { "name": "sebastian/object-enumerator", @@ -8534,12 +8798,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "439f00efc13e33d1bf9133c2a79d2246e6b5d8bd" + "reference": "be2b0ae865f146fcd04d46e364856604be1df562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/439f00efc13e33d1bf9133c2a79d2246e6b5d8bd", - "reference": "439f00efc13e33d1bf9133c2a79d2246e6b5d8bd", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/be2b0ae865f146fcd04d46e364856604be1df562", + "reference": "be2b0ae865f146fcd04d46e364856604be1df562", "shasum": "" }, "require": { @@ -8584,7 +8848,7 @@ "type": "github" } ], - "time": "2022-11-07T16:05:55+00:00" + "time": "2022-12-24T05:49:37+00:00" }, { "name": "sebastian/object-reflector", @@ -8592,12 +8856,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "14df2fa60866da7adba5e756e986cad115783ec1" + "reference": "6f63c99110d9424fc49a5a8a75d43730edafda88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/14df2fa60866da7adba5e756e986cad115783ec1", - "reference": "14df2fa60866da7adba5e756e986cad115783ec1", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6f63c99110d9424fc49a5a8a75d43730edafda88", + "reference": "6f63c99110d9424fc49a5a8a75d43730edafda88", "shasum": "" }, "require": { @@ -8640,7 +8904,7 @@ "type": "github" } ], - "time": "2022-11-07T16:06:05+00:00" + "time": "2022-12-24T05:49:45+00:00" }, { "name": "sebastian/recursion-context", @@ -8648,12 +8912,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "1943b2abcf1b0b51992ba3fda10200a5305a6fc4" + "reference": "550ff6b27941c5a6045095ccf3ca076ae5f48941" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/1943b2abcf1b0b51992ba3fda10200a5305a6fc4", - "reference": "1943b2abcf1b0b51992ba3fda10200a5305a6fc4", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/550ff6b27941c5a6045095ccf3ca076ae5f48941", + "reference": "550ff6b27941c5a6045095ccf3ca076ae5f48941", "shasum": "" }, "require": { @@ -8704,7 +8968,7 @@ "type": "github" } ], - "time": "2022-11-07T16:06:43+00:00" + "time": "2022-12-24T05:50:18+00:00" }, { "name": "sebastian/type", @@ -8712,12 +8976,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fc18422fb70ede950e9f12167c0e45a94918eaa0" + "reference": "d3946c901cd1ddadcdbb0abb660963e9d56504ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fc18422fb70ede950e9f12167c0e45a94918eaa0", - "reference": "fc18422fb70ede950e9f12167c0e45a94918eaa0", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/d3946c901cd1ddadcdbb0abb660963e9d56504ab", + "reference": "d3946c901cd1ddadcdbb0abb660963e9d56504ab", "shasum": "" }, "require": { @@ -8761,7 +9025,7 @@ "type": "github" } ], - "time": "2022-10-01T05:57:02+00:00" + "time": "2022-11-30T19:09:44+00:00" }, { "name": "sebastian/version", @@ -8894,12 +9158,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "91c342ffc99283c43653ed8eb47bc2a94db7f398" + "reference": "ab1df4ba3ded7b724766ba3a6e0eca0418e74f80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/91c342ffc99283c43653ed8eb47bc2a94db7f398", - "reference": "91c342ffc99283c43653ed8eb47bc2a94db7f398", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab1df4ba3ded7b724766ba3a6e0eca0418e74f80", + "reference": "ab1df4ba3ded7b724766ba3a6e0eca0418e74f80", "shasum": "" }, "require": { @@ -8935,7 +9199,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.2.0-BETA1" + "source": "https://github.com/symfony/css-selector/tree/6.2" }, "funding": [ { @@ -8951,7 +9215,7 @@ "type": "tidelift" } ], - "time": "2022-08-26T05:51:22+00:00" + "time": "2022-12-28T14:26:22+00:00" }, { "name": "symfony/debug-bundle", @@ -8959,12 +9223,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "edf89d327c6dce1224d498421715e41257d85994" + "reference": "28060126920dc92c364743e930b4335276dde3d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/edf89d327c6dce1224d498421715e41257d85994", - "reference": "edf89d327c6dce1224d498421715e41257d85994", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/28060126920dc92c364743e930b4335276dde3d8", + "reference": "28060126920dc92c364743e930b4335276dde3d8", "shasum": "" }, "require": { @@ -9013,7 +9277,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v6.2.0-BETA1" + "source": "https://github.com/symfony/debug-bundle/tree/6.3" }, "funding": [ { @@ -9029,7 +9293,7 @@ "type": "tidelift" } ], - "time": "2022-09-12T16:11:19+00:00" + "time": "2022-12-16T13:20:57+00:00" }, { "name": "symfony/dom-crawler", @@ -9037,12 +9301,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "c079db42bed39928fc77a24307cbfff7ac7757f7" + "reference": "9b376273975d3312cee41e4df56a9236d13e3d73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c079db42bed39928fc77a24307cbfff7ac7757f7", - "reference": "c079db42bed39928fc77a24307cbfff7ac7757f7", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/9b376273975d3312cee41e4df56a9236d13e3d73", + "reference": "9b376273975d3312cee41e4df56a9236d13e3d73", "shasum": "" }, "require": { @@ -9083,7 +9347,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.2.0-BETA3" + "source": "https://github.com/symfony/dom-crawler/tree/6.3" }, "funding": [ { @@ -9099,7 +9363,7 @@ "type": "tidelift" } ], - "time": "2022-11-02T09:08:04+00:00" + "time": "2022-12-22T17:55:28+00:00" }, { "name": "symfony/maker-bundle", @@ -9107,12 +9371,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "fd6b32808612b676c8669b32e4e62d3e5cf8f7b5" + "reference": "ff781485acdd93b8c5c99c0145635a6cd329ac77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/fd6b32808612b676c8669b32e4e62d3e5cf8f7b5", - "reference": "fd6b32808612b676c8669b32e4e62d3e5cf8f7b5", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/ff781485acdd93b8c5c99c0145635a6cd329ac77", + "reference": "ff781485acdd93b8c5c99c0145635a6cd329ac77", "shasum": "" }, "require": { @@ -9126,7 +9390,8 @@ "symfony/filesystem": "^5.4.7|^6.0", "symfony/finder": "^5.4.3|^6.0", "symfony/framework-bundle": "^5.4.7|^6.0", - "symfony/http-kernel": "^5.4.7|^6.0" + "symfony/http-kernel": "^5.4.7|^6.0", + "symfony/process": "^5.4.7|^6.0" }, "conflict": { "doctrine/doctrine-bundle": "<2.4", @@ -9140,7 +9405,6 @@ "symfony/http-client": "^5.4.7|^6.0", "symfony/phpunit-bridge": "^5.4.7|^6.0", "symfony/polyfill-php80": "^1.16.0", - "symfony/process": "^5.4.7|^6.0", "symfony/security-core": "^5.4.7|^6.0", "symfony/yaml": "^5.4.3|^6.0", "twig/twig": "^2.0|^3.0" @@ -9193,7 +9457,7 @@ "type": "tidelift" } ], - "time": "2022-11-28T17:02:52+00:00" + "time": "2022-12-28T20:06:50+00:00" }, { "name": "symfony/phpunit-bridge", @@ -9201,12 +9465,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "1bd3b17db6d2ec284efbdc916600e880d6d858df" + "reference": "afbd8d176b7821a6cd677f00bedf1d7758aed672" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/1bd3b17db6d2ec284efbdc916600e880d6d858df", - "reference": "1bd3b17db6d2ec284efbdc916600e880d6d858df", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/afbd8d176b7821a6cd677f00bedf1d7758aed672", + "reference": "afbd8d176b7821a6cd677f00bedf1d7758aed672", "shasum": "" }, "require": { @@ -9216,7 +9480,7 @@ "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3.0", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/error-handler": "^5.4|^6.0" }, "suggest": { @@ -9260,7 +9524,68 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/6.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/6.3" + }, + "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-12-28T14:47:09+00:00" + }, + { + "name": "symfony/process", + "version": "6.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/ba6e55359f8f755fe996c58a81e00eaa67a35877", + "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.2.0-BETA3" }, "funding": [ { @@ -9276,7 +9601,7 @@ "type": "tidelift" } ], - "time": "2022-11-18T19:08:09+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/web-profiler-bundle", @@ -9284,12 +9609,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "94d1b790e3113c9c65b87e27325ca321f02afb2f" + "reference": "8d563c927bd14b1617d0b04e1323834f88ada660" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/94d1b790e3113c9c65b87e27325ca321f02afb2f", - "reference": "94d1b790e3113c9c65b87e27325ca321f02afb2f", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8d563c927bd14b1617d0b04e1323834f88ada660", + "reference": "8d563c927bd14b1617d0b04e1323834f88ada660", "shasum": "" }, "require": { @@ -9338,7 +9663,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/6.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/6.3" }, "funding": [ { @@ -9354,7 +9679,7 @@ "type": "tidelift" } ], - "time": "2022-11-21T16:07:56+00:00" + "time": "2022-12-28T14:27:59+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/bundles.php b/app/config/bundles.php similarity index 100% rename from config/bundles.php rename to app/config/bundles.php diff --git a/config/packages/assets.yaml b/app/config/packages/assets.yaml similarity index 100% rename from config/packages/assets.yaml rename to app/config/packages/assets.yaml diff --git a/config/packages/cache.yaml b/app/config/packages/cache.yaml similarity index 100% rename from config/packages/cache.yaml rename to app/config/packages/cache.yaml diff --git a/config/packages/dev/debug.yaml b/app/config/packages/dev/debug.yaml similarity index 100% rename from config/packages/dev/debug.yaml rename to app/config/packages/dev/debug.yaml diff --git a/config/packages/dev/monolog.yaml b/app/config/packages/dev/monolog.yaml similarity index 100% rename from config/packages/dev/monolog.yaml rename to app/config/packages/dev/monolog.yaml diff --git a/config/packages/dev/web_profiler.yaml b/app/config/packages/dev/web_profiler.yaml similarity index 100% rename from config/packages/dev/web_profiler.yaml rename to app/config/packages/dev/web_profiler.yaml diff --git a/config/packages/doctrine.yaml b/app/config/packages/doctrine.yaml similarity index 100% rename from config/packages/doctrine.yaml rename to app/config/packages/doctrine.yaml diff --git a/config/packages/doctrine_migrations.yaml b/app/config/packages/doctrine_migrations.yaml similarity index 100% rename from config/packages/doctrine_migrations.yaml rename to app/config/packages/doctrine_migrations.yaml diff --git a/config/packages/framework.yaml b/app/config/packages/framework.yaml similarity index 100% rename from config/packages/framework.yaml rename to app/config/packages/framework.yaml diff --git a/config/packages/knpu_oauth2_client.yaml b/app/config/packages/knpu_oauth2_client.yaml similarity index 100% rename from config/packages/knpu_oauth2_client.yaml rename to app/config/packages/knpu_oauth2_client.yaml diff --git a/config/packages/prod/deprecations.yaml b/app/config/packages/prod/deprecations.yaml similarity index 100% rename from config/packages/prod/deprecations.yaml rename to app/config/packages/prod/deprecations.yaml diff --git a/config/packages/prod/doctrine.yaml b/app/config/packages/prod/doctrine.yaml similarity index 100% rename from config/packages/prod/doctrine.yaml rename to app/config/packages/prod/doctrine.yaml diff --git a/config/packages/prod/monolog.yaml b/app/config/packages/prod/monolog.yaml similarity index 100% rename from config/packages/prod/monolog.yaml rename to app/config/packages/prod/monolog.yaml diff --git a/config/packages/prod/webpack_encore.yaml b/app/config/packages/prod/webpack_encore.yaml similarity index 100% rename from config/packages/prod/webpack_encore.yaml rename to app/config/packages/prod/webpack_encore.yaml diff --git a/config/packages/routing.yaml b/app/config/packages/routing.yaml similarity index 100% rename from config/packages/routing.yaml rename to app/config/packages/routing.yaml diff --git a/config/packages/security.yaml b/app/config/packages/security.yaml similarity index 100% rename from config/packages/security.yaml rename to app/config/packages/security.yaml diff --git a/config/packages/sensio_framework_extra.yaml b/app/config/packages/sensio_framework_extra.yaml similarity index 100% rename from config/packages/sensio_framework_extra.yaml rename to app/config/packages/sensio_framework_extra.yaml diff --git a/config/packages/test/doctrine.yaml b/app/config/packages/test/doctrine.yaml similarity index 100% rename from config/packages/test/doctrine.yaml rename to app/config/packages/test/doctrine.yaml diff --git a/config/packages/test/monolog.yaml b/app/config/packages/test/monolog.yaml similarity index 100% rename from config/packages/test/monolog.yaml rename to app/config/packages/test/monolog.yaml diff --git a/config/packages/test/web_profiler.yaml b/app/config/packages/test/web_profiler.yaml similarity index 100% rename from config/packages/test/web_profiler.yaml rename to app/config/packages/test/web_profiler.yaml diff --git a/config/packages/test/webpack_encore.yaml b/app/config/packages/test/webpack_encore.yaml similarity index 100% rename from config/packages/test/webpack_encore.yaml rename to app/config/packages/test/webpack_encore.yaml diff --git a/config/packages/twig.yaml b/app/config/packages/twig.yaml similarity index 100% rename from config/packages/twig.yaml rename to app/config/packages/twig.yaml diff --git a/config/packages/webpack_encore.yaml b/app/config/packages/webpack_encore.yaml similarity index 100% rename from config/packages/webpack_encore.yaml rename to app/config/packages/webpack_encore.yaml diff --git a/config/preload.php b/app/config/preload.php similarity index 100% rename from config/preload.php rename to app/config/preload.php diff --git a/config/routes.yaml b/app/config/routes.yaml similarity index 100% rename from config/routes.yaml rename to app/config/routes.yaml diff --git a/config/routes/annotations.yaml b/app/config/routes/annotations.yaml similarity index 100% rename from config/routes/annotations.yaml rename to app/config/routes/annotations.yaml diff --git a/config/routes/dev/web_profiler.yaml b/app/config/routes/dev/web_profiler.yaml similarity index 100% rename from config/routes/dev/web_profiler.yaml rename to app/config/routes/dev/web_profiler.yaml diff --git a/config/routes/framework.yaml b/app/config/routes/framework.yaml similarity index 100% rename from config/routes/framework.yaml rename to app/config/routes/framework.yaml diff --git a/config/services.yaml b/app/config/services.yaml similarity index 100% rename from config/services.yaml rename to app/config/services.yaml diff --git a/config/services_test.yaml b/app/config/services_test.yaml similarity index 100% rename from config/services_test.yaml rename to app/config/services_test.yaml diff --git a/migrations/Version20221027093032.php b/app/migrations/Version20221027093032.php similarity index 100% rename from migrations/Version20221027093032.php rename to app/migrations/Version20221027093032.php diff --git a/package.json b/app/package.json similarity index 100% rename from package.json rename to app/package.json diff --git a/public/favicon.ico b/app/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to app/public/favicon.ico diff --git a/public/index.php b/app/public/index.php similarity index 77% rename from public/index.php rename to app/public/index.php index 4bd27f73..7a281f2f 100644 --- a/public/index.php +++ b/app/public/index.php @@ -2,6 +2,8 @@ use Cbase\App\Kernel; +$_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true; + require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; return function (array $context) { diff --git a/src/App/Application/Controller/IndexController.php b/app/src/App/Application/Controller/IndexController.php similarity index 100% rename from src/App/Application/Controller/IndexController.php rename to app/src/App/Application/Controller/IndexController.php diff --git a/src/App/Application/Listener/AddResourcesToFrontendConfig.php b/app/src/App/Application/Listener/AddResourcesToFrontendConfig.php similarity index 100% rename from src/App/Application/Listener/AddResourcesToFrontendConfig.php rename to app/src/App/Application/Listener/AddResourcesToFrontendConfig.php diff --git a/src/App/Kernel.php b/app/src/App/Kernel.php similarity index 100% rename from src/App/Kernel.php rename to app/src/App/Kernel.php diff --git a/src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandler.php b/app/src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandler.php similarity index 100% rename from src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandler.php rename to app/src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandler.php diff --git a/src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsQuery.php b/app/src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsQuery.php similarity index 100% rename from src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsQuery.php rename to app/src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsQuery.php diff --git a/src/ArtefactGuide/Application/Action/ListImages/ListImagesHandler.php b/app/src/ArtefactGuide/Application/Action/ListImages/ListImagesHandler.php similarity index 100% rename from src/ArtefactGuide/Application/Action/ListImages/ListImagesHandler.php rename to app/src/ArtefactGuide/Application/Action/ListImages/ListImagesHandler.php diff --git a/src/ArtefactGuide/Application/Action/ListImages/ListImagesQuery.php b/app/src/ArtefactGuide/Application/Action/ListImages/ListImagesQuery.php similarity index 100% rename from src/ArtefactGuide/Application/Action/ListImages/ListImagesQuery.php rename to app/src/ArtefactGuide/Application/Action/ListImages/ListImagesQuery.php diff --git a/src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactCommand.php b/app/src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactCommand.php similarity index 100% rename from src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactCommand.php rename to app/src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactCommand.php diff --git a/src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandler.php b/app/src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandler.php similarity index 100% rename from src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandler.php rename to app/src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandler.php diff --git a/src/ArtefactGuide/Application/Action/UploadImage/UploadImageCommand.php b/app/src/ArtefactGuide/Application/Action/UploadImage/UploadImageCommand.php similarity index 100% rename from src/ArtefactGuide/Application/Action/UploadImage/UploadImageCommand.php rename to app/src/ArtefactGuide/Application/Action/UploadImage/UploadImageCommand.php diff --git a/src/ArtefactGuide/Application/Action/UploadImage/UploadImageHandler.php b/app/src/ArtefactGuide/Application/Action/UploadImage/UploadImageHandler.php similarity index 100% rename from src/ArtefactGuide/Application/Action/UploadImage/UploadImageHandler.php rename to app/src/ArtefactGuide/Application/Action/UploadImage/UploadImageHandler.php diff --git a/src/ArtefactGuide/Application/Console/CbagRestoreCommand.php b/app/src/ArtefactGuide/Application/Console/CbagRestoreCommand.php similarity index 100% rename from src/ArtefactGuide/Application/Console/CbagRestoreCommand.php rename to app/src/ArtefactGuide/Application/Console/CbagRestoreCommand.php diff --git a/src/ArtefactGuide/Application/Controller/ListArtefacts.php b/app/src/ArtefactGuide/Application/Controller/ListArtefacts.php similarity index 100% rename from src/ArtefactGuide/Application/Controller/ListArtefacts.php rename to app/src/ArtefactGuide/Application/Controller/ListArtefacts.php diff --git a/src/ArtefactGuide/Application/Controller/ListImages.php b/app/src/ArtefactGuide/Application/Controller/ListImages.php similarity index 100% rename from src/ArtefactGuide/Application/Controller/ListImages.php rename to app/src/ArtefactGuide/Application/Controller/ListImages.php diff --git a/src/ArtefactGuide/Application/Controller/UpdateArtefact.php b/app/src/ArtefactGuide/Application/Controller/UpdateArtefact.php similarity index 100% rename from src/ArtefactGuide/Application/Controller/UpdateArtefact.php rename to app/src/ArtefactGuide/Application/Controller/UpdateArtefact.php diff --git a/src/ArtefactGuide/Application/Controller/UploadImage.php b/app/src/ArtefactGuide/Application/Controller/UploadImage.php similarity index 100% rename from src/ArtefactGuide/Application/Controller/UploadImage.php rename to app/src/ArtefactGuide/Application/Controller/UploadImage.php diff --git a/src/ArtefactGuide/Application/Listener/AddContentToFrontendConfig.php b/app/src/ArtefactGuide/Application/Listener/AddContentToFrontendConfig.php similarity index 100% rename from src/ArtefactGuide/Application/Listener/AddContentToFrontendConfig.php rename to app/src/ArtefactGuide/Application/Listener/AddContentToFrontendConfig.php diff --git a/src/ArtefactGuide/Domain/Artefact.php b/app/src/ArtefactGuide/Domain/Artefact.php similarity index 100% rename from src/ArtefactGuide/Domain/Artefact.php rename to app/src/ArtefactGuide/Domain/Artefact.php diff --git a/src/ArtefactGuide/Domain/ArtefactCollection.php b/app/src/ArtefactGuide/Domain/ArtefactCollection.php similarity index 100% rename from src/ArtefactGuide/Domain/ArtefactCollection.php rename to app/src/ArtefactGuide/Domain/ArtefactCollection.php diff --git a/src/ArtefactGuide/Domain/ArtefactRepository.php b/app/src/ArtefactGuide/Domain/ArtefactRepository.php similarity index 100% rename from src/ArtefactGuide/Domain/ArtefactRepository.php rename to app/src/ArtefactGuide/Domain/ArtefactRepository.php diff --git a/src/ArtefactGuide/Domain/Image.php b/app/src/ArtefactGuide/Domain/Image.php similarity index 100% rename from src/ArtefactGuide/Domain/Image.php rename to app/src/ArtefactGuide/Domain/Image.php diff --git a/src/ArtefactGuide/Domain/ImageCollection.php b/app/src/ArtefactGuide/Domain/ImageCollection.php similarity index 100% rename from src/ArtefactGuide/Domain/ImageCollection.php rename to app/src/ArtefactGuide/Domain/ImageCollection.php diff --git a/src/ArtefactGuide/Domain/ImageRepository.php b/app/src/ArtefactGuide/Domain/ImageRepository.php similarity index 100% rename from src/ArtefactGuide/Domain/ImageRepository.php rename to app/src/ArtefactGuide/Domain/ImageRepository.php diff --git a/src/ArtefactGuide/Domain/Licence.php b/app/src/ArtefactGuide/Domain/Licence.php similarity index 100% rename from src/ArtefactGuide/Domain/Licence.php rename to app/src/ArtefactGuide/Domain/Licence.php diff --git a/src/ArtefactGuide/Domain/Slug.php b/app/src/ArtefactGuide/Domain/Slug.php similarity index 100% rename from src/ArtefactGuide/Domain/Slug.php rename to app/src/ArtefactGuide/Domain/Slug.php diff --git a/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ArtefactIdType.php b/app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ArtefactIdType.php similarity index 100% rename from src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ArtefactIdType.php rename to app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ArtefactIdType.php diff --git a/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ImageIdType.php b/app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ImageIdType.php similarity index 100% rename from src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ImageIdType.php rename to app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/ImageIdType.php diff --git a/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php b/app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php similarity index 100% rename from src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php rename to app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php diff --git a/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php b/app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php similarity index 100% rename from src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php rename to app/src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php diff --git a/src/Authentication/Application/Controller/Authenticate.php b/app/src/Authentication/Application/Controller/Authenticate.php similarity index 100% rename from src/Authentication/Application/Controller/Authenticate.php rename to app/src/Authentication/Application/Controller/Authenticate.php diff --git a/src/Authentication/Application/Listener/AddAuthToFrontendConfig.php b/app/src/Authentication/Application/Listener/AddAuthToFrontendConfig.php similarity index 100% rename from src/Authentication/Application/Listener/AddAuthToFrontendConfig.php rename to app/src/Authentication/Application/Listener/AddAuthToFrontendConfig.php diff --git a/src/Authentication/Domain/User.php b/app/src/Authentication/Domain/User.php similarity index 100% rename from src/Authentication/Domain/User.php rename to app/src/Authentication/Domain/User.php diff --git a/src/Authentication/Infrastructure/OAuth2/Authenticator.php b/app/src/Authentication/Infrastructure/OAuth2/Authenticator.php similarity index 100% rename from src/Authentication/Infrastructure/OAuth2/Authenticator.php rename to app/src/Authentication/Infrastructure/OAuth2/Authenticator.php diff --git a/src/Authentication/Infrastructure/OAuth2/Client.php b/app/src/Authentication/Infrastructure/OAuth2/Client.php similarity index 100% rename from src/Authentication/Infrastructure/OAuth2/Client.php rename to app/src/Authentication/Infrastructure/OAuth2/Client.php diff --git a/src/Authentication/Infrastructure/OAuth2/Provider.php b/app/src/Authentication/Infrastructure/OAuth2/Provider.php similarity index 100% rename from src/Authentication/Infrastructure/OAuth2/Provider.php rename to app/src/Authentication/Infrastructure/OAuth2/Provider.php diff --git a/src/Authentication/Infrastructure/OAuth2/UserProvider.php b/app/src/Authentication/Infrastructure/OAuth2/UserProvider.php similarity index 100% rename from src/Authentication/Infrastructure/OAuth2/UserProvider.php rename to app/src/Authentication/Infrastructure/OAuth2/UserProvider.php diff --git a/src/Shared/Domain/Aggregate/AggregateRoot.php b/app/src/Shared/Domain/Aggregate/AggregateRoot.php similarity index 100% rename from src/Shared/Domain/Aggregate/AggregateRoot.php rename to app/src/Shared/Domain/Aggregate/AggregateRoot.php diff --git a/src/Shared/Domain/ArtefactId.php b/app/src/Shared/Domain/ArtefactId.php similarity index 100% rename from src/Shared/Domain/ArtefactId.php rename to app/src/Shared/Domain/ArtefactId.php diff --git a/src/Shared/Domain/Collection.php b/app/src/Shared/Domain/Collection.php similarity index 100% rename from src/Shared/Domain/Collection.php rename to app/src/Shared/Domain/Collection.php diff --git a/src/Shared/Domain/Contract/Creatable.php b/app/src/Shared/Domain/Contract/Creatable.php similarity index 100% rename from src/Shared/Domain/Contract/Creatable.php rename to app/src/Shared/Domain/Contract/Creatable.php diff --git a/src/Shared/Domain/Contract/UuidCreatable.php b/app/src/Shared/Domain/Contract/UuidCreatable.php similarity index 100% rename from src/Shared/Domain/Contract/UuidCreatable.php rename to app/src/Shared/Domain/Contract/UuidCreatable.php diff --git a/src/Shared/Domain/FrontendConfig.php b/app/src/Shared/Domain/FrontendConfig.php similarity index 100% rename from src/Shared/Domain/FrontendConfig.php rename to app/src/Shared/Domain/FrontendConfig.php diff --git a/src/Shared/Domain/ImageId.php b/app/src/Shared/Domain/ImageId.php similarity index 100% rename from src/Shared/Domain/ImageId.php rename to app/src/Shared/Domain/ImageId.php diff --git a/src/Shared/Domain/MemberName.php b/app/src/Shared/Domain/MemberName.php similarity index 100% rename from src/Shared/Domain/MemberName.php rename to app/src/Shared/Domain/MemberName.php diff --git a/src/Shared/Domain/Utils/CollectionUtils.php b/app/src/Shared/Domain/Utils/CollectionUtils.php similarity index 100% rename from src/Shared/Domain/Utils/CollectionUtils.php rename to app/src/Shared/Domain/Utils/CollectionUtils.php diff --git a/src/Shared/Domain/Utils/StringUtils.php b/app/src/Shared/Domain/Utils/StringUtils.php similarity index 100% rename from src/Shared/Domain/Utils/StringUtils.php rename to app/src/Shared/Domain/Utils/StringUtils.php diff --git a/src/Shared/Domain/UuidGenerator.php b/app/src/Shared/Domain/UuidGenerator.php similarity index 100% rename from src/Shared/Domain/UuidGenerator.php rename to app/src/Shared/Domain/UuidGenerator.php diff --git a/src/Shared/Domain/ValueObject/Enum.php b/app/src/Shared/Domain/ValueObject/Enum.php similarity index 100% rename from src/Shared/Domain/ValueObject/Enum.php rename to app/src/Shared/Domain/ValueObject/Enum.php diff --git a/src/Shared/Domain/ValueObject/IntValueObject.php b/app/src/Shared/Domain/ValueObject/IntValueObject.php similarity index 100% rename from src/Shared/Domain/ValueObject/IntValueObject.php rename to app/src/Shared/Domain/ValueObject/IntValueObject.php diff --git a/src/Shared/Domain/ValueObject/StringValueObject.php b/app/src/Shared/Domain/ValueObject/StringValueObject.php similarity index 100% rename from src/Shared/Domain/ValueObject/StringValueObject.php rename to app/src/Shared/Domain/ValueObject/StringValueObject.php diff --git a/src/Shared/Domain/ValueObject/Uuid.php b/app/src/Shared/Domain/ValueObject/Uuid.php similarity index 100% rename from src/Shared/Domain/ValueObject/Uuid.php rename to app/src/Shared/Domain/ValueObject/Uuid.php diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/Dbal/DoctrineCustomType.php b/app/src/Shared/Infrastructure/Persistence/Doctrine/Dbal/DoctrineCustomType.php similarity index 100% rename from src/Shared/Infrastructure/Persistence/Doctrine/Dbal/DoctrineCustomType.php rename to app/src/Shared/Infrastructure/Persistence/Doctrine/Dbal/DoctrineCustomType.php diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php b/app/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php similarity index 100% rename from src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php rename to app/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/app/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php similarity index 100% rename from src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php rename to app/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php diff --git a/src/Shared/Infrastructure/RamseyUuidGenerator.php b/app/src/Shared/Infrastructure/RamseyUuidGenerator.php similarity index 100% rename from src/Shared/Infrastructure/RamseyUuidGenerator.php rename to app/src/Shared/Infrastructure/RamseyUuidGenerator.php diff --git a/symfony.lock b/app/symfony.lock similarity index 100% rename from symfony.lock rename to app/symfony.lock diff --git a/templates/app/index.html.twig b/app/templates/app/index.html.twig similarity index 100% rename from templates/app/index.html.twig rename to app/templates/app/index.html.twig diff --git a/templates/base.html.twig b/app/templates/base.html.twig similarity index 100% rename from templates/base.html.twig rename to app/templates/base.html.twig diff --git a/tests/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandlerTest.php b/app/tests/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandlerTest.php similarity index 100% rename from tests/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandlerTest.php rename to app/tests/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsHandlerTest.php diff --git a/tests/ArtefactGuide/Application/Action/ListImages/ListImagesHandlerTest.php b/app/tests/ArtefactGuide/Application/Action/ListImages/ListImagesHandlerTest.php similarity index 100% rename from tests/ArtefactGuide/Application/Action/ListImages/ListImagesHandlerTest.php rename to app/tests/ArtefactGuide/Application/Action/ListImages/ListImagesHandlerTest.php diff --git a/tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php b/app/tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php similarity index 100% rename from tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php rename to app/tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php diff --git a/tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php b/app/tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php similarity index 100% rename from tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php rename to app/tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php diff --git a/tests/ArtefactGuide/Application/Action/UploadImage/spacestation.jpg b/app/tests/ArtefactGuide/Application/Action/UploadImage/spacestation.jpg similarity index 100% rename from tests/ArtefactGuide/Application/Action/UploadImage/spacestation.jpg rename to app/tests/ArtefactGuide/Application/Action/UploadImage/spacestation.jpg diff --git a/tests/ArtefactGuide/Domain/ArtefactCollectionTest.php b/app/tests/ArtefactGuide/Domain/ArtefactCollectionTest.php similarity index 100% rename from tests/ArtefactGuide/Domain/ArtefactCollectionTest.php rename to app/tests/ArtefactGuide/Domain/ArtefactCollectionTest.php diff --git a/tests/ArtefactGuide/Domain/ArtefactTest.php b/app/tests/ArtefactGuide/Domain/ArtefactTest.php similarity index 100% rename from tests/ArtefactGuide/Domain/ArtefactTest.php rename to app/tests/ArtefactGuide/Domain/ArtefactTest.php diff --git a/tests/ArtefactGuide/Domain/LicenceTest.php b/app/tests/ArtefactGuide/Domain/LicenceTest.php similarity index 100% rename from tests/ArtefactGuide/Domain/LicenceTest.php rename to app/tests/ArtefactGuide/Domain/LicenceTest.php diff --git a/tests/ArtefactGuide/Infrastructure/Persistence/ArtefactRepositoryTest.php b/app/tests/ArtefactGuide/Infrastructure/Persistence/ArtefactRepositoryTest.php similarity index 100% rename from tests/ArtefactGuide/Infrastructure/Persistence/ArtefactRepositoryTest.php rename to app/tests/ArtefactGuide/Infrastructure/Persistence/ArtefactRepositoryTest.php diff --git a/tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php b/app/tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php similarity index 100% rename from tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php rename to app/tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php diff --git a/tests/Factory/ArtefactGuide/ArtefactFactory.php b/app/tests/Factory/ArtefactGuide/ArtefactFactory.php similarity index 100% rename from tests/Factory/ArtefactGuide/ArtefactFactory.php rename to app/tests/Factory/ArtefactGuide/ArtefactFactory.php diff --git a/tests/Factory/ArtefactGuide/ImageFactory.php b/app/tests/Factory/ArtefactGuide/ImageFactory.php similarity index 100% rename from tests/Factory/ArtefactGuide/ImageFactory.php rename to app/tests/Factory/ArtefactGuide/ImageFactory.php diff --git a/tests/Factory/FakerCapability.php b/app/tests/Factory/FakerCapability.php similarity index 100% rename from tests/Factory/FakerCapability.php rename to app/tests/Factory/FakerCapability.php diff --git a/tests/Fake/Infrastructure/Doctrine/InMemoryArtefactRepository.php b/app/tests/Fake/Infrastructure/Doctrine/InMemoryArtefactRepository.php similarity index 100% rename from tests/Fake/Infrastructure/Doctrine/InMemoryArtefactRepository.php rename to app/tests/Fake/Infrastructure/Doctrine/InMemoryArtefactRepository.php diff --git a/tests/Fake/Infrastructure/Doctrine/InMemoryImageRepository.php b/app/tests/Fake/Infrastructure/Doctrine/InMemoryImageRepository.php similarity index 100% rename from tests/Fake/Infrastructure/Doctrine/InMemoryImageRepository.php rename to app/tests/Fake/Infrastructure/Doctrine/InMemoryImageRepository.php diff --git a/tests/Shared/Domain/CollectionTest.php b/app/tests/Shared/Domain/CollectionTest.php similarity index 100% rename from tests/Shared/Domain/CollectionTest.php rename to app/tests/Shared/Domain/CollectionTest.php diff --git a/tests/Shared/Domain/FrontendConfigTest.php b/app/tests/Shared/Domain/FrontendConfigTest.php similarity index 100% rename from tests/Shared/Domain/FrontendConfigTest.php rename to app/tests/Shared/Domain/FrontendConfigTest.php diff --git a/tests/Shared/Domain/Utils/CollectionUtilsTest.php b/app/tests/Shared/Domain/Utils/CollectionUtilsTest.php similarity index 100% rename from tests/Shared/Domain/Utils/CollectionUtilsTest.php rename to app/tests/Shared/Domain/Utils/CollectionUtilsTest.php diff --git a/tests/Shared/Domain/Utils/StringUtilsTest.php b/app/tests/Shared/Domain/Utils/StringUtilsTest.php similarity index 100% rename from tests/Shared/Domain/Utils/StringUtilsTest.php rename to app/tests/Shared/Domain/Utils/StringUtilsTest.php diff --git a/tests/Shared/Domain/ValueObject/StringValueObjectTest.php b/app/tests/Shared/Domain/ValueObject/StringValueObjectTest.php similarity index 100% rename from tests/Shared/Domain/ValueObject/StringValueObjectTest.php rename to app/tests/Shared/Domain/ValueObject/StringValueObjectTest.php diff --git a/tests/Shared/Domain/ValueObject/UuidTest.php b/app/tests/Shared/Domain/ValueObject/UuidTest.php similarity index 100% rename from tests/Shared/Domain/ValueObject/UuidTest.php rename to app/tests/Shared/Domain/ValueObject/UuidTest.php diff --git a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php b/app/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php similarity index 100% rename from tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php rename to app/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php diff --git a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php b/app/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php similarity index 100% rename from tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php rename to app/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php diff --git a/tests/bootstrap.php b/app/tests/bootstrap.php similarity index 72% rename from tests/bootstrap.php rename to app/tests/bootstrap.php index d0707ba0..0b65ef89 100644 --- a/tests/bootstrap.php +++ b/app/tests/bootstrap.php @@ -8,4 +8,4 @@ require dirname(__DIR__) . '/vendor/autoload.php'; -(new Dotenv())->bootEnv(dirname(__DIR__) . '/.env.test'); +(new Dotenv())->bootEnv(dirname(__DIR__) . '/tests/test.artefactguide.env'); diff --git a/webpack.config.js b/app/webpack.config.js similarity index 100% rename from webpack.config.js rename to app/webpack.config.js diff --git a/yarn.lock b/app/yarn.lock similarity index 100% rename from yarn.lock rename to app/yarn.lock From 4ff8f21b795c766b4352970d1a89f229ecadea29 Mon Sep 17 00:00:00 2001 From: dazz Date: Mon, 2 Jan 2023 13:16:07 +0100 Subject: [PATCH 10/28] CI: ci moved into app directory --- {devops => app}/ci/cache/.gitignore | 0 {devops => app}/ci/composer.json | 0 {devops => app}/ci/composer.lock | 279 ++++++++++-------- {devops => app}/ci/config/.php-cs-fixer.php | 0 {devops => app}/ci/config/depfile.yaml | 0 {devops => app}/ci/config/infection.json | 0 {devops => app}/ci/config/phpmd.xml | 0 .../ci/config/phpstan-baseline.neon | 164 +++++----- {devops => app}/ci/config/phpstan.neon | 2 +- {devops => app}/ci/config/phpunit.xml | 10 +- {devops => app}/ci/config/rector.php | 0 .../ci/result/php-cs-fixer/.gitignore | 0 {devops => app}/ci/result/phpstan/.gitignore | 0 {devops => app}/ci/result/phpunit/.gitignore | 0 14 files changed, 252 insertions(+), 203 deletions(-) rename {devops => app}/ci/cache/.gitignore (100%) rename {devops => app}/ci/composer.json (100%) rename {devops => app}/ci/composer.lock (91%) rename {devops => app}/ci/config/.php-cs-fixer.php (100%) rename {devops => app}/ci/config/depfile.yaml (100%) rename {devops => app}/ci/config/infection.json (100%) rename {devops => app}/ci/config/phpmd.xml (100%) rename {devops => app}/ci/config/phpstan-baseline.neon (69%) rename {devops => app}/ci/config/phpstan.neon (87%) rename {devops => app}/ci/config/phpunit.xml (75%) rename {devops => app}/ci/config/rector.php (100%) rename {devops => app}/ci/result/php-cs-fixer/.gitignore (100%) rename {devops => app}/ci/result/phpstan/.gitignore (100%) rename {devops => app}/ci/result/phpunit/.gitignore (100%) diff --git a/devops/ci/cache/.gitignore b/app/ci/cache/.gitignore similarity index 100% rename from devops/ci/cache/.gitignore rename to app/ci/cache/.gitignore diff --git a/devops/ci/composer.json b/app/ci/composer.json similarity index 100% rename from devops/ci/composer.json rename to app/ci/composer.json diff --git a/devops/ci/composer.lock b/app/ci/composer.lock similarity index 91% rename from devops/ci/composer.lock rename to app/ci/composer.lock index 8dcb3fb8..8b580fea 100644 --- a/devops/ci/composer.lock +++ b/app/ci/composer.lock @@ -226,32 +226,35 @@ }, { "name": "doctrine/annotations", - "version": "1.13.3", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "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": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", + "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": { @@ -293,37 +296,82 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" + "source": "https://github.com/doctrine/annotations/tree/1.14.2" + }, + "time": "2022-12-15T06:48:22+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5|^8.5|^9.5", + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } }, - "time": "2022-07-02T10:48:51+00:00" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "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/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + }, + "time": "2022-05-02T15:47:09+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -355,7 +403,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -371,20 +419,20 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.13.0", + "version": "v3.13.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1" + "reference": "78d2251dd86b49c609a0fd37c20dcf0a00aea5a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a6232229a8309e8811dc751c28b91cb34b2943e1", - "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/78d2251dd86b49c609a0fd37c20dcf0a00aea5a7", + "reference": "78d2251dd86b49c609a0fd37c20dcf0a00aea5a7", "shasum": "" }, "require": { @@ -452,7 +500,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.1" }, "funding": [ { @@ -460,7 +508,7 @@ "type": "github" } ], - "time": "2022-10-31T19:28:50+00:00" + "time": "2022-12-18T00:47:22+00:00" }, { "name": "phpstan/extension-installer", @@ -508,16 +556,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.9.2", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa" + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d6fdf01c53978b6429f1393ba4afeca39cc68afa", - "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2", + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2", "shasum": "" }, "require": { @@ -547,7 +595,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.2" + "source": "https://github.com/phpstan/phpstan/tree/1.9.4" }, "funding": [ { @@ -563,20 +611,20 @@ "type": "tidelift" } ], - "time": "2022-11-10T09:56:11+00:00" + "time": "2022-12-17T13:33:52+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.23", + "version": "1.3.28", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "964caf844c89134e5c2f19e97cbf8b5d12193779" + "reference": "8302a6a214b8cbbda8249cce6ec627033af26c12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/964caf844c89134e5c2f19e97cbf8b5d12193779", - "reference": "964caf844c89134e5c2f19e97cbf8b5d12193779", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/8302a6a214b8cbbda8249cce6ec627033af26c12", + "reference": "8302a6a214b8cbbda8249cce6ec627033af26c12", "shasum": "" }, "require": { @@ -630,22 +678,22 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.23" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.28" }, - "time": "2022-11-14T07:46:16+00:00" + "time": "2022-12-30T21:24:11+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.2.16", + "version": "1.2.19", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "d6ea16206b1b645ded5b43736d8ef5ae1168eb55" + "reference": "dac2474904b092267f0a19dfba8c46b6f21eab6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/d6ea16206b1b645ded5b43736d8ef5ae1168eb55", - "reference": "d6ea16206b1b645ded5b43736d8ef5ae1168eb55", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/dac2474904b092267f0a19dfba8c46b6f21eab6a", + "reference": "dac2474904b092267f0a19dfba8c46b6f21eab6a", "shasum": "" }, "require": { @@ -701,9 +749,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.16" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.19" }, - "time": "2022-11-04T13:16:15+00:00" + "time": "2022-12-22T20:05:46+00:00" }, { "name": "psr/cache", @@ -909,16 +957,16 @@ }, { "name": "qossmic/deptrac-shim", - "version": "1.0.0", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/qossmic/deptrac-shim.git", - "reference": "fe43d3e0c89b028dcf7dc9561c8617e0c14f32e6" + "reference": "3179a2c4978654add865309e3c280ef3d60f0043" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/qossmic/deptrac-shim/zipball/fe43d3e0c89b028dcf7dc9561c8617e0c14f32e6", - "reference": "fe43d3e0c89b028dcf7dc9561c8617e0c14f32e6", + "url": "https://api.github.com/repos/qossmic/deptrac-shim/zipball/3179a2c4978654add865309e3c280ef3d60f0043", + "reference": "3179a2c4978654add865309e3c280ef3d60f0043", "shasum": "" }, "require": { @@ -958,9 +1006,9 @@ "description": "deptrac phar distribution", "support": { "issues": "https://github.com/qossmic/deptrac-shim/issues", - "source": "https://github.com/qossmic/deptrac-shim/tree/1.0.0" + "source": "https://github.com/qossmic/deptrac-shim/tree/1.0.2" }, - "time": "2022-11-01T12:16:56+00:00" + "time": "2022-12-02T11:47:53+00:00" }, { "name": "rector/rector", @@ -1087,16 +1135,16 @@ }, { "name": "symfony/console", - "version": "v6.1.7", + "version": "v6.2.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815" + "reference": "0f579613e771dba2dbb8211c382342a641f5da06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a1282bd0c096e0bdb8800b104177e2ce404d8815", - "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815", + "url": "https://api.github.com/repos/symfony/console/zipball/0f579613e771dba2dbb8211c382342a641f5da06", + "reference": "0f579613e771dba2dbb8211c382342a641f5da06", "shasum": "" }, "require": { @@ -1163,7 +1211,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.7" + "source": "https://github.com/symfony/console/tree/v6.2.3" }, "funding": [ { @@ -1179,20 +1227,20 @@ "type": "tidelift" } ], - "time": "2022-10-26T21:42:49+00:00" + "time": "2022-12-28T14:26:22+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.1.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", "shasum": "" }, "require": { @@ -1201,7 +1249,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -1230,7 +1278,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" }, "funding": [ { @@ -1246,20 +1294,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.1.0", + "version": "v6.2.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347" + "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ffeb31139b49bf6ef0bc09d1db95eac053388d1", + "reference": "3ffeb31139b49bf6ef0bc09d1db95eac053388d1", "shasum": "" }, "require": { @@ -1313,7 +1361,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/v6.1.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.2" }, "funding": [ { @@ -1329,20 +1377,20 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:51:07+00:00" + "time": "2022-12-14T16:11:27+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.1.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448" + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae", + "reference": "0782b0b52a737a05b4383d0df35a474303cabdae", "shasum": "" }, "require": { @@ -1355,7 +1403,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -1392,7 +1440,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0" }, "funding": [ { @@ -1408,20 +1456,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/filesystem", - "version": "v6.1.5", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "4d216a2beef096edf040a070117c39ca2abce307" + "reference": "50b2523c874605cf3d4acf7a9e2b30b6a440a016" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d216a2beef096edf040a070117c39ca2abce307", - "reference": "4d216a2beef096edf040a070117c39ca2abce307", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/50b2523c874605cf3d4acf7a9e2b30b6a440a016", + "reference": "50b2523c874605cf3d4acf7a9e2b30b6a440a016", "shasum": "" }, "require": { @@ -1455,7 +1503,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.1.5" + "source": "https://github.com/symfony/filesystem/tree/v6.2.0" }, "funding": [ { @@ -1471,20 +1519,20 @@ "type": "tidelift" } ], - "time": "2022-09-21T20:29:40+00:00" + "time": "2022-11-20T13:01:27+00:00" }, { "name": "symfony/finder", - "version": "v6.1.3", + "version": "v6.2.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709" + "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/39696bff2c2970b3779a5cac7bf9f0b88fc2b709", - "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709", + "url": "https://api.github.com/repos/symfony/finder/zipball/81eefbddfde282ee33b437ba5e13d7753211ae8e", + "reference": "81eefbddfde282ee33b437ba5e13d7753211ae8e", "shasum": "" }, "require": { @@ -1519,7 +1567,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.1.3" + "source": "https://github.com/symfony/finder/tree/v6.2.3" }, "funding": [ { @@ -1535,20 +1583,20 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:42:06+00:00" + "time": "2022-12-22T17:55:15+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.1.0", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4" + "reference": "d28f02acde71ff75e957082cd36e973df395f626" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d28f02acde71ff75e957082cd36e973df395f626", + "reference": "d28f02acde71ff75e957082cd36e973df395f626", "shasum": "" }, "require": { @@ -1586,7 +1634,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.1.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.2.0" }, "funding": [ { @@ -1602,7 +1650,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2098,16 +2146,16 @@ }, { "name": "symfony/process", - "version": "v6.1.3", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292" + "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a6506e99cfad7059b1ab5cab395854a0a0c21292", - "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292", + "url": "https://api.github.com/repos/symfony/process/zipball/ba6e55359f8f755fe996c58a81e00eaa67a35877", + "reference": "ba6e55359f8f755fe996c58a81e00eaa67a35877", "shasum": "" }, "require": { @@ -2139,7 +2187,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.1.3" + "source": "https://github.com/symfony/process/tree/v6.2.0" }, "funding": [ { @@ -2155,20 +2203,20 @@ "type": "tidelift" } ], - "time": "2022-06-27T17:24:16+00:00" + "time": "2022-11-02T09:08:04+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.1.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239" + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/925e713fe8fcacf6bc05e936edd8dd5441a21239", - "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75", + "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75", "shasum": "" }, "require": { @@ -2184,7 +2232,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -2224,7 +2272,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.0" }, "funding": [ { @@ -2240,11 +2288,11 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:18:58+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.1.5", + "version": "v6.2.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -2286,7 +2334,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.1.5" + "source": "https://github.com/symfony/stopwatch/tree/v6.2.0" }, "funding": [ { @@ -2306,16 +2354,16 @@ }, { "name": "symfony/string", - "version": "v6.1.7", + "version": "v6.2.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "823f143370880efcbdfa2dbca946b3358c4707e5" + "reference": "863219fd713fa41cbcd285a79723f94672faff4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/823f143370880efcbdfa2dbca946b3358c4707e5", - "reference": "823f143370880efcbdfa2dbca946b3358c4707e5", + "url": "https://api.github.com/repos/symfony/string/zipball/863219fd713fa41cbcd285a79723f94672faff4d", + "reference": "863219fd713fa41cbcd285a79723f94672faff4d", "shasum": "" }, "require": { @@ -2331,6 +2379,7 @@ "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", "symfony/translation-contracts": "^2.0|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, @@ -2371,7 +2420,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.7" + "source": "https://github.com/symfony/string/tree/v6.2.2" }, "funding": [ { @@ -2387,7 +2436,7 @@ "type": "tidelift" } ], - "time": "2022-10-10T09:34:31+00:00" + "time": "2022-12-14T16:11:27+00:00" } ], "packages-dev": [], diff --git a/devops/ci/config/.php-cs-fixer.php b/app/ci/config/.php-cs-fixer.php similarity index 100% rename from devops/ci/config/.php-cs-fixer.php rename to app/ci/config/.php-cs-fixer.php diff --git a/devops/ci/config/depfile.yaml b/app/ci/config/depfile.yaml similarity index 100% rename from devops/ci/config/depfile.yaml rename to app/ci/config/depfile.yaml diff --git a/devops/ci/config/infection.json b/app/ci/config/infection.json similarity index 100% rename from devops/ci/config/infection.json rename to app/ci/config/infection.json diff --git a/devops/ci/config/phpmd.xml b/app/ci/config/phpmd.xml similarity index 100% rename from devops/ci/config/phpmd.xml rename to app/ci/config/phpmd.xml diff --git a/devops/ci/config/phpstan-baseline.neon b/app/ci/config/phpstan-baseline.neon similarity index 69% rename from devops/ci/config/phpstan-baseline.neon rename to app/ci/config/phpstan-baseline.neon index 6ad538f1..e7ba33ca 100644 --- a/devops/ci/config/phpstan-baseline.neon +++ b/app/ci/config/phpstan-baseline.neon @@ -3,409 +3,409 @@ parameters: - message: "#^Property Cbase\\\\App\\\\Application\\\\Listener\\\\AddResourcesToFrontendConfig\\:\\:\\$config is never read, only written\\.$#" count: 1 - path: ../../../src/App/Application/Listener/AddResourcesToFrontendConfig.php + path: ../../src/App/Application/Listener/AddResourcesToFrontendConfig.php - message: "#^Class Cbase\\\\ArtefactGuide\\\\Application\\\\Action\\\\ListArtefacts\\\\ListArtefactsQuery does not have a constructor and must be instantiated without any parameters\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsQuery.php + path: ../../src/ArtefactGuide/Application/Action/ListArtefacts/ListArtefactsQuery.php - message: "#^Class Cbase\\\\ArtefactGuide\\\\Application\\\\Action\\\\ListImages\\\\ListImagesQuery does not have a constructor and must be instantiated without any parameters\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Action/ListImages/ListImagesQuery.php + path: ../../src/ArtefactGuide/Application/Action/ListImages/ListImagesQuery.php - message: "#^Property Cbase\\\\ArtefactGuide\\\\Application\\\\Action\\\\UpdateArtefact\\\\UpdateArtefactCommand\\:\\:\\$artefact type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactCommand.php + path: ../../src/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactCommand.php - message: "#^Cannot access offset '\\$date' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset '\\$id' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset '\\$oid' on mixed\\.$#" count: 2 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset '_id' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'assets' on mixed\\.$#" count: 2 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'author' on mixed\\.$#" count: 4 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'createdAt' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'createdBy' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'description' on mixed\\.$#" count: 5 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'licence' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'name' on mixed\\.$#" count: 2 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'path' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Cannot access offset 'slug' on mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#1 \\$value of class Cbase\\\\ArtefactGuide\\\\Domain\\\\Slug constructor expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#1 \\$value of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Licence\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#1 \\$value of static method Cbase\\\\Shared\\\\Domain\\\\MemberName\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#2 \\$array of function array_map expects array, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#2 \\$name of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#2 \\$path of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Image\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#3 \\$cName of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#3 \\$description of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Image\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#4 \\$author of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Image\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Parameter \\#5 \\$description of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact\\:\\:create\\(\\) expects string, mixed given\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php + path: ../../src/ArtefactGuide/Application/Console/CbagRestoreCommand.php - message: "#^Property Cbase\\\\ArtefactGuide\\\\Application\\\\Listener\\\\AddContentToFrontendConfig\\:\\:\\$config is never read, only written\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Application/Listener/AddContentToFrontendConfig.php + path: ../../src/ArtefactGuide/Application/Listener/AddContentToFrontendConfig.php - message: "#^Method Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Domain/Artefact.php + path: ../../src/ArtefactGuide/Domain/Artefact.php - message: "#^Property Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact\\:\\:\\$images with generic interface Doctrine\\\\Common\\\\Collections\\\\Collection does not specify its types\\: TKey, T$#" count: 1 - path: ../../../src/ArtefactGuide/Domain/Artefact.php + path: ../../src/ArtefactGuide/Domain/Artefact.php - message: "#^Property Cbase\\\\ArtefactGuide\\\\Domain\\\\Image\\:\\:\\$artefacts with generic interface Doctrine\\\\Common\\\\Collections\\\\Collection does not specify its types\\: TKey, T$#" count: 1 - path: ../../../src/ArtefactGuide/Domain/Image.php + path: ../../src/ArtefactGuide/Domain/Image.php - message: "#^Method Cbase\\\\ArtefactGuide\\\\Infrastructure\\\\Persistence\\\\Doctrine\\\\Repository\\\\DoctrineArtefactRepository\\:\\:all\\(\\) should return array\\ but returns array\\\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php + path: ../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php - message: "#^Method Cbase\\\\ArtefactGuide\\\\Infrastructure\\\\Persistence\\\\Doctrine\\\\Repository\\\\DoctrineArtefactRepository\\:\\:getBySlug\\(\\) should return Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact but returns object\\|null\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php + path: ../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineArtefactRepository.php - message: "#^Method Cbase\\\\ArtefactGuide\\\\Infrastructure\\\\Persistence\\\\Doctrine\\\\Repository\\\\DoctrineImageRepository\\:\\:all\\(\\) should return array\\ but returns mixed\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php + path: ../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php - message: "#^Method Cbase\\\\ArtefactGuide\\\\Infrastructure\\\\Persistence\\\\Doctrine\\\\Repository\\\\DoctrineImageRepository\\:\\:findByImageIds\\(\\) should return array\\ but returns array\\\\.$#" count: 1 - path: ../../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php + path: ../../src/ArtefactGuide/Infrastructure/Persistence/Doctrine/Repository/DoctrineImageRepository.php - message: "#^Property Cbase\\\\Authentication\\\\Application\\\\Listener\\\\AddAuthToFrontendConfig\\:\\:\\$config is never read, only written\\.$#" count: 1 - path: ../../../src/Authentication/Application/Listener/AddAuthToFrontendConfig.php + path: ../../src/Authentication/Application/Listener/AddAuthToFrontendConfig.php - message: "#^Method Cbase\\\\Authentication\\\\Domain\\\\User\\:\\:toArray\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Authentication/Domain/User.php + path: ../../src/Authentication/Domain/User.php - message: "#^Parameter \\#1 \\$accessToken of method KnpU\\\\OAuth2ClientBundle\\\\Client\\\\OAuth2Client\\:\\:fetchUserFromToken\\(\\) expects League\\\\OAuth2\\\\Client\\\\Token\\\\AccessToken, League\\\\OAuth2\\\\Client\\\\Token\\\\AccessTokenInterface given\\.$#" count: 1 - path: ../../../src/Authentication/Infrastructure/OAuth2/Authenticator.php + path: ../../src/Authentication/Infrastructure/OAuth2/Authenticator.php - message: "#^Method Cbase\\\\Authentication\\\\Infrastructure\\\\OAuth2\\\\Provider\\:\\:checkResponse\\(\\) has parameter \\$data with no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Authentication/Infrastructure/OAuth2/Provider.php + path: ../../src/Authentication/Infrastructure/OAuth2/Provider.php - message: "#^Method Cbase\\\\Authentication\\\\Infrastructure\\\\OAuth2\\\\Provider\\:\\:createResourceOwner\\(\\) has parameter \\$response with no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Authentication/Infrastructure/OAuth2/Provider.php + path: ../../src/Authentication/Infrastructure/OAuth2/Provider.php - message: "#^Method Cbase\\\\Authentication\\\\Infrastructure\\\\OAuth2\\\\Provider\\:\\:getDefaultScopes\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Authentication/Infrastructure/OAuth2/Provider.php + path: ../../src/Authentication/Infrastructure/OAuth2/Provider.php - message: "#^Parameter \\#1 \\$message of class League\\\\OAuth2\\\\Client\\\\Provider\\\\Exception\\\\IdentityProviderException constructor expects string, Psr\\\\Http\\\\Message\\\\StreamInterface given\\.$#" count: 1 - path: ../../../src/Authentication/Infrastructure/OAuth2/Provider.php + path: ../../src/Authentication/Infrastructure/OAuth2/Provider.php - message: "#^Method Cbase\\\\Authentication\\\\Infrastructure\\\\OAuth2\\\\UserProvider\\:\\:supportsClass\\(\\) has parameter \\$class with no type specified\\.$#" count: 1 - path: ../../../src/Authentication/Infrastructure/OAuth2/UserProvider.php + path: ../../src/Authentication/Infrastructure/OAuth2/UserProvider.php - message: "#^Class Cbase\\\\Shared\\\\Domain\\\\Collection extends generic class ArrayObject but does not specify its types\\: TKey, TValue$#" count: 1 - path: ../../../src/Shared/Domain/Collection.php + path: ../../src/Shared/Domain/Collection.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\Collection\\:\\:jsonSerialize\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Shared/Domain/Collection.php + path: ../../src/Shared/Domain/Collection.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\Utils\\\\CollectionUtils\\:\\:keyBy\\(\\) has parameter \\$collection with no value type specified in iterable type iterable\\.$#" count: 1 - path: ../../../src/Shared/Domain/Utils/CollectionUtils.php + path: ../../src/Shared/Domain/Utils/CollectionUtils.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\Utils\\\\CollectionUtils\\:\\:keyBy\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Shared/Domain/Utils/CollectionUtils.php + path: ../../src/Shared/Domain/Utils/CollectionUtils.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\Utils\\\\CollectionUtils\\:\\:map\\(\\) has parameter \\$collection with no value type specified in iterable type iterable\\.$#" count: 1 - path: ../../../src/Shared/Domain/Utils/CollectionUtils.php + path: ../../src/Shared/Domain/Utils/CollectionUtils.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\Utils\\\\CollectionUtils\\:\\:map\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Shared/Domain/Utils/CollectionUtils.php + path: ../../src/Shared/Domain/Utils/CollectionUtils.php - message: "#^Parameter \\#1 \\$string of function strtolower expects string, string\\|null given\\.$#" count: 1 - path: ../../../src/Shared/Domain/Utils/StringUtils.php + path: ../../src/Shared/Domain/Utils/StringUtils.php - message: "#^Parameter \\#1 \\$string of function trim expects string, string\\|null given\\.$#" count: 1 - path: ../../../src/Shared/Domain/Utils/StringUtils.php + path: ../../src/Shared/Domain/Utils/StringUtils.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:__callStatic\\(\\) has no return type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:__callStatic\\(\\) has parameter \\$args with no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:__construct\\(\\) has parameter \\$value with no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:ensureIsBetweenAcceptedValues\\(\\) has parameter \\$value with no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:randomValue\\(\\) has no return type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:throwExceptionForInvalidValue\\(\\) has no return type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:throwExceptionForInvalidValue\\(\\) has parameter \\$value with no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:value\\(\\) has no return type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:values\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Property Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:\\$cache has no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Property Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Enum\\:\\:\\$value has no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Enum.php + path: ../../src/Shared/Domain/ValueObject/Enum.php - message: "#^Property Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\IntValueObject\\:\\:\\$value has no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/IntValueObject.php + path: ../../src/Shared/Domain/ValueObject/IntValueObject.php - message: "#^Method Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Uuid\\:\\:ensureIsValidUuid\\(\\) has parameter \\$id with no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Uuid.php + path: ../../src/Shared/Domain/ValueObject/Uuid.php - message: "#^Property Cbase\\\\Shared\\\\Domain\\\\ValueObject\\\\Uuid\\:\\:\\$value has no type specified\\.$#" count: 1 - path: ../../../src/Shared/Domain/ValueObject/Uuid.php + path: ../../src/Shared/Domain/ValueObject/Uuid.php - message: "#^Method Cbase\\\\Shared\\\\Infrastructure\\\\Persistence\\\\Doctrine\\\\DoctrineRepository\\:\\:repository\\(\\) has parameter \\$entityClass with no type specified\\.$#" count: 1 - path: ../../../src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php + path: ../../src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php - message: "#^Method Cbase\\\\Shared\\\\Infrastructure\\\\Persistence\\\\Doctrine\\\\DoctrineRepository\\:\\:repository\\(\\) return type with generic class Doctrine\\\\ORM\\\\EntityRepository does not specify its types\\: TEntityClass$#" count: 1 - path: ../../../src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php + path: ../../src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php - message: "#^Unable to resolve the template type T in call to method Doctrine\\\\ORM\\\\EntityManagerInterface\\:\\:getRepository\\(\\)$#" count: 1 - path: ../../../src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php + path: ../../src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php - message: "#^PHPDoc tag @var for variable \\$images contains generic class Doctrine\\\\Common\\\\Collections\\\\ArrayCollection but does not specify its types\\: TKey, T$#" count: 1 - path: ../../../tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php + path: ../../tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php - message: "#^Parameter \\#2 \\$haystack of static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertCount\\(\\) expects Countable\\|iterable, mixed given\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php + path: ../../tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php - message: "#^Trying to invoke mixed but it's not a callable\\.$#" count: 2 - path: ../../../tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php + path: ../../tests/ArtefactGuide/Application/Action/UpdateArtefact/UpdateArtefactHandlerTest.php - message: "#^Binary operation \"\\.\" between literal\\-string&non\\-falsy\\-string and array\\\\|string results in an error\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php + path: ../../tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php - message: "#^Parameter \\#1 \\$imageIds of method Cbase\\\\ArtefactGuide\\\\Domain\\\\ImageRepository\\:\\:findByImageIds\\(\\) expects array\\, array\\\\|string\\> given\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php + path: ../../tests/ArtefactGuide/Application/Action/UploadImage/UploadImageHandlerTest.php - message: "#^Parameter \\#1 \\$item of method Cbase\\\\Shared\\\\Domain\\\\Collection\\\\:\\:append\\(\\) expects Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact, Cbase\\\\ArtefactGuide\\\\Domain\\\\Image given\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Domain/ArtefactCollectionTest.php + path: ../../tests/ArtefactGuide/Domain/ArtefactCollectionTest.php - message: "#^Parameter \\#1 \\$items of static method Cbase\\\\Shared\\\\Domain\\\\Collection\\\\:\\:create\\(\\) expects array\\, array\\ given\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Domain/ArtefactCollectionTest.php + path: ../../tests/ArtefactGuide/Domain/ArtefactCollectionTest.php - message: "#^Method Tests\\\\ArtefactGuide\\\\Domain\\\\LicenceTest\\:\\:test_licence_can_be_created_with_valid_values\\(\\) has no return type specified\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Domain/LicenceTest.php + path: ../../tests/ArtefactGuide/Domain/LicenceTest.php - message: "#^Method Tests\\\\ArtefactGuide\\\\Domain\\\\LicenceTest\\:\\:test_licence_creation_fails_with_invalid_value\\(\\) has no return type specified\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Domain/LicenceTest.php + path: ../../tests/ArtefactGuide/Domain/LicenceTest.php - message: "#^Method Tests\\\\ArtefactGuide\\\\Infrastructure\\\\PhpUnit\\\\ArtefactGuideInfrastructureTestCase\\:\\:artefactRepository\\(\\) should return Cbase\\\\ArtefactGuide\\\\Domain\\\\ArtefactRepository but returns mixed\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php + path: ../../tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php - message: "#^Method Tests\\\\ArtefactGuide\\\\Infrastructure\\\\PhpUnit\\\\ArtefactGuideInfrastructureTestCase\\:\\:imageRepository\\(\\) should return Cbase\\\\ArtefactGuide\\\\Domain\\\\ImageRepository but returns mixed\\.$#" count: 1 - path: ../../../tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php + path: ../../tests/ArtefactGuide/Infrastructure/PhpUnit/ArtefactGuideInfrastructureTestCase.php - message: "#^Parameter \\#2 \\$name of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact\\:\\:create\\(\\) expects string, array\\|string given\\.$#" count: 1 - path: ../../../tests/Factory/ArtefactGuide/ArtefactFactory.php + path: ../../tests/Factory/ArtefactGuide/ArtefactFactory.php - message: "#^Parameter \\#3 \\$cName of static method Cbase\\\\ArtefactGuide\\\\Domain\\\\Artefact\\:\\:create\\(\\) expects string, array\\|string given\\.$#" count: 1 - path: ../../../tests/Factory/ArtefactGuide/ArtefactFactory.php + path: ../../tests/Factory/ArtefactGuide/ArtefactFactory.php - message: "#^Cannot call method value\\(\\) on mixed\\.$#" count: 1 - path: ../../../tests/Fake/Infrastructure/Doctrine/InMemoryArtefactRepository.php + path: ../../tests/Fake/Infrastructure/Doctrine/InMemoryArtefactRepository.php diff --git a/devops/ci/config/phpstan.neon b/app/ci/config/phpstan.neon similarity index 87% rename from devops/ci/config/phpstan.neon rename to app/ci/config/phpstan.neon index 8384e8f6..0c77fa0e 100644 --- a/devops/ci/config/phpstan.neon +++ b/app/ci/config/phpstan.neon @@ -12,7 +12,7 @@ parameters: bootstrapFiles: - %currentWorkingDirectory%/vendor/autoload.php - tmpDir: %currentWorkingDirectory%/devops/ci/cache + tmpDir: %currentWorkingDirectory%/ci/cache paths: - %currentWorkingDirectory%/src/ diff --git a/devops/ci/config/phpunit.xml b/app/ci/config/phpunit.xml similarity index 75% rename from devops/ci/config/phpunit.xml rename to app/ci/config/phpunit.xml index 075572c7..90ef4b69 100644 --- a/devops/ci/config/phpunit.xml +++ b/app/ci/config/phpunit.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.0/phpunit.xsd" executionOrder="random" - bootstrap="../../../tests/bootstrap.php" + bootstrap="../../tests/bootstrap.php" colors="true" processIsolation="false" stopOnError="true" @@ -11,7 +11,7 @@ stopOnIncomplete="false" stopOnSkipped="false" stopOnRisky="true" - cacheDirectory=".phpunit.cache" + cacheDirectory="../cache/.phpunit.cache" > @@ -20,15 +20,15 @@ - ../../../src/ + ../../src/ - ../../../tests/ArtefactGuide + ../../tests/ArtefactGuide - ../../../tests/Shared + ../../tests/Shared diff --git a/devops/ci/config/rector.php b/app/ci/config/rector.php similarity index 100% rename from devops/ci/config/rector.php rename to app/ci/config/rector.php diff --git a/devops/ci/result/php-cs-fixer/.gitignore b/app/ci/result/php-cs-fixer/.gitignore similarity index 100% rename from devops/ci/result/php-cs-fixer/.gitignore rename to app/ci/result/php-cs-fixer/.gitignore diff --git a/devops/ci/result/phpstan/.gitignore b/app/ci/result/phpstan/.gitignore similarity index 100% rename from devops/ci/result/phpstan/.gitignore rename to app/ci/result/phpstan/.gitignore diff --git a/devops/ci/result/phpunit/.gitignore b/app/ci/result/phpunit/.gitignore similarity index 100% rename from devops/ci/result/phpunit/.gitignore rename to app/ci/result/phpunit/.gitignore From c6079b04b0509785fb75fd7c0e8e59dcbe73c1c8 Mon Sep 17 00:00:00 2001 From: dazz Date: Mon, 2 Jan 2023 13:17:44 +0100 Subject: [PATCH 11/28] CI: add the working directory --- .github/workflows/ci.yaml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bb6bf55c..b21e596c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,6 +28,7 @@ jobs: - name: Get composer cache directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + working-directory: ./app - name: Cache composer dependencies uses: actions/cache@v3.0.11 @@ -37,15 +38,20 @@ jobs: # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- + working-directory: ./app - name: Setup Install dependencies run: make install + working-directory: ./app - name: CI lint run: make lint + working-directory: ./app - name: CI analyze run: make analyze + working-directory: ./app - - name: CI test - run: make test-php-coverage \ No newline at end of file + - name: CI test with coverage + run: make test-php-coverage + working-directory: ./app \ No newline at end of file From 48a22f25cffc0eab4e1398457f9bb23a0fb7bbd8 Mon Sep 17 00:00:00 2001 From: dazz Date: Mon, 2 Jan 2023 13:18:22 +0100 Subject: [PATCH 12/28] CI: remove not needed binaries --- bin/composer | Bin 2287395 -> 0 bytes bin/symfony | Bin 17825792 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 bin/composer delete mode 100755 bin/symfony diff --git a/bin/composer b/bin/composer deleted file mode 100755 index 857f198cd64034ebf50577802146c4c409ad35a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2287395 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¼j^e`Ys2-(! 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

hpq0}$8gOcsVblb3e3+$ZCN@AOyKvT$J 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