From f52e611c6731b5fa980cc9be6c574c1b48644249 Mon Sep 17 00:00:00 2001 From: Sieciech Date: Wed, 4 Aug 2021 08:22:57 +0000 Subject: [PATCH] Auth (#28) Co-authored-by: Sieciech Reviewed-on: http://git.fufle.net/Community/CureNet/pulls/28 Co-Authored-By: Sieciech Co-Committed-By: Sieciech --- docker/docker-compose.yml | 2 - docker/startup.sh | 9 +- src/backend/.env | 6 + src/backend/.gitignore | 4 + src/backend/composer.json | 2 + src/backend/composer.lock | 20335 ++++++++-------- src/backend/config/bundles.php | 2 + .../packages/lexik_jwt_authentication.yaml | 4 + src/backend/config/packages/security.yaml | 19 +- src/backend/shell | 4 +- src/backend/src/Controller/AuthController.php | 66 + .../src/Entity/Abstraction/BaseEntity.php | 32 + src/backend/src/Entity/User.php | 230 +- src/backend/src/Repository/UserRepository.php | 14 + src/backend/src/Traits/JsonResponseTrait.php | 35 + src/backend/symfony.lock | 27 + src/frontend/package-lock.json | 8 + src/frontend/package.json | 1 + src/frontend/src/app/app-routing.module.ts | 21 + src/frontend/src/app/app.component.html | 24 +- src/frontend/src/app/app.component.ts | 107 +- src/frontend/src/app/app.module.ts | 8 +- .../app/modules/admin/admin-routing.module.ts | 3 +- .../src/app/modules/admin/admin.module.ts | 11 +- .../components/users/users.component.html | 1 + .../components/users/users.component.scss | 0 .../admin/components/users/users.component.ts | 18 + .../services/admin-user/admin-user.service.ts | 14 + .../app/modules/auth/auth-routing.module.ts | 31 + .../src/app/modules/auth/auth.module.ts | 29 + .../auth/components/auth/auth.component.html | 66 + .../auth/components/auth/auth.component.scss | 9 + .../auth/components/auth/auth.component.ts | 118 + .../theme-switcher.component.html | 3 + .../theme-switcher.component.scss | 0 .../theme-switcher.component.ts | 32 + .../app/modules/auth/enums/auth-tab.enum.ts | 5 + .../app/modules/auth/models/login.model.ts | 4 + .../app/modules/auth/models/register.model.ts | 6 + .../app/modules/auth/models/restore.model.ts | 3 + .../app/modules/auth/models/token.response.ts | 3 + .../src/app/modules/auth/models/user.model.ts | 8 + .../modules/auth/services/auth/auth.guard.ts | 34 + .../auth/services/auth/auth.service.ts | 68 + .../app/modules/material/material.module.ts | 32 +- .../not-found/not-found.component.html | 13 +- .../not-found/not-found.component.scss | 10 + .../interceptors/token/token.interceptor.ts | 20 + .../app/modules/shared/models/user.model.ts | 9 + .../shared/services/app/app.service.ts | 143 +- .../services/auth/auth-token.service.ts | 34 + .../src/app/modules/shared/shared.module.ts | 2 + src/frontend/src/app/styles/_base.scss | 34 +- src/frontend/src/app/styles/dark.scss | 2 +- src/frontend/src/app/styles/light.scss | 7 +- src/frontend/src/assets/background/items.png | Bin 0 -> 106362 bytes src/frontend/src/styles.scss | 5 + 57 files changed, 11555 insertions(+), 10182 deletions(-) create mode 100644 src/backend/config/packages/lexik_jwt_authentication.yaml create mode 100644 src/backend/src/Controller/AuthController.php create mode 100644 src/backend/src/Entity/Abstraction/BaseEntity.php create mode 100644 src/backend/src/Traits/JsonResponseTrait.php create mode 100644 src/frontend/src/app/modules/admin/components/users/users.component.html create mode 100644 src/frontend/src/app/modules/admin/components/users/users.component.scss create mode 100644 src/frontend/src/app/modules/admin/components/users/users.component.ts create mode 100644 src/frontend/src/app/modules/admin/services/admin-user/admin-user.service.ts create mode 100644 src/frontend/src/app/modules/auth/auth-routing.module.ts create mode 100644 src/frontend/src/app/modules/auth/auth.module.ts create mode 100644 src/frontend/src/app/modules/auth/components/auth/auth.component.html create mode 100644 src/frontend/src/app/modules/auth/components/auth/auth.component.scss create mode 100644 src/frontend/src/app/modules/auth/components/auth/auth.component.ts create mode 100644 src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.html create mode 100644 src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.scss create mode 100644 src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.ts create mode 100644 src/frontend/src/app/modules/auth/enums/auth-tab.enum.ts create mode 100644 src/frontend/src/app/modules/auth/models/login.model.ts create mode 100644 src/frontend/src/app/modules/auth/models/register.model.ts create mode 100644 src/frontend/src/app/modules/auth/models/restore.model.ts create mode 100644 src/frontend/src/app/modules/auth/models/token.response.ts create mode 100644 src/frontend/src/app/modules/auth/models/user.model.ts create mode 100644 src/frontend/src/app/modules/auth/services/auth/auth.guard.ts create mode 100644 src/frontend/src/app/modules/auth/services/auth/auth.service.ts create mode 100644 src/frontend/src/app/modules/shared/interceptors/token/token.interceptor.ts create mode 100644 src/frontend/src/app/modules/shared/models/user.model.ts create mode 100644 src/frontend/src/app/modules/shared/services/auth/auth-token.service.ts create mode 100644 src/frontend/src/assets/background/items.png diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index b165d7b..2738912 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -19,9 +19,7 @@ services: - ./logs:/var/log - vendor:/web/backend/vendor - var:/web/backend/var - - nodemodules:/web/frontend/node_modules volumes: nodemodules: vendor: var: - nodemodules: \ No newline at end of file diff --git a/docker/startup.sh b/docker/startup.sh index 18cdf7c..1deb391 100644 --- a/docker/startup.sh +++ b/docker/startup.sh @@ -1,8 +1,7 @@ #!/bin/bash echo "> Configure cache" - mkdir -p /tmp/app/{vendor,node_modules} - ln -s /tmp/app/node_modules /web/frontend/node_modules + mkdir -p /tmp/app/vendor ln -s /tmp/app/vendor /web/backend/vendor echo "> Configure user" @@ -46,10 +45,14 @@ echo "> Configure symfony" cd /web/backend composer install php bin/console doctrine:schema:update --force + php php bin/console lexik:jwt:generate-keypair --skip-if-exists echo "> Configure angular" cd /web/frontend - su developer -c 'time npm ci' + time su developer -c 'npm ci' echo "> Starting angular" su developer -c 'ng serve --disable-host-check --host 0.0.0.0 --poll' + +echo "> Waiting" + sleep Infinity \ No newline at end of file diff --git a/src/backend/.env b/src/backend/.env index aa67157..33400a7 100644 --- a/src/backend/.env +++ b/src/backend/.env @@ -30,3 +30,9 @@ APP_SECRET=0fc8d6b67b9f1100b3eb3e3c80d36fda # DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7" DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8" ###< doctrine/doctrine-bundle ### + +###> lexik/jwt-authentication-bundle ### +JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem +JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem +JWT_PASSPHRASE=8270442e040a48fd42967bf1690d5dba +###< lexik/jwt-authentication-bundle ### diff --git a/src/backend/.gitignore b/src/backend/.gitignore index b5664ba..ca1d29f 100644 --- a/src/backend/.gitignore +++ b/src/backend/.gitignore @@ -18,3 +18,7 @@ /phpunit.xml .phpunit.result.cache ###< phpunit/phpunit ### + +###> lexik/jwt-authentication-bundle ### +/config/jwt/*.pem +###< lexik/jwt-authentication-bundle ### diff --git a/src/backend/composer.json b/src/backend/composer.json index 43c09b8..1065683 100644 --- a/src/backend/composer.json +++ b/src/backend/composer.json @@ -12,8 +12,10 @@ "doctrine/doctrine-bundle": "^2.4", "doctrine/doctrine-migrations-bundle": "^3.1", "doctrine/orm": "^2.9", + "lexik/jwt-authentication-bundle": "^2.12", "phpdocumentor/reflection-docblock": "^5.2", "sensio/framework-extra-bundle": "^6.1", + "symfony-bundles/json-request-bundle": "^4.0", "symfony/asset": "5.3.*", "symfony/console": "5.3.*", "symfony/dotenv": "5.3.*", diff --git a/src/backend/composer.lock b/src/backend/composer.lock index 256fefb..98b5106 100644 --- a/src/backend/composer.lock +++ b/src/backend/composer.lock @@ -1,9946 +1,10389 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "e3fa1ece831d58dd0515e0413472408f", - "packages": [ - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.2", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/c6522afe5540d5fc46675043d3ed5a45a740b27c", - "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-05-24T07:46:03+00:00" - }, - { - "name": "doctrine/annotations", - "version": "1.13.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", - "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.1" - }, - "time": "2021-05-16T18:07:53+00:00" - }, - { - "name": "doctrine/cache", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.1.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2021-07-17T14:49:29+00:00" - }, - { - "name": "doctrine/collections", - "version": "1.6.7", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a", - "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a", - "shasum": "" - }, - "require": { - "php": "^7.1.3 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan-shim": "^0.9.2", - "phpunit/phpunit": "^7.0", - "vimeo/psalm": "^3.8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", - "homepage": "https://www.doctrine-project.org/projects/collections.html", - "keywords": [ - "array", - "collections", - "iterators", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.6.7" - }, - "time": "2020-07-27T17:53:49+00:00" - }, - { - "name": "doctrine/common", - "version": "3.1.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a", - "shasum": "" - }, - "require": { - "doctrine/persistence": "^2.0", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", - "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5", - "vimeo/psalm": "^4.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", - "homepage": "https://www.doctrine-project.org/projects/common.html", - "keywords": [ - "common", - "doctrine", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.1.2" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", - "type": "tidelift" - } - ], - "time": "2021-02-10T20:18:51+00:00" - }, - { - "name": "doctrine/dbal", - "version": "2.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" - }, - "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.2" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2021-06-18T21:48:39+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v0.5.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "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/v0.5.3" - }, - "time": "2021-03-21T12:59:47+00:00" - }, - { - "name": "doctrine/doctrine-bundle", - "version": "2.4.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4202ce675d29e70a8b9ee763bec021b6f44caccb", - "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.9.0|^3.0", - "doctrine/persistence": "^1.3.3|^2.0", - "doctrine/sql-formatter": "^1.0.1", - "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.3.3|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0" - }, - "conflict": { - "doctrine/orm": "<2.9", - "twig/twig": "<1.34|>=2.0,<2.4" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.9", - "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "psalm/plugin-symfony": "^2.3.0", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", - "vimeo/psalm": "^4.7" - }, - "suggest": { - "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", - "ext-pdo": "*", - "symfony/web-profiler-bundle": "To use the data collector." - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" - } - ], - "description": "Symfony DoctrineBundle", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "database", - "dbal", - "orm", - "persistence" - ], - "support": { - "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.4.2" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-bundle", - "type": "tidelift" - } - ], - "time": "2021-06-05T13:40:39+00:00" - }, - { - "name": "doctrine/doctrine-migrations-bundle", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/91f0a5e2356029575f3038432cc188b12f9d5da5", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5", - "shasum": "" - }, - "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", - "doctrine/migrations": "^3.1", - "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0|^8.0|^9.0" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\MigrationsBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony DoctrineMigrationsBundle", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "dbal", - "migrations", - "schema" - ], - "support": { - "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.1.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle", - "type": "tidelift" - } - ], - "time": "2021-04-10T16:48:53+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2020-05-29T18:28:51+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^7.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-strict-rules": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.x" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "time": "2020-05-29T15:13:26+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2020-11-10T18:47:58+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2020-05-25T17:44:05+00:00" - }, - { - "name": "doctrine/migrations", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/migrations.git", - "reference": "072c11c1dcfced4505e29a0487b06ea774c403f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/072c11c1dcfced4505e29a0487b06ea774c403f4", - "reference": "072c11c1dcfced4505e29a0487b06ea774c403f4", - "shasum": "" - }, - "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/dbal": "^2.11", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.2 || ^8.0", - "psr/log": "^1.1.3", - "symfony/console": "^3.4 || ^4.4.16 || ^5.0", - "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0" - }, - "require-dev": { - "doctrine/coding-standard": "^8.0", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3 || ^2.0", - "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", - "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpstan/phpstan-symfony": "^0.12", - "phpunit/phpunit": "^8.5 || ^9.4", - "symfony/cache": "^5.3", - "symfony/process": "^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0" - }, - "suggest": { - "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", - "symfony/yaml": "Allows the use of yaml for migration configuration files." - }, - "bin": [ - "bin/doctrine-migrations" - ], - "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Michael Simonson", - "email": "contact@mikesimonson.com" - } - ], - "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", - "homepage": "https://www.doctrine-project.org/projects/migrations.html", - "keywords": [ - "database", - "dbal", - "migrations" - ], - "support": { - "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", - "type": "tidelift" - } - ], - "time": "2021-07-05T07:06:31+00:00" - }, - { - "name": "doctrine/orm", - "version": "2.9.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/orm.git", - "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/82e77cf5089a1303733f75f0f0ed01be3ab9ec22", - "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22", - "shasum": "" - }, - "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.13", - "doctrine/cache": "^1.11.3|^2.0.3", - "doctrine/collections": "^1.5", - "doctrine/common": "^3.0.3", - "doctrine/dbal": "^2.13.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.1", - "doctrine/inflector": "^1.4|^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^2.2", - "ext-pdo": "*", - "php": "^7.1|^8.0", - "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0|^4.0|^5.0|^6.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^0.12.83", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4|^5.2", - "symfony/yaml": "^3.4|^4.0|^5.0|^6.0", - "vimeo/psalm": "4.7.0" - }, - "suggest": { - "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", - "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" - }, - "bin": [ - "bin/doctrine" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Object-Relational-Mapper for PHP", - "homepage": "https://www.doctrine-project.org/projects/orm.html", - "keywords": [ - "database", - "orm" - ], - "support": { - "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.9.3" - }, - "time": "2021-06-13T10:29:22+00:00" - }, - { - "name": "doctrine/persistence", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/persistence.git", - "reference": "d138f3ab5f761055cab1054070377cfd3222e368" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/d138f3ab5f761055cab1054070377cfd3222e368", - "reference": "d138f3ab5f761055cab1054070377cfd3222e368", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "php": "^7.1 || ^8.0", - "psr/cache": "^1.0|^2.0|^3.0" - }, - "conflict": { - "doctrine/common": "<2.10@dev" - }, - "require-dev": { - "composer/package-versions-deprecated": "^1.11", - "doctrine/coding-standard": "^6.0 || ^9.0", - "doctrine/common": "^3.0", - "phpstan/phpstan": "0.12.84", - "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", - "symfony/cache": "^4.4|^5.0", - "vimeo/psalm": "4.7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", - "keywords": [ - "mapper", - "object", - "odm", - "orm", - "persistence" - ], - "support": { - "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.2.1" - }, - "time": "2021-05-19T07:07:01+00:00" - }, - { - "name": "doctrine/sql-formatter", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "56070bebac6e77230ed7d306ad13528e60732871" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", - "reference": "56070bebac6e77230ed7d306ad13528e60732871", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4" - }, - "bin": [ - "bin/sql-formatter" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\SqlFormatter\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" - } - ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/doctrine/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "support": { - "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.x" - }, - "time": "2020-07-30T16:57:33+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c81f18a3efb941d8c4d2e025f6183b5c6d697307", - "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2021-04-01T18:37:14+00:00" - }, - { - "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.5", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", - "shasum": "" - }, - "require": { - "laminas/laminas-code": "~3.4.1|^4.0", - "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" - }, - "conflict": { - "laminas/laminas-stdlib": "<3.2.1", - "zendframework/zend-stdlib": "<3.2.1" - }, - "replace": { - "ocramius/proxy-manager": "^2.1" - }, - "require-dev": { - "ext-phar": "*", - "symfony/phpunit-bridge": "^5.2|^6.0" - }, - "type": "library", - "extra": { - "thanks": { - "name": "ocramius/proxy-manager", - "url": "https://github.com/Ocramius/ProxyManager" - } - }, - "autoload": { - "psr-4": { - "ProxyManager\\": "src/ProxyManager" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - } - ], - "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", - "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", - "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" - ], - "support": { - "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5" - }, - "funding": [ - { - "url": "https://github.com/Ocramius", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", - "type": "tidelift" - } - ], - "time": "2021-05-22T16:11:15+00:00" - }, - { - "name": "laminas/laminas-code", - "version": "4.4.2", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-code.git", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b", - "shasum": "" - }, - "require": { - "php": "^7.4 || ~8.0.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.1.4", - "laminas/laminas-stdlib": "^3.3.0", - "phpunit/phpunit": "^9.4.2", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3.1" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component", - "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Code\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", - "homepage": "https://laminas.dev", - "keywords": [ - "code", - "laminas", - "laminasframework" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-code/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-code/issues", - "rss": "https://github.com/laminas/laminas-code/releases.atom", - "source": "https://github.com/laminas/laminas-code" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-07-09T11:58:40+00:00" - }, - { - "name": "monolog/monolog", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "9738e495f288eec0b187e310b7cdbbb285777dbe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9738e495f288eec0b187e310b7cdbbb285777dbe", - "reference": "9738e495f288eec0b187e310b7cdbbb285777dbe", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7", - "graylog2/gelf-php": "^1.4.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpspec/prophecy": "^1.6.1", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5", - "predis/predis": "^1.1", - "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90 <7.0.1", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.1" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-07-14T11:56:39+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" - }, - "time": "2020-09-03T19:13:55+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" - }, - "time": "2020-09-17T18:55:26+00:00" - }, - { - "name": "psr/cache", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/2.0.0" - }, - "time": "2021-02-03T23:23:37+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/link", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/link.git", - "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", - "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Link\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for HTTP links", - "homepage": "https://github.com/php-fig/link", - "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" - ], - "support": { - "source": "https://github.com/php-fig/link/tree/1.1.1" - }, - "time": "2021-03-11T22:59:13+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "sensio/framework-extra-bundle", - "version": "v6.1.5", - "source": { - "type": "git", - "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/62c5909f49cf74dccdf50a294511cc24be2f969c", - "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0" - }, - "conflict": { - "doctrine/doctrine-cache-bundle": "<1.3.1", - "doctrine/persistence": "<1.3" - }, - "require-dev": { - "doctrine/dbal": "^2.10|^3.0", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.5", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/doctrine-bridge": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/monolog-bridge": "^4.0|^5.0", - "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9", - "symfony/security-bundle": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "6.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" - }, - "exclude-from-classmap": [ - "/tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "This bundle provides a way to configure your controllers with annotations", - "keywords": [ - "annotations", - "controllers" - ], - "support": { - "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.1.5" - }, - "time": "2021-05-31T10:40:46+00:00" - }, - { - "name": "symfony/asset", - "version": "v5.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/asset.git", - "reference": "29a4d5e6e39ffe16cea394fd5041d7a638bd580d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/29a4d5e6e39ffe16cea394fd5041d7a638bd580d", - "reference": "29a4d5e6e39ffe16cea394fd5041d7a638bd580d", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1" - }, - "conflict": { - "symfony/http-foundation": "<5.3" - }, - "require-dev": { - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0" - }, - "suggest": { - "symfony/http-foundation": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Asset\\": "" - }, - "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": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/asset/tree/v5.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-06T08:05:27+00:00" - }, - { - "name": "symfony/cache", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "82962a497f090e95e3b357c21bf6f54991c9b1a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/82962a497f090e95e3b357c21bf6f54991c9b1a5", - "reference": "82962a497f090e95e3b357c21bf6f54991c9b1a5", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0", - "psr/log": "^1.1", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" - }, - "conflict": { - "doctrine/dbal": "<2.10", - "symfony/dependency-injection": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" - }, - "provide": { - "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0", - "symfony/cache-implementation": "1.0|2.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.10|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides an extended PSR-6, PSR-16 (and tags) implementation", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "support": { - "source": "https://github.com/symfony/cache/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/cache-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "c0446463729b89dd4fa62e9aeecc80287323615d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/c0446463729b89dd4fa62e9aeecc80287323615d", - "reference": "c0446463729b89dd4fa62e9aeecc80287323615d", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" - }, - "suggest": { - "symfony/cache-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "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": "Generic abstractions related to caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" - }, - { - "name": "symfony/config", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/a69e0c55528b47df88d3c4067ddedf32d485d662", - "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<4.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "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": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/config/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/console", - "version": "v5.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1", - "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" - }, - "conflict": { - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "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": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-12T09:42:48+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e421c4f161848740ad1fcf09b12391ddca168d95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e421c4f161848740ad1fcf09b12391ddca168d95", - "reference": "e421c4f161848740ad1fcf09b12391ddca168d95", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<5.3", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" - }, - "require-dev": { - "symfony/config": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "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", - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "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": "Allows you to standardize and centralize the way objects are constructed in your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "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": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" - }, - { - "name": "symfony/doctrine-bridge", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "b7147df70ec0bd92f812d643e7e728a5d73d1312" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b7147df70ec0bd92f812d643e7e728a5d73d1312", - "reference": "b7147df70ec0bd92f812d643e7e728a5d73d1312", - "shasum": "" - }, - "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "doctrine/dbal": "<2.10", - "phpunit/phpunit": "<5.4.3", - "symfony/dependency-injection": "<4.4", - "symfony/form": "<5.1", - "symfony/http-kernel": "<5", - "symfony/messenger": "<4.4", - "symfony/property-info": "<5", - "symfony/security-bundle": "<5", - "symfony/security-core": "<5.3", - "symfony/validator": "<5.2" - }, - "require-dev": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.0", - "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.10|^3.0", - "doctrine/orm": "^2.7.3", - "symfony/cache": "^5.1", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/doctrine-messenger": "^5.1", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^5.1.3", - "symfony/http-kernel": "^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0", - "symfony/security-core": "^5.3", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^5.2", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" - }, - "type": "symfony-bridge", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "" - }, - "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": "Provides integration for Doctrine with various Symfony components", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.3.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": "2021-06-30T06:58:18+00:00" - }, - { - "name": "symfony/dotenv", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "1ac423fcc9548709077f90aca26c733cdb7e6e5c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/1ac423fcc9548709077f90aca26c733cdb7e6e5c", - "reference": "1ac423fcc9548709077f90aca26c733cdb7e6e5c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1" - }, - "require-dev": { - "symfony/process": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "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": "Registers environment variables from a .env file", - "homepage": "https://symfony.com", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.3.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": "2021-05-26T12:52:38+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "43323e79c80719e8a4674e33484bca98270d223f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/43323e79c80719e8a4674e33484bca98270d223f", - "reference": "43323e79c80719e8a4674e33484bca98270d223f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1.0", - "symfony/polyfill-php80": "^1.15", - "symfony/var-dumper": "^4.4|^5.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "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": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce", - "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/dependency-injection": "<4.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "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": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "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": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" - }, - { - "name": "symfony/expression-language", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/expression-language.git", - "reference": "e3c136ac5333b0d2ca9de9e7e3efe419362aa046" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/e3c136ac5333b0d2ca9de9e7e3efe419362aa046", - "reference": "e3c136ac5333b0d2ca9de9e7e3efe419362aa046", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ExpressionLanguage\\": "" - }, - "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": "Provides an engine that can compile and evaluate expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.3.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": "2021-05-26T12:52:38+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/19b71c8f313b411172dd5f470fd61f24466d79a9", - "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "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": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.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": "2021-06-30T07:27:52+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", - "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "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": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.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": "2021-05-26T12:52:38+00:00" - }, - { - "name": "symfony/flex", - "version": "v1.13.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/flex.git", - "reference": "2597d0dda8042c43eed44a9cd07236b897e427d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/2597d0dda8042c43eed44a9cd07236b897e427d7", - "reference": "2597d0dda8042c43eed44a9cd07236b897e427d7", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0|^2.0", - "php": ">=7.1" - }, - "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "symfony/dotenv": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/phpunit-bridge": "^4.4|^5.0", - "symfony/process": "^3.4|^4.4|^5.0" - }, - "type": "composer-plugin", - "extra": { - "branch-alias": { - "dev-main": "1.13-dev" - }, - "class": "Symfony\\Flex\\Flex" - }, - "autoload": { - "psr-4": { - "Symfony\\Flex\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien.potencier@gmail.com" - } - ], - "description": "Composer plugin for Symfony", - "support": { - "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.13.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": "2021-05-19T07:19:15+00:00" - }, - { - "name": "symfony/form", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/form.git", - "reference": "bc075f4e2faa8c3f4d85c3ec6ef1e7d584a2e3cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/bc075f4e2faa8c3f4d85c3ec6ef1e7d584a2e3cb", - "reference": "bc075f4e2faa8c3f4d85c3ec6ef1e7d584a2e3cb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/options-resolver": "^5.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15", - "symfony/property-access": "^5.0.8", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<4.4", - "symfony/error-handler": "<4.4.5", - "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<4.4", - "symfony/translation-contracts": "<1.1.7", - "symfony/twig-bridge": "<4.4" - }, - "require-dev": { - "doctrine/collections": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4.17|^5.1.9", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Form\\": "" - }, - "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": "Allows to easily create, process and reuse HTML forms", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/form/tree/v5.3.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": "2021-06-27T12:34:06+00:00" - }, - { - "name": "symfony/framework-bundle", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "0374044e7b3f7ca403058203403f6bc3097f4fbe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/0374044e7b3f7ca403058203403f6bc3097f4fbe", - "reference": "0374044e7b3f7ca403058203403f6bc3097f4fbe", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/cache": "^5.2", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/event-dispatcher": "^5.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15", - "symfony/routing": "^5.3" - }, - "conflict": { - "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", - "symfony/asset": "<5.3", - "symfony/browser-kit": "<4.4", - "symfony/console": "<5.2.5", - "symfony/dom-crawler": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/form": "<5.2", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<5.2", - "symfony/messenger": "<4.4", - "symfony/mime": "<4.4", - "symfony/property-access": "<5.3", - "symfony/property-info": "<4.4", - "symfony/security-core": "<5.3", - "symfony/security-csrf": "<5.3", - "symfony/serializer": "<5.2", - "symfony/stopwatch": "<4.4", - "symfony/translation": "<5.3", - "symfony/twig-bridge": "<4.4", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.2", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<5.2" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "doctrine/persistence": "^1.3|^2.0", - "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/allmysms-notifier": "^5.3", - "symfony/asset": "^5.3", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/clickatell-notifier": "^5.3", - "symfony/console": "^5.2", - "symfony/css-selector": "^4.4|^5.0", - "symfony/discord-notifier": "^5.3", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/dotenv": "^5.1", - "symfony/esendex-notifier": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/fake-chat-notifier": "^5.3", - "symfony/fake-sms-notifier": "^5.3", - "symfony/firebase-notifier": "^5.3", - "symfony/form": "^5.2", - "symfony/free-mobile-notifier": "^5.3", - "symfony/gatewayapi-notifier": "^5.3", - "symfony/gitter-notifier": "^5.3", - "symfony/google-chat-notifier": "^5.3", - "symfony/http-client": "^4.4|^5.0", - "symfony/infobip-notifier": "^5.3", - "symfony/iqsms-notifier": "^5.3", - "symfony/light-sms-notifier": "^5.3", - "symfony/linked-in-notifier": "^5.3", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^5.2", - "symfony/mattermost-notifier": "^5.3", - "symfony/message-bird-notifier": "^5.3", - "symfony/messenger": "^5.2", - "symfony/microsoft-teams-notifier": "^5.3", - "symfony/mime": "^4.4|^5.0", - "symfony/mobyt-notifier": "^5.3", - "symfony/nexmo-notifier": "^5.3", - "symfony/notifier": "^5.3", - "symfony/octopush-notifier": "^5.3", - "symfony/ovh-cloud-notifier": "^5.3", - "symfony/phpunit-bridge": "^5.3", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-info": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/rocket-chat-notifier": "^5.3", - "symfony/security-bundle": "^5.3", - "symfony/sendinblue-notifier": "^5.3", - "symfony/serializer": "^5.2", - "symfony/sinch-notifier": "^5.3", - "symfony/slack-notifier": "^5.3", - "symfony/sms-biuras-notifier": "^5.3", - "symfony/smsapi-notifier": "^5.3", - "symfony/spot-hit-notifier": "^5.3", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/string": "^5.0", - "symfony/telegram-notifier": "^5.3", - "symfony/translation": "^5.3", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/twilio-notifier": "^5.3", - "symfony/validator": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", - "symfony/zulip-notifier": "^5.3", - "twig/twig": "^2.10|^3.0" - }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" - }, - "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": "Provides a tight integration between Symfony components and the Symfony full-stack framework", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.3.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": "2021-06-28T15:44:34+00:00" - }, - { - "name": "symfony/http-client", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "fde4bdb10bf197f932ebccfcb9982881d296fc4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/fde4bdb10bf197f932ebccfcb9982881d296fc4c", - "reference": "fde4bdb10bf197f932ebccfcb9982881d296fc4c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "^1.0", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-client-contracts": "^2.4", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.0|^2" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "2.4" - }, - "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4.13|^5.1.5", - "symfony/process": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-client/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "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": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.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": "2021-04-11T23:07:08+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "0e45ab1574caa0460d9190871a8ce47539e40ccf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0e45ab1574caa0460d9190871a8ce47539e40ccf", - "reference": "0e45ab1574caa0460d9190871a8ce47539e40ccf", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "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": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.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": "2021-06-27T09:19:40+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8", - "reference": "90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "~1.0", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^5.3", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/browser-kit": "<4.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "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": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.3.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": "2021-06-30T08:27:49+00:00" - }, - { - "name": "symfony/intl", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/intl.git", - "reference": "92a24a5fd1087511d29a5c7dd98d97c9e2208e75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/92a24a5fd1087511d29a5c7dd98d97c9e2208e75", - "reference": "92a24a5fd1087511d29a5c7dd98d97c9e2208e75", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15" - }, - "require-dev": { - "symfony/filesystem": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Intl\\": "" - }, - "classmap": [ - "Resources/stubs" - ], - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Eriksen Costa", - "email": "eriksen.costa@infranology.com.br" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", - "homepage": "https://symfony.com", - "keywords": [ - "i18n", - "icu", - "internationalization", - "intl", - "l10n", - "localization" - ], - "support": { - "source": "https://github.com/symfony/intl/tree/v5.3.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": "2021-05-27T12:28:50+00:00" - }, - { - "name": "symfony/mailer", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "6ebd500f14402344fe4369ee88bfec27a567a24d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/6ebd500f14402344fe4369ee88bfec27a567a24d", - "reference": "6ebd500f14402344fe4369ee88bfec27a567a24d", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=7.2.5", - "psr/log": "~1.0", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/mime": "^5.2.6", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/http-kernel": "<4.4" - }, - "require-dev": { - "symfony/http-client-contracts": "^1.1|^2", - "symfony/messenger": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "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": "Helps sending emails", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/mailer/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/mime", - "version": "v5.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "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": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-09T10:58:01+00:00" - }, - { - "name": "symfony/monolog-bridge", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "8badf83f1ba9bb0881b71bddb0ae4e0bb4f39d88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/8badf83f1ba9bb0881b71bddb0ae4e0bb4f39d88", - "reference": "8badf83f1ba9bb0881b71bddb0ae4e0bb4f39d88", - "shasum": "" - }, - "require": { - "monolog/monolog": "^1.25.1|^2", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^5.3", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/console": "<4.4", - "symfony/http-foundation": "<5.3" - }, - "require-dev": { - "symfony/console": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", - "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", - "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." - }, - "type": "symfony-bridge", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Monolog\\": "" - }, - "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": "Provides integration for Monolog with various Symfony components", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/monolog-bundle", - "version": "v3.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/4054b2e940a25195ae15f0a49ab0c51718922eb4", - "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4", - "shasum": "" - }, - "require": { - "monolog/monolog": "~1.22 || ~2.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0", - "symfony/dependency-injection": "^4.4 || ^5.0", - "symfony/http-kernel": "~4.4 || ^5.0", - "symfony/monolog-bridge": "~4.4 || ^5.0" - }, - "require-dev": { - "symfony/console": "~4.4 || ^5.0", - "symfony/phpunit-bridge": "^5.1", - "symfony/yaml": "~4.4 || ^5.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - }, - "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": "Symfony MonologBundle", - "homepage": "https://symfony.com", - "keywords": [ - "log", - "logging" - ], - "support": { - "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.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": "2021-03-31T07:20:47+00:00" - }, - { - "name": "symfony/notifier", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/notifier.git", - "reference": "5306fd5b2c27f8417ff3b9c5cade8e45683768e6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/5306fd5b2c27f8417ff3b9c5cade8e45683768e6", - "reference": "5306fd5b2c27f8417ff3b9c5cade8e45683768e6", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/discord-notifier": "<5.3", - "symfony/esendex-notifier": "<5.3", - "symfony/firebase-notifier": "<5.3", - "symfony/free-mobile-notifier": "<5.3", - "symfony/google-chat-notifier": "<5.3", - "symfony/http-kernel": "<4.4", - "symfony/infobip-notifier": "<5.3", - "symfony/linked-in-notifier": "<5.3", - "symfony/mattermost-notifier": "<5.3", - "symfony/mobyt-notifier": "<5.3", - "symfony/nexmo-notifier": "<5.3", - "symfony/ovh-cloud-notifier": "<5.3", - "symfony/rocket-chat-notifier": "<5.3", - "symfony/sendinblue-notifier": "<5.3", - "symfony/sinch-notifier": "<5.3", - "symfony/slack-notifier": "<5.3", - "symfony/smsapi-notifier": "<5.3", - "symfony/telegram-notifier": "<5.3", - "symfony/twilio-notifier": "<5.3", - "symfony/zulip-notifier": "<5.3" - }, - "require-dev": { - "symfony/event-dispatcher-contracts": "^2", - "symfony/http-client-contracts": "^2", - "symfony/messenger": "^4.4 || ^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Notifier\\": "" - }, - "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": "Sends notifications via one or more channels (email, SMS, ...)", - "homepage": "https://symfony.com", - "keywords": [ - "notification", - "notifier" - ], - "support": { - "source": "https://github.com/symfony/notifier/tree/v5.3.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": "2021-06-21T21:40:30+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/162e886ca035869866d233a2bfef70cc28f9bbe5", - "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "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": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/password-hasher", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/password-hasher.git", - "reference": "eacf514b03b764066415b39a297e351f8c52a8c2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/eacf514b03b764066415b39a297e351f8c52a8c2", - "reference": "eacf514b03b764066415b39a297e351f8c52a8c2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/security-core": "<5.3" - }, - "require-dev": { - "symfony/console": "^5", - "symfony/security-core": "^5.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\PasswordHasher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Robin Chalas", - "email": "robin.chalas@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides password hashing utilities", - "homepage": "https://symfony.com", - "keywords": [ - "hashing", - "password" - ], - "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.3.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": "2021-06-27T12:43:45+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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 for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.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": "2021-05-27T09:17:38+00:00" - }, - { - "name": "symfony/polyfill-intl-icu", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4a80a521d6176870b6445cfb469c130f9cae1dda", - "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance and support of other locales than \"en\"" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Icu\\": "" - }, - "classmap": [ - "Resources/stubs" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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 for intl's ICU-related data and classes", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.23.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": "2021-05-24T10:04:56+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.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": "2021-05-27T09:27:20+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "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 for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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 for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.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": "2021-05-27T09:27:20+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "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 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.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": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "files": [ - "bootstrap.php" - ], - "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.23.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": "2021-05-21T13:25:03+00:00" - }, - { - "name": "symfony/process", - "version": "v5.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "714b47f9196de61a196d86c4bad5f09201b307df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df", - "reference": "714b47f9196de61a196d86c4bad5f09201b307df", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" - }, - "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/v5.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-12T10:15:01+00:00" - }, - { - "name": "symfony/property-access", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/8988399a556cffb0fba9bb3603f8d1ba4543eceb", - "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", - "symfony/property-info": "^5.2" - }, - "require-dev": { - "symfony/cache": "^4.4|^5.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "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": "Provides functions to read and write from/to an object or array using a simple string notation", - "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], - "support": { - "source": "https://github.com/symfony/property-access/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/property-info", - "version": "v5.3.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/6f8bff281f215dbf41929c7ec6f8309cdc0912cf", - "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", - "symfony/string": "^5.1" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", - "homepage": "https://symfony.com", - "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" - ], - "support": { - "source": "https://github.com/symfony/property-info/tree/v5.3.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-31T12:40:48+00:00" - }, - { - "name": "symfony/proxy-manager-bridge", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "4e4997e77f30b4caed2b3cebefdecd7031e25a00" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/4e4997e77f30b4caed2b3cebefdecd7031e25a00", - "reference": "4e4997e77f30b4caed2b3cebefdecd7031e25a00", - "shasum": "" - }, - "require": { - "composer/package-versions-deprecated": "^1.8", - "friendsofphp/proxy-manager-lts": "^1.0.2", - "php": ">=7.2.5", - "symfony/dependency-injection": "^5.0" - }, - "require-dev": { - "symfony/config": "^4.4|^5.0" - }, - "type": "symfony-bridge", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\ProxyManager\\": "" - }, - "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": "Provides integration for ProxyManager with various Symfony components", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.3.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": "2021-05-26T12:52:38+00:00" - }, - { - "name": "symfony/routing", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "368e81376a8e049c37cb80ae87dbfbf411279199" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/368e81376a8e049c37cb80ae87dbfbf411279199", - "reference": "368e81376a8e049c37cb80ae87dbfbf411279199", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.3", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "psr/log": "~1.0", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "support": { - "source": "https://github.com/symfony/routing/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/runtime", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/runtime.git", - "reference": "4ee1e32575a6b8fc45441fa83bce4817509dc866" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/4ee1e32575a6b8fc45441fa83bce4817509dc866", - "reference": "4ee1e32575a6b8fc45441fa83bce4817509dc866", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0|^2.0", - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/dotenv": "<5.1" - }, - "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^4.4|^5", - "symfony/dotenv": "^5.1", - "symfony/http-foundation": "^4.4|^5", - "symfony/http-kernel": "^4.4|^5" - }, - "type": "composer-plugin", - "extra": { - "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Runtime\\": "", - "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Enables decoupling PHP applications from global state", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/runtime/tree/v5.3.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": "2021-06-17T20:24:56+00:00" - }, - { - "name": "symfony/security-bundle", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-bundle.git", - "reference": "e28476b227e737c9a12074fe802751f8e490faec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/e28476b227e737c9a12074fe802751f8e490faec", - "reference": "e28476b227e737c9a12074fe802751f8e490faec", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^5.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", - "symfony/password-hasher": "^5.3", - "symfony/polyfill-php80": "^1.15", - "symfony/security-core": "^5.3", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.3.2" - }, - "conflict": { - "symfony/browser-kit": "<4.4", - "symfony/console": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<5.1", - "symfony/twig-bundle": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "symfony/asset": "^4.4|^5.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/ldap": "^5.3", - "symfony/process": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bridge": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", - "twig/twig": "^2.13|^3.0.4" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Symfony\\Bundle\\SecurityBundle\\": "" - }, - "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": "Provides a tight integration of the Security component into the Symfony full-stack framework", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.3.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": "2021-06-27T12:24:29+00:00" - }, - { - "name": "symfony/security-core", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-core.git", - "reference": "480963371d271b0a1f3a7094c619a2a52120342c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/480963371d271b0a1f3a7094c619a2a52120342c", - "reference": "480963371d271b0a1f3a7094c619a2a52120342c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^1.1|^2", - "symfony/password-hasher": "^5.3", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/event-dispatcher": "<4.4", - "symfony/http-foundation": "<5.3", - "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.4", - "symfony/validator": "<5.2" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "psr/container": "^1.0|^2.0", - "psr/log": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/ldap": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^5.2" - }, - "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/ldap": "For using LDAP integration", - "symfony/validator": "For using the user password constraint" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Core\\": "" - }, - "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": "Symfony Security Component - Core Library", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/security-core/tree/v5.3.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": "2021-06-26T11:20:14+00:00" - }, - { - "name": "symfony/security-csrf", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-csrf.git", - "reference": "20259eb80a981e0db134e51c18f558a9510c1c84" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/20259eb80a981e0db134e51c18f558a9510c1c84", - "reference": "20259eb80a981e0db134e51c18f558a9510c1c84", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/security-core": "^4.4|^5.0" - }, - "conflict": { - "symfony/http-foundation": "<5.3" - }, - "require-dev": { - "symfony/http-foundation": "^5.3" - }, - "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Csrf\\": "" - }, - "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": "Symfony Security Component - CSRF Library", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.3.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": "2021-06-29T05:59:20+00:00" - }, - { - "name": "symfony/security-guard", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-guard.git", - "reference": "07b97d3c8fa9b761ad3a52d659a47661b458c51b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/07b97d3c8fa9b761ad3a52d659a47661b458c51b", - "reference": "07b97d3c8fa9b761ad3a52d659a47661b458c51b", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15", - "symfony/security-core": "^5.0", - "symfony/security-http": "^5.3" - }, - "require-dev": { - "psr/log": "~1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Guard\\": "" - }, - "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": "Symfony Security Component - Guard", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/security-http", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-http.git", - "reference": "81c183fd1527a2d09bd3b5c69bca3fc24ce18527" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/81c183fd1527a2d09bd3b5c69bca3fc24ce18527", - "reference": "81c183fd1527a2d09bd3b5c69bca3fc24ce18527", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15", - "symfony/property-access": "^4.4|^5.0", - "symfony/security-core": "^5.3" - }, - "conflict": { - "symfony/event-dispatcher": "<4.3", - "symfony/security-bundle": "<5.3", - "symfony/security-csrf": "<4.4" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/routing": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0" - }, - "suggest": { - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Http\\": "" - }, - "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": "Symfony Security Component - HTTP Integration", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/security-http/tree/v5.3.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": "2021-06-23T09:36:00+00:00" - }, - { - "name": "symfony/serializer", - "version": "v5.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "96f6ff6582d1bf1bf08281b563a6c7c917efe6c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/96f6ff6582d1bf1bf08281b563a6c7c917efe6c1", - "reference": "96f6ff6582d1bf1bf08281b563a6c7c917efe6c1", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4", - "symfony/property-access": "<4.4", - "symfony/property-info": "<5.3", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4.9|^5.0.9", - "symfony/property-info": "^5.3", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0", - "symfony/var-exporter": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Serializer\\": "" - }, - "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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/serializer/tree/v5.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-10T18:05:39+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.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": "2021-04-01T10:43:52+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "313d02f59d6543311865007e5ff4ace05b35ee65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/313d02f59d6543311865007e5ff4ace05b35ee65", - "reference": "313d02f59d6543311865007e5ff4ace05b35ee65", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1.0|^2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "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": "Provides a way to profile code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/string", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.3.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": "2021-06-27T11:44:38+00:00" - }, - { - "name": "symfony/translation", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/380b8c9e944d0e364b25f28e8e555241eb49c01c", - "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15", - "symfony/translation-contracts": "^2.3" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" - }, - "provide": { - "symfony/translation-implementation": "2.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "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": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.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": "2021-06-27T12:22:47+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" - }, - { - "name": "symfony/twig-bridge", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/twig-bridge.git", - "reference": "61d1415392e260fb66ede48cc5a2a6e82a323db2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/61d1415392e260fb66ede48cc5a2a6e82a323db2", - "reference": "61d1415392e260fb66ede48cc5a2a6e82a323db2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^2.13|^3.0.4" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<4.4", - "symfony/form": "<5.3", - "symfony/http-foundation": "<5.3", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<5.2", - "symfony/workflow": "<5.2" - }, - "require-dev": { - "doctrine/annotations": "^1.12", - "egulias/email-validator": "^2.1.10|^3", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^5.3", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^5.2", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1", - "symfony/routing": "^4.4|^5.0", - "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/security-http": "^4.4|^5.0", - "symfony/serializer": "^5.2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", - "twig/cssinliner-extra": "^2.12|^3", - "twig/inky-extra": "^2.12|^3", - "twig/markdown-extra": "^2.12|^3" - }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security-core": "For using the SecurityExtension", - "symfony/security-csrf": "For using the CsrfExtension", - "symfony/security-http": "For using the LogoutUrlExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" - }, - "type": "symfony-bridge", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Twig\\": "" - }, - "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": "Provides integration for Twig with various Symfony components", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/twig-bundle", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/twig-bundle.git", - "reference": "b70c2837355843196e0e65822eb2b2326ef3a7b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/b70c2837355843196e0e65822eb2b2326ef3a7b0", - "reference": "b70c2837355843196e0e65822eb2b2326ef3a7b0", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/twig-bridge": "^5.3", - "twig/twig": "^2.13|^3.0.4" - }, - "conflict": { - "symfony/dependency-injection": "<5.3", - "symfony/framework-bundle": "<5.0", - "symfony/translation": "<5.0" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Symfony\\Bundle\\TwigBundle\\": "" - }, - "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": "Provides a tight integration of Twig into the Symfony full-stack framework", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.3.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": "2021-06-28T15:44:34+00:00" - }, - { - "name": "symfony/validator", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "82d4a64927d6ec5d37277ae1d9f5d24b31dd390c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/82d4a64927d6ec5d37277ae1d9f5d24b31dd390c", - "reference": "82d4a64927d6ec5d37277ae1d9f5d24b31dd390c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.15", - "symfony/translation-contracts": "^1.1|^2" - }, - "conflict": { - "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<5.4.3", - "symfony/dependency-injection": "<4.4", - "symfony/expression-language": "<5.1", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.4", - "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^5.1", - "symfony/finder": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.3", - "symfony/translation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Validator\\": "" - }, - "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": "Provides tools to validate values", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/validator/tree/v5.3.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": "2021-06-30T07:27:52+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "46aa709affb9ad3355bd7a810f9662d71025c384" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46aa709affb9ad3355bd7a810f9662d71025c384", - "reference": "46aa709affb9ad3355bd7a810f9662d71025c384", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "symfony/var-exporter", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "903c2c0babd6267de5bcb2995e8fc1efb5f01f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/903c2c0babd6267de5bcb2995e8fc1efb5f01f1f", - "reference": "903c2c0babd6267de5bcb2995e8fc1efb5f01f1f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" - }, - "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Allows exporting any serializable PHP data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" - ], - "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.3.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": "2021-06-27T09:16:08+00:00" - }, - { - "name": "symfony/web-link", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/web-link.git", - "reference": "820cd4e31c1b5b440bd2e3c01d3e2583fa8472a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/820cd4e31c1b5b440bd2e3c01d3e2583fa8472a2", - "reference": "820cd4e31c1b5b440bd2e3c01d3e2583fa8472a2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/link": "^1.0" - }, - "conflict": { - "symfony/http-kernel": "<5.3" - }, - "provide": { - "psr/link-implementation": "1.0" - }, - "require-dev": { - "symfony/http-kernel": "^5.3" - }, - "suggest": { - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\WebLink\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Manages links between resources", - "homepage": "https://symfony.com", - "keywords": [ - "dns-prefetch", - "http", - "http2", - "link", - "performance", - "prefetch", - "preload", - "prerender", - "psr13", - "push" - ], - "support": { - "source": "https://github.com/symfony/web-link/tree/v5.3.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": "2021-06-22T16:07:00+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "485c83a2fb5893e2ff21bf4bfc7fdf48b4967229" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/485c83a2fb5893e2ff21bf4bfc7fdf48b4967229", - "reference": "485c83a2fb5893e2ff21bf4bfc7fdf48b4967229", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<4.4" - }, - "require-dev": { - "symfony/console": "^4.4|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "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": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.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": "2021-06-24T08:13:00+00:00" - }, - { - "name": "twig/extra-bundle", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/e12a8ee63387abb83fb7e4c897663bfb94ac22b6", - "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6", - "shasum": "" - }, - "require": { - "php": "^7.1.3|^8.0", - "symfony/framework-bundle": "^4.3|^5.0", - "symfony/twig-bundle": "^4.3|^5.0", - "twig/twig": "^2.4|^3.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4.9|^5.0.9", - "twig/cache-extra": "^3.0", - "twig/cssinliner-extra": "^2.12|^3.0", - "twig/html-extra": "^2.12|^3.0", - "twig/inky-extra": "^2.12|^3.0", - "twig/intl-extra": "^2.12|^3.0", - "twig/markdown-extra": "^2.12|^3.0", - "twig/string-extra": "^2.12|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Twig\\Extra\\TwigExtraBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - } - ], - "description": "A Symfony bundle for extra Twig extensions", - "homepage": "https://twig.symfony.com", - "keywords": [ - "bundle", - "extra", - "twig" - ], - "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.3.1" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2021-05-12T07:47:40+00:00" - }, - { - "name": "twig/twig", - "version": "v3.3.2", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/21578f00e83d4a82ecfa3d50752b609f13de6790", - "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.3.2" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2021-05-16T12:14:13+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.12.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" - }, - "time": "2021-07-21T10:44:31+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" - }, - "time": "2021-02-23T14:00:09+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" - }, - "time": "2021-03-17T13:42:18+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-03-28T07:26:59+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:57:25+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0dc8b6999c937616df4fb046792004b33fd31c5", - "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.7" - }, - "funding": [ - { - "url": "https://phpunit.de/donate.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-07-19T06:14:47+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:24:23+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "2.3.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "symfony/browser-kit", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "379984e25eee9811b0a25a2105e1a2b3b8d9b734" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/379984e25eee9811b0a25a2105e1a2b3b8d9b734", - "reference": "379984e25eee9811b0a25a2105e1a2b3b8d9b734", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0" - }, - "require-dev": { - "symfony/css-selector": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0" - }, - "suggest": { - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "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": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", - "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.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": "2021-05-26T17:40:38+00:00" - }, - { - "name": "symfony/debug-bundle", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug-bundle.git", - "reference": "b73833ac97189fc809816dfbb02185a1a793b072" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/b73833ac97189fc809816dfbb02185a1a793b072", - "reference": "b73833ac97189fc809816dfbb02185a1a793b072", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/twig-bridge": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.2" - }, - "require-dev": { - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/web-profiler-bundle": "^4.4|^5.0" - }, - "suggest": { - "symfony/config": "For service container configuration", - "symfony/dependency-injection": "For using as a service from the container" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Symfony\\Bundle\\DebugBundle\\": "" - }, - "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": "Provides a tight integration of the Symfony Debug component into the Symfony full-stack framework", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v5.3.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": "2021-03-17T16:58:09+00:00" - }, - { - "name": "symfony/dom-crawler", - "version": "v5.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "55fff62b19f413f897a752488ade1bc9c8a19cdd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/55fff62b19f413f897a752488ade1bc9c8a19cdd", - "reference": "55fff62b19f413f897a752488ade1bc9c8a19cdd", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "masterminds/html5": "<2.6" - }, - "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "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": "Eases DOM navigation for HTML and XML documents", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.3.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": "2021-05-26T17:43:10+00:00" - }, - { - "name": "symfony/maker-bundle", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/maker-bundle.git", - "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/f093d906c667cba7e3f74487d9e5e55aaf25a031", - "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.2|^2.0", - "nikic/php-parser": "^4.0", - "php": ">=7.1.3", - "symfony/config": "^4.0|^5.0", - "symfony/console": "^4.0|^5.0", - "symfony/dependency-injection": "^4.0|^5.0", - "symfony/deprecation-contracts": "^2.2", - "symfony/filesystem": "^4.0|^5.0", - "symfony/finder": "^4.0|^5.0", - "symfony/framework-bundle": "^4.0|^5.0", - "symfony/http-kernel": "^4.0|^5.0" - }, - "require-dev": { - "composer/semver": "^3.0@dev", - "doctrine/doctrine-bundle": "^1.8|^2.0", - "doctrine/orm": "^2.3", - "friendsofphp/php-cs-fixer": "^3.0", - "friendsoftwig/twigcs": "^4.1.0|^5.0.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/phpunit-bridge": "^4.3|^5.0", - "symfony/process": "^4.0|^5.0", - "symfony/security-core": "^4.0|^5.0", - "symfony/yaml": "^4.0|^5.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-main": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\MakerBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", - "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", - "keywords": [ - "code generator", - "generator", - "scaffold", - "scaffolding" - ], - "support": { - "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.33.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": "2021-07-01T00:28:30+00:00" - }, - { - "name": "symfony/phpunit-bridge", - "version": "v5.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "d7d3193df3b198f287777b61ef06cd59fdb0516d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d7d3193df3b198f287777b61ef06cd59fdb0516d", - "reference": "d7d3193df3b198f287777b61ef06cd59fdb0516d", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1" - }, - "conflict": { - "phpunit/phpunit": "<7.5|9.1.2" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" - }, - "bin": [ - "bin/simple-phpunit" - ], - "type": "symfony-bridge", - "extra": { - "thanks": { - "name": "phpunit/phpunit", - "url": "https://github.com/sebastianbergmann/phpunit" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Bridge\\PhpUnit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides utilities for PHPUnit, especially user deprecation notices management", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.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": "2021-06-22T16:07:00+00:00" - }, - { - "name": "symfony/web-profiler-bundle", - "version": "v5.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "8feb731cfc248cce5c0ac6eeba63ec4923c6a264" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8feb731cfc248cce5c0ac6eeba63ec4923c6a264", - "reference": "8feb731cfc248cce5c0ac6eeba63ec4923c6a264", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/http-kernel": "^5.3", - "symfony/routing": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "twig/twig": "^2.13|^3.0.4" - }, - "conflict": { - "symfony/dependency-injection": "<5.2", - "symfony/form": "<4.4", - "symfony/messenger": "<4.4" - }, - "require-dev": { - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Symfony\\Bundle\\WebProfilerBundle\\": "" - }, - "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": "Provides a development tool that gives detailed information about the execution of any request", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-07T14:51:59+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2020-07-12T23:59:07+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": ">=7.2.5", - "ext-ctype": "*", - "ext-iconv": "*" - }, - "platform-dev": [], - "plugin-api-version": "2.0.0" -} +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "7f30e61383bffabaf547a9160e26d9c1", + "packages": [ + { + "name": "composer/package-versions-deprecated", + "version": "1.11.99.2", + "source": { + "type": "git", + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/c6522afe5540d5fc46675043d3ed5a45a740b27c", + "reference": "c6522afe5540d5fc46675043d3ed5a45a740b27c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2021-05-24T07:46:03+00:00" + }, + { + "name": "doctrine/annotations", + "version": "1.13.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", + "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^0.12.20", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", + "symfony/cache": "^4.4 || ^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.1" + }, + "time": "2021-05-16T18:07:53+00:00" + }, + { + "name": "doctrine/cache", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce", + "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce", + "shasum": "" + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^8.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "predis/predis": "~1.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", + "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.1.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "type": "tidelift" + } + ], + "time": "2021-07-17T14:49:29+00:00" + }, + { + "name": "doctrine/collections", + "version": "1.6.7", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a", + "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a", + "shasum": "" + }, + "require": { + "php": "^7.1.3 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan-shim": "^0.9.2", + "phpunit/phpunit": "^7.0", + "vimeo/psalm": "^3.8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", + "keywords": [ + "array", + "collections", + "iterators", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/1.6.7" + }, + "time": "2020-07-27T17:53:49+00:00" + }, + { + "name": "doctrine/common", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "shasum": "" + }, + "require": { + "doctrine/persistence": "^2.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0 || ^8.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^4.0.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", + "keywords": [ + "common", + "doctrine", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.1.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", + "type": "tidelift" + } + ], + "time": "2021-02-10T20:18:51+00:00" + }, + { + "name": "doctrine/dbal", + "version": "2.13.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.0|^2.0", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.1 || ^8" + }, + "require-dev": { + "doctrine/coding-standard": "9.0.0", + "jetbrains/phpstorm-stubs": "2020.2", + "phpstan/phpstan": "0.12.81", + "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", + "squizlabs/php_codesniffer": "3.6.0", + "symfony/cache": "^4.4", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", + "vimeo/psalm": "4.6.4" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlanywhere", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/2.13.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2021-06-18T21:48:39+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v0.5.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0|^7.0|^8.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "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/v0.5.3" + }, + "time": "2021-03-21T12:59:47+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "2.4.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4202ce675d29e70a8b9ee763bec021b6f44caccb", + "reference": "4202ce675d29e70a8b9ee763bec021b6f44caccb", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/dbal": "^2.9.0|^3.0", + "doctrine/persistence": "^1.3.3|^2.0", + "doctrine/sql-formatter": "^1.0.1", + "php": "^7.1 || ^8.0", + "symfony/cache": "^4.3.3|^5.0|^6.0", + "symfony/config": "^4.4.3|^5.0|^6.0", + "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/dependency-injection": "^4.3.3|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", + "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/service-contracts": "^1.1.1|^2.0" + }, + "conflict": { + "doctrine/orm": "<2.9", + "twig/twig": "<1.34|>=2.0,<2.4" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "doctrine/orm": "^2.9", + "friendsofphp/proxy-manager-lts": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3", + "psalm/plugin-phpunit": "^0.15.1", + "psalm/plugin-symfony": "^2.3.0", + "symfony/phpunit-bridge": "^5.2|^6.0", + "symfony/property-info": "^4.3.3|^5.0|^6.0", + "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", + "symfony/security-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", + "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", + "twig/twig": "^1.34|^2.12|^3.0", + "vimeo/psalm": "^4.7" + }, + "suggest": { + "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "ext-pdo": "*", + "symfony/web-profiler-bundle": "To use the data collector." + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + } + ], + "description": "Symfony DoctrineBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineBundle/issues", + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.4.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-bundle", + "type": "tidelift" + } + ], + "time": "2021-06-05T13:40:39+00:00" + }, + { + "name": "doctrine/doctrine-migrations-bundle", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", + "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/91f0a5e2356029575f3038432cc188b12f9d5da5", + "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5", + "shasum": "" + }, + "require": { + "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/migrations": "^3.1", + "php": "^7.2|^8.0", + "symfony/framework-bundle": "~3.4|~4.0|~5.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3||^2.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\MigrationsBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "Symfony DoctrineMigrationsBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "dbal", + "migrations", + "schema" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.1.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2021-04-10T16:48:53+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2020-05-29T18:28:51+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2020-05-29T15:13:26+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2020-05-25T17:44:05+00:00" + }, + { + "name": "doctrine/migrations", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "072c11c1dcfced4505e29a0487b06ea774c403f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/072c11c1dcfced4505e29a0487b06ea774c403f4", + "reference": "072c11c1dcfced4505e29a0487b06ea774c403f4", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8", + "doctrine/dbal": "^2.11", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", + "friendsofphp/proxy-manager-lts": "^1.0", + "php": "^7.2 || ^8.0", + "psr/log": "^1.1.3", + "symfony/console": "^3.4 || ^4.4.16 || ^5.0", + "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3 || ^2.0", + "doctrine/sql-formatter": "^1.0", + "ergebnis/composer-normalize": "^2.9", + "ext-pdo_sqlite": "*", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpstan/phpstan-symfony": "^0.12", + "phpunit/phpunit": "^8.5 || ^9.4", + "symfony/cache": "^5.3", + "symfony/process": "^3.4 || ^4.0 || ^5.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0" + }, + "suggest": { + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "symfony/yaml": "Allows the use of yaml for migration configuration files." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", + "extra": { + "composer-normalize": { + "indent-size": 4, + "indent-style": "space" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" + } + ], + "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", + "homepage": "https://www.doctrine-project.org/projects/migrations.html", + "keywords": [ + "database", + "dbal", + "migrations" + ], + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.2.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2021-07-05T07:06:31+00:00" + }, + { + "name": "doctrine/orm", + "version": "2.9.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/orm.git", + "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/orm/zipball/82e77cf5089a1303733f75f0f0ed01be3ab9ec22", + "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.13", + "doctrine/cache": "^1.11.3|^2.0.3", + "doctrine/collections": "^1.5", + "doctrine/common": "^3.0.3", + "doctrine/dbal": "^2.13.0", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.1", + "doctrine/inflector": "^1.4|^2.0", + "doctrine/instantiator": "^1.3", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^2.2", + "ext-pdo": "*", + "php": "^7.1|^8.0", + "psr/cache": "^1 || ^2 || ^3", + "symfony/console": "^3.0|^4.0|^5.0|^6.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^0.12.83", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "squizlabs/php_codesniffer": "3.6.0", + "symfony/cache": "^4.4|^5.2", + "symfony/yaml": "^3.4|^4.0|^5.0|^6.0", + "vimeo/psalm": "4.7.0" + }, + "suggest": { + "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\ORM\\": "lib/Doctrine/ORM" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "https://www.doctrine-project.org/projects/orm.html", + "keywords": [ + "database", + "orm" + ], + "support": { + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/2.9.3" + }, + "time": "2021-06-13T10:29:22+00:00" + }, + { + "name": "doctrine/persistence", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "d138f3ab5f761055cab1054070377cfd3222e368" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/d138f3ab5f761055cab1054070377cfd3222e368", + "reference": "d138f3ab5f761055cab1054070377cfd3222e368", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/collections": "^1.0", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", + "php": "^7.1 || ^8.0", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "conflict": { + "doctrine/common": "<2.10@dev" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.11", + "doctrine/coding-standard": "^6.0 || ^9.0", + "doctrine/common": "^3.0", + "phpstan/phpstan": "0.12.84", + "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", + "symfony/cache": "^4.4|^5.0", + "vimeo/psalm": "4.7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common", + "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", + "homepage": "https://doctrine-project.org/projects/persistence.html", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/2.2.1" + }, + "time": "2021-05-19T07:07:01+00:00" + }, + { + "name": "doctrine/sql-formatter", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/sql-formatter.git", + "reference": "56070bebac6e77230ed7d306ad13528e60732871" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", + "reference": "56070bebac6e77230ed7d306ad13528e60732871", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4" + }, + "bin": [ + "bin/sql-formatter" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\SqlFormatter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/doctrine/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "support": { + "issues": "https://github.com/doctrine/sql-formatter/issues", + "source": "https://github.com/doctrine/sql-formatter/tree/1.1.x" + }, + "time": "2020-07-30T16:57:33+00:00" + }, + { + "name": "egulias/email-validator", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2021-04-01T18:37:14+00:00" + }, + { + "name": "friendsofphp/proxy-manager-lts", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", + "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", + "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", + "shasum": "" + }, + "require": { + "laminas/laminas-code": "~3.4.1|^4.0", + "php": ">=7.1", + "symfony/filesystem": "^4.4.17|^5.0|^6.0" + }, + "conflict": { + "laminas/laminas-stdlib": "<3.2.1", + "zendframework/zend-stdlib": "<3.2.1" + }, + "replace": { + "ocramius/proxy-manager": "^2.1" + }, + "require-dev": { + "ext-phar": "*", + "symfony/phpunit-bridge": "^5.2|^6.0" + }, + "type": "library", + "extra": { + "thanks": { + "name": "ocramius/proxy-manager", + "url": "https://github.com/Ocramius/ProxyManager" + } + }, + "autoload": { + "psr-4": { + "ProxyManager\\": "src/ProxyManager" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.io/" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + } + ], + "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", + "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "support": { + "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.5" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", + "type": "tidelift" + } + ], + "time": "2021-05-22T16:11:15+00:00" + }, + { + "name": "laminas/laminas-code", + "version": "4.4.2", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-code.git", + "reference": "54251ab2b16c41c6980387839496b235f5f6e10b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b", + "reference": "54251ab2b16c41c6980387839496b235f5f6e10b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ~8.0.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "ext-phar": "*", + "laminas/laminas-coding-standard": "^2.1.4", + "laminas/laminas-stdlib": "^3.3.0", + "phpunit/phpunit": "^9.4.2", + "psalm/plugin-phpunit": "^0.14.0", + "vimeo/psalm": "^4.3.1" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "laminas/laminas-stdlib": "Laminas\\Stdlib component", + "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", + "homepage": "https://laminas.dev", + "keywords": [ + "code", + "laminas", + "laminasframework" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-07-09T11:58:40+00:00" + }, + { + "name": "lcobucci/clock", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "353d83fe2e6ae95745b16b3d911813df6a05bfb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/353d83fe2e6ae95745b16b3d911813df6a05bfb3", + "reference": "353d83fe2e6ae95745b16b3d911813df6a05bfb3", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.17", + "lcobucci/coding-standard": "^6.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-code-coverage": "9.1.4", + "phpunit/phpunit": "9.3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" + } + ], + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/2.0.x" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2020-08-27T18:56:02+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "4.1.4", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "71cf170102c8371ccd933fa4df6252086d144de6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/71cf170102c8371ccd933fa4df6252086d144de6", + "reference": "71cf170102c8371ccd933fa4df6252086d144de6", + "shasum": "" + }, + "require": { + "ext-hash": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-sodium": "*", + "lcobucci/clock": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.21", + "lcobucci/coding-standard": "^6.0", + "mikey179/vfsstream": "^1.6.7", + "phpbench/phpbench": "^1.0@alpha", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-invoker": "^3.1", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/4.1.4" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2021-03-23T23:53:08+00:00" + }, + { + "name": "lexik/jwt-authentication-bundle", + "version": "v2.12.3", + "source": { + "type": "git", + "url": "https://github.com/lexik/LexikJWTAuthenticationBundle.git", + "reference": "7fb85afb1a63bb7e518a369baa355599f822ff43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/7fb85afb1a63bb7e518a369baa355599f822ff43", + "reference": "7fb85afb1a63bb7e518a369baa355599f822ff43", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "lcobucci/jwt": "^3.4|^4.0", + "namshi/jose": "^7.2", + "php": ">=7.1", + "symfony/deprecation-contracts": "^2.4", + "symfony/framework-bundle": "^4.4|^5.1", + "symfony/security-bundle": "^4.4|^5.1" + }, + "require-dev": { + "symfony/browser-kit": "^4.4|^5.1", + "symfony/console": "^4.4|^5.1", + "symfony/dom-crawler": "^4.4|^5.1", + "symfony/phpunit-bridge": "^4.4|^5.1", + "symfony/var-dumper": "^4.4|^5.1", + "symfony/yaml": "^4.4|^5.1" + }, + "suggest": { + "gesdinet/jwt-refresh-token-bundle": "Implements a refresh token system over Json Web Tokens in Symfony", + "spomky-labs/lexik-jose-bridge": "Provides a JWT Token encoder with encryption support" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Lexik\\Bundle\\JWTAuthenticationBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Barthe", + "email": "j.barthe@lexik.fr", + "homepage": "https://github.com/jeremyb" + }, + { + "name": "Nicolas Cabot", + "email": "n.cabot@lexik.fr", + "homepage": "https://github.com/slashfan" + }, + { + "name": "Cedric Girard", + "email": "c.girard@lexik.fr", + "homepage": "https://github.com/cedric-g" + }, + { + "name": "Dev Lexik", + "email": "dev@lexik.fr", + "homepage": "https://github.com/lexik" + }, + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com", + "homepage": "https://github.com/chalasr" + }, + { + "name": "Lexik Community", + "homepage": "https://github.com/lexik/LexikJWTAuthenticationBundle/graphs/contributors" + } + ], + "description": "This bundle provides JWT authentication for your Symfony REST API", + "homepage": "https://github.com/lexik/LexikJWTAuthenticationBundle", + "keywords": [ + "Authentication", + "JWS", + "api", + "bundle", + "jwt", + "rest", + "symfony" + ], + "support": { + "issues": "https://github.com/lexik/LexikJWTAuthenticationBundle/issues", + "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v2.12.3" + }, + "funding": [ + { + "url": "https://github.com/chalasr", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/lexik/jwt-authentication-bundle", + "type": "tidelift" + } + ], + "time": "2021-07-07T09:06:05+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "9738e495f288eec0b187e310b7cdbbb285777dbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9738e495f288eec0b187e310b7cdbbb285777dbe", + "reference": "9738e495f288eec0b187e310b7cdbbb285777dbe", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90 <7.0.1", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.3.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2021-07-14T11:56:39+00:00" + }, + { + "name": "namshi/jose", + "version": "7.2.3", + "source": { + "type": "git", + "url": "https://github.com/namshi/jose.git", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff", + "shasum": "" + }, + "require": { + "ext-date": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-spl": "*", + "php": ">=5.5", + "symfony/polyfill-php56": "^1.0" + }, + "require-dev": { + "phpseclib/phpseclib": "^2.0", + "phpunit/phpunit": "^4.5|^5.0", + "satooshi/php-coveralls": "^1.0" + }, + "suggest": { + "ext-openssl": "Allows to use OpenSSL as crypto engine.", + "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0." + }, + "type": "library", + "autoload": { + "psr-4": { + "Namshi\\JOSE\\": "src/Namshi/JOSE/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Nadalin", + "email": "alessandro.nadalin@gmail.com" + }, + { + "name": "Alessandro Cinelli (cirpo)", + "email": "alessandro.cinelli@gmail.com" + } + ], + "description": "JSON Object Signing and Encryption library for PHP.", + "keywords": [ + "JSON Web Signature", + "JSON Web Token", + "JWS", + "json", + "jwt", + "token" + ], + "support": { + "issues": "https://github.com/namshi/jose/issues", + "source": "https://github.com/namshi/jose/tree/master" + }, + "time": "2016-12-05T07:27:31+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + }, + "time": "2020-09-17T18:55:26+00:00" + }, + { + "name": "psr/cache", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/2.0.0" + }, + "time": "2021-02-03T23:23:37+00:00" + }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/link", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "support": { + "source": "https://github.com/php-fig/link/tree/1.1.1" + }, + "time": "2021-03-11T22:59:13+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v6.1.5", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/62c5909f49cf74dccdf50a294511cc24be2f969c", + "reference": "62c5909f49cf74dccdf50a294511cc24be2f969c", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0" + }, + "conflict": { + "doctrine/doctrine-cache-bundle": "<1.3.1", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "doctrine/dbal": "^2.10|^3.0", + "doctrine/doctrine-bundle": "^1.11|^2.0", + "doctrine/orm": "^2.5", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/doctrine-bridge": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/monolog-bridge": "^4.0|^5.0", + "symfony/monolog-bundle": "^3.2", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9", + "symfony/security-bundle": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^1.34|^2.4|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "6.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" + }, + "exclude-from-classmap": [ + "/tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "support": { + "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.1.5" + }, + "time": "2021-05-31T10:40:46+00:00" + }, + { + "name": "symfony-bundles/json-request-bundle", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony-bundles/json-request-bundle.git", + "reference": "53af1ff1df5457ea16d18cebab1309e667ea86c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony-bundles/json-request-bundle/zipball/53af1ff1df5457ea16d18cebab1309e667ea86c4", + "reference": "53af1ff1df5457ea16d18cebab1309e667ea86c4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=7.4 || ^8.0", + "symfony/framework-bundle": "^5.0" + }, + "require-dev": { + "doctrine/annotations": "^1.0", + "phpstan/phpstan": "^0.12", + "phpunit/php-code-coverage": "^9.2", + "phpunit/phpunit": "^9.5", + "symfony/browser-kit": "^5.2", + "symfony/yaml": "^5.2" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "SymfonyBundles\\JsonRequestBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dmitry Khaperets", + "email": "khaperets@gmail.com" + } + ], + "description": "Symfony JsonRequest Bundle", + "homepage": "https://github.com/symfony-bundles/json-request-bundle", + "keywords": [ + "angular", + "bundle", + "json", + "symfony" + ], + "support": { + "issues": "https://github.com/symfony-bundles/json-request-bundle/issues", + "source": "https://github.com/symfony-bundles/json-request-bundle/tree/4.0.5" + }, + "time": "2021-02-16T11:16:20+00:00" + }, + { + "name": "symfony/asset", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "29a4d5e6e39ffe16cea394fd5041d7a638bd580d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/29a4d5e6e39ffe16cea394fd5041d7a638bd580d", + "reference": "29a4d5e6e39ffe16cea394fd5041d7a638bd580d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/http-client": "^4.4|^5.0", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^4.4|^5.0" + }, + "suggest": { + "symfony/http-foundation": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "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": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-06T08:05:27+00:00" + }, + { + "name": "symfony/cache", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "82962a497f090e95e3b357c21bf6f54991c9b1a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/82962a497f090e95e3b357c21bf6f54991c9b1a5", + "reference": "82962a497f090e95e3b357c21bf6f54991c9b1a5", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1.1", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.10", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0", + "symfony/cache-implementation": "1.0|2.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.10|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "c0446463729b89dd4fa62e9aeecc80287323615d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/c0446463729b89dd4fa62e9aeecc80287323615d", + "reference": "c0446463729b89dd4fa62e9aeecc80287323615d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "suggest": { + "symfony/cache-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "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": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/config", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/a69e0c55528b47df88d3c4067ddedf32d485d662", + "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/filesystem": "^4.4|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php81": "^1.22" + }, + "conflict": { + "symfony/finder": "<4.4" + }, + "require-dev": { + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "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": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/console", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1", + "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "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": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-12T09:42:48+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "e421c4f161848740ad1fcf09b12391ddca168d95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e421c4f161848740ad1fcf09b12391ddca168d95", + "reference": "e421c4f161848740ad1fcf09b12391ddca168d95", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1.1", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<5.3", + "symfony/finder": "<4.4", + "symfony/proxy-manager-bridge": "<4.4", + "symfony/yaml": "<4.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^5.3", + "symfony/expression-language": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "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", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "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": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dependency-injection/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "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": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/doctrine-bridge", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "b7147df70ec0bd92f812d643e7e728a5d73d1312" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b7147df70ec0bd92f812d643e7e728a5d73d1312", + "reference": "b7147df70ec0bd92f812d643e7e728a5d73d1312", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "~1.0", + "doctrine/persistence": "^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/dbal": "<2.10", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/form": "<5.1", + "symfony/http-kernel": "<5", + "symfony/messenger": "<4.4", + "symfony/property-info": "<5", + "symfony/security-bundle": "<5", + "symfony/security-core": "<5.3", + "symfony/validator": "<5.2" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.10.4", + "doctrine/collections": "~1.0", + "doctrine/data-fixtures": "^1.1", + "doctrine/dbal": "^2.10|^3.0", + "doctrine/orm": "^2.7.3", + "symfony/cache": "^5.1", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/doctrine-messenger": "^5.1", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^5.1.3", + "symfony/http-kernel": "^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.0", + "symfony/property-info": "^5.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0", + "symfony/security-core": "^5.3", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/uid": "^5.1", + "symfony/validator": "^5.2", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "doctrine/data-fixtures": "", + "doctrine/dbal": "", + "doctrine/orm": "", + "symfony/form": "", + "symfony/property-info": "", + "symfony/validator": "" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "" + }, + "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": "Provides integration for Doctrine with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.3.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": "2021-06-30T06:58:18+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "1ac423fcc9548709077f90aca26c733cdb7e6e5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/1ac423fcc9548709077f90aca26c733cdb7e6e5c", + "reference": "1ac423fcc9548709077f90aca26c733cdb7e6e5c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1" + }, + "require-dev": { + "symfony/process": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "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": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v5.3.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": "2021-05-26T12:52:38+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "43323e79c80719e8a4674e33484bca98270d223f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/43323e79c80719e8a4674e33484bca98270d223f", + "reference": "43323e79c80719e8a4674e33484bca98270d223f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "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": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce", + "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "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": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/expression-language", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "e3c136ac5333b0d2ca9de9e7e3efe419362aa046" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/e3c136ac5333b0d2ca9de9e7e3efe419362aa046", + "reference": "e3c136ac5333b0d2ca9de9e7e3efe419362aa046", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/cache": "^4.4|^5.0", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "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": "Provides an engine that can compile and evaluate expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/expression-language/tree/v5.3.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": "2021-05-26T12:52:38+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/19b71c8f313b411172dd5f470fd61f24466d79a9", + "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "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": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.3.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": "2021-06-30T07:27:52+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", + "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "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": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.3.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": "2021-05-26T12:52:38+00:00" + }, + { + "name": "symfony/flex", + "version": "v1.13.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "2597d0dda8042c43eed44a9cd07236b897e427d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/2597d0dda8042c43eed44a9cd07236b897e427d7", + "reference": "2597d0dda8042c43eed44a9cd07236b897e427d7", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/dotenv": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/phpunit-bridge": "^4.4|^5.0", + "symfony/process": "^3.4|^4.4|^5.0" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-main": "1.13-dev" + }, + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v1.13.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": "2021-05-19T07:19:15+00:00" + }, + { + "name": "symfony/form", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "bc075f4e2faa8c3f4d85c3ec6ef1e7d584a2e3cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/bc075f4e2faa8c3f4d85c3ec6ef1e7d584a2e3cb", + "reference": "bc075f4e2faa8c3f4d85c3ec6ef1e7d584a2e3cb", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/options-resolver": "^5.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/property-access": "^5.0.8", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<4.4", + "symfony/error-handler": "<4.4.5", + "symfony/framework-bundle": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<4.4", + "symfony/translation-contracts": "<1.1.7", + "symfony/twig-bridge": "<4.4" + }, + "require-dev": { + "doctrine/collections": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/uid": "^5.1", + "symfony/validator": "^4.4.17|^5.1.9", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "symfony/security-csrf": "For protecting forms against CSRF attacks.", + "symfony/twig-bridge": "For templating with Twig.", + "symfony/validator": "For form validation." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Form\\": "" + }, + "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": "Allows to easily create, process and reuse HTML forms", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/form/tree/v5.3.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": "2021-06-27T12:34:06+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "0374044e7b3f7ca403058203403f6bc3097f4fbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/0374044e7b3f7ca403058203403f6bc3097f4fbe", + "reference": "0374044e7b3f7ca403058203403f6bc3097f4fbe", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.2.5", + "symfony/cache": "^5.2", + "symfony/config": "^5.3", + "symfony/dependency-injection": "^5.3", + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/event-dispatcher": "^5.1", + "symfony/filesystem": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/routing": "^5.3" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "phpunit/phpunit": "<5.4.3", + "symfony/asset": "<5.3", + "symfony/browser-kit": "<4.4", + "symfony/console": "<5.2.5", + "symfony/dom-crawler": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/form": "<5.2", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<5.2", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-access": "<5.3", + "symfony/property-info": "<4.4", + "symfony/security-core": "<5.3", + "symfony/security-csrf": "<5.3", + "symfony/serializer": "<5.2", + "symfony/stopwatch": "<4.4", + "symfony/translation": "<5.3", + "symfony/twig-bridge": "<4.4", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<5.2", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<5.2" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2.0", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/allmysms-notifier": "^5.3", + "symfony/asset": "^5.3", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/clickatell-notifier": "^5.3", + "symfony/console": "^5.2", + "symfony/css-selector": "^4.4|^5.0", + "symfony/discord-notifier": "^5.3", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/dotenv": "^5.1", + "symfony/esendex-notifier": "^5.3", + "symfony/expression-language": "^4.4|^5.0", + "symfony/fake-chat-notifier": "^5.3", + "symfony/fake-sms-notifier": "^5.3", + "symfony/firebase-notifier": "^5.3", + "symfony/form": "^5.2", + "symfony/free-mobile-notifier": "^5.3", + "symfony/gatewayapi-notifier": "^5.3", + "symfony/gitter-notifier": "^5.3", + "symfony/google-chat-notifier": "^5.3", + "symfony/http-client": "^4.4|^5.0", + "symfony/infobip-notifier": "^5.3", + "symfony/iqsms-notifier": "^5.3", + "symfony/light-sms-notifier": "^5.3", + "symfony/linked-in-notifier": "^5.3", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^5.2", + "symfony/mattermost-notifier": "^5.3", + "symfony/message-bird-notifier": "^5.3", + "symfony/messenger": "^5.2", + "symfony/microsoft-teams-notifier": "^5.3", + "symfony/mime": "^4.4|^5.0", + "symfony/mobyt-notifier": "^5.3", + "symfony/nexmo-notifier": "^5.3", + "symfony/notifier": "^5.3", + "symfony/octopush-notifier": "^5.3", + "symfony/ovh-cloud-notifier": "^5.3", + "symfony/phpunit-bridge": "^5.3", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", + "symfony/rocket-chat-notifier": "^5.3", + "symfony/security-bundle": "^5.3", + "symfony/sendinblue-notifier": "^5.3", + "symfony/serializer": "^5.2", + "symfony/sinch-notifier": "^5.3", + "symfony/slack-notifier": "^5.3", + "symfony/sms-biuras-notifier": "^5.3", + "symfony/smsapi-notifier": "^5.3", + "symfony/spot-hit-notifier": "^5.3", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/string": "^5.0", + "symfony/telegram-notifier": "^5.3", + "symfony/translation": "^5.3", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/twilio-notifier": "^5.3", + "symfony/validator": "^5.2", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^5.2", + "symfony/yaml": "^4.4|^5.0", + "symfony/zulip-notifier": "^5.3", + "twig/twig": "^2.10|^3.0" + }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "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": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/framework-bundle/tree/v5.3.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": "2021-06-28T15:44:34+00:00" + }, + { + "name": "symfony/http-client", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "fde4bdb10bf197f932ebccfcb9982881d296fc4c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/fde4bdb10bf197f932ebccfcb9982881d296fc4c", + "reference": "fde4bdb10bf197f932ebccfcb9982881d296fc4c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-client-contracts": "^2.4", + "symfony/polyfill-php73": "^1.11", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.0|^2" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "2.4" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4.13|^5.1.5", + "symfony/process": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-client/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", + "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + } + }, + "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": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.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": "2021-04-11T23:07:08+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "0e45ab1574caa0460d9190871a8ce47539e40ccf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0e45ab1574caa0460d9190871a8ce47539e40ccf", + "reference": "0e45ab1574caa0460d9190871a8ce47539e40ccf", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.15" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.3.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": "2021-06-27T09:19:40+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8", + "reference": "90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "~1.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4|^5.0", + "symfony/event-dispatcher": "^5.0", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^5.3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dependency-injection": "^5.3", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "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": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.3.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": "2021-06-30T08:27:49+00:00" + }, + { + "name": "symfony/intl", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "92a24a5fd1087511d29a5c7dd98d97c9e2208e75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/92a24a5fd1087511d29a5c7dd98d97c9e2208e75", + "reference": "92a24a5fd1087511d29a5c7dd98d97c9e2208e75", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" + }, + "require-dev": { + "symfony/filesystem": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Intl\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", + "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], + "support": { + "source": "https://github.com/symfony/intl/tree/v5.3.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": "2021-05-27T12:28:50+00:00" + }, + { + "name": "symfony/mailer", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "6ebd500f14402344fe4369ee88bfec27a567a24d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6ebd500f14402344fe4369ee88bfec27a567a24d", + "reference": "6ebd500f14402344fe4369ee88bfec27a567a24d", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3", + "php": ">=7.2.5", + "psr/log": "~1.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/mime": "^5.2.6", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/http-kernel": "<4.4" + }, + "require-dev": { + "symfony/http-client-contracts": "^1.1|^2", + "symfony/messenger": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "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": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.1", + "symfony/property-info": "^4.4|^5.1", + "symfony/serializer": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "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": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-09T10:58:01+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "8badf83f1ba9bb0881b71bddb0ae4e0bb4f39d88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/8badf83f1ba9bb0881b71bddb0ae4e0bb4f39d88", + "reference": "8badf83f1ba9bb0881b71bddb0ae4e0bb4f39d88", + "shasum": "" + }, + "require": { + "monolog/monolog": "^1.25.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-kernel": "^5.3", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/console": "<4.4", + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/security-core": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "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": "Provides integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/monolog-bridge/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "v3.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/4054b2e940a25195ae15f0a49ab0c51718922eb4", + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.22 || ~2.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/http-kernel": "~4.4 || ^5.0", + "symfony/monolog-bridge": "~4.4 || ^5.0" + }, + "require-dev": { + "symfony/console": "~4.4 || ^5.0", + "symfony/phpunit-bridge": "^5.1", + "symfony/yaml": "~4.4 || ^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "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": "Symfony MonologBundle", + "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.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": "2021-03-31T07:20:47+00:00" + }, + { + "name": "symfony/notifier", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/notifier.git", + "reference": "5306fd5b2c27f8417ff3b9c5cade8e45683768e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/notifier/zipball/5306fd5b2c27f8417ff3b9c5cade8e45683768e6", + "reference": "5306fd5b2c27f8417ff3b9c5cade8e45683768e6", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/discord-notifier": "<5.3", + "symfony/esendex-notifier": "<5.3", + "symfony/firebase-notifier": "<5.3", + "symfony/free-mobile-notifier": "<5.3", + "symfony/google-chat-notifier": "<5.3", + "symfony/http-kernel": "<4.4", + "symfony/infobip-notifier": "<5.3", + "symfony/linked-in-notifier": "<5.3", + "symfony/mattermost-notifier": "<5.3", + "symfony/mobyt-notifier": "<5.3", + "symfony/nexmo-notifier": "<5.3", + "symfony/ovh-cloud-notifier": "<5.3", + "symfony/rocket-chat-notifier": "<5.3", + "symfony/sendinblue-notifier": "<5.3", + "symfony/sinch-notifier": "<5.3", + "symfony/slack-notifier": "<5.3", + "symfony/smsapi-notifier": "<5.3", + "symfony/telegram-notifier": "<5.3", + "symfony/twilio-notifier": "<5.3", + "symfony/zulip-notifier": "<5.3" + }, + "require-dev": { + "symfony/event-dispatcher-contracts": "^2", + "symfony/http-client-contracts": "^2", + "symfony/messenger": "^4.4 || ^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Notifier\\": "" + }, + "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": "Sends notifications via one or more channels (email, SMS, ...)", + "homepage": "https://symfony.com", + "keywords": [ + "notification", + "notifier" + ], + "support": { + "source": "https://github.com/symfony/notifier/tree/v5.3.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": "2021-06-21T21:40:30+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/162e886ca035869866d233a2bfef70cc28f9bbe5", + "reference": "162e886ca035869866d233a2bfef70cc28f9bbe5", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "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": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/password-hasher.git", + "reference": "eacf514b03b764066415b39a297e351f8c52a8c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/eacf514b03b764066415b39a297e351f8c52a8c2", + "reference": "eacf514b03b764066415b39a297e351f8c52a8c2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/security-core": "<5.3" + }, + "require-dev": { + "symfony/console": "^5", + "symfony/security-core": "^5.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PasswordHasher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides password hashing utilities", + "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], + "support": { + "source": "https://github.com/symfony/password-hasher/tree/v5.3.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": "2021-06-27T12:43:45+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", + "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "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 for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.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": "2021-05-27T09:17:38+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4a80a521d6176870b6445cfb469c130f9cae1dda", + "reference": "4a80a521d6176870b6445cfb469c130f9cae1dda", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance and support of other locales than \"en\"" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Icu\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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 for intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.23.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": "2021-05-24T10:04:56+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.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": "2021-05-27T09:27:20+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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 for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", + "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "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 for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.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": "2021-05-27T09:27:20+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.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": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "e66119f3de95efc359483f810c4c3e6436279436" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", + "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "files": [ + "bootstrap.php" + ], + "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.23.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": "2021-05-21T13:25:03+00:00" + }, + { + "name": "symfony/process", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "714b47f9196de61a196d86c4bad5f09201b307df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df", + "reference": "714b47f9196de61a196d86c4bad5f09201b307df", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "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/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-12T10:15:01+00:00" + }, + { + "name": "symfony/property-access", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/8988399a556cffb0fba9bb3603f8d1ba4543eceb", + "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/property-info": "^5.2" + }, + "require-dev": { + "symfony/cache": "^4.4|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "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": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/property-info", + "version": "v5.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/6f8bff281f215dbf41929c7ec6f8309cdc0912cf", + "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/string": "^5.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v5.3.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-31T12:40:48+00:00" + }, + { + "name": "symfony/proxy-manager-bridge", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "4e4997e77f30b4caed2b3cebefdecd7031e25a00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/4e4997e77f30b4caed2b3cebefdecd7031e25a00", + "reference": "4e4997e77f30b4caed2b3cebefdecd7031e25a00", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8", + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=7.2.5", + "symfony/dependency-injection": "^5.0" + }, + "require-dev": { + "symfony/config": "^4.4|^5.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\ProxyManager\\": "" + }, + "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": "Provides integration for ProxyManager with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.3.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": "2021-05-26T12:52:38+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "368e81376a8e049c37cb80ae87dbfbf411279199" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/368e81376a8e049c37cb80ae87dbfbf411279199", + "reference": "368e81376a8e049c37cb80ae87dbfbf411279199", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "psr/log": "~1.0", + "symfony/config": "^5.3", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/runtime", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/runtime.git", + "reference": "4ee1e32575a6b8fc45441fa83bce4817509dc866" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/runtime/zipball/4ee1e32575a6b8fc45441fa83bce4817509dc866", + "reference": "4ee1e32575a6b8fc45441fa83bce4817509dc866", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/dotenv": "<5.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/console": "^4.4|^5", + "symfony/dotenv": "^5.1", + "symfony/http-foundation": "^4.4|^5", + "symfony/http-kernel": "^4.4|^5" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Runtime\\": "", + "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Enables decoupling PHP applications from global state", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/runtime/tree/v5.3.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": "2021-06-17T20:24:56+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "e28476b227e737c9a12074fe802751f8e490faec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/e28476b227e737c9a12074fe802751f8e490faec", + "reference": "e28476b227e737c9a12074fe802751f8e490faec", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^5.3", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^5.1", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/password-hasher": "^5.3", + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.3", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-guard": "^5.3", + "symfony/security-http": "^5.3.2" + }, + "conflict": { + "symfony/browser-kit": "<4.4", + "symfony/console": "<4.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<5.1", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^4.4|^5.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/framework-bundle": "^5.3", + "symfony/ldap": "^5.3", + "symfony/process": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bridge": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" + }, + "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": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-bundle/tree/v5.3.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": "2021-06-27T12:24:29+00:00" + }, + { + "name": "symfony/security-core", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "480963371d271b0a1f3a7094c619a2a52120342c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/480963371d271b0a1f3a7094c619a2a52120342c", + "reference": "480963371d271b0a1f3a7094c619a2a52120342c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/password-hasher": "^5.3", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/event-dispatcher": "<4.4", + "symfony/http-foundation": "<5.3", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.4", + "symfony/validator": "<5.2" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.0|^2.0", + "psr/log": "~1.0", + "symfony/cache": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^5.3", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^5.2" + }, + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + }, + "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": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-core/tree/v5.3.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": "2021-06-26T11:20:14+00:00" + }, + { + "name": "symfony/security-csrf", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "20259eb80a981e0db134e51c18f558a9510c1c84" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/20259eb80a981e0db134e51c18f558a9510c1c84", + "reference": "20259eb80a981e0db134e51c18f558a9510c1c84", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/security-core": "^4.4|^5.0" + }, + "conflict": { + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/http-foundation": "^5.3" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "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": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-csrf/tree/v5.3.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": "2021-06-29T05:59:20+00:00" + }, + { + "name": "symfony/security-guard", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-guard.git", + "reference": "07b97d3c8fa9b761ad3a52d659a47661b458c51b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/07b97d3c8fa9b761ad3a52d659a47661b458c51b", + "reference": "07b97d3c8fa9b761ad3a52d659a47661b458c51b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.0", + "symfony/security-http": "^5.3" + }, + "require-dev": { + "psr/log": "~1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Guard\\": "" + }, + "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": "Symfony Security Component - Guard", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-guard/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/security-http", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-http.git", + "reference": "81c183fd1527a2d09bd3b5c69bca3fc24ce18527" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-http/zipball/81c183fd1527a2d09bd3b5c69bca3fc24ce18527", + "reference": "81c183fd1527a2d09bd3b5c69bca3fc24ce18527", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/property-access": "^4.4|^5.0", + "symfony/security-core": "^5.3" + }, + "conflict": { + "symfony/event-dispatcher": "<4.3", + "symfony/security-bundle": "<5.3", + "symfony/security-csrf": "<4.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/cache": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", + "symfony/routing": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0" + }, + "suggest": { + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Http\\": "" + }, + "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": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-http/tree/v5.3.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": "2021-06-23T09:36:00+00:00" + }, + { + "name": "symfony/serializer", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "96f6ff6582d1bf1bf08281b563a6c7c917efe6c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/96f6ff6582d1bf1bf08281b563a6c7c917efe6c1", + "reference": "96f6ff6582d1bf1bf08281b563a6c7c917efe6c1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<4.4", + "symfony/property-info": "<5.3", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^4.4.9|^5.0.9", + "symfony/property-info": "^5.3", + "symfony/uid": "^5.1", + "symfony/validator": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0", + "symfony/var-exporter": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", + "symfony/yaml": "For using the default YAML mapping loader." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "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": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-10T18:05:39+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "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": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.4.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": "2021-04-01T10:43:52+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "313d02f59d6543311865007e5ff4ace05b35ee65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/313d02f59d6543311865007e5ff4ace05b35ee65", + "reference": "313d02f59d6543311865007e5ff4ace05b35ee65", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/service-contracts": "^1.0|^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/string", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.3.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": "2021-06-27T11:44:38+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/380b8c9e944d0e364b25f28e8e555241eb49c01c", + "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "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": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v5.3.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": "2021-06-27T12:22:47+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", + "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "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": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "61d1415392e260fb66ede48cc5a2a6e82a323db2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/61d1415392e260fb66ede48cc5a2a6e82a323db2", + "reference": "61d1415392e260fb66ede48cc5a2a6e82a323db2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<4.4", + "symfony/form": "<5.3", + "symfony/http-foundation": "<5.3", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<5.2", + "symfony/workflow": "<5.2" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "egulias/email-validator": "^2.1.10|^3", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/form": "^5.3", + "symfony/http-foundation": "^5.3", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/mime": "^5.2", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^4.4|^5.1", + "symfony/routing": "^4.4|^5.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-http": "^4.4|^5.0", + "symfony/serializer": "^5.2", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^5.2", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^5.2", + "symfony/yaml": "^4.4|^5.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" + }, + "suggest": { + "symfony/asset": "For using the AssetExtension", + "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", + "symfony/form": "For using the FormExtension", + "symfony/http-kernel": "For using the HttpKernelExtension", + "symfony/routing": "For using the RoutingExtension", + "symfony/security-core": "For using the SecurityExtension", + "symfony/security-csrf": "For using the CsrfExtension", + "symfony/security-http": "For using the LogoutUrlExtension", + "symfony/stopwatch": "For using the StopwatchExtension", + "symfony/translation": "For using the TranslationExtension", + "symfony/var-dumper": "For using the DumpExtension", + "symfony/web-link": "For using the WebLinkExtension", + "symfony/yaml": "For using the YamlExtension" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "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": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "b70c2837355843196e0e65822eb2b2326ef3a7b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/b70c2837355843196e0e65822eb2b2326ef3a7b0", + "reference": "b70c2837355843196e0e65822eb2b2326ef3a7b0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/twig-bridge": "^5.3", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.3", + "symfony/framework-bundle": "<5.0", + "symfony/translation": "<5.0" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "symfony/asset": "^4.4|^5.0", + "symfony/dependency-injection": "^5.3", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/framework-bundle": "^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\TwigBundle\\": "" + }, + "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": "Provides a tight integration of Twig into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bundle/tree/v5.3.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": "2021-06-28T15:44:34+00:00" + }, + { + "name": "symfony/validator", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "82d4a64927d6ec5d37277ae1d9f5d24b31dd390c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/82d4a64927d6ec5d37277ae1d9f5d24b31dd390c", + "reference": "82d4a64927d6ec5d37277ae1d9f5d24b31dd390c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^1.1|^2" + }, + "conflict": { + "doctrine/lexer": "<1.0.2", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.4", + "symfony/property-info": "<5.3", + "symfony/translation": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "egulias/email-validator": "^2.1.10|^3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^5.1", + "symfony/finder": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.0", + "symfony/property-info": "^5.3", + "symfony/translation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the mapping cache.", + "symfony/config": "", + "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For accessing properties within comparison constraints", + "symfony/property-info": "To automatically add NotNull and Type constraints", + "symfony/translation": "For translating validation errors.", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "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": "Provides tools to validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v5.3.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": "2021-06-30T07:27:52+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "46aa709affb9ad3355bd7a810f9662d71025c384" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46aa709affb9ad3355bd7a810f9662d71025c384", + "reference": "46aa709affb9ad3355bd7a810f9662d71025c384", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "903c2c0babd6267de5bcb2995e8fc1efb5f01f1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/903c2c0babd6267de5bcb2995e8fc1efb5f01f1f", + "reference": "903c2c0babd6267de5bcb2995e8fc1efb5f01f1f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v5.3.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": "2021-06-27T09:16:08+00:00" + }, + { + "name": "symfony/web-link", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "820cd4e31c1b5b440bd2e3c01d3e2583fa8472a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/820cd4e31c1b5b440bd2e3c01d3e2583fa8472a2", + "reference": "820cd4e31c1b5b440bd2e3c01d3e2583fa8472a2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/link": "^1.0" + }, + "conflict": { + "symfony/http-kernel": "<5.3" + }, + "provide": { + "psr/link-implementation": "1.0" + }, + "require-dev": { + "symfony/http-kernel": "^5.3" + }, + "suggest": { + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\WebLink\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages links between resources", + "homepage": "https://symfony.com", + "keywords": [ + "dns-prefetch", + "http", + "http2", + "link", + "performance", + "prefetch", + "preload", + "prerender", + "psr13", + "push" + ], + "support": { + "source": "https://github.com/symfony/web-link/tree/v5.3.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": "2021-06-22T16:07:00+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "485c83a2fb5893e2ff21bf4bfc7fdf48b4967229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/485c83a2fb5893e2ff21bf4bfc7fdf48b4967229", + "reference": "485c83a2fb5893e2ff21bf4bfc7fdf48b4967229", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "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": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.3.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": "2021-06-24T08:13:00+00:00" + }, + { + "name": "twig/extra-bundle", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/e12a8ee63387abb83fb7e4c897663bfb94ac22b6", + "reference": "e12a8ee63387abb83fb7e4c897663bfb94ac22b6", + "shasum": "" + }, + "require": { + "php": "^7.1.3|^8.0", + "symfony/framework-bundle": "^4.3|^5.0", + "symfony/twig-bundle": "^4.3|^5.0", + "twig/twig": "^2.4|^3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4.9|^5.0.9", + "twig/cache-extra": "^3.0", + "twig/cssinliner-extra": "^2.12|^3.0", + "twig/html-extra": "^2.12|^3.0", + "twig/inky-extra": "^2.12|^3.0", + "twig/intl-extra": "^2.12|^3.0", + "twig/markdown-extra": "^2.12|^3.0", + "twig/string-extra": "^2.12|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Symfony bundle for extra Twig extensions", + "homepage": "https://twig.symfony.com", + "keywords": [ + "bundle", + "extra", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.3.1" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-05-12T07:47:40+00:00" + }, + { + "name": "twig/twig", + "version": "v3.3.2", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/21578f00e83d4a82ecfa3d50752b609f13de6790", + "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.3.2" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-05-16T12:14:13+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + } + ], + "packages-dev": [ + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.12.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + }, + "time": "2021-07-21T10:44:31+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "bae7c545bef187884426f042434e561ab1ddb182" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + }, + "time": "2021-03-17T13:42:18+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "f6293e1b30a2354e8428e004689671b83871edde" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", + "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.10.2", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-03-28T07:26:59+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0dc8b6999c937616df4fb046792004b33fd31c5", + "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.7" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-07-19T06:14:47+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "379984e25eee9811b0a25a2105e1a2b3b8d9b734" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/379984e25eee9811b0a25a2105e1a2b3b8d9b734", + "reference": "379984e25eee9811b0a25a2105e1a2b3b8d9b734", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/dom-crawler": "^4.4|^5.0" + }, + "require-dev": { + "symfony/css-selector": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "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": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", + "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.3.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": "2021-05-26T17:40:38+00:00" + }, + { + "name": "symfony/debug-bundle", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "b73833ac97189fc809816dfbb02185a1a793b072" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/b73833ac97189fc809816dfbb02185a1a793b072", + "reference": "b73833ac97189fc809816dfbb02185a1a793b072", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.2.5", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/twig-bridge": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.2" + }, + "require-dev": { + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/web-profiler-bundle": "^4.4|^5.0" + }, + "suggest": { + "symfony/config": "For service container configuration", + "symfony/dependency-injection": "For using as a service from the container" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\DebugBundle\\": "" + }, + "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": "Provides a tight integration of the Symfony Debug component into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug-bundle/tree/v5.3.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": "2021-03-17T16:58:09+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v5.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "55fff62b19f413f897a752488ade1bc9c8a19cdd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/55fff62b19f413f897a752488ade1bc9c8a19cdd", + "reference": "55fff62b19f413f897a752488ade1bc9c8a19cdd", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^4.4|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v5.3.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": "2021-05-26T17:43:10+00:00" + }, + { + "name": "symfony/maker-bundle", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/f093d906c667cba7e3f74487d9e5e55aaf25a031", + "reference": "f093d906c667cba7e3f74487d9e5e55aaf25a031", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.2|^2.0", + "nikic/php-parser": "^4.0", + "php": ">=7.1.3", + "symfony/config": "^4.0|^5.0", + "symfony/console": "^4.0|^5.0", + "symfony/dependency-injection": "^4.0|^5.0", + "symfony/deprecation-contracts": "^2.2", + "symfony/filesystem": "^4.0|^5.0", + "symfony/finder": "^4.0|^5.0", + "symfony/framework-bundle": "^4.0|^5.0", + "symfony/http-kernel": "^4.0|^5.0" + }, + "require-dev": { + "composer/semver": "^3.0@dev", + "doctrine/doctrine-bundle": "^1.8|^2.0", + "doctrine/orm": "^2.3", + "friendsofphp/php-cs-fixer": "^3.0", + "friendsoftwig/twigcs": "^4.1.0|^5.0.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/phpunit-bridge": "^4.3|^5.0", + "symfony/process": "^4.0|^5.0", + "symfony/security-core": "^4.0|^5.0", + "symfony/yaml": "^4.0|^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-main": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MakerBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", + "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", + "keywords": [ + "code generator", + "generator", + "scaffold", + "scaffolding" + ], + "support": { + "issues": "https://github.com/symfony/maker-bundle/issues", + "source": "https://github.com/symfony/maker-bundle/tree/v1.33.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": "2021-07-01T00:28:30+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v5.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "d7d3193df3b198f287777b61ef06cd59fdb0516d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d7d3193df3b198f287777b61ef06cd59fdb0516d", + "reference": "d7d3193df3b198f287777b61ef06cd59fdb0516d", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/deprecation-contracts": "^2.1" + }, + "conflict": { + "phpunit/phpunit": "<7.5|9.1.2" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0" + }, + "suggest": { + "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.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": "2021-06-22T16:07:00+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v5.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "8feb731cfc248cce5c0ac6eeba63ec4923c6a264" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8feb731cfc248cce5c0ac6eeba63ec4923c6a264", + "reference": "8feb731cfc248cce5c0ac6eeba63ec4923c6a264", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/framework-bundle": "^5.3", + "symfony/http-kernel": "^5.3", + "symfony/routing": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.2", + "symfony/form": "<4.4", + "symfony/messenger": "<4.4" + }, + "require-dev": { + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "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": "Provides a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-07T14:51:59+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/master" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=7.2.5", + "ext-ctype": "*", + "ext-iconv": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.1.0" +} diff --git a/src/backend/config/bundles.php b/src/backend/config/bundles.php index cd98906..d4b231c 100644 --- a/src/backend/config/bundles.php +++ b/src/backend/config/bundles.php @@ -12,4 +12,6 @@ return [ Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], + Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true], + SymfonyBundles\JsonRequestBundle\JsonRequestBundle::class => ['all' => true], ]; diff --git a/src/backend/config/packages/lexik_jwt_authentication.yaml b/src/backend/config/packages/lexik_jwt_authentication.yaml new file mode 100644 index 0000000..edfb69d --- /dev/null +++ b/src/backend/config/packages/lexik_jwt_authentication.yaml @@ -0,0 +1,4 @@ +lexik_jwt_authentication: + secret_key: '%env(resolve:JWT_SECRET_KEY)%' + public_key: '%env(resolve:JWT_PUBLIC_KEY)%' + pass_phrase: '%env(JWT_PASSPHRASE)%' diff --git a/src/backend/config/packages/security.yaml b/src/backend/config/packages/security.yaml index 18d005d..16a71b9 100644 --- a/src/backend/config/packages/security.yaml +++ b/src/backend/config/packages/security.yaml @@ -13,17 +13,29 @@ security: app_user_provider: entity: class: App\Entity\User - property: id + property: email # used to reload user from session & other features (e.g. switch_user) # used to reload user from session & other features (e.g. switch_user) firewalls: + login: + pattern: ^/api/login + stateless: true + json_login: + check_path: /api/login + success_handler: lexik_jwt_authentication.handler.authentication_success + failure_handler: lexik_jwt_authentication.handler.authentication_failure + api: + pattern: ^/api + stateless: true + guard: + authenticators: + - lexik_jwt_authentication.jwt_token_authenticator dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: lazy: true provider: app_user_provider - # activate different ways to authenticate # https://symfony.com/doc/current/security.html#firewalls-authentication @@ -35,3 +47,6 @@ security: access_control: # - { path: ^/admin, roles: ROLE_ADMIN } # - { path: ^/profile, roles: ROLE_USER } + # - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY } + # - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } + # - { path: ^/api, roles: IS_AUTHENTICATED_FULLY } \ No newline at end of file diff --git a/src/backend/shell b/src/backend/shell index d789c65..64e23f2 100644 --- a/src/backend/shell +++ b/src/backend/shell @@ -1 +1,3 @@ -docker.exe compose -p curenet exec app bash -c 'cd /web/backend && bash' \ No newline at end of file +cd ../../docker +docker.exe compose -p curenet exec app bash -c 'cd /web/backend && bash' +cd src/backend diff --git a/src/backend/src/Controller/AuthController.php b/src/backend/src/Controller/AuthController.php new file mode 100644 index 0000000..98aaf38 --- /dev/null +++ b/src/backend/src/Controller/AuthController.php @@ -0,0 +1,66 @@ +getDoctrine()->getManager(); + $name = $request->get('name'); + $surname = $request->get('surname'); + $password = $request->get('password'); + $email = $request->get('email'); + + if (empty($name) || empty($password) || empty($email)){ + return $this->notAcceptable("Invalid Username or Password or Email"); + } + + $existing = $this->userRepository->findByEmail($email); + if ($existing) { + return $this->notAcceptable("User email exists"); + } + + $user = new User(); + $user->setPassword($encoder->hashPassword($user, $password)); + $user->setEmail($email); + $user->setName($name); + $user->setSurname($surname); + $em->persist($user); + $em->flush(); + return $this->created($user); + } + + #[Route('/api/login', methods: ['POST'], name: 'login')] + public function login(JWTTokenManagerInterface $JWTManager) + { + $user = new User(); + return $this->ok(['token' => $JWTManager->create($user)]); + } + + #[Route('/api/user-check', methods: ['POST'])] + public function checkUser() { + $user = $this->getUser(); + if (!$user) { + return $this->unauthorized([]); + } + $user->generateAvatar(); + return $this->ok($user); + } +} diff --git a/src/backend/src/Entity/Abstraction/BaseEntity.php b/src/backend/src/Entity/Abstraction/BaseEntity.php new file mode 100644 index 0000000..73b79c6 --- /dev/null +++ b/src/backend/src/Entity/Abstraction/BaseEntity.php @@ -0,0 +1,32 @@ +normalize($this, null); + + $hidden = array_merge($this->hidden, $this->systemParams); + foreach ($array as $key => $value) { + if (in_array($key, $hidden)) { + continue; + } + if (isset($this->map[$key])) { + $key = $this->map[$key]; + } + $output[$key] = $value; + } + return $output; + } +} \ No newline at end of file diff --git a/src/backend/src/Entity/User.php b/src/backend/src/Entity/User.php index 8c21f9a..9046569 100644 --- a/src/backend/src/Entity/User.php +++ b/src/backend/src/Entity/User.php @@ -2,17 +2,21 @@ namespace App\Entity; -use App\Repository\UserRepository; use Doctrine\ORM\Mapping as ORM; -use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; +use App\Repository\UserRepository; +use App\Entity\Abstraction\BaseEntity; use Symfony\Component\Security\Core\User\UserInterface; +use Lexik\Bundle\JWTAuthenticationBundle\Security\User\JWTUserInterface; +use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; /** * @ORM\Entity(repositoryClass=UserRepository::class) * @ORM\Table(name="`user`") */ -class User implements UserInterface, PasswordAuthenticatedUserInterface +class User extends BaseEntity implements UserInterface, PasswordAuthenticatedUserInterface, JWTUserInterface { + protected array $hidden = ['password', 'salt', 'userIdentifier', 'username']; + /** * @ORM\Id * @ORM\GeneratedValue @@ -29,38 +33,44 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface * @var string The hashed password * @ORM\Column(type="string") */ - private $password; - - /** - * @ORM\Column(type="string", length=255) - */ - private $email; - - /** - * @ORM\Column(type="string", length=255) - */ - private $name; - - /** - * @ORM\Column(type="string", length=255) - */ - private $surname; - - /** - * @ORM\Column(type="string", length=255, nullable=true) - */ - private $avatar; - - /** - * @ORM\Column(type="string", length=3, nullable=true) - */ - private $country; - - /** - * @ORM\Column(type="string", length=10, nullable=true) - */ + private $password; + + /** + * @ORM\Column(type="string", length=255) + */ + private $email; + + /** + * @ORM\Column(type="string", length=255) + */ + private $name; + + /** + * @ORM\Column(type="string", length=255) + */ + private $surname; + + /** + * @ORM\Column(type="string", length=255, nullable=true) + */ + private $avatar; + + /** + * @ORM\Column(type="string", length=3, nullable=true) + */ + private $country; + + /** + * @ORM\Column(type="string", length=10, nullable=true) + */ private $state; + public static function createFromPayload($username, array $payload) + { + $user = new User(); + return $user; + } + public function getId(): ?string { return $this->id; @@ -80,7 +90,7 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface */ public function getUserIdentifier(): string { - return (string) $this->id; + return (string) $this->email; } /** @@ -88,7 +98,7 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface */ public function getUsername(): string { - return (string) $this->id; + return (string) $this->email; } /** @@ -143,77 +153,83 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface { // If you store any temporary, sensitive data on the user, clear it here // $this->plainPassword = null; - } - - public function getEmail(): ?string - { - return $this->email; - } - - public function setEmail(string $email): self - { - $this->email = $email; - - return $this; - } - - public function getName(): ?string - { - return $this->name; - } - - public function setName(string $name): self - { - $this->name = $name; - - return $this; - } - - public function getSurname(): ?string - { - return $this->surname; - } - - public function setSurname(string $surname): self - { - $this->surname = $surname; - - return $this; - } - - public function getAvatar(): ?string - { - return $this->avatar; - } - - public function setAvatar(?string $avatar): self - { - $this->avatar = $avatar; - - return $this; - } - - public function getCountry(): ?string - { - return $this->country; - } - - public function setCountry(?string $country): self - { - $this->country = $country; - - return $this; - } - - public function getState(): ?string - { - return $this->state; - } - - public function setState(?string $state): self - { - $this->state = $state; - - return $this; + } + + public function getEmail(): ?string + { + return $this->email; + } + + public function setEmail(string $email): self + { + $this->email = $email; + + return $this; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getSurname(): ?string + { + return $this->surname; + } + + public function setSurname(string $surname): self + { + $this->surname = $surname; + + return $this; + } + + public function getAvatar(): ?string + { + return $this->avatar; + } + + public function setAvatar(?string $avatar): self + { + $this->avatar = $avatar; + + return $this; + } + + public function getCountry(): ?string + { + return $this->country; + } + + public function setCountry(?string $country): self + { + $this->country = $country; + + return $this; + } + + public function getState(): ?string + { + return $this->state; + } + + public function setState(?string $state): self + { + $this->state = $state; + + return $this; + } + + public function generateAvatar() { + if (!$this->avatar) { + $this->avatar = 'https://www.gravatar.com/avatar/' . md5($this->email) . '?s=514&d=robohash'; + } } } diff --git a/src/backend/src/Repository/UserRepository.php b/src/backend/src/Repository/UserRepository.php index 92744a7..612a6c9 100644 --- a/src/backend/src/Repository/UserRepository.php +++ b/src/backend/src/Repository/UserRepository.php @@ -36,6 +36,20 @@ class UserRepository extends ServiceEntityRepository implements PasswordUpgrader $this->_em->flush(); } + /** + * @return User[] Returns an array of User objects + */ + public function findByEmail($value) + { + return $this->createQueryBuilder('u') + ->andWhere('u.email = :val') + ->setParameter('val', $value) + ->setMaxResults(1) + ->getQuery() + ->getOneOrNullResult() + ; + } + // /** // * @return User[] Returns an array of User objects // */ diff --git a/src/backend/src/Traits/JsonResponseTrait.php b/src/backend/src/Traits/JsonResponseTrait.php new file mode 100644 index 0000000..05d03d1 --- /dev/null +++ b/src/backend/src/Traits/JsonResponseTrait.php @@ -0,0 +1,35 @@ +response($data, $code, $headers); + } + + protected function created($data, $code = Response::HTTP_CREATED, $headers = []) { + return $this->response($data, $code, $headers); + } + + protected function notAcceptable($data, $code = Response::HTTP_NOT_ACCEPTABLE, $headers = []) { + return $this->response([ 'error' => 'Not acceptable', 'data' => $data], $code, $headers); + } + + protected function unauthorized($data, $code = Response::HTTP_UNAUTHORIZED, $headers = []) { + return $this->response([ 'error' => 'Unauthorized', 'data' => $data], $code, $headers); + } + + protected function response($data, $code = Response::HTTP_OK, $headers = []) { + + if ($data instanceof BaseEntity) { + $data = $data->toArray(); + } + + return new JsonResponse($data, $code, $headers); + } +} \ No newline at end of file diff --git a/src/backend/symfony.lock b/src/backend/symfony.lock index d6d066e..a6b4e34 100644 --- a/src/backend/symfony.lock +++ b/src/backend/symfony.lock @@ -91,12 +91,33 @@ "laminas/laminas-code": { "version": "4.4.2" }, + "lcobucci/clock": { + "version": "2.0.0" + }, + "lcobucci/jwt": { + "version": "4.1.4" + }, + "lexik/jwt-authentication-bundle": { + "version": "2.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "2.5", + "ref": "5b2157bcd5778166a5696e42f552ad36529a07a6" + }, + "files": [ + "config/packages/lexik_jwt_authentication.yaml" + ] + }, "monolog/monolog": { "version": "2.3.1" }, "myclabs/deep-copy": { "version": "1.10.2" }, + "namshi/jose": { + "version": "7.2.3" + }, "nikic/php-parser": { "version": "v4.12.0" }, @@ -222,6 +243,9 @@ "config/packages/sensio_framework_extra.yaml" ] }, + "symfony-bundles/json-request-bundle": { + "version": "4.0.5" + }, "symfony/asset": { "version": "v5.3.2" }, @@ -442,6 +466,9 @@ "symfony/polyfill-mbstring": { "version": "v1.23.0" }, + "symfony/polyfill-php56": { + "version": "v1.20.0" + }, "symfony/polyfill-php73": { "version": "v1.23.0" }, diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index e77112f..6ae9a13 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -1715,6 +1715,14 @@ "schema-utils": "^2.7.0" } }, + "@ng-stack/forms": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@ng-stack/forms/-/forms-2.4.0.tgz", + "integrity": "sha512-Czo4ZbzEcTSAQ8yS4d0PzYMeB8GidOz1ABZhUjwnZiLaNOY2gnIdpQEIqE+GjIVOyusGEjQ/psLneBj8gE2EjQ==", + "requires": { + "tslib": "^2.0.0" + } + }, "@ngtools/webpack": { "version": "12.1.3", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.1.3.tgz", diff --git a/src/frontend/package.json b/src/frontend/package.json index b9be3ea..1d3d49e 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -21,6 +21,7 @@ "@angular/platform-browser": "~12.1.3", "@angular/platform-browser-dynamic": "~12.1.3", "@angular/router": "~12.1.3", + "@ng-stack/forms": "^2.4.0", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "^6.0.0", "bootstrap": "^5.0.2", diff --git a/src/frontend/src/app/app-routing.module.ts b/src/frontend/src/app/app-routing.module.ts index a221c4b..f044adc 100644 --- a/src/frontend/src/app/app-routing.module.ts +++ b/src/frontend/src/app/app-routing.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; import { Route, RouterModule } from '@angular/router'; +import { AuthGuard } from './modules/auth/services/auth/auth.guard'; import { NotFoundComponent } from './modules/shared/components/not-found/not-found.component'; interface AppMenuEntry { @@ -15,6 +16,10 @@ interface AppRoute extends Route { } export const appRoutes: AppRoute[] = [ + { + path: 'auth', + loadChildren: () => import('./modules/auth/auth.module').then(m => m.AuthModule), + }, { path: '', component: NotFoundComponent, @@ -25,6 +30,8 @@ export const appRoutes: AppRoute[] = [ matchExact: true, }, ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, { path: 'profile', @@ -35,6 +42,8 @@ export const appRoutes: AppRoute[] = [ icon: 'fa fa-user', }, ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, { path: 'community', @@ -45,6 +54,8 @@ export const appRoutes: AppRoute[] = [ icon: 'fa fa-users', }, ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, { path: 'questions', @@ -56,6 +67,8 @@ export const appRoutes: AppRoute[] = [ level: 1, } ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, { path: 'messages', @@ -66,6 +79,8 @@ export const appRoutes: AppRoute[] = [ icon: 'fa fa-comments', }, ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, { path: 'tests', @@ -76,6 +91,8 @@ export const appRoutes: AppRoute[] = [ icon: 'fa fa-heartbeat', }, ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, { path: 'research', @@ -86,6 +103,8 @@ export const appRoutes: AppRoute[] = [ icon: 'fa fa-flask', }, ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, { path: 'admin', @@ -103,6 +122,8 @@ export const appRoutes: AppRoute[] = [ level: 1, } ], + canActivate: [ AuthGuard, ], + canActivateChild: [ AuthGuard, ], }, ]; diff --git a/src/frontend/src/app/app.component.html b/src/frontend/src/app/app.component.html index 175f57e..93df4d0 100644 --- a/src/frontend/src/app/app.component.html +++ b/src/frontend/src/app/app.component.html @@ -1,18 +1,23 @@ - - {{ 'APP.NAME' | translate }} +
+
+ +
+
- +
-
+
{{ user.name }} {{ user.surname }}
@@ -48,21 +52,23 @@ {{ 'LANGUAGE.'+lang.toUpperCase() | translate }} - + {{ 'APP.THEME' | translate }} {{ 'THEME.'+theme.toUpperCase() | translate }} +
-
- + diff --git a/src/frontend/src/app/app.component.ts b/src/frontend/src/app/app.component.ts index 9bbdd01..6ea04f3 100644 --- a/src/frontend/src/app/app.component.ts +++ b/src/frontend/src/app/app.component.ts @@ -5,12 +5,16 @@ import { AppService, WindowSize } from './modules/shared/services/app/app.servic import { BrowserStorageService } from './modules/shared/services/browser-storage/browser-storage.service'; import { ThemeService } from './modules/shared/services/theme/theme.service'; import { DomSanitizer, SafeStyle } from '@angular/platform-browser'; +import { AuthService } from './modules/auth/services/auth/auth.service'; +import { Router } from '@angular/router'; +import { UserModel } from './modules/auth/models/user.model'; enum SidebarOpenEnum { Default, Open, Closed, } + @Component({ selector: 'app-root', templateUrl: './app.component.html', @@ -28,76 +32,102 @@ export class AppComponent { themes: string[] = []; themeControl = new FormControl(); langControl = new FormControl(); - isDark = true; appRoutes = appRoutes; - user = { - name: 'Name', - surname: 'Surname', - avatar: 'https://www.gravatar.com/avatar/81b206a89f89d5b1123b87606075c6a8?s=514&d=robohash', - }; + user: UserModel; + isSidebarHidden = false; + dynamicToolbarComponents = []; get isSidebarOpen(): boolean { switch (this.sidebarOpen) { case SidebarOpenEnum.Open: return true; - break; case SidebarOpenEnum.Closed: return false; - break; default: return this.defaultSidebarOpen; - break; } } constructor( - appService: AppService, - themeService: ThemeService, + private appService: AppService, + private themeService: ThemeService, private browserStorageService: BrowserStorageService, private sanitizer: DomSanitizer, + private authService: AuthService, + private router: Router, ) { - this.themes = themeService.getThemes(); - this.langs = appService.getLangs(); - this.lang = appService.getLang(); + this.configureSidebarEvents(); + this.configureThemeEvents(); + this.configureLanguageEvents(); + this.configureResizeEvents(); + this.configureUserEvents(); + } + configureUserEvents(): void { + this.user = this.authService.getUser(); + this.authService.userChange.subscribe(user => { + this.user = user; + }); + } + + configureSidebarEvents(): void { + this.isSidebarHidden = this.appService.getSidebarHidden(); + this.appService.sidebarHiddenChange.subscribe(hidden => { + this.isSidebarHidden = hidden; + }); + const sidebarUserPrefference = this.browserStorageService.getItem('sidebar.open'); + if (sidebarUserPrefference !== null) { + this.sidebarOpen = sidebarUserPrefference; + } + this.appService.dynamicToolbarComponentsChange.subscribe(components => { + this.dynamicToolbarComponents = components; + }); + } + + configureThemeEvents(): void { + this.themes = this.themeService.getThemes(); this.themeControl.valueChanges.subscribe(theme => { - themeService.setTheme(theme); + this.themeService.setTheme(theme); }); - appService.changeLang(this.lang); + this.onThemeChanged(this.themeService.getTheme()); + this.themeService.themeChange.subscribe(theme => { + this.onThemeChanged(theme); + }); + } + + configureLanguageEvents(): void { + this.langs = this.appService.getLangs(); + this.lang = this.appService.getLang(); + + this.appService.changeLang(this.lang); this.langControl.valueChanges.subscribe(lang => { - appService.changeLang(lang); - }); - this.onThemeChanged(themeService.getTheme()); - themeService.themeChange.subscribe(theme => { - this.onThemeChanged(theme); - }); - this.onResize(appService.size); - appService.sizeChange.subscribe(size => { - this.onResize(size); - }); - this.onLangChanged(appService.getLang()); - appService.langChange.subscribe(lang => { - this.onLangChanged(lang); + this.appService.changeLang(lang); }); - const sidebarUserPrefference = this.browserStorageService.getItem('sidebar.open'); - if (sidebarUserPrefference !== null) { - this.sidebarOpen = sidebarUserPrefference; - } + this.onLangChanged(this.appService.getLang()); + this.appService.langChange.subscribe(lang => { + this.onLangChanged(lang); + }); + } + + configureResizeEvents(): void { + this.onResize(this.appService.size); + this.appService.sizeChange.subscribe(size => { + this.onResize(size); + }); } onThemeChanged(theme: string): void { if (theme === undefined) { - return; + return; } this.theme = theme; this.themeControl.setValue(theme); - this.isDark = theme.indexOf('dark') !== -1; } onResize(size: WindowSize): void { if (size === undefined) { - return; + return; } this.isMobile = size.isMobile; this.defaultSidebarOpen = !size.isMobile; @@ -124,4 +154,9 @@ export class AppComponent { url(url: string): SafeStyle { return this.sanitizer.bypassSecurityTrustStyle(`url('${url}')`); } + + logout(): void { + this.authService.logout(); + this.router.navigateByUrl('/'); + } } diff --git a/src/frontend/src/app/app.module.ts b/src/frontend/src/app/app.module.ts index aadeb8f..9316906 100644 --- a/src/frontend/src/app/app.module.ts +++ b/src/frontend/src/app/app.module.ts @@ -1,6 +1,6 @@ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; -import { HttpClientModule, HttpClient } from '@angular/common/http'; +import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; @@ -11,6 +11,9 @@ import { BrowserStorageService } from './modules/shared/services/browser-storage import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; +import { TokenInterceptor } from './modules/shared/interceptors/token/token.interceptor'; +import { AuthTokenService } from './modules/shared/services/auth/auth-token.service'; +import { AuthService } from './modules/auth/services/auth/auth.service'; export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { return new TranslateHttpLoader(http, '/assets/lang/', '.json'); @@ -41,6 +44,9 @@ export function HttpLoaderFactory(http: HttpClient): TranslateHttpLoader { AppService, ThemeService, BrowserStorageService, + AuthTokenService, + AuthService, + { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true } ], bootstrap: [AppComponent] }) diff --git a/src/frontend/src/app/modules/admin/admin-routing.module.ts b/src/frontend/src/app/modules/admin/admin-routing.module.ts index af0b82e..e5a1465 100644 --- a/src/frontend/src/app/modules/admin/admin-routing.module.ts +++ b/src/frontend/src/app/modules/admin/admin-routing.module.ts @@ -1,6 +1,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Route } from '@angular/router'; import { NotFoundComponent } from '../shared/components/not-found/not-found.component'; +import { UsersComponent } from './components/users/users.component'; const routes: Route[] = [ { @@ -9,7 +10,7 @@ const routes: Route[] = [ }, { path: 'users', - component: NotFoundComponent, + component: UsersComponent, }, ]; diff --git a/src/frontend/src/app/modules/admin/admin.module.ts b/src/frontend/src/app/modules/admin/admin.module.ts index 6261d17..04ca9ca 100644 --- a/src/frontend/src/app/modules/admin/admin.module.ts +++ b/src/frontend/src/app/modules/admin/admin.module.ts @@ -3,14 +3,21 @@ import { CommonModule } from '@angular/common'; import { AdminRoutingModule } from './admin-routing.module'; import { SharedModule } from '../shared/shared.module'; +import { UsersComponent } from './components/users/users.component'; +import { AdminUserService } from './services/admin-user/admin-user.service'; @NgModule({ - declarations: [], + declarations: [ + UsersComponent + ], imports: [ CommonModule, AdminRoutingModule, SharedModule, - ] + ], + providers: [ + AdminUserService, + ], }) export class AdminModule { } diff --git a/src/frontend/src/app/modules/admin/components/users/users.component.html b/src/frontend/src/app/modules/admin/components/users/users.component.html new file mode 100644 index 0000000..065c5c6 --- /dev/null +++ b/src/frontend/src/app/modules/admin/components/users/users.component.html @@ -0,0 +1 @@ +

users works!

diff --git a/src/frontend/src/app/modules/admin/components/users/users.component.scss b/src/frontend/src/app/modules/admin/components/users/users.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/frontend/src/app/modules/admin/components/users/users.component.ts b/src/frontend/src/app/modules/admin/components/users/users.component.ts new file mode 100644 index 0000000..126cf2b --- /dev/null +++ b/src/frontend/src/app/modules/admin/components/users/users.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import { AdminUserService } from '../../services/admin-user/admin-user.service'; + +@Component({ + selector: 'app-users', + templateUrl: './users.component.html', + styleUrls: ['./users.component.scss'] +}) +export class UsersComponent implements OnInit { + + constructor(private adminUserService: AdminUserService) { } + + ngOnInit(): void { + this.adminUserService.getUsers().subscribe(() => { + + }); + } +} diff --git a/src/frontend/src/app/modules/admin/services/admin-user/admin-user.service.ts b/src/frontend/src/app/modules/admin/services/admin-user/admin-user.service.ts new file mode 100644 index 0000000..273faa2 --- /dev/null +++ b/src/frontend/src/app/modules/admin/services/admin-user/admin-user.service.ts @@ -0,0 +1,14 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { UserModel } from 'src/app/modules/auth/models/user.model'; + +@Injectable() +export class AdminUserService { + + constructor(private http: HttpClient) { } + + getUsers(): Observable { + return this.http.get('/api/admin/users'); + } +} diff --git a/src/frontend/src/app/modules/auth/auth-routing.module.ts b/src/frontend/src/app/modules/auth/auth-routing.module.ts new file mode 100644 index 0000000..c4957a8 --- /dev/null +++ b/src/frontend/src/app/modules/auth/auth-routing.module.ts @@ -0,0 +1,31 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Route } from '@angular/router'; +import { AuthComponent } from './components/auth/auth.component'; +import { AuthTabEnum } from './enums/auth-tab.enum'; + +const routes: Route[] = [ + { + path: AuthTabEnum.Login, + component: AuthComponent, + }, + { + path: AuthTabEnum.Register, + component: AuthComponent, + }, + { + path: AuthTabEnum.RestorePassword, + component: AuthComponent, + }, + + { + path: '**', + redirectTo: 'login', + }, + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AuthRoutingModule { } diff --git a/src/frontend/src/app/modules/auth/auth.module.ts b/src/frontend/src/app/modules/auth/auth.module.ts new file mode 100644 index 0000000..686fe5a --- /dev/null +++ b/src/frontend/src/app/modules/auth/auth.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { AuthRoutingModule } from './auth-routing.module'; +import { AuthComponent } from './components/auth/auth.component'; +import { ThemeSwitcherComponent } from './components/theme-switcher/theme-switcher.component'; +import { MaterialModule } from '../material/material.module'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { AuthService } from './services/auth/auth.service'; +import { NgStackFormsModule } from '@ng-stack/forms'; + +@NgModule({ + declarations: [ + AuthComponent, + ThemeSwitcherComponent, + ], + imports: [ + CommonModule, + AuthRoutingModule, + MaterialModule, + FormsModule, + ReactiveFormsModule, + NgStackFormsModule, + ], + providers: [ + AuthService, + ], +}) +export class AuthModule { } diff --git a/src/frontend/src/app/modules/auth/components/auth/auth.component.html b/src/frontend/src/app/modules/auth/components/auth/auth.component.html new file mode 100644 index 0000000..5c25d5e --- /dev/null +++ b/src/frontend/src/app/modules/auth/components/auth/auth.component.html @@ -0,0 +1,66 @@ +
+
+ + + + +
+
Email
+ + Adres email + + +
Hasło
+ + Hasło + + +
+ + +
+
+
+ +
+
ImiÄ™
+ + ImiÄ™ + + +
Nazwisko
+ + Nazwisko + + +
Email
+ + Adres email + + +
Hasło
+ + Hasło + + +
+ +
+
+
+ +
+
Email
+ + Adres email + + +
+ + +
+
+
+
+
+
\ No newline at end of file diff --git a/src/frontend/src/app/modules/auth/components/auth/auth.component.scss b/src/frontend/src/app/modules/auth/components/auth/auth.component.scss new file mode 100644 index 0000000..be1a28c --- /dev/null +++ b/src/frontend/src/app/modules/auth/components/auth/auth.component.scss @@ -0,0 +1,9 @@ +.primary-background{ + background-color: var(--toolbar-background); + height: 200px; +} +.content{ + margin: 0px auto; + margin-top: -150px; + height: 200px; +} \ No newline at end of file diff --git a/src/frontend/src/app/modules/auth/components/auth/auth.component.ts b/src/frontend/src/app/modules/auth/components/auth/auth.component.ts new file mode 100644 index 0000000..1057bfe --- /dev/null +++ b/src/frontend/src/app/modules/auth/components/auth/auth.component.ts @@ -0,0 +1,118 @@ +import { Location } from '@angular/common'; +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { ActivatedRoute, Router, UrlSegment } from '@angular/router'; +import { FormBuilder, FormGroup } from '@ng-stack/forms'; +import { AppService } from 'src/app/modules/shared/services/app/app.service'; +import { AuthTabEnum } from '../../enums/auth-tab.enum'; +import { LoginModel } from '../../models/login.model'; +import { RegisterModel } from '../../models/register.model'; +import { RestoreModel } from '../../models/restore.model'; +import { AuthService } from '../../services/auth/auth.service'; +import { ThemeSwitcherComponent } from '../theme-switcher/theme-switcher.component'; + +@Component({ + selector: 'app-auth', + templateUrl: './auth.component.html', + styleUrls: ['./auth.component.scss'] +}) +export class AuthComponent implements OnInit, OnDestroy { + + registerForm: FormGroup; + loginForm: FormGroup; + restoreForm: FormGroup; + tab: AuthTabEnum; + selectedIndex: number; + defaultTab = AuthTabEnum.Login; + tabIndexes = [ + AuthTabEnum.Login, + AuthTabEnum.Register, + AuthTabEnum.RestorePassword, + ]; + showRestore = false; + AuthTabEnum = AuthTabEnum; + + constructor( + private appService: AppService, + private authService: AuthService, + private activatedRoute: ActivatedRoute, + private router: Router, + private location: Location, + formBuilder: FormBuilder, + ) { + this.registerForm = formBuilder.group({ + name: 'Name', + surname: 'Surname', + email: 'email@test.com', + password: 'password', + }); + this.loginForm = formBuilder.group({ + email: 'email@test.com', + password: 'password', + }); + this.restoreForm = formBuilder.group({ + email: 'email@test.com', + }); + + this.handleUrl(activatedRoute.snapshot.url); + activatedRoute.url.subscribe(url => { + this.handleUrl(url); + }); + } + + handleUrl(url: UrlSegment[]): void { + const path = url[0].path; + this.tab = path as AuthTabEnum; + this.selectedIndex = this.getSelectedIndex(); + } + + getSelectedIndex(tab: AuthTabEnum = null): number { + if (tab === null) { + tab = this.tab; + } + let index = this.tabIndexes.findIndex(i => i === tab); + if (index === -1) { + index = this.tabIndexes.findIndex(i => i === this.defaultTab); + } + return index; + } + + getIndexTab(): AuthTabEnum { + return this.tabIndexes[this.selectedIndex]; + } + + selectedIndexChange(index: number): void { + this.selectedIndex = index; + const tab = this.getIndexTab(); + const url = this.router.createUrlTree(['..', tab], { + relativeTo: this.activatedRoute, + }).toString(); + this.location.go(url); + } + + ngOnInit(): void { + this.appService.setSidebarHidden(true); + this.appService.addDynamicToolbarComponent(ThemeSwitcherComponent); + } + + ngOnDestroy(): void { + this.appService.setSidebarHidden(false); + this.appService.removeDynamicToolbarComponent(ThemeSwitcherComponent); + } + + register(): void { + this.authService.createAccount(this.registerForm.getRawValue()).subscribe(data => { + this.loginForm.patchValue({ + email: this.registerForm.controls.email.value, + password: this.registerForm.controls.password.value, + }); + this.selectedIndexChange(this.getSelectedIndex(AuthTabEnum.Login)); + }); + } + + login(): void { + this.authService.login(this.loginForm.getRawValue()).subscribe(data => { + const afterUrl = '/'; + this.router.navigateByUrl(afterUrl); + }); + } +} diff --git a/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.html b/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.html new file mode 100644 index 0000000..a692b51 --- /dev/null +++ b/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.scss b/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.ts b/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.ts new file mode 100644 index 0000000..a5c37bf --- /dev/null +++ b/src/frontend/src/app/modules/auth/components/theme-switcher/theme-switcher.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit } from '@angular/core'; +import { ThemeService } from 'src/app/modules/shared/services/theme/theme.service'; + +@Component({ + selector: 'app-theme-switcher', + templateUrl: './theme-switcher.component.html', + styleUrls: ['./theme-switcher.component.scss'] +}) +export class ThemeSwitcherComponent implements OnInit { + + isDark = false; + darkTheme = 'dark'; + lightTheme = 'light'; + theme = 'light'; + + constructor( + private themeService: ThemeService, + ) { + this.theme = themeService.getTheme(); + themeService.themeChange.subscribe(theme => { + this.theme = theme; + }); + } + + ngOnInit(): void { + } + + toggleTheme(): void { + this.themeService.setTheme(this.theme === this.darkTheme ? this.lightTheme : this.darkTheme); + this.isDark = this.theme === this.darkTheme; + } +} diff --git a/src/frontend/src/app/modules/auth/enums/auth-tab.enum.ts b/src/frontend/src/app/modules/auth/enums/auth-tab.enum.ts new file mode 100644 index 0000000..72b6e30 --- /dev/null +++ b/src/frontend/src/app/modules/auth/enums/auth-tab.enum.ts @@ -0,0 +1,5 @@ +export enum AuthTabEnum { + Login = 'login', + Register = 'register', + RestorePassword = 'restore-password', +} diff --git a/src/frontend/src/app/modules/auth/models/login.model.ts b/src/frontend/src/app/modules/auth/models/login.model.ts new file mode 100644 index 0000000..ed86a81 --- /dev/null +++ b/src/frontend/src/app/modules/auth/models/login.model.ts @@ -0,0 +1,4 @@ +export interface LoginModel { + email: string; + password: string; +} diff --git a/src/frontend/src/app/modules/auth/models/register.model.ts b/src/frontend/src/app/modules/auth/models/register.model.ts new file mode 100644 index 0000000..94725c6 --- /dev/null +++ b/src/frontend/src/app/modules/auth/models/register.model.ts @@ -0,0 +1,6 @@ +export interface RegisterModel { + name: string; + surname: string; + email: string; + password: string; +} diff --git a/src/frontend/src/app/modules/auth/models/restore.model.ts b/src/frontend/src/app/modules/auth/models/restore.model.ts new file mode 100644 index 0000000..9f78455 --- /dev/null +++ b/src/frontend/src/app/modules/auth/models/restore.model.ts @@ -0,0 +1,3 @@ +export interface RestoreModel { + email: string; +} diff --git a/src/frontend/src/app/modules/auth/models/token.response.ts b/src/frontend/src/app/modules/auth/models/token.response.ts new file mode 100644 index 0000000..0be3e59 --- /dev/null +++ b/src/frontend/src/app/modules/auth/models/token.response.ts @@ -0,0 +1,3 @@ +export interface TokenResponse { + token: string; +} diff --git a/src/frontend/src/app/modules/auth/models/user.model.ts b/src/frontend/src/app/modules/auth/models/user.model.ts new file mode 100644 index 0000000..2496bd9 --- /dev/null +++ b/src/frontend/src/app/modules/auth/models/user.model.ts @@ -0,0 +1,8 @@ +export interface UserModel { + id: number; + name: string; + surname: string; + avatar: string | null; + country: string | null; + state: string | null; +} diff --git a/src/frontend/src/app/modules/auth/services/auth/auth.guard.ts b/src/frontend/src/app/modules/auth/services/auth/auth.guard.ts new file mode 100644 index 0000000..aab2f73 --- /dev/null +++ b/src/frontend/src/app/modules/auth/services/auth/auth.guard.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router'; +import { Observable } from 'rxjs'; +import { AuthTokenService } from 'src/app/modules/shared/services/auth/auth-token.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGuard implements CanActivate, CanActivateChild { + constructor(private authTokenService: AuthTokenService, private router: Router) { + + } + canActivate( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot, + ): Observable | Promise | boolean | UrlTree { + const can = this.authTokenService.userValidate(); + if (!can){ + this.router.navigate(['/auth']); + } + return can; + } + + canActivateChild( + childRoute: ActivatedRouteSnapshot, + state: RouterStateSnapshot, + ): Observable | Promise | boolean | UrlTree { + const can = this.authTokenService.userValidate(); + if (!can){ + this.router.navigate(['/auth']); + } + return can; + } +} diff --git a/src/frontend/src/app/modules/auth/services/auth/auth.service.ts b/src/frontend/src/app/modules/auth/services/auth/auth.service.ts new file mode 100644 index 0000000..6d412b0 --- /dev/null +++ b/src/frontend/src/app/modules/auth/services/auth/auth.service.ts @@ -0,0 +1,68 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; +import { LoginModel } from '../../models/login.model'; +import { RegisterModel } from '../../models/register.model'; +import { TokenResponse } from '../../models/token.response'; +import { UserModel } from '../../models/user.model'; +import { AuthTokenService } from '../../../shared/services/auth/auth-token.service'; +import { Router } from '@angular/router'; + +@Injectable() +export class AuthService { + + private static updateAgent: any; + private user: UserModel; + public userChange = new Subject(); + + constructor( + private http: HttpClient, + private authTokenService: AuthTokenService, + private router: Router, + ) { + this.checkUser(); + this.userChange.subscribe(user => { + this.user = user; + }); + } + + getUser(): UserModel { + return this.user; + } + + checkUser(): void { + this.http.post('/api/user-check', {}).subscribe(user => { + this.userChange.next(user); + if (AuthService.updateAgent) { + clearTimeout(AuthService.updateAgent); + } + AuthService.updateAgent = setTimeout(() => { + this.checkUser(); + }, 2000) as any; + }, () => { + this.logout(); + }); + } + + createAccount(data: RegisterModel): Observable { + return this.http.post('/api/register', data); + } + + login(data: LoginModel): Observable { + const out = new Subject(); + this.http.post('/api/login', { + username: data.email, + password: data.password, + }).subscribe(response => { + this.authTokenService.setToken(response.token); + this.checkUser(); + out.next(response); + }); + return out; + } + + logout(): void { + this.authTokenService.removeToken(); + this.router.navigate(['/auth']); + } +} diff --git a/src/frontend/src/app/modules/material/material.module.ts b/src/frontend/src/app/modules/material/material.module.ts index 99357e6..7c70a7a 100644 --- a/src/frontend/src/app/modules/material/material.module.ts +++ b/src/frontend/src/app/modules/material/material.module.ts @@ -5,23 +5,29 @@ import {MatButtonModule} from '@angular/material/button'; import {MatSidenavModule} from '@angular/material/sidenav'; import {MatSelectModule} from '@angular/material/select'; import {MatMenuModule} from '@angular/material/menu'; +import {MatCardModule} from '@angular/material/card'; +import {MatTabsModule} from '@angular/material/tabs'; +import {MatInputModule} from '@angular/material/input'; const itemsToExport = [ - MatToolbarModule, - MatButtonModule, - MatSidenavModule, - MatSelectModule, - MatMenuModule, + MatToolbarModule, + MatButtonModule, + MatSidenavModule, + MatSelectModule, + MatMenuModule, + MatCardModule, + MatTabsModule, + MatInputModule, ]; @NgModule({ - declarations: [], - imports: [ - CommonModule, - ...itemsToExport, - ], - exports: [ - ...itemsToExport, - ] + declarations: [], + imports: [ + CommonModule, + ...itemsToExport, + ], + exports: [ + ...itemsToExport, + ] }) export class MaterialModule { } diff --git a/src/frontend/src/app/modules/shared/components/not-found/not-found.component.html b/src/frontend/src/app/modules/shared/components/not-found/not-found.component.html index a8a991b..017680c 100644 --- a/src/frontend/src/app/modules/shared/components/not-found/not-found.component.html +++ b/src/frontend/src/app/modules/shared/components/not-found/not-found.component.html @@ -1,3 +1,10 @@ -
- {{ 'ERROR.PAGE_NOT_FOUND' | translate }} -
\ No newline at end of file +
+
+
+ +
+ {{ 'ERROR.PAGE_NOT_FOUND' | translate }} +
+
+
+
diff --git a/src/frontend/src/app/modules/shared/components/not-found/not-found.component.scss b/src/frontend/src/app/modules/shared/components/not-found/not-found.component.scss index e69de29..3b40699 100644 --- a/src/frontend/src/app/modules/shared/components/not-found/not-found.component.scss +++ b/src/frontend/src/app/modules/shared/components/not-found/not-found.component.scss @@ -0,0 +1,10 @@ +.primary-background{ + background-color: var(--toolbar-background); + height: 100px; +} +.content{ + margin: 0px auto; + margin-top: -100px; + height: 200px; + display: flex; +} \ No newline at end of file diff --git a/src/frontend/src/app/modules/shared/interceptors/token/token.interceptor.ts b/src/frontend/src/app/modules/shared/interceptors/token/token.interceptor.ts new file mode 100644 index 0000000..46688cf --- /dev/null +++ b/src/frontend/src/app/modules/shared/interceptors/token/token.interceptor.ts @@ -0,0 +1,20 @@ +import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { AuthTokenService } from 'src/app/modules/shared/services/auth/auth-token.service'; + +@Injectable() +export class TokenInterceptor implements HttpInterceptor { + + constructor(private authTokenService: AuthTokenService) { + } + + intercept(httpRequest: HttpRequest, next: HttpHandler): Observable> { + if (this.authTokenService.hasToken()) { + const Authorization = `Bearer ${this.authTokenService.getToken()}`; + return next.handle(httpRequest.clone({ setHeaders: { Authorization } })); + } + return next.handle(httpRequest); + + } +} diff --git a/src/frontend/src/app/modules/shared/models/user.model.ts b/src/frontend/src/app/modules/shared/models/user.model.ts new file mode 100644 index 0000000..7ed8173 --- /dev/null +++ b/src/frontend/src/app/modules/shared/models/user.model.ts @@ -0,0 +1,9 @@ +export class User { + id: number; + email: string; + name: string; + surname: string; + avatar: string; + country: string; + state: string; +} \ No newline at end of file diff --git a/src/frontend/src/app/modules/shared/services/app/app.service.ts b/src/frontend/src/app/modules/shared/services/app/app.service.ts index 5299e2d..0449e63 100644 --- a/src/frontend/src/app/modules/shared/services/app/app.service.ts +++ b/src/frontend/src/app/modules/shared/services/app/app.service.ts @@ -4,70 +4,107 @@ import { fromEvent, Subject } from 'rxjs'; import { BrowserStorageService } from '../browser-storage/browser-storage.service'; export class WindowSize { - isMobile: boolean; + isMobile: boolean; - constructor( - public width: number, - public height: number, - ) { - this.isMobile = this.width <= 700; - } + constructor( + public width: number, + public height: number, + ) { + this.isMobile = this.width <= 700; + } - static generate(): WindowSize { - return new WindowSize(window.innerWidth, window.innerHeight); - } + static generate(): WindowSize { + return new WindowSize(window.innerWidth, window.innerHeight); + } - update(): WindowSize { - this.width = window.innerWidth; - this.height = window.innerHeight; - return this; - } + update(): WindowSize { + this.width = window.innerWidth; + this.height = window.innerHeight; + return this; + } } @Injectable() export class AppService { - private lang = 'en'; - private defaultLang = 'en'; - langChange = new Subject(); - size: WindowSize; - sizeChange = new Subject(); + private sidebarHidden = false; + private lang = 'en'; + private defaultLang = 'en'; + private dynamicToolbarComponents = []; + langChange = new Subject(); + size: WindowSize; + sizeChange = new Subject(); + sidebarHiddenChange = new Subject(); + dynamicToolbarComponentsChange = new Subject(); - constructor( - browserStorageService: BrowserStorageService, - private translate: TranslateService, - ) { - this.langChange.subscribe(lang => { - this.lang = lang; - browserStorageService.setItem('language', lang); - }); - this.sizeChange.subscribe(size => this.size = size); - this.sizeChange.next(WindowSize.generate()); - let language = browserStorageService.getItem('language'); - if (!language) { - language = this.defaultLang; + constructor( + private browserStorageService: BrowserStorageService, + private translate: TranslateService, + ) { + this.configureResizeEvents(); + this.configureLanguageEvents(); + this.configureSidebarEvents(); } - this.translate.setDefaultLang(this.defaultLang); - this.changeLang(language); - fromEvent(window, 'resize').subscribe(e => { - this.sizeChange.next(WindowSize.generate()); - }); - } - changeLang(lang: string): void { - if (lang !== this.lang) { - this.translate.use(lang); - this.langChange.next(lang); + configureSidebarEvents(): void { + this.sidebarHiddenChange.subscribe(hidden => { + this.sidebarHidden = hidden; + }); } - } - getLang(): string { - return this.lang; - } + configureResizeEvents(): void { + this.sizeChange.subscribe(size => this.size = size); + this.sizeChange.next(WindowSize.generate()); + fromEvent(window, 'resize').subscribe(e => { + this.sizeChange.next(WindowSize.generate()); + }); + } - getLangs(): string[] { - return [ - 'pl', - 'en', - ]; - } + configureLanguageEvents(): void { + this.langChange.subscribe(lang => { + this.lang = lang; + this.browserStorageService.setItem('language', lang); + }); + let language = this.browserStorageService.getItem('language'); + if (!language) { + language = this.defaultLang; + } + this.translate.setDefaultLang(this.defaultLang); + this.changeLang(language); + } + + addDynamicToolbarComponent(component): void { + this.dynamicToolbarComponents.push(component); + this.dynamicToolbarComponentsChange.next(this.dynamicToolbarComponents); + } + + removeDynamicToolbarComponent(component): void { + this.dynamicToolbarComponents = this.dynamicToolbarComponents.filter(c => c !== component); + this.dynamicToolbarComponentsChange.next(this.dynamicToolbarComponents); + } + + setSidebarHidden(hidden: boolean): void { + this.sidebarHiddenChange.next(hidden); + } + + getSidebarHidden(): boolean { + return this.sidebarHidden; + } + + changeLang(lang: string): void { + if (lang !== this.lang) { + this.translate.use(lang); + this.langChange.next(lang); + } + } + + getLang(): string { + return this.lang; + } + + getLangs(): string[] { + return [ + 'pl', + 'en', + ]; + } } diff --git a/src/frontend/src/app/modules/shared/services/auth/auth-token.service.ts b/src/frontend/src/app/modules/shared/services/auth/auth-token.service.ts new file mode 100644 index 0000000..c237426 --- /dev/null +++ b/src/frontend/src/app/modules/shared/services/auth/auth-token.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@angular/core'; +import { BrowserStorageService } from 'src/app/modules/shared/services/browser-storage/browser-storage.service'; + +@Injectable() +export class AuthTokenService { + private TokenKey = 'jwt.token'; + + constructor( private browserStorageService: BrowserStorageService) { + } + + setToken(token: string): void { + this.browserStorageService.setItem(this.TokenKey, token); + } + + hasToken(): boolean { + const token = this.browserStorageService.getItemOrDefault(this.TokenKey, null); + return token !== null; + } + + getToken(): string { + return this.browserStorageService.getItem(this.TokenKey); + } + + removeToken(): void { + this.browserStorageService.setItem(this.TokenKey, null); + } + + userValidate(): boolean { + if (!this.hasToken()) { + return false; + } + return true; + } +} diff --git a/src/frontend/src/app/modules/shared/shared.module.ts b/src/frontend/src/app/modules/shared/shared.module.ts index 344df7e..97bf26b 100644 --- a/src/frontend/src/app/modules/shared/shared.module.ts +++ b/src/frontend/src/app/modules/shared/shared.module.ts @@ -4,6 +4,7 @@ import { NotFoundComponent } from './components/not-found/not-found.component'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { HttpLoaderFactory } from 'src/app/app.module'; import { HttpClient } from '@angular/common/http'; +import { MaterialModule } from '../material/material.module'; @NgModule({ declarations: [ @@ -11,6 +12,7 @@ import { HttpClient } from '@angular/common/http'; ], imports: [ CommonModule, + MaterialModule, TranslateModule.forRoot({ defaultLanguage: 'en', loader: { diff --git a/src/frontend/src/app/styles/_base.scss b/src/frontend/src/app/styles/_base.scss index 300670b..570d34a 100644 --- a/src/frontend/src/app/styles/_base.scss +++ b/src/frontend/src/app/styles/_base.scss @@ -1,6 +1,38 @@ @use 'sass:map'; $primary-color: map.get($theme, color, primary, 500); +$toolbar-background: map.get($theme, color, background, app-bar); +$toolbar-color: map.get($theme, color, primary, contrast, 500) !default; +$main-background: map.get($theme, color, background, background) !default; +$warn-color: map.get($theme, warn, 500) !default; body { --primary-color: #{$primary-color}; -} \ No newline at end of file + --toolbar-background: #{$toolbar-background}; + --toolbar-color: #{$toolbar-color}; + --main-background: #{$main-background}; + --warn-color: #{$warn-color}; + .mat-toolbar{ + background-color: var(--toolbar-background); + color: var(--toolbar-color); + } + .toolbar-background{ + position: relative; + & > *{ + position: relative; + z-index: 2; + } + &:before{ + position: absolute; + z-index: 0; + top: 0px; + left: 0px; + width:100%; + height: 100%; + content: ""; + opacity: 0.125; + background-image: url('/assets/background/items.png'); + background-position: top; + background-attachment: fixed; + } + } +} diff --git a/src/frontend/src/app/styles/dark.scss b/src/frontend/src/app/styles/dark.scss index df3b111..62ccce2 100644 --- a/src/frontend/src/app/styles/dark.scss +++ b/src/frontend/src/app/styles/dark.scss @@ -11,7 +11,7 @@ // Define the palettes for your theme using the Material Design palettes available in palette.scss // (imported above). For each palette, you can optionally specify a default, lighter, and darker // hue. Available color palettes: https://material.io/design/color/ -$theme-primary: mat.define-palette(mat.$blue-palette); +$theme-primary: mat.define-palette(mat.$indigo-palette); $theme-accent: mat.define-palette(mat.$green-palette, A200, A100, A400); // The warn palette is optional (defaults to red). diff --git a/src/frontend/src/app/styles/light.scss b/src/frontend/src/app/styles/light.scss index 423617d..ee243ff 100644 --- a/src/frontend/src/app/styles/light.scss +++ b/src/frontend/src/app/styles/light.scss @@ -1,3 +1,4 @@ +@use "sass:map"; // Custom Theming for Angular Material // For more information: https://material.angular.io/guide/theming @use '~@angular/material' as mat; @@ -11,7 +12,7 @@ // Define the palettes for your theme using the Material Design palettes available in palette.scss // (imported above). For each palette, you can optionally specify a default, lighter, and darker // hue. Available color palettes: https://material.io/design/color/ -$theme-primary: mat.define-palette(mat.$indigo-palette); +$theme-primary: mat.define-palette(mat.$blue-palette); $theme-accent: mat.define-palette(mat.$light-blue-palette, A200, A100, A400); // The warn palette is optional (defaults to red). @@ -27,6 +28,10 @@ $theme: mat.define-light-theme(( ) )); +$toolbar-background: map.get($theme, color, primary, 500); +$toolbar-text: map.get($theme, color, primary, contrast, 500); +$theme: map.set($theme, color, background, app-bar, $toolbar-background); +$theme: map.set($theme, color, foreground, app-bar, $toolbar-text); // Include theme styles for core and each component used in your app. // Alternatively, you can import and @include the theme mixins for each component // that you are using. diff --git a/src/frontend/src/assets/background/items.png b/src/frontend/src/assets/background/items.png new file mode 100644 index 0000000000000000000000000000000000000000..801576f7d3ef0fce48e48152923d6767e5bad2da GIT binary patch literal 106362 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 z≶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 z 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