├── .gitignore ├── app1 ├── config │ ├── routes.yaml │ ├── bundles.php │ ├── routes │ │ └── framework.yaml │ ├── preload.php │ ├── packages │ │ ├── routing.yaml │ │ ├── cache.yaml │ │ ├── messenger.yaml │ │ └── framework.yaml │ └── services.yaml ├── .gitignore ├── public │ └── index.php ├── src │ ├── Kernel.php │ ├── Message │ │ └── StatusUpdate.php │ └── Handler │ │ └── StatusUpdateHandler.php ├── bin │ └── console ├── Dockerfile ├── .env ├── composer.json ├── symfony.lock └── composer.lock ├── app2 ├── config │ ├── routes.yaml │ ├── routes │ │ └── framework.yaml │ ├── bundles.php │ ├── preload.php │ ├── packages │ │ ├── routing.yaml │ │ ├── cache.yaml │ │ ├── framework.yaml │ │ ├── messenger.yaml │ │ └── monolog.yaml │ └── services.yaml ├── public │ └── index.php ├── src │ ├── Kernel.php │ ├── Message │ │ └── StatusUpdate.php │ ├── Handler │ │ └── StatusUpdateHandler.php │ └── Command │ │ └── SendStatusCommand.php ├── .gitignore ├── bin │ └── console ├── Dockerfile ├── .env ├── composer.json └── symfony.lock ├── docker-compose.yml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /app1/config/routes.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app2/config/routes.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app1/config/bundles.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | ]; 6 | -------------------------------------------------------------------------------- /app1/config/routes/framework.yaml: -------------------------------------------------------------------------------- 1 | when@dev: 2 | _errors: 3 | resource: '@FrameworkBundle/Resources/config/routing/errors.xml' 4 | prefix: /_error 5 | -------------------------------------------------------------------------------- /app2/config/routes/framework.yaml: -------------------------------------------------------------------------------- 1 | when@dev: 2 | _errors: 3 | resource: '@FrameworkBundle/Resources/config/routing/errors.xml' 4 | prefix: /_error 5 | -------------------------------------------------------------------------------- /app2/config/bundles.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], 6 | ]; 7 | -------------------------------------------------------------------------------- /app1/config/preload.php: -------------------------------------------------------------------------------- 1 | symfony/framework-bundle ### 3 | /.env.local 4 | /.env.local.php 5 | /.env.*.local 6 | /config/secrets/prod/prod.decrypt.private.php 7 | /public/bundles/ 8 | /var/ 9 | /vendor/ 10 | ###< symfony/framework-bundle ### 11 | -------------------------------------------------------------------------------- /app1/public/index.php: -------------------------------------------------------------------------------- 1 | symfony/framework-bundle ### 3 | /.env.local 4 | /.env.local.php 5 | /.env.*.local 6 | /config/secrets/prod/prod.decrypt.private.php 7 | /public/bundles/ 8 | /var/ 9 | /vendor/ 10 | ###< symfony/framework-bundle ### 11 | 12 | ### PHP Storm .idea 13 | .idea/ -------------------------------------------------------------------------------- /app1/src/Message/StatusUpdate.php: -------------------------------------------------------------------------------- 1 | status; 12 | } 13 | } -------------------------------------------------------------------------------- /app2/src/Message/StatusUpdate.php: -------------------------------------------------------------------------------- 1 | status; 13 | } 14 | } -------------------------------------------------------------------------------- /app1/config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | utf8: true 4 | 5 | # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. 6 | # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands 7 | #default_uri: http://localhost 8 | 9 | when@prod: 10 | framework: 11 | router: 12 | strict_requirements: null 13 | -------------------------------------------------------------------------------- /app2/config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | utf8: true 4 | 5 | # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. 6 | # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands 7 | #default_uri: http://localhost 8 | 9 | when@prod: 10 | framework: 11 | router: 12 | strict_requirements: null 13 | -------------------------------------------------------------------------------- /app1/bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getStatus(); 19 | 20 | $this->logger->warning('APP2: {STATUS_UPDATE} - '.$statusDescription); 21 | } 22 | } -------------------------------------------------------------------------------- /app2/src/Handler/StatusUpdateHandler.php: -------------------------------------------------------------------------------- 1 | getStatus(); 20 | 21 | $this->logger->warning('APP1: {STATUS_UPDATE} - '.$statusDescription); 22 | } 23 | } -------------------------------------------------------------------------------- /app1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.1 2 | 3 | COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer 4 | COPY . /app/ 5 | WORKDIR /app/ 6 | 7 | ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ 8 | 9 | RUN chmod +x /usr/local/bin/install-php-extensions && sync && \ 10 | install-php-extensions amqp 11 | 12 | RUN apt-get update \ 13 | && apt-get install -y libzip-dev wget --no-install-recommends \ 14 | && apt-get clean \ 15 | && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 16 | 17 | RUN docker-php-ext-install zip; 18 | 19 | CMD bash -c "cd /app && composer install && php -a" -------------------------------------------------------------------------------- /app2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.1 2 | 3 | COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer 4 | COPY . /app/ 5 | WORKDIR /app/ 6 | 7 | ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ 8 | 9 | RUN chmod +x /usr/local/bin/install-php-extensions && sync && \ 10 | install-php-extensions amqp 11 | 12 | RUN apt-get update \ 13 | && apt-get install -y libzip-dev wget --no-install-recommends \ 14 | && apt-get clean \ 15 | && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 16 | 17 | RUN docker-php-ext-install zip; 18 | 19 | CMD bash -c "cd /app && composer install && php -a" -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | app1: 5 | container_name: app1 6 | build: app1/. 7 | restart: on-failure 8 | env_file: app1/.env 9 | environment: 10 | APP_NAME: app1 11 | tty: true 12 | stdin_open: true 13 | 14 | app2: 15 | container_name: app2 16 | build: app2/. 17 | restart: on-failure 18 | env_file: app2/.env 19 | environment: 20 | APP_NAME: app2 21 | tty: true 22 | stdin_open: true 23 | 24 | rabbitmq: 25 | container_name: rabbitmq 26 | image: rabbitmq:management 27 | ports: 28 | - 15672:15672 29 | - 5672:5672 30 | environment: 31 | - RABBITMQ_DEFAULT_USER=user 32 | - RABBITMQ_DEFAULT_PASS=password -------------------------------------------------------------------------------- /app1/config/packages/cache.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | cache: 3 | # Unique name of your app: used to compute stable namespaces for cache keys. 4 | #prefix_seed: your_vendor_name/app_name 5 | 6 | # The "app" cache stores to the filesystem by default. 7 | # The data in this cache should persist between deploys. 8 | # Other options include: 9 | 10 | # Redis 11 | #app: cache.adapter.redis 12 | #default_redis_provider: redis://localhost 13 | 14 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 15 | #app: cache.adapter.apcu 16 | 17 | # Namespaced pools use the above "app" backend by default 18 | #pools: 19 | #my.dedicated.cache: null 20 | -------------------------------------------------------------------------------- /app2/config/packages/cache.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | cache: 3 | # Unique name of your app: used to compute stable namespaces for cache keys. 4 | #prefix_seed: your_vendor_name/app_name 5 | 6 | # The "app" cache stores to the filesystem by default. 7 | # The data in this cache should persist between deploys. 8 | # Other options include: 9 | 10 | # Redis 11 | #app: cache.adapter.redis 12 | #default_redis_provider: redis://localhost 13 | 14 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 15 | #app: cache.adapter.apcu 16 | 17 | # Namespaced pools use the above "app" backend by default 18 | #pools: 19 | #my.dedicated.cache: null 20 | -------------------------------------------------------------------------------- /app1/config/packages/messenger.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | messenger: 3 | # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling. 4 | # failure_transport: failed 5 | 6 | transports: 7 | # https://symfony.com/doc/current/messenger.html#transport-configuration 8 | external_messages: 9 | dsn: '%env(MESSENGER_TRANSPORT_DSN)%' 10 | options: 11 | auto_setup: false 12 | exchange: 13 | name: messages 14 | type: direct 15 | default_publish_routing_key: from_external 16 | queues: 17 | messages: 18 | binding_keys: [from_external] 19 | -------------------------------------------------------------------------------- /app1/config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | # see https://symfony.com/doc/current/reference/configuration/framework.html 2 | framework: 3 | secret: '%env(APP_SECRET)%' 4 | #csrf_protection: true 5 | http_method_override: false 6 | 7 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 8 | # Remove or comment this section to explicitly disable session support. 9 | session: 10 | handler_id: null 11 | cookie_secure: auto 12 | cookie_samesite: lax 13 | storage_factory_id: session.storage.factory.native 14 | 15 | #esi: true 16 | #fragments: true 17 | php_errors: 18 | log: true 19 | 20 | when@test: 21 | framework: 22 | test: true 23 | session: 24 | storage_factory_id: session.storage.factory.mock_file 25 | -------------------------------------------------------------------------------- /app2/config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | # see https://symfony.com/doc/current/reference/configuration/framework.html 2 | framework: 3 | secret: '%env(APP_SECRET)%' 4 | #csrf_protection: true 5 | http_method_override: false 6 | 7 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 8 | # Remove or comment this section to explicitly disable session support. 9 | session: 10 | handler_id: null 11 | cookie_secure: auto 12 | cookie_samesite: lax 13 | storage_factory_id: session.storage.factory.native 14 | 15 | #esi: true 16 | #fragments: true 17 | php_errors: 18 | log: true 19 | 20 | when@test: 21 | framework: 22 | test: true 23 | session: 24 | storage_factory_id: session.storage.factory.mock_file 25 | -------------------------------------------------------------------------------- /app2/config/packages/messenger.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | messenger: 3 | # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling. 4 | # failure_transport: failed 5 | 6 | transports: 7 | # https://symfony.com/doc/current/messenger.html#transport-configuration 8 | async: 9 | dsn: '%env(MESSENGER_TRANSPORT_DSN)%' 10 | 11 | # failed: 'doctrine://default?queue_name=failed' 12 | # sync: 'sync://' 13 | 14 | routing: 15 | # Route your messages to the transports 16 | 'App\Message\StatusUpdate': async 17 | 18 | # when@test: 19 | # framework: 20 | # messenger: 21 | # transports: 22 | # # replace with your transport name here (e.g., my_transport: 'in-memory://') 23 | # # For more Messenger testing tools, see https://github.com/zenstruck/messenger-test 24 | # async: 'in-memory://' 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Symfony Microservices Communication App 2 | 3 | Used as an example for blog post series: Symfony Microservices Communication 4 | 5 | Stack used: Symfony 6.1, PHP 8.1, RabbitMQ 3 6 | 7 | ## Setting up 8 | 9 | ```shell 10 | git clone git@github.com:thecodest-co/microservices-in-symfony.git 11 | cd microservices-in-symfony/ 12 | docker-compose up --build -d 13 | ``` 14 | 15 | ## Testing 16 | 17 | From APP2 we can issue command: 18 | ```shell 19 | docker exec -it app2 php bin/console app:send 20 | ``` 21 | 22 | In APP1 you can consume those messages and turn them back into PHP objects. 23 | ```shell 24 | docker exec -it app1 php bin/console messenger:consume -vv external_messages 25 | ``` 26 | 27 | As an output you should see Messages issued by APP2. 28 | ```shell 29 | [warning] APP2: {STATUS_UPDATE} - Worker X assigned to Y 30 | [info] Message App\Message\StatusUpdate handled by App\Handler\StatusUpdateHandler::__invoke 31 | [info] App\Message\StatusUpdate was handled successfully (acknowledging to transport). 32 | ``` -------------------------------------------------------------------------------- /app2/src/Command/SendStatusCommand.php: -------------------------------------------------------------------------------- 1 | messageBus->dispatch( 28 | message: new StatusUpdate($status) 29 | ); 30 | 31 | return Command::SUCCESS; 32 | } 33 | } -------------------------------------------------------------------------------- /app1/config/services.yaml: -------------------------------------------------------------------------------- 1 | # This file is the entry point to configure your own services. 2 | # Files in the packages/ subdirectory configure your dependencies. 3 | 4 | # Put parameters here that don't need to change on each machine where the app is deployed 5 | # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration 6 | parameters: 7 | 8 | services: 9 | # default configuration for services in *this* file 10 | _defaults: 11 | autowire: true # Automatically injects dependencies in your services. 12 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 13 | 14 | # makes classes in src/ available to be used as services 15 | # this creates a service per class whose id is the fully-qualified class name 16 | App\: 17 | resource: '../src/' 18 | exclude: 19 | - '../src/DependencyInjection/' 20 | - '../src/Entity/' 21 | - '../src/Kernel.php' 22 | 23 | # add more service definitions when explicit configuration is needed 24 | # please note that last definitions always *replace* previous ones 25 | -------------------------------------------------------------------------------- /app2/config/services.yaml: -------------------------------------------------------------------------------- 1 | # This file is the entry point to configure your own services. 2 | # Files in the packages/ subdirectory configure your dependencies. 3 | 4 | # Put parameters here that don't need to change on each machine where the app is deployed 5 | # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration 6 | parameters: 7 | 8 | services: 9 | # default configuration for services in *this* file 10 | _defaults: 11 | autowire: true # Automatically injects dependencies in your services. 12 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 13 | 14 | # makes classes in src/ available to be used as services 15 | # this creates a service per class whose id is the fully-qualified class name 16 | App\: 17 | resource: '../src/' 18 | exclude: 19 | - '../src/DependencyInjection/' 20 | - '../src/Entity/' 21 | - '../src/Kernel.php' 22 | 23 | # add more service definitions when explicit configuration is needed 24 | # please note that last definitions always *replace* previous ones 25 | -------------------------------------------------------------------------------- /app1/.env: -------------------------------------------------------------------------------- 1 | # In all environments, the following files are loaded if they exist, 2 | # the latter taking precedence over the former: 3 | # 4 | # * .env contains default values for the environment variables needed by the app 5 | # * .env.local uncommitted file with local overrides 6 | # * .env.$APP_ENV committed environment-specific defaults 7 | # * .env.$APP_ENV.local uncommitted environment-specific overrides 8 | # 9 | # Real environment variables win over .env files. 10 | # 11 | # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. 12 | # 13 | # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). 14 | # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration 15 | 16 | ###> symfony/framework-bundle ### 17 | APP_ENV=dev 18 | APP_SECRET=2dd898eca73577445e96fb886d5d917c 19 | ###< symfony/framework-bundle ### 20 | 21 | ###> symfony/messenger ### 22 | # Choose one of the transports below 23 | # MESSENGER_TRANSPORT_DSN=doctrine://default 24 | MESSENGER_TRANSPORT_DSN=amqp://user:password@rabbitmq:5672/%2f/messages 25 | # MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages 26 | ###< symfony/messenger ### 27 | -------------------------------------------------------------------------------- /app2/.env: -------------------------------------------------------------------------------- 1 | # In all environments, the following files are loaded if they exist, 2 | # the latter taking precedence over the former: 3 | # 4 | # * .env contains default values for the environment variables needed by the app 5 | # * .env.local uncommitted file with local overrides 6 | # * .env.$APP_ENV committed environment-specific defaults 7 | # * .env.$APP_ENV.local uncommitted environment-specific overrides 8 | # 9 | # Real environment variables win over .env files. 10 | # 11 | # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. 12 | # 13 | # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). 14 | # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration 15 | 16 | ###> symfony/framework-bundle ### 17 | APP_ENV=dev 18 | APP_SECRET=358161e0728b969a7c0f46aee590cc47 19 | ###< symfony/framework-bundle ### 20 | 21 | ###> symfony/messenger ### 22 | # Choose one of the transports below 23 | # MESSENGER_TRANSPORT_DSN=doctrine://default 24 | MESSENGER_TRANSPORT_DSN=amqp://user:password@rabbitmq:5672/%2f/messages 25 | # MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages 26 | ###< symfony/messenger ### 27 | -------------------------------------------------------------------------------- /app1/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "project", 3 | "description": "Example microservice app for The Codest PHP presentation", 4 | "license": "MIT", 5 | "minimum-stability": "stable", 6 | "prefer-stable": true, 7 | "require": { 8 | "php": ">=8.1", 9 | "ext-ctype": "*", 10 | "ext-iconv": "*", 11 | "symfony/amqp-messenger": "6.1.*", 12 | "symfony/console": "6.1.*", 13 | "symfony/dotenv": "6.1.*", 14 | "symfony/flex": "^2", 15 | "symfony/framework-bundle": "6.1.*", 16 | "symfony/messenger": "6.1.*", 17 | "symfony/runtime": "6.1.*", 18 | "symfony/yaml": "6.1.*" 19 | }, 20 | "config": { 21 | "allow-plugins": { 22 | "composer/package-versions-deprecated": true, 23 | "symfony/flex": true, 24 | "symfony/runtime": true 25 | }, 26 | "optimize-autoloader": true, 27 | "preferred-install": { 28 | "*": "dist" 29 | }, 30 | "sort-packages": true 31 | }, 32 | "autoload": { 33 | "psr-4": { 34 | "App\\": "src/" 35 | } 36 | }, 37 | "autoload-dev": { 38 | "psr-4": { 39 | "App\\Tests\\": "tests/" 40 | } 41 | }, 42 | "replace": { 43 | "symfony/polyfill-ctype": "*", 44 | "symfony/polyfill-iconv": "*", 45 | "symfony/polyfill-php72": "*", 46 | "symfony/polyfill-php73": "*", 47 | "symfony/polyfill-php74": "*", 48 | "symfony/polyfill-php80": "*", 49 | "symfony/polyfill-php81": "*" 50 | }, 51 | "scripts": { 52 | "auto-scripts": { 53 | "cache:clear": "symfony-cmd", 54 | "assets:install %PUBLIC_DIR%": "symfony-cmd" 55 | }, 56 | "post-install-cmd": [ 57 | "@auto-scripts" 58 | ], 59 | "post-update-cmd": [ 60 | "@auto-scripts" 61 | ] 62 | }, 63 | "conflict": { 64 | "symfony/symfony": "*" 65 | }, 66 | "extra": { 67 | "symfony": { 68 | "allow-contrib": false, 69 | "require": "6.1.*" 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /app2/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "project", 3 | "description": "Example microservice app for The Codest PHP presentation", 4 | "license": "MIT", 5 | "minimum-stability": "stable", 6 | "prefer-stable": true, 7 | "require": { 8 | "php": ">=8.1", 9 | "ext-ctype": "*", 10 | "ext-iconv": "*", 11 | "symfony/amqp-messenger": "6.1.*", 12 | "symfony/console": "6.1.*", 13 | "symfony/dotenv": "6.1.*", 14 | "symfony/flex": "^2", 15 | "symfony/framework-bundle": "6.1.*", 16 | "symfony/messenger": "6.1.*", 17 | "symfony/monolog-bundle": "^3.8", 18 | "symfony/runtime": "6.1.*", 19 | "symfony/yaml": "6.1.*" 20 | }, 21 | "config": { 22 | "allow-plugins": { 23 | "composer/package-versions-deprecated": true, 24 | "symfony/flex": true, 25 | "symfony/runtime": true 26 | }, 27 | "optimize-autoloader": true, 28 | "preferred-install": { 29 | "*": "dist" 30 | }, 31 | "sort-packages": true 32 | }, 33 | "autoload": { 34 | "psr-4": { 35 | "App\\": "src/" 36 | } 37 | }, 38 | "autoload-dev": { 39 | "psr-4": { 40 | "App\\Tests\\": "tests/" 41 | } 42 | }, 43 | "replace": { 44 | "symfony/polyfill-ctype": "*", 45 | "symfony/polyfill-iconv": "*", 46 | "symfony/polyfill-php72": "*", 47 | "symfony/polyfill-php73": "*", 48 | "symfony/polyfill-php74": "*", 49 | "symfony/polyfill-php80": "*", 50 | "symfony/polyfill-php81": "*" 51 | }, 52 | "scripts": { 53 | "auto-scripts": { 54 | "cache:clear": "symfony-cmd", 55 | "assets:install %PUBLIC_DIR%": "symfony-cmd" 56 | }, 57 | "post-install-cmd": [ 58 | "@auto-scripts" 59 | ], 60 | "post-update-cmd": [ 61 | "@auto-scripts" 62 | ] 63 | }, 64 | "conflict": { 65 | "symfony/symfony": "*" 66 | }, 67 | "extra": { 68 | "symfony": { 69 | "allow-contrib": false, 70 | "require": "6.1.*" 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app2/config/packages/monolog.yaml: -------------------------------------------------------------------------------- 1 | monolog: 2 | channels: 3 | - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists 4 | 5 | when@dev: 6 | monolog: 7 | handlers: 8 | main: 9 | type: stream 10 | path: "%kernel.logs_dir%/%kernel.environment%.log" 11 | level: debug 12 | channels: ["!event"] 13 | # uncomment to get logging in your browser 14 | # you may have to allow bigger header sizes in your Web server configuration 15 | #firephp: 16 | # type: firephp 17 | # level: info 18 | #chromephp: 19 | # type: chromephp 20 | # level: info 21 | console: 22 | type: console 23 | process_psr_3_messages: false 24 | channels: ["!event", "!doctrine", "!console"] 25 | 26 | when@test: 27 | monolog: 28 | handlers: 29 | main: 30 | type: fingers_crossed 31 | action_level: error 32 | handler: nested 33 | excluded_http_codes: [404, 405] 34 | channels: ["!event"] 35 | nested: 36 | type: stream 37 | path: "%kernel.logs_dir%/%kernel.environment%.log" 38 | level: debug 39 | 40 | when@prod: 41 | monolog: 42 | handlers: 43 | main: 44 | type: fingers_crossed 45 | action_level: error 46 | handler: nested 47 | excluded_http_codes: [404, 405] 48 | buffer_size: 50 # How many messages should be saved? Prevent memory leaks 49 | nested: 50 | type: stream 51 | path: php://stderr 52 | level: debug 53 | formatter: monolog.formatter.json 54 | console: 55 | type: console 56 | process_psr_3_messages: false 57 | channels: ["!event", "!doctrine"] 58 | deprecation: 59 | type: stream 60 | channels: [deprecation] 61 | path: php://stderr 62 | -------------------------------------------------------------------------------- /app1/symfony.lock: -------------------------------------------------------------------------------- 1 | { 2 | "symfony/console": { 3 | "version": "6.1", 4 | "recipe": { 5 | "repo": "github.com/symfony/recipes", 6 | "branch": "main", 7 | "version": "5.3", 8 | "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047" 9 | }, 10 | "files": [ 11 | "bin/console" 12 | ] 13 | }, 14 | "symfony/flex": { 15 | "version": "2.2", 16 | "recipe": { 17 | "repo": "github.com/symfony/recipes", 18 | "branch": "main", 19 | "version": "1.0", 20 | "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" 21 | }, 22 | "files": [ 23 | ".env" 24 | ] 25 | }, 26 | "symfony/framework-bundle": { 27 | "version": "6.1", 28 | "recipe": { 29 | "repo": "github.com/symfony/recipes", 30 | "branch": "main", 31 | "version": "5.4", 32 | "ref": "3cd216a4d007b78d8554d44a5b1c0a446dab24fb" 33 | }, 34 | "files": [ 35 | "config/packages/cache.yaml", 36 | "config/packages/framework.yaml", 37 | "config/preload.php", 38 | "config/routes/framework.yaml", 39 | "config/services.yaml", 40 | "public/index.php", 41 | "src/Controller/.gitignore", 42 | "src/Kernel.php" 43 | ] 44 | }, 45 | "symfony/messenger": { 46 | "version": "6.1", 47 | "recipe": { 48 | "repo": "github.com/symfony/recipes", 49 | "branch": "main", 50 | "version": "6.0", 51 | "ref": "2523f7d31488903e247a522e760dc279be7f7aaf" 52 | }, 53 | "files": [ 54 | "config/packages/messenger.yaml" 55 | ] 56 | }, 57 | "symfony/routing": { 58 | "version": "6.1", 59 | "recipe": { 60 | "repo": "github.com/symfony/recipes", 61 | "branch": "main", 62 | "version": "6.1", 63 | "ref": "a44010c0d06989bd4f154aa07d2542d47caf5b83" 64 | }, 65 | "files": [ 66 | "config/packages/routing.yaml", 67 | "config/routes.yaml" 68 | ] 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /app2/symfony.lock: -------------------------------------------------------------------------------- 1 | { 2 | "symfony/console": { 3 | "version": "6.1", 4 | "recipe": { 5 | "repo": "github.com/symfony/recipes", 6 | "branch": "main", 7 | "version": "5.3", 8 | "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047" 9 | }, 10 | "files": [ 11 | "bin/console" 12 | ] 13 | }, 14 | "symfony/flex": { 15 | "version": "2.2", 16 | "recipe": { 17 | "repo": "github.com/symfony/recipes", 18 | "branch": "main", 19 | "version": "1.0", 20 | "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" 21 | }, 22 | "files": [ 23 | ".env" 24 | ] 25 | }, 26 | "symfony/framework-bundle": { 27 | "version": "6.1", 28 | "recipe": { 29 | "repo": "github.com/symfony/recipes", 30 | "branch": "main", 31 | "version": "5.4", 32 | "ref": "3cd216a4d007b78d8554d44a5b1c0a446dab24fb" 33 | }, 34 | "files": [ 35 | "config/packages/cache.yaml", 36 | "config/packages/framework.yaml", 37 | "config/preload.php", 38 | "config/routes/framework.yaml", 39 | "config/services.yaml", 40 | "public/index.php", 41 | "src/Controller/.gitignore", 42 | "src/Kernel.php" 43 | ] 44 | }, 45 | "symfony/messenger": { 46 | "version": "6.1", 47 | "recipe": { 48 | "repo": "github.com/symfony/recipes", 49 | "branch": "main", 50 | "version": "6.0", 51 | "ref": "2523f7d31488903e247a522e760dc279be7f7aaf" 52 | }, 53 | "files": [ 54 | "config/packages/messenger.yaml" 55 | ] 56 | }, 57 | "symfony/monolog-bundle": { 58 | "version": "3.8", 59 | "recipe": { 60 | "repo": "github.com/symfony/recipes", 61 | "branch": "main", 62 | "version": "3.7", 63 | "ref": "213676c4ec929f046dfde5ea8e97625b81bc0578" 64 | }, 65 | "files": [ 66 | "config/packages/monolog.yaml" 67 | ] 68 | }, 69 | "symfony/routing": { 70 | "version": "6.1", 71 | "recipe": { 72 | "repo": "github.com/symfony/recipes", 73 | "branch": "main", 74 | "version": "6.1", 75 | "ref": "a44010c0d06989bd4f154aa07d2542d47caf5b83" 76 | }, 77 | "files": [ 78 | "config/packages/routing.yaml", 79 | "config/routes.yaml" 80 | ] 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /app1/composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "3de1fad1f5da6b4d229ea089c522eadb", 8 | "packages": [ 9 | { 10 | "name": "psr/cache", 11 | "version": "3.0.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/php-fig/cache.git", 15 | "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 20 | "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=8.0.0" 25 | }, 26 | "type": "library", 27 | "extra": { 28 | "branch-alias": { 29 | "dev-master": "1.0.x-dev" 30 | } 31 | }, 32 | "autoload": { 33 | "psr-4": { 34 | "Psr\\Cache\\": "src/" 35 | } 36 | }, 37 | "notification-url": "https://packagist.org/downloads/", 38 | "license": [ 39 | "MIT" 40 | ], 41 | "authors": [ 42 | { 43 | "name": "PHP-FIG", 44 | "homepage": "https://www.php-fig.org/" 45 | } 46 | ], 47 | "description": "Common interface for caching libraries", 48 | "keywords": [ 49 | "cache", 50 | "psr", 51 | "psr-6" 52 | ], 53 | "support": { 54 | "source": "https://github.com/php-fig/cache/tree/3.0.0" 55 | }, 56 | "time": "2021-02-03T23:26:27+00:00" 57 | }, 58 | { 59 | "name": "psr/container", 60 | "version": "2.0.2", 61 | "source": { 62 | "type": "git", 63 | "url": "https://github.com/php-fig/container.git", 64 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 65 | }, 66 | "dist": { 67 | "type": "zip", 68 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 69 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 70 | "shasum": "" 71 | }, 72 | "require": { 73 | "php": ">=7.4.0" 74 | }, 75 | "type": "library", 76 | "extra": { 77 | "branch-alias": { 78 | "dev-master": "2.0.x-dev" 79 | } 80 | }, 81 | "autoload": { 82 | "psr-4": { 83 | "Psr\\Container\\": "src/" 84 | } 85 | }, 86 | "notification-url": "https://packagist.org/downloads/", 87 | "license": [ 88 | "MIT" 89 | ], 90 | "authors": [ 91 | { 92 | "name": "PHP-FIG", 93 | "homepage": "https://www.php-fig.org/" 94 | } 95 | ], 96 | "description": "Common Container Interface (PHP FIG PSR-11)", 97 | "homepage": "https://github.com/php-fig/container", 98 | "keywords": [ 99 | "PSR-11", 100 | "container", 101 | "container-interface", 102 | "container-interop", 103 | "psr" 104 | ], 105 | "support": { 106 | "issues": "https://github.com/php-fig/container/issues", 107 | "source": "https://github.com/php-fig/container/tree/2.0.2" 108 | }, 109 | "time": "2021-11-05T16:47:00+00:00" 110 | }, 111 | { 112 | "name": "psr/event-dispatcher", 113 | "version": "1.0.0", 114 | "source": { 115 | "type": "git", 116 | "url": "https://github.com/php-fig/event-dispatcher.git", 117 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 118 | }, 119 | "dist": { 120 | "type": "zip", 121 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 122 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 123 | "shasum": "" 124 | }, 125 | "require": { 126 | "php": ">=7.2.0" 127 | }, 128 | "type": "library", 129 | "extra": { 130 | "branch-alias": { 131 | "dev-master": "1.0.x-dev" 132 | } 133 | }, 134 | "autoload": { 135 | "psr-4": { 136 | "Psr\\EventDispatcher\\": "src/" 137 | } 138 | }, 139 | "notification-url": "https://packagist.org/downloads/", 140 | "license": [ 141 | "MIT" 142 | ], 143 | "authors": [ 144 | { 145 | "name": "PHP-FIG", 146 | "homepage": "http://www.php-fig.org/" 147 | } 148 | ], 149 | "description": "Standard interfaces for event handling.", 150 | "keywords": [ 151 | "events", 152 | "psr", 153 | "psr-14" 154 | ], 155 | "support": { 156 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 157 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 158 | }, 159 | "time": "2019-01-08T18:20:26+00:00" 160 | }, 161 | { 162 | "name": "psr/log", 163 | "version": "3.0.0", 164 | "source": { 165 | "type": "git", 166 | "url": "https://github.com/php-fig/log.git", 167 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" 168 | }, 169 | "dist": { 170 | "type": "zip", 171 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", 172 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", 173 | "shasum": "" 174 | }, 175 | "require": { 176 | "php": ">=8.0.0" 177 | }, 178 | "type": "library", 179 | "extra": { 180 | "branch-alias": { 181 | "dev-master": "3.x-dev" 182 | } 183 | }, 184 | "autoload": { 185 | "psr-4": { 186 | "Psr\\Log\\": "src" 187 | } 188 | }, 189 | "notification-url": "https://packagist.org/downloads/", 190 | "license": [ 191 | "MIT" 192 | ], 193 | "authors": [ 194 | { 195 | "name": "PHP-FIG", 196 | "homepage": "https://www.php-fig.org/" 197 | } 198 | ], 199 | "description": "Common interface for logging libraries", 200 | "homepage": "https://github.com/php-fig/log", 201 | "keywords": [ 202 | "log", 203 | "psr", 204 | "psr-3" 205 | ], 206 | "support": { 207 | "source": "https://github.com/php-fig/log/tree/3.0.0" 208 | }, 209 | "time": "2021-07-14T16:46:02+00:00" 210 | }, 211 | { 212 | "name": "symfony/amqp-messenger", 213 | "version": "v6.1.0", 214 | "source": { 215 | "type": "git", 216 | "url": "https://github.com/symfony/amqp-messenger.git", 217 | "reference": "0d76fc304214bd8634572ef9314e27a250b78348" 218 | }, 219 | "dist": { 220 | "type": "zip", 221 | "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/0d76fc304214bd8634572ef9314e27a250b78348", 222 | "reference": "0d76fc304214bd8634572ef9314e27a250b78348", 223 | "shasum": "" 224 | }, 225 | "require": { 226 | "ext-amqp": "*", 227 | "php": ">=8.1", 228 | "symfony/messenger": "^6.1" 229 | }, 230 | "require-dev": { 231 | "symfony/event-dispatcher": "^5.4|^6.0", 232 | "symfony/process": "^5.4|^6.0", 233 | "symfony/property-access": "^5.4|^6.0", 234 | "symfony/serializer": "^5.4|^6.0" 235 | }, 236 | "type": "symfony-messenger-bridge", 237 | "autoload": { 238 | "psr-4": { 239 | "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" 240 | }, 241 | "exclude-from-classmap": [ 242 | "/Tests/" 243 | ] 244 | }, 245 | "notification-url": "https://packagist.org/downloads/", 246 | "license": [ 247 | "MIT" 248 | ], 249 | "authors": [ 250 | { 251 | "name": "Fabien Potencier", 252 | "email": "fabien@symfony.com" 253 | }, 254 | { 255 | "name": "Symfony Community", 256 | "homepage": "https://symfony.com/contributors" 257 | } 258 | ], 259 | "description": "Symfony AMQP extension Messenger Bridge", 260 | "homepage": "https://symfony.com", 261 | "support": { 262 | "source": "https://github.com/symfony/amqp-messenger/tree/v6.1.0" 263 | }, 264 | "funding": [ 265 | { 266 | "url": "https://symfony.com/sponsor", 267 | "type": "custom" 268 | }, 269 | { 270 | "url": "https://github.com/fabpot", 271 | "type": "github" 272 | }, 273 | { 274 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 275 | "type": "tidelift" 276 | } 277 | ], 278 | "time": "2022-03-31T17:26:00+00:00" 279 | }, 280 | { 281 | "name": "symfony/cache", 282 | "version": "v6.1.1", 283 | "source": { 284 | "type": "git", 285 | "url": "https://github.com/symfony/cache.git", 286 | "reference": "364fc90734230d936ac2db8e897cc03ec8497bbb" 287 | }, 288 | "dist": { 289 | "type": "zip", 290 | "url": "https://api.github.com/repos/symfony/cache/zipball/364fc90734230d936ac2db8e897cc03ec8497bbb", 291 | "reference": "364fc90734230d936ac2db8e897cc03ec8497bbb", 292 | "shasum": "" 293 | }, 294 | "require": { 295 | "php": ">=8.1", 296 | "psr/cache": "^2.0|^3.0", 297 | "psr/log": "^1.1|^2|^3", 298 | "symfony/cache-contracts": "^1.1.7|^2|^3", 299 | "symfony/service-contracts": "^1.1|^2|^3", 300 | "symfony/var-exporter": "^5.4|^6.0" 301 | }, 302 | "conflict": { 303 | "doctrine/dbal": "<2.13.1", 304 | "symfony/dependency-injection": "<5.4", 305 | "symfony/http-kernel": "<5.4", 306 | "symfony/var-dumper": "<5.4" 307 | }, 308 | "provide": { 309 | "psr/cache-implementation": "2.0|3.0", 310 | "psr/simple-cache-implementation": "1.0|2.0|3.0", 311 | "symfony/cache-implementation": "1.1|2.0|3.0" 312 | }, 313 | "require-dev": { 314 | "cache/integration-tests": "dev-master", 315 | "doctrine/dbal": "^2.13.1|^3.0", 316 | "predis/predis": "^1.1", 317 | "psr/simple-cache": "^1.0|^2.0|^3.0", 318 | "symfony/config": "^5.4|^6.0", 319 | "symfony/dependency-injection": "^5.4|^6.0", 320 | "symfony/filesystem": "^5.4|^6.0", 321 | "symfony/http-kernel": "^5.4|^6.0", 322 | "symfony/messenger": "^5.4|^6.0", 323 | "symfony/var-dumper": "^5.4|^6.0" 324 | }, 325 | "type": "library", 326 | "autoload": { 327 | "psr-4": { 328 | "Symfony\\Component\\Cache\\": "" 329 | }, 330 | "classmap": [ 331 | "Traits/ValueWrapper.php" 332 | ], 333 | "exclude-from-classmap": [ 334 | "/Tests/" 335 | ] 336 | }, 337 | "notification-url": "https://packagist.org/downloads/", 338 | "license": [ 339 | "MIT" 340 | ], 341 | "authors": [ 342 | { 343 | "name": "Nicolas Grekas", 344 | "email": "p@tchwork.com" 345 | }, 346 | { 347 | "name": "Symfony Community", 348 | "homepage": "https://symfony.com/contributors" 349 | } 350 | ], 351 | "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", 352 | "homepage": "https://symfony.com", 353 | "keywords": [ 354 | "caching", 355 | "psr6" 356 | ], 357 | "support": { 358 | "source": "https://github.com/symfony/cache/tree/v6.1.1" 359 | }, 360 | "funding": [ 361 | { 362 | "url": "https://symfony.com/sponsor", 363 | "type": "custom" 364 | }, 365 | { 366 | "url": "https://github.com/fabpot", 367 | "type": "github" 368 | }, 369 | { 370 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 371 | "type": "tidelift" 372 | } 373 | ], 374 | "time": "2022-06-06T19:15:01+00:00" 375 | }, 376 | { 377 | "name": "symfony/cache-contracts", 378 | "version": "v3.1.0", 379 | "source": { 380 | "type": "git", 381 | "url": "https://github.com/symfony/cache-contracts.git", 382 | "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3" 383 | }, 384 | "dist": { 385 | "type": "zip", 386 | "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2eab7fa459af6d75c6463e63e633b667a9b761d3", 387 | "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3", 388 | "shasum": "" 389 | }, 390 | "require": { 391 | "php": ">=8.1", 392 | "psr/cache": "^3.0" 393 | }, 394 | "suggest": { 395 | "symfony/cache-implementation": "" 396 | }, 397 | "type": "library", 398 | "extra": { 399 | "branch-alias": { 400 | "dev-main": "3.1-dev" 401 | }, 402 | "thanks": { 403 | "name": "symfony/contracts", 404 | "url": "https://github.com/symfony/contracts" 405 | } 406 | }, 407 | "autoload": { 408 | "psr-4": { 409 | "Symfony\\Contracts\\Cache\\": "" 410 | } 411 | }, 412 | "notification-url": "https://packagist.org/downloads/", 413 | "license": [ 414 | "MIT" 415 | ], 416 | "authors": [ 417 | { 418 | "name": "Nicolas Grekas", 419 | "email": "p@tchwork.com" 420 | }, 421 | { 422 | "name": "Symfony Community", 423 | "homepage": "https://symfony.com/contributors" 424 | } 425 | ], 426 | "description": "Generic abstractions related to caching", 427 | "homepage": "https://symfony.com", 428 | "keywords": [ 429 | "abstractions", 430 | "contracts", 431 | "decoupling", 432 | "interfaces", 433 | "interoperability", 434 | "standards" 435 | ], 436 | "support": { 437 | "source": "https://github.com/symfony/cache-contracts/tree/v3.1.0" 438 | }, 439 | "funding": [ 440 | { 441 | "url": "https://symfony.com/sponsor", 442 | "type": "custom" 443 | }, 444 | { 445 | "url": "https://github.com/fabpot", 446 | "type": "github" 447 | }, 448 | { 449 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 450 | "type": "tidelift" 451 | } 452 | ], 453 | "time": "2022-02-25T11:15:52+00:00" 454 | }, 455 | { 456 | "name": "symfony/config", 457 | "version": "v6.1.0", 458 | "source": { 459 | "type": "git", 460 | "url": "https://github.com/symfony/config.git", 461 | "reference": "ed8d12417bcacd2d969750feb1fe1aab1c11e613" 462 | }, 463 | "dist": { 464 | "type": "zip", 465 | "url": "https://api.github.com/repos/symfony/config/zipball/ed8d12417bcacd2d969750feb1fe1aab1c11e613", 466 | "reference": "ed8d12417bcacd2d969750feb1fe1aab1c11e613", 467 | "shasum": "" 468 | }, 469 | "require": { 470 | "php": ">=8.1", 471 | "symfony/deprecation-contracts": "^2.1|^3", 472 | "symfony/filesystem": "^5.4|^6.0", 473 | "symfony/polyfill-ctype": "~1.8" 474 | }, 475 | "conflict": { 476 | "symfony/finder": "<5.4" 477 | }, 478 | "require-dev": { 479 | "symfony/event-dispatcher": "^5.4|^6.0", 480 | "symfony/finder": "^5.4|^6.0", 481 | "symfony/messenger": "^5.4|^6.0", 482 | "symfony/service-contracts": "^1.1|^2|^3", 483 | "symfony/yaml": "^5.4|^6.0" 484 | }, 485 | "suggest": { 486 | "symfony/yaml": "To use the yaml reference dumper" 487 | }, 488 | "type": "library", 489 | "autoload": { 490 | "psr-4": { 491 | "Symfony\\Component\\Config\\": "" 492 | }, 493 | "exclude-from-classmap": [ 494 | "/Tests/" 495 | ] 496 | }, 497 | "notification-url": "https://packagist.org/downloads/", 498 | "license": [ 499 | "MIT" 500 | ], 501 | "authors": [ 502 | { 503 | "name": "Fabien Potencier", 504 | "email": "fabien@symfony.com" 505 | }, 506 | { 507 | "name": "Symfony Community", 508 | "homepage": "https://symfony.com/contributors" 509 | } 510 | ], 511 | "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", 512 | "homepage": "https://symfony.com", 513 | "support": { 514 | "source": "https://github.com/symfony/config/tree/v6.1.0" 515 | }, 516 | "funding": [ 517 | { 518 | "url": "https://symfony.com/sponsor", 519 | "type": "custom" 520 | }, 521 | { 522 | "url": "https://github.com/fabpot", 523 | "type": "github" 524 | }, 525 | { 526 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 527 | "type": "tidelift" 528 | } 529 | ], 530 | "time": "2022-05-17T12:56:32+00:00" 531 | }, 532 | { 533 | "name": "symfony/console", 534 | "version": "v6.1.1", 535 | "source": { 536 | "type": "git", 537 | "url": "https://github.com/symfony/console.git", 538 | "reference": "6187424023fbffcd757789aeb517c9161b1eabee" 539 | }, 540 | "dist": { 541 | "type": "zip", 542 | "url": "https://api.github.com/repos/symfony/console/zipball/6187424023fbffcd757789aeb517c9161b1eabee", 543 | "reference": "6187424023fbffcd757789aeb517c9161b1eabee", 544 | "shasum": "" 545 | }, 546 | "require": { 547 | "php": ">=8.1", 548 | "symfony/deprecation-contracts": "^2.1|^3", 549 | "symfony/polyfill-mbstring": "~1.0", 550 | "symfony/service-contracts": "^1.1|^2|^3", 551 | "symfony/string": "^5.4|^6.0" 552 | }, 553 | "conflict": { 554 | "symfony/dependency-injection": "<5.4", 555 | "symfony/dotenv": "<5.4", 556 | "symfony/event-dispatcher": "<5.4", 557 | "symfony/lock": "<5.4", 558 | "symfony/process": "<5.4" 559 | }, 560 | "provide": { 561 | "psr/log-implementation": "1.0|2.0|3.0" 562 | }, 563 | "require-dev": { 564 | "psr/log": "^1|^2|^3", 565 | "symfony/config": "^5.4|^6.0", 566 | "symfony/dependency-injection": "^5.4|^6.0", 567 | "symfony/event-dispatcher": "^5.4|^6.0", 568 | "symfony/lock": "^5.4|^6.0", 569 | "symfony/process": "^5.4|^6.0", 570 | "symfony/var-dumper": "^5.4|^6.0" 571 | }, 572 | "suggest": { 573 | "psr/log": "For using the console logger", 574 | "symfony/event-dispatcher": "", 575 | "symfony/lock": "", 576 | "symfony/process": "" 577 | }, 578 | "type": "library", 579 | "autoload": { 580 | "psr-4": { 581 | "Symfony\\Component\\Console\\": "" 582 | }, 583 | "exclude-from-classmap": [ 584 | "/Tests/" 585 | ] 586 | }, 587 | "notification-url": "https://packagist.org/downloads/", 588 | "license": [ 589 | "MIT" 590 | ], 591 | "authors": [ 592 | { 593 | "name": "Fabien Potencier", 594 | "email": "fabien@symfony.com" 595 | }, 596 | { 597 | "name": "Symfony Community", 598 | "homepage": "https://symfony.com/contributors" 599 | } 600 | ], 601 | "description": "Eases the creation of beautiful and testable command line interfaces", 602 | "homepage": "https://symfony.com", 603 | "keywords": [ 604 | "cli", 605 | "command line", 606 | "console", 607 | "terminal" 608 | ], 609 | "support": { 610 | "source": "https://github.com/symfony/console/tree/v6.1.1" 611 | }, 612 | "funding": [ 613 | { 614 | "url": "https://symfony.com/sponsor", 615 | "type": "custom" 616 | }, 617 | { 618 | "url": "https://github.com/fabpot", 619 | "type": "github" 620 | }, 621 | { 622 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 623 | "type": "tidelift" 624 | } 625 | ], 626 | "time": "2022-06-08T14:02:09+00:00" 627 | }, 628 | { 629 | "name": "symfony/dependency-injection", 630 | "version": "v6.1.0", 631 | "source": { 632 | "type": "git", 633 | "url": "https://github.com/symfony/dependency-injection.git", 634 | "reference": "fc1fcd2b153f585934e80055bb3254913def2a6e" 635 | }, 636 | "dist": { 637 | "type": "zip", 638 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/fc1fcd2b153f585934e80055bb3254913def2a6e", 639 | "reference": "fc1fcd2b153f585934e80055bb3254913def2a6e", 640 | "shasum": "" 641 | }, 642 | "require": { 643 | "php": ">=8.1", 644 | "psr/container": "^1.1|^2.0", 645 | "symfony/deprecation-contracts": "^2.1|^3", 646 | "symfony/service-contracts": "^1.1.6|^2.0|^3.0" 647 | }, 648 | "conflict": { 649 | "ext-psr": "<1.1|>=2", 650 | "symfony/config": "<6.1", 651 | "symfony/finder": "<5.4", 652 | "symfony/proxy-manager-bridge": "<5.4", 653 | "symfony/yaml": "<5.4" 654 | }, 655 | "provide": { 656 | "psr/container-implementation": "1.1|2.0", 657 | "symfony/service-implementation": "1.1|2.0|3.0" 658 | }, 659 | "require-dev": { 660 | "symfony/config": "^6.1", 661 | "symfony/expression-language": "^5.4|^6.0", 662 | "symfony/yaml": "^5.4|^6.0" 663 | }, 664 | "suggest": { 665 | "symfony/config": "", 666 | "symfony/expression-language": "For using expressions in service container configuration", 667 | "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", 668 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", 669 | "symfony/yaml": "" 670 | }, 671 | "type": "library", 672 | "autoload": { 673 | "psr-4": { 674 | "Symfony\\Component\\DependencyInjection\\": "" 675 | }, 676 | "exclude-from-classmap": [ 677 | "/Tests/" 678 | ] 679 | }, 680 | "notification-url": "https://packagist.org/downloads/", 681 | "license": [ 682 | "MIT" 683 | ], 684 | "authors": [ 685 | { 686 | "name": "Fabien Potencier", 687 | "email": "fabien@symfony.com" 688 | }, 689 | { 690 | "name": "Symfony Community", 691 | "homepage": "https://symfony.com/contributors" 692 | } 693 | ], 694 | "description": "Allows you to standardize and centralize the way objects are constructed in your application", 695 | "homepage": "https://symfony.com", 696 | "support": { 697 | "source": "https://github.com/symfony/dependency-injection/tree/v6.1.0" 698 | }, 699 | "funding": [ 700 | { 701 | "url": "https://symfony.com/sponsor", 702 | "type": "custom" 703 | }, 704 | { 705 | "url": "https://github.com/fabpot", 706 | "type": "github" 707 | }, 708 | { 709 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 710 | "type": "tidelift" 711 | } 712 | ], 713 | "time": "2022-05-27T06:40:20+00:00" 714 | }, 715 | { 716 | "name": "symfony/deprecation-contracts", 717 | "version": "v3.1.0", 718 | "source": { 719 | "type": "git", 720 | "url": "https://github.com/symfony/deprecation-contracts.git", 721 | "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" 722 | }, 723 | "dist": { 724 | "type": "zip", 725 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", 726 | "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", 727 | "shasum": "" 728 | }, 729 | "require": { 730 | "php": ">=8.1" 731 | }, 732 | "type": "library", 733 | "extra": { 734 | "branch-alias": { 735 | "dev-main": "3.1-dev" 736 | }, 737 | "thanks": { 738 | "name": "symfony/contracts", 739 | "url": "https://github.com/symfony/contracts" 740 | } 741 | }, 742 | "autoload": { 743 | "files": [ 744 | "function.php" 745 | ] 746 | }, 747 | "notification-url": "https://packagist.org/downloads/", 748 | "license": [ 749 | "MIT" 750 | ], 751 | "authors": [ 752 | { 753 | "name": "Nicolas Grekas", 754 | "email": "p@tchwork.com" 755 | }, 756 | { 757 | "name": "Symfony Community", 758 | "homepage": "https://symfony.com/contributors" 759 | } 760 | ], 761 | "description": "A generic function and convention to trigger deprecation notices", 762 | "homepage": "https://symfony.com", 763 | "support": { 764 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.0" 765 | }, 766 | "funding": [ 767 | { 768 | "url": "https://symfony.com/sponsor", 769 | "type": "custom" 770 | }, 771 | { 772 | "url": "https://github.com/fabpot", 773 | "type": "github" 774 | }, 775 | { 776 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 777 | "type": "tidelift" 778 | } 779 | ], 780 | "time": "2022-02-25T11:15:52+00:00" 781 | }, 782 | { 783 | "name": "symfony/dotenv", 784 | "version": "v6.1.0", 785 | "source": { 786 | "type": "git", 787 | "url": "https://github.com/symfony/dotenv.git", 788 | "reference": "568c11bcedf419e7e61f663912c3547b54de51df" 789 | }, 790 | "dist": { 791 | "type": "zip", 792 | "url": "https://api.github.com/repos/symfony/dotenv/zipball/568c11bcedf419e7e61f663912c3547b54de51df", 793 | "reference": "568c11bcedf419e7e61f663912c3547b54de51df", 794 | "shasum": "" 795 | }, 796 | "require": { 797 | "php": ">=8.1" 798 | }, 799 | "conflict": { 800 | "symfony/console": "<5.4" 801 | }, 802 | "require-dev": { 803 | "symfony/console": "^5.4|^6.0", 804 | "symfony/process": "^5.4|^6.0" 805 | }, 806 | "type": "library", 807 | "autoload": { 808 | "psr-4": { 809 | "Symfony\\Component\\Dotenv\\": "" 810 | }, 811 | "exclude-from-classmap": [ 812 | "/Tests/" 813 | ] 814 | }, 815 | "notification-url": "https://packagist.org/downloads/", 816 | "license": [ 817 | "MIT" 818 | ], 819 | "authors": [ 820 | { 821 | "name": "Fabien Potencier", 822 | "email": "fabien@symfony.com" 823 | }, 824 | { 825 | "name": "Symfony Community", 826 | "homepage": "https://symfony.com/contributors" 827 | } 828 | ], 829 | "description": "Registers environment variables from a .env file", 830 | "homepage": "https://symfony.com", 831 | "keywords": [ 832 | "dotenv", 833 | "env", 834 | "environment" 835 | ], 836 | "support": { 837 | "source": "https://github.com/symfony/dotenv/tree/v6.1.0" 838 | }, 839 | "funding": [ 840 | { 841 | "url": "https://symfony.com/sponsor", 842 | "type": "custom" 843 | }, 844 | { 845 | "url": "https://github.com/fabpot", 846 | "type": "github" 847 | }, 848 | { 849 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 850 | "type": "tidelift" 851 | } 852 | ], 853 | "time": "2022-04-01T07:15:35+00:00" 854 | }, 855 | { 856 | "name": "symfony/error-handler", 857 | "version": "v6.1.0", 858 | "source": { 859 | "type": "git", 860 | "url": "https://github.com/symfony/error-handler.git", 861 | "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0" 862 | }, 863 | "dist": { 864 | "type": "zip", 865 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/d02c662651e5de760bb7d5e94437113309e8f8a0", 866 | "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0", 867 | "shasum": "" 868 | }, 869 | "require": { 870 | "php": ">=8.1", 871 | "psr/log": "^1|^2|^3", 872 | "symfony/var-dumper": "^5.4|^6.0" 873 | }, 874 | "require-dev": { 875 | "symfony/deprecation-contracts": "^2.1|^3", 876 | "symfony/http-kernel": "^5.4|^6.0", 877 | "symfony/serializer": "^5.4|^6.0" 878 | }, 879 | "bin": [ 880 | "Resources/bin/patch-type-declarations" 881 | ], 882 | "type": "library", 883 | "autoload": { 884 | "psr-4": { 885 | "Symfony\\Component\\ErrorHandler\\": "" 886 | }, 887 | "exclude-from-classmap": [ 888 | "/Tests/" 889 | ] 890 | }, 891 | "notification-url": "https://packagist.org/downloads/", 892 | "license": [ 893 | "MIT" 894 | ], 895 | "authors": [ 896 | { 897 | "name": "Fabien Potencier", 898 | "email": "fabien@symfony.com" 899 | }, 900 | { 901 | "name": "Symfony Community", 902 | "homepage": "https://symfony.com/contributors" 903 | } 904 | ], 905 | "description": "Provides tools to manage errors and ease debugging PHP code", 906 | "homepage": "https://symfony.com", 907 | "support": { 908 | "source": "https://github.com/symfony/error-handler/tree/v6.1.0" 909 | }, 910 | "funding": [ 911 | { 912 | "url": "https://symfony.com/sponsor", 913 | "type": "custom" 914 | }, 915 | { 916 | "url": "https://github.com/fabpot", 917 | "type": "github" 918 | }, 919 | { 920 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 921 | "type": "tidelift" 922 | } 923 | ], 924 | "time": "2022-05-23T10:32:57+00:00" 925 | }, 926 | { 927 | "name": "symfony/event-dispatcher", 928 | "version": "v6.1.0", 929 | "source": { 930 | "type": "git", 931 | "url": "https://github.com/symfony/event-dispatcher.git", 932 | "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347" 933 | }, 934 | "dist": { 935 | "type": "zip", 936 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347", 937 | "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347", 938 | "shasum": "" 939 | }, 940 | "require": { 941 | "php": ">=8.1", 942 | "symfony/event-dispatcher-contracts": "^2|^3" 943 | }, 944 | "conflict": { 945 | "symfony/dependency-injection": "<5.4" 946 | }, 947 | "provide": { 948 | "psr/event-dispatcher-implementation": "1.0", 949 | "symfony/event-dispatcher-implementation": "2.0|3.0" 950 | }, 951 | "require-dev": { 952 | "psr/log": "^1|^2|^3", 953 | "symfony/config": "^5.4|^6.0", 954 | "symfony/dependency-injection": "^5.4|^6.0", 955 | "symfony/error-handler": "^5.4|^6.0", 956 | "symfony/expression-language": "^5.4|^6.0", 957 | "symfony/http-foundation": "^5.4|^6.0", 958 | "symfony/service-contracts": "^1.1|^2|^3", 959 | "symfony/stopwatch": "^5.4|^6.0" 960 | }, 961 | "suggest": { 962 | "symfony/dependency-injection": "", 963 | "symfony/http-kernel": "" 964 | }, 965 | "type": "library", 966 | "autoload": { 967 | "psr-4": { 968 | "Symfony\\Component\\EventDispatcher\\": "" 969 | }, 970 | "exclude-from-classmap": [ 971 | "/Tests/" 972 | ] 973 | }, 974 | "notification-url": "https://packagist.org/downloads/", 975 | "license": [ 976 | "MIT" 977 | ], 978 | "authors": [ 979 | { 980 | "name": "Fabien Potencier", 981 | "email": "fabien@symfony.com" 982 | }, 983 | { 984 | "name": "Symfony Community", 985 | "homepage": "https://symfony.com/contributors" 986 | } 987 | ], 988 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 989 | "homepage": "https://symfony.com", 990 | "support": { 991 | "source": "https://github.com/symfony/event-dispatcher/tree/v6.1.0" 992 | }, 993 | "funding": [ 994 | { 995 | "url": "https://symfony.com/sponsor", 996 | "type": "custom" 997 | }, 998 | { 999 | "url": "https://github.com/fabpot", 1000 | "type": "github" 1001 | }, 1002 | { 1003 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1004 | "type": "tidelift" 1005 | } 1006 | ], 1007 | "time": "2022-05-05T16:51:07+00:00" 1008 | }, 1009 | { 1010 | "name": "symfony/event-dispatcher-contracts", 1011 | "version": "v3.1.0", 1012 | "source": { 1013 | "type": "git", 1014 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 1015 | "reference": "02ff5eea2f453731cfbc6bc215e456b781480448" 1016 | }, 1017 | "dist": { 1018 | "type": "zip", 1019 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448", 1020 | "reference": "02ff5eea2f453731cfbc6bc215e456b781480448", 1021 | "shasum": "" 1022 | }, 1023 | "require": { 1024 | "php": ">=8.1", 1025 | "psr/event-dispatcher": "^1" 1026 | }, 1027 | "suggest": { 1028 | "symfony/event-dispatcher-implementation": "" 1029 | }, 1030 | "type": "library", 1031 | "extra": { 1032 | "branch-alias": { 1033 | "dev-main": "3.1-dev" 1034 | }, 1035 | "thanks": { 1036 | "name": "symfony/contracts", 1037 | "url": "https://github.com/symfony/contracts" 1038 | } 1039 | }, 1040 | "autoload": { 1041 | "psr-4": { 1042 | "Symfony\\Contracts\\EventDispatcher\\": "" 1043 | } 1044 | }, 1045 | "notification-url": "https://packagist.org/downloads/", 1046 | "license": [ 1047 | "MIT" 1048 | ], 1049 | "authors": [ 1050 | { 1051 | "name": "Nicolas Grekas", 1052 | "email": "p@tchwork.com" 1053 | }, 1054 | { 1055 | "name": "Symfony Community", 1056 | "homepage": "https://symfony.com/contributors" 1057 | } 1058 | ], 1059 | "description": "Generic abstractions related to dispatching event", 1060 | "homepage": "https://symfony.com", 1061 | "keywords": [ 1062 | "abstractions", 1063 | "contracts", 1064 | "decoupling", 1065 | "interfaces", 1066 | "interoperability", 1067 | "standards" 1068 | ], 1069 | "support": { 1070 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.0" 1071 | }, 1072 | "funding": [ 1073 | { 1074 | "url": "https://symfony.com/sponsor", 1075 | "type": "custom" 1076 | }, 1077 | { 1078 | "url": "https://github.com/fabpot", 1079 | "type": "github" 1080 | }, 1081 | { 1082 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1083 | "type": "tidelift" 1084 | } 1085 | ], 1086 | "time": "2022-02-25T11:15:52+00:00" 1087 | }, 1088 | { 1089 | "name": "symfony/filesystem", 1090 | "version": "v6.1.0", 1091 | "source": { 1092 | "type": "git", 1093 | "url": "https://github.com/symfony/filesystem.git", 1094 | "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d" 1095 | }, 1096 | "dist": { 1097 | "type": "zip", 1098 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/3132d2f43ca799c2aa099f9738d98228c56baa5d", 1099 | "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d", 1100 | "shasum": "" 1101 | }, 1102 | "require": { 1103 | "php": ">=8.1", 1104 | "symfony/polyfill-ctype": "~1.8", 1105 | "symfony/polyfill-mbstring": "~1.8" 1106 | }, 1107 | "type": "library", 1108 | "autoload": { 1109 | "psr-4": { 1110 | "Symfony\\Component\\Filesystem\\": "" 1111 | }, 1112 | "exclude-from-classmap": [ 1113 | "/Tests/" 1114 | ] 1115 | }, 1116 | "notification-url": "https://packagist.org/downloads/", 1117 | "license": [ 1118 | "MIT" 1119 | ], 1120 | "authors": [ 1121 | { 1122 | "name": "Fabien Potencier", 1123 | "email": "fabien@symfony.com" 1124 | }, 1125 | { 1126 | "name": "Symfony Community", 1127 | "homepage": "https://symfony.com/contributors" 1128 | } 1129 | ], 1130 | "description": "Provides basic utilities for the filesystem", 1131 | "homepage": "https://symfony.com", 1132 | "support": { 1133 | "source": "https://github.com/symfony/filesystem/tree/v6.1.0" 1134 | }, 1135 | "funding": [ 1136 | { 1137 | "url": "https://symfony.com/sponsor", 1138 | "type": "custom" 1139 | }, 1140 | { 1141 | "url": "https://github.com/fabpot", 1142 | "type": "github" 1143 | }, 1144 | { 1145 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1146 | "type": "tidelift" 1147 | } 1148 | ], 1149 | "time": "2022-05-21T13:34:40+00:00" 1150 | }, 1151 | { 1152 | "name": "symfony/finder", 1153 | "version": "v6.1.0", 1154 | "source": { 1155 | "type": "git", 1156 | "url": "https://github.com/symfony/finder.git", 1157 | "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f" 1158 | }, 1159 | "dist": { 1160 | "type": "zip", 1161 | "url": "https://api.github.com/repos/symfony/finder/zipball/45b8beb69d6eb3b05a65689ebfd4222326773f8f", 1162 | "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f", 1163 | "shasum": "" 1164 | }, 1165 | "require": { 1166 | "php": ">=8.1" 1167 | }, 1168 | "require-dev": { 1169 | "symfony/filesystem": "^6.0" 1170 | }, 1171 | "type": "library", 1172 | "autoload": { 1173 | "psr-4": { 1174 | "Symfony\\Component\\Finder\\": "" 1175 | }, 1176 | "exclude-from-classmap": [ 1177 | "/Tests/" 1178 | ] 1179 | }, 1180 | "notification-url": "https://packagist.org/downloads/", 1181 | "license": [ 1182 | "MIT" 1183 | ], 1184 | "authors": [ 1185 | { 1186 | "name": "Fabien Potencier", 1187 | "email": "fabien@symfony.com" 1188 | }, 1189 | { 1190 | "name": "Symfony Community", 1191 | "homepage": "https://symfony.com/contributors" 1192 | } 1193 | ], 1194 | "description": "Finds files and directories via an intuitive fluent interface", 1195 | "homepage": "https://symfony.com", 1196 | "support": { 1197 | "source": "https://github.com/symfony/finder/tree/v6.1.0" 1198 | }, 1199 | "funding": [ 1200 | { 1201 | "url": "https://symfony.com/sponsor", 1202 | "type": "custom" 1203 | }, 1204 | { 1205 | "url": "https://github.com/fabpot", 1206 | "type": "github" 1207 | }, 1208 | { 1209 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1210 | "type": "tidelift" 1211 | } 1212 | ], 1213 | "time": "2022-04-15T08:08:08+00:00" 1214 | }, 1215 | { 1216 | "name": "symfony/flex", 1217 | "version": "v2.2.2", 1218 | "source": { 1219 | "type": "git", 1220 | "url": "https://github.com/symfony/flex.git", 1221 | "reference": "78510b1be591433513c8087deec24e9fd90d110d" 1222 | }, 1223 | "dist": { 1224 | "type": "zip", 1225 | "url": "https://api.github.com/repos/symfony/flex/zipball/78510b1be591433513c8087deec24e9fd90d110d", 1226 | "reference": "78510b1be591433513c8087deec24e9fd90d110d", 1227 | "shasum": "" 1228 | }, 1229 | "require": { 1230 | "composer-plugin-api": "^2.1", 1231 | "php": ">=8.0" 1232 | }, 1233 | "require-dev": { 1234 | "composer/composer": "^2.1", 1235 | "symfony/dotenv": "^5.4|^6.0", 1236 | "symfony/filesystem": "^5.4|^6.0", 1237 | "symfony/phpunit-bridge": "^5.4|^6.0", 1238 | "symfony/process": "^5.4|^6.0" 1239 | }, 1240 | "type": "composer-plugin", 1241 | "extra": { 1242 | "class": "Symfony\\Flex\\Flex" 1243 | }, 1244 | "autoload": { 1245 | "psr-4": { 1246 | "Symfony\\Flex\\": "src" 1247 | } 1248 | }, 1249 | "notification-url": "https://packagist.org/downloads/", 1250 | "license": [ 1251 | "MIT" 1252 | ], 1253 | "authors": [ 1254 | { 1255 | "name": "Fabien Potencier", 1256 | "email": "fabien.potencier@gmail.com" 1257 | } 1258 | ], 1259 | "description": "Composer plugin for Symfony", 1260 | "support": { 1261 | "issues": "https://github.com/symfony/flex/issues", 1262 | "source": "https://github.com/symfony/flex/tree/v2.2.2" 1263 | }, 1264 | "funding": [ 1265 | { 1266 | "url": "https://symfony.com/sponsor", 1267 | "type": "custom" 1268 | }, 1269 | { 1270 | "url": "https://github.com/fabpot", 1271 | "type": "github" 1272 | }, 1273 | { 1274 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1275 | "type": "tidelift" 1276 | } 1277 | ], 1278 | "time": "2022-06-15T06:51:57+00:00" 1279 | }, 1280 | { 1281 | "name": "symfony/framework-bundle", 1282 | "version": "v6.1.1", 1283 | "source": { 1284 | "type": "git", 1285 | "url": "https://github.com/symfony/framework-bundle.git", 1286 | "reference": "260d97823252318eb3b525dd8c0bee2cc5dbfd7f" 1287 | }, 1288 | "dist": { 1289 | "type": "zip", 1290 | "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/260d97823252318eb3b525dd8c0bee2cc5dbfd7f", 1291 | "reference": "260d97823252318eb3b525dd8c0bee2cc5dbfd7f", 1292 | "shasum": "" 1293 | }, 1294 | "require": { 1295 | "composer-runtime-api": ">=2.1", 1296 | "ext-xml": "*", 1297 | "php": ">=8.1", 1298 | "symfony/cache": "^5.4|^6.0", 1299 | "symfony/config": "^6.1", 1300 | "symfony/dependency-injection": "^6.1", 1301 | "symfony/deprecation-contracts": "^2.1|^3", 1302 | "symfony/error-handler": "^6.1", 1303 | "symfony/event-dispatcher": "^5.4|^6.0", 1304 | "symfony/filesystem": "^5.4|^6.0", 1305 | "symfony/finder": "^5.4|^6.0", 1306 | "symfony/http-foundation": "^5.4|^6.0", 1307 | "symfony/http-kernel": "^6.1", 1308 | "symfony/polyfill-mbstring": "~1.0", 1309 | "symfony/routing": "^5.4|^6.0" 1310 | }, 1311 | "conflict": { 1312 | "doctrine/annotations": "<1.13.1", 1313 | "doctrine/persistence": "<1.3", 1314 | "phpdocumentor/reflection-docblock": "<3.2.2", 1315 | "phpdocumentor/type-resolver": "<1.4.0", 1316 | "phpunit/phpunit": "<5.4.3", 1317 | "symfony/asset": "<5.4", 1318 | "symfony/console": "<5.4", 1319 | "symfony/dom-crawler": "<5.4", 1320 | "symfony/dotenv": "<5.4", 1321 | "symfony/form": "<5.4", 1322 | "symfony/http-client": "<5.4", 1323 | "symfony/lock": "<5.4", 1324 | "symfony/mailer": "<5.4", 1325 | "symfony/messenger": "<5.4", 1326 | "symfony/mime": "<5.4", 1327 | "symfony/property-access": "<5.4", 1328 | "symfony/property-info": "<5.4", 1329 | "symfony/security-core": "<5.4", 1330 | "symfony/security-csrf": "<5.4", 1331 | "symfony/serializer": "<6.1", 1332 | "symfony/stopwatch": "<5.4", 1333 | "symfony/translation": "<5.4", 1334 | "symfony/twig-bridge": "<5.4", 1335 | "symfony/twig-bundle": "<5.4", 1336 | "symfony/validator": "<5.4", 1337 | "symfony/web-profiler-bundle": "<5.4", 1338 | "symfony/workflow": "<5.4" 1339 | }, 1340 | "require-dev": { 1341 | "doctrine/annotations": "^1.13.1", 1342 | "doctrine/persistence": "^1.3|^2|^3", 1343 | "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", 1344 | "symfony/asset": "^5.4|^6.0", 1345 | "symfony/browser-kit": "^5.4|^6.0", 1346 | "symfony/console": "^5.4.9|^6.0.9", 1347 | "symfony/css-selector": "^5.4|^6.0", 1348 | "symfony/dom-crawler": "^5.4|^6.0", 1349 | "symfony/dotenv": "^5.4|^6.0", 1350 | "symfony/expression-language": "^5.4|^6.0", 1351 | "symfony/form": "^5.4|^6.0", 1352 | "symfony/html-sanitizer": "^6.1", 1353 | "symfony/http-client": "^5.4|^6.0", 1354 | "symfony/lock": "^5.4|^6.0", 1355 | "symfony/mailer": "^5.4|^6.0", 1356 | "symfony/messenger": "^6.1", 1357 | "symfony/mime": "^5.4|^6.0", 1358 | "symfony/notifier": "^5.4|^6.0", 1359 | "symfony/polyfill-intl-icu": "~1.0", 1360 | "symfony/process": "^5.4|^6.0", 1361 | "symfony/property-info": "^5.4|^6.0", 1362 | "symfony/rate-limiter": "^5.4|^6.0", 1363 | "symfony/security-bundle": "^5.4|^6.0", 1364 | "symfony/semaphore": "^5.4|^6.0", 1365 | "symfony/serializer": "^6.1", 1366 | "symfony/stopwatch": "^5.4|^6.0", 1367 | "symfony/string": "^5.4|^6.0", 1368 | "symfony/translation": "^5.4|^6.0", 1369 | "symfony/twig-bundle": "^5.4|^6.0", 1370 | "symfony/uid": "^5.4|^6.0", 1371 | "symfony/validator": "^5.4|^6.0", 1372 | "symfony/web-link": "^5.4|^6.0", 1373 | "symfony/workflow": "^5.4|^6.0", 1374 | "symfony/yaml": "^5.4|^6.0", 1375 | "twig/twig": "^2.10|^3.0" 1376 | }, 1377 | "suggest": { 1378 | "ext-apcu": "For best performance of the system caches", 1379 | "symfony/console": "For using the console commands", 1380 | "symfony/form": "For using forms", 1381 | "symfony/property-info": "For using the property_info service", 1382 | "symfony/serializer": "For using the serializer service", 1383 | "symfony/validator": "For using validation", 1384 | "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", 1385 | "symfony/yaml": "For using the debug:config and lint:yaml commands" 1386 | }, 1387 | "type": "symfony-bundle", 1388 | "autoload": { 1389 | "psr-4": { 1390 | "Symfony\\Bundle\\FrameworkBundle\\": "" 1391 | }, 1392 | "exclude-from-classmap": [ 1393 | "/Tests/" 1394 | ] 1395 | }, 1396 | "notification-url": "https://packagist.org/downloads/", 1397 | "license": [ 1398 | "MIT" 1399 | ], 1400 | "authors": [ 1401 | { 1402 | "name": "Fabien Potencier", 1403 | "email": "fabien@symfony.com" 1404 | }, 1405 | { 1406 | "name": "Symfony Community", 1407 | "homepage": "https://symfony.com/contributors" 1408 | } 1409 | ], 1410 | "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", 1411 | "homepage": "https://symfony.com", 1412 | "support": { 1413 | "source": "https://github.com/symfony/framework-bundle/tree/v6.1.1" 1414 | }, 1415 | "funding": [ 1416 | { 1417 | "url": "https://symfony.com/sponsor", 1418 | "type": "custom" 1419 | }, 1420 | { 1421 | "url": "https://github.com/fabpot", 1422 | "type": "github" 1423 | }, 1424 | { 1425 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1426 | "type": "tidelift" 1427 | } 1428 | ], 1429 | "time": "2022-06-09T10:53:06+00:00" 1430 | }, 1431 | { 1432 | "name": "symfony/http-foundation", 1433 | "version": "v6.1.1", 1434 | "source": { 1435 | "type": "git", 1436 | "url": "https://github.com/symfony/http-foundation.git", 1437 | "reference": "a58dc88d56e04e57993d96c1407a17407610e1df" 1438 | }, 1439 | "dist": { 1440 | "type": "zip", 1441 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a58dc88d56e04e57993d96c1407a17407610e1df", 1442 | "reference": "a58dc88d56e04e57993d96c1407a17407610e1df", 1443 | "shasum": "" 1444 | }, 1445 | "require": { 1446 | "php": ">=8.1", 1447 | "symfony/deprecation-contracts": "^2.1|^3", 1448 | "symfony/polyfill-mbstring": "~1.1" 1449 | }, 1450 | "require-dev": { 1451 | "predis/predis": "~1.0", 1452 | "symfony/cache": "^5.4|^6.0", 1453 | "symfony/expression-language": "^5.4|^6.0", 1454 | "symfony/mime": "^5.4|^6.0" 1455 | }, 1456 | "suggest": { 1457 | "symfony/mime": "To use the file extension guesser" 1458 | }, 1459 | "type": "library", 1460 | "autoload": { 1461 | "psr-4": { 1462 | "Symfony\\Component\\HttpFoundation\\": "" 1463 | }, 1464 | "exclude-from-classmap": [ 1465 | "/Tests/" 1466 | ] 1467 | }, 1468 | "notification-url": "https://packagist.org/downloads/", 1469 | "license": [ 1470 | "MIT" 1471 | ], 1472 | "authors": [ 1473 | { 1474 | "name": "Fabien Potencier", 1475 | "email": "fabien@symfony.com" 1476 | }, 1477 | { 1478 | "name": "Symfony Community", 1479 | "homepage": "https://symfony.com/contributors" 1480 | } 1481 | ], 1482 | "description": "Defines an object-oriented layer for the HTTP specification", 1483 | "homepage": "https://symfony.com", 1484 | "support": { 1485 | "source": "https://github.com/symfony/http-foundation/tree/v6.1.1" 1486 | }, 1487 | "funding": [ 1488 | { 1489 | "url": "https://symfony.com/sponsor", 1490 | "type": "custom" 1491 | }, 1492 | { 1493 | "url": "https://github.com/fabpot", 1494 | "type": "github" 1495 | }, 1496 | { 1497 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1498 | "type": "tidelift" 1499 | } 1500 | ], 1501 | "time": "2022-05-31T14:28:03+00:00" 1502 | }, 1503 | { 1504 | "name": "symfony/http-kernel", 1505 | "version": "v6.1.1", 1506 | "source": { 1507 | "type": "git", 1508 | "url": "https://github.com/symfony/http-kernel.git", 1509 | "reference": "86c4d6f6c5b6cd012df41e3b950c924b3ffdc019" 1510 | }, 1511 | "dist": { 1512 | "type": "zip", 1513 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/86c4d6f6c5b6cd012df41e3b950c924b3ffdc019", 1514 | "reference": "86c4d6f6c5b6cd012df41e3b950c924b3ffdc019", 1515 | "shasum": "" 1516 | }, 1517 | "require": { 1518 | "php": ">=8.1", 1519 | "psr/log": "^1|^2|^3", 1520 | "symfony/error-handler": "^6.1", 1521 | "symfony/event-dispatcher": "^5.4|^6.0", 1522 | "symfony/http-foundation": "^5.4|^6.0", 1523 | "symfony/polyfill-ctype": "^1.8" 1524 | }, 1525 | "conflict": { 1526 | "symfony/browser-kit": "<5.4", 1527 | "symfony/cache": "<5.4", 1528 | "symfony/config": "<6.1", 1529 | "symfony/console": "<5.4", 1530 | "symfony/dependency-injection": "<6.1", 1531 | "symfony/doctrine-bridge": "<5.4", 1532 | "symfony/form": "<5.4", 1533 | "symfony/http-client": "<5.4", 1534 | "symfony/mailer": "<5.4", 1535 | "symfony/messenger": "<5.4", 1536 | "symfony/translation": "<5.4", 1537 | "symfony/twig-bridge": "<5.4", 1538 | "symfony/validator": "<5.4", 1539 | "twig/twig": "<2.13" 1540 | }, 1541 | "provide": { 1542 | "psr/log-implementation": "1.0|2.0|3.0" 1543 | }, 1544 | "require-dev": { 1545 | "psr/cache": "^1.0|^2.0|^3.0", 1546 | "symfony/browser-kit": "^5.4|^6.0", 1547 | "symfony/config": "^6.1", 1548 | "symfony/console": "^5.4|^6.0", 1549 | "symfony/css-selector": "^5.4|^6.0", 1550 | "symfony/dependency-injection": "^6.1", 1551 | "symfony/dom-crawler": "^5.4|^6.0", 1552 | "symfony/expression-language": "^5.4|^6.0", 1553 | "symfony/finder": "^5.4|^6.0", 1554 | "symfony/http-client-contracts": "^1.1|^2|^3", 1555 | "symfony/process": "^5.4|^6.0", 1556 | "symfony/routing": "^5.4|^6.0", 1557 | "symfony/stopwatch": "^5.4|^6.0", 1558 | "symfony/translation": "^5.4|^6.0", 1559 | "symfony/translation-contracts": "^1.1|^2|^3", 1560 | "symfony/uid": "^5.4|^6.0", 1561 | "twig/twig": "^2.13|^3.0.4" 1562 | }, 1563 | "suggest": { 1564 | "symfony/browser-kit": "", 1565 | "symfony/config": "", 1566 | "symfony/console": "", 1567 | "symfony/dependency-injection": "" 1568 | }, 1569 | "type": "library", 1570 | "autoload": { 1571 | "psr-4": { 1572 | "Symfony\\Component\\HttpKernel\\": "" 1573 | }, 1574 | "exclude-from-classmap": [ 1575 | "/Tests/" 1576 | ] 1577 | }, 1578 | "notification-url": "https://packagist.org/downloads/", 1579 | "license": [ 1580 | "MIT" 1581 | ], 1582 | "authors": [ 1583 | { 1584 | "name": "Fabien Potencier", 1585 | "email": "fabien@symfony.com" 1586 | }, 1587 | { 1588 | "name": "Symfony Community", 1589 | "homepage": "https://symfony.com/contributors" 1590 | } 1591 | ], 1592 | "description": "Provides a structured process for converting a Request into a Response", 1593 | "homepage": "https://symfony.com", 1594 | "support": { 1595 | "source": "https://github.com/symfony/http-kernel/tree/v6.1.1" 1596 | }, 1597 | "funding": [ 1598 | { 1599 | "url": "https://symfony.com/sponsor", 1600 | "type": "custom" 1601 | }, 1602 | { 1603 | "url": "https://github.com/fabpot", 1604 | "type": "github" 1605 | }, 1606 | { 1607 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1608 | "type": "tidelift" 1609 | } 1610 | ], 1611 | "time": "2022-06-09T17:31:33+00:00" 1612 | }, 1613 | { 1614 | "name": "symfony/messenger", 1615 | "version": "v6.1.0", 1616 | "source": { 1617 | "type": "git", 1618 | "url": "https://github.com/symfony/messenger.git", 1619 | "reference": "e4e204ce4f2e90b54320c9043a0898d925dcd118" 1620 | }, 1621 | "dist": { 1622 | "type": "zip", 1623 | "url": "https://api.github.com/repos/symfony/messenger/zipball/e4e204ce4f2e90b54320c9043a0898d925dcd118", 1624 | "reference": "e4e204ce4f2e90b54320c9043a0898d925dcd118", 1625 | "shasum": "" 1626 | }, 1627 | "require": { 1628 | "php": ">=8.1", 1629 | "psr/log": "^1|^2|^3" 1630 | }, 1631 | "conflict": { 1632 | "symfony/event-dispatcher": "<5.4", 1633 | "symfony/event-dispatcher-contracts": "<2", 1634 | "symfony/framework-bundle": "<5.4", 1635 | "symfony/http-kernel": "<5.4", 1636 | "symfony/serializer": "<5.4" 1637 | }, 1638 | "require-dev": { 1639 | "psr/cache": "^1.0|^2.0|^3.0", 1640 | "symfony/console": "^5.4|^6.0", 1641 | "symfony/dependency-injection": "^5.4|^6.0", 1642 | "symfony/event-dispatcher": "^5.4|^6.0", 1643 | "symfony/http-kernel": "^5.4|^6.0", 1644 | "symfony/process": "^5.4|^6.0", 1645 | "symfony/property-access": "^5.4|^6.0", 1646 | "symfony/routing": "^5.4|^6.0", 1647 | "symfony/serializer": "^5.4|^6.0", 1648 | "symfony/service-contracts": "^1.1|^2|^3", 1649 | "symfony/stopwatch": "^5.4|^6.0", 1650 | "symfony/validator": "^5.4|^6.0" 1651 | }, 1652 | "suggest": { 1653 | "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." 1654 | }, 1655 | "type": "library", 1656 | "autoload": { 1657 | "psr-4": { 1658 | "Symfony\\Component\\Messenger\\": "" 1659 | }, 1660 | "exclude-from-classmap": [ 1661 | "/Tests/" 1662 | ] 1663 | }, 1664 | "notification-url": "https://packagist.org/downloads/", 1665 | "license": [ 1666 | "MIT" 1667 | ], 1668 | "authors": [ 1669 | { 1670 | "name": "Samuel Roze", 1671 | "email": "samuel.roze@gmail.com" 1672 | }, 1673 | { 1674 | "name": "Symfony Community", 1675 | "homepage": "https://symfony.com/contributors" 1676 | } 1677 | ], 1678 | "description": "Helps applications send and receive messages to/from other applications or via message queues", 1679 | "homepage": "https://symfony.com", 1680 | "support": { 1681 | "source": "https://github.com/symfony/messenger/tree/v6.1.0" 1682 | }, 1683 | "funding": [ 1684 | { 1685 | "url": "https://symfony.com/sponsor", 1686 | "type": "custom" 1687 | }, 1688 | { 1689 | "url": "https://github.com/fabpot", 1690 | "type": "github" 1691 | }, 1692 | { 1693 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1694 | "type": "tidelift" 1695 | } 1696 | ], 1697 | "time": "2022-05-11T12:12:29+00:00" 1698 | }, 1699 | { 1700 | "name": "symfony/polyfill-intl-grapheme", 1701 | "version": "v1.26.0", 1702 | "source": { 1703 | "type": "git", 1704 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 1705 | "reference": "433d05519ce6990bf3530fba6957499d327395c2" 1706 | }, 1707 | "dist": { 1708 | "type": "zip", 1709 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", 1710 | "reference": "433d05519ce6990bf3530fba6957499d327395c2", 1711 | "shasum": "" 1712 | }, 1713 | "require": { 1714 | "php": ">=7.1" 1715 | }, 1716 | "suggest": { 1717 | "ext-intl": "For best performance" 1718 | }, 1719 | "type": "library", 1720 | "extra": { 1721 | "branch-alias": { 1722 | "dev-main": "1.26-dev" 1723 | }, 1724 | "thanks": { 1725 | "name": "symfony/polyfill", 1726 | "url": "https://github.com/symfony/polyfill" 1727 | } 1728 | }, 1729 | "autoload": { 1730 | "files": [ 1731 | "bootstrap.php" 1732 | ], 1733 | "psr-4": { 1734 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 1735 | } 1736 | }, 1737 | "notification-url": "https://packagist.org/downloads/", 1738 | "license": [ 1739 | "MIT" 1740 | ], 1741 | "authors": [ 1742 | { 1743 | "name": "Nicolas Grekas", 1744 | "email": "p@tchwork.com" 1745 | }, 1746 | { 1747 | "name": "Symfony Community", 1748 | "homepage": "https://symfony.com/contributors" 1749 | } 1750 | ], 1751 | "description": "Symfony polyfill for intl's grapheme_* functions", 1752 | "homepage": "https://symfony.com", 1753 | "keywords": [ 1754 | "compatibility", 1755 | "grapheme", 1756 | "intl", 1757 | "polyfill", 1758 | "portable", 1759 | "shim" 1760 | ], 1761 | "support": { 1762 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" 1763 | }, 1764 | "funding": [ 1765 | { 1766 | "url": "https://symfony.com/sponsor", 1767 | "type": "custom" 1768 | }, 1769 | { 1770 | "url": "https://github.com/fabpot", 1771 | "type": "github" 1772 | }, 1773 | { 1774 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1775 | "type": "tidelift" 1776 | } 1777 | ], 1778 | "time": "2022-05-24T11:49:31+00:00" 1779 | }, 1780 | { 1781 | "name": "symfony/polyfill-intl-normalizer", 1782 | "version": "v1.26.0", 1783 | "source": { 1784 | "type": "git", 1785 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1786 | "reference": "219aa369ceff116e673852dce47c3a41794c14bd" 1787 | }, 1788 | "dist": { 1789 | "type": "zip", 1790 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", 1791 | "reference": "219aa369ceff116e673852dce47c3a41794c14bd", 1792 | "shasum": "" 1793 | }, 1794 | "require": { 1795 | "php": ">=7.1" 1796 | }, 1797 | "suggest": { 1798 | "ext-intl": "For best performance" 1799 | }, 1800 | "type": "library", 1801 | "extra": { 1802 | "branch-alias": { 1803 | "dev-main": "1.26-dev" 1804 | }, 1805 | "thanks": { 1806 | "name": "symfony/polyfill", 1807 | "url": "https://github.com/symfony/polyfill" 1808 | } 1809 | }, 1810 | "autoload": { 1811 | "files": [ 1812 | "bootstrap.php" 1813 | ], 1814 | "psr-4": { 1815 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1816 | }, 1817 | "classmap": [ 1818 | "Resources/stubs" 1819 | ] 1820 | }, 1821 | "notification-url": "https://packagist.org/downloads/", 1822 | "license": [ 1823 | "MIT" 1824 | ], 1825 | "authors": [ 1826 | { 1827 | "name": "Nicolas Grekas", 1828 | "email": "p@tchwork.com" 1829 | }, 1830 | { 1831 | "name": "Symfony Community", 1832 | "homepage": "https://symfony.com/contributors" 1833 | } 1834 | ], 1835 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1836 | "homepage": "https://symfony.com", 1837 | "keywords": [ 1838 | "compatibility", 1839 | "intl", 1840 | "normalizer", 1841 | "polyfill", 1842 | "portable", 1843 | "shim" 1844 | ], 1845 | "support": { 1846 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" 1847 | }, 1848 | "funding": [ 1849 | { 1850 | "url": "https://symfony.com/sponsor", 1851 | "type": "custom" 1852 | }, 1853 | { 1854 | "url": "https://github.com/fabpot", 1855 | "type": "github" 1856 | }, 1857 | { 1858 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1859 | "type": "tidelift" 1860 | } 1861 | ], 1862 | "time": "2022-05-24T11:49:31+00:00" 1863 | }, 1864 | { 1865 | "name": "symfony/polyfill-mbstring", 1866 | "version": "v1.26.0", 1867 | "source": { 1868 | "type": "git", 1869 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1870 | "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" 1871 | }, 1872 | "dist": { 1873 | "type": "zip", 1874 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", 1875 | "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", 1876 | "shasum": "" 1877 | }, 1878 | "require": { 1879 | "php": ">=7.1" 1880 | }, 1881 | "provide": { 1882 | "ext-mbstring": "*" 1883 | }, 1884 | "suggest": { 1885 | "ext-mbstring": "For best performance" 1886 | }, 1887 | "type": "library", 1888 | "extra": { 1889 | "branch-alias": { 1890 | "dev-main": "1.26-dev" 1891 | }, 1892 | "thanks": { 1893 | "name": "symfony/polyfill", 1894 | "url": "https://github.com/symfony/polyfill" 1895 | } 1896 | }, 1897 | "autoload": { 1898 | "files": [ 1899 | "bootstrap.php" 1900 | ], 1901 | "psr-4": { 1902 | "Symfony\\Polyfill\\Mbstring\\": "" 1903 | } 1904 | }, 1905 | "notification-url": "https://packagist.org/downloads/", 1906 | "license": [ 1907 | "MIT" 1908 | ], 1909 | "authors": [ 1910 | { 1911 | "name": "Nicolas Grekas", 1912 | "email": "p@tchwork.com" 1913 | }, 1914 | { 1915 | "name": "Symfony Community", 1916 | "homepage": "https://symfony.com/contributors" 1917 | } 1918 | ], 1919 | "description": "Symfony polyfill for the Mbstring extension", 1920 | "homepage": "https://symfony.com", 1921 | "keywords": [ 1922 | "compatibility", 1923 | "mbstring", 1924 | "polyfill", 1925 | "portable", 1926 | "shim" 1927 | ], 1928 | "support": { 1929 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" 1930 | }, 1931 | "funding": [ 1932 | { 1933 | "url": "https://symfony.com/sponsor", 1934 | "type": "custom" 1935 | }, 1936 | { 1937 | "url": "https://github.com/fabpot", 1938 | "type": "github" 1939 | }, 1940 | { 1941 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1942 | "type": "tidelift" 1943 | } 1944 | ], 1945 | "time": "2022-05-24T11:49:31+00:00" 1946 | }, 1947 | { 1948 | "name": "symfony/routing", 1949 | "version": "v6.1.1", 1950 | "source": { 1951 | "type": "git", 1952 | "url": "https://github.com/symfony/routing.git", 1953 | "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5" 1954 | }, 1955 | "dist": { 1956 | "type": "zip", 1957 | "url": "https://api.github.com/repos/symfony/routing/zipball/8f068b792e515b25e26855ac8dc7fe800399f3e5", 1958 | "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5", 1959 | "shasum": "" 1960 | }, 1961 | "require": { 1962 | "php": ">=8.1" 1963 | }, 1964 | "conflict": { 1965 | "doctrine/annotations": "<1.12", 1966 | "symfony/config": "<5.4", 1967 | "symfony/dependency-injection": "<5.4", 1968 | "symfony/yaml": "<5.4" 1969 | }, 1970 | "require-dev": { 1971 | "doctrine/annotations": "^1.12", 1972 | "psr/log": "^1|^2|^3", 1973 | "symfony/config": "^5.4|^6.0", 1974 | "symfony/dependency-injection": "^5.4|^6.0", 1975 | "symfony/expression-language": "^5.4|^6.0", 1976 | "symfony/http-foundation": "^5.4|^6.0", 1977 | "symfony/yaml": "^5.4|^6.0" 1978 | }, 1979 | "suggest": { 1980 | "symfony/config": "For using the all-in-one router or any loader", 1981 | "symfony/expression-language": "For using expression matching", 1982 | "symfony/http-foundation": "For using a Symfony Request object", 1983 | "symfony/yaml": "For using the YAML loader" 1984 | }, 1985 | "type": "library", 1986 | "autoload": { 1987 | "psr-4": { 1988 | "Symfony\\Component\\Routing\\": "" 1989 | }, 1990 | "exclude-from-classmap": [ 1991 | "/Tests/" 1992 | ] 1993 | }, 1994 | "notification-url": "https://packagist.org/downloads/", 1995 | "license": [ 1996 | "MIT" 1997 | ], 1998 | "authors": [ 1999 | { 2000 | "name": "Fabien Potencier", 2001 | "email": "fabien@symfony.com" 2002 | }, 2003 | { 2004 | "name": "Symfony Community", 2005 | "homepage": "https://symfony.com/contributors" 2006 | } 2007 | ], 2008 | "description": "Maps an HTTP request to a set of configuration variables", 2009 | "homepage": "https://symfony.com", 2010 | "keywords": [ 2011 | "router", 2012 | "routing", 2013 | "uri", 2014 | "url" 2015 | ], 2016 | "support": { 2017 | "source": "https://github.com/symfony/routing/tree/v6.1.1" 2018 | }, 2019 | "funding": [ 2020 | { 2021 | "url": "https://symfony.com/sponsor", 2022 | "type": "custom" 2023 | }, 2024 | { 2025 | "url": "https://github.com/fabpot", 2026 | "type": "github" 2027 | }, 2028 | { 2029 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2030 | "type": "tidelift" 2031 | } 2032 | ], 2033 | "time": "2022-06-08T12:21:15+00:00" 2034 | }, 2035 | { 2036 | "name": "symfony/runtime", 2037 | "version": "v6.1.1", 2038 | "source": { 2039 | "type": "git", 2040 | "url": "https://github.com/symfony/runtime.git", 2041 | "reference": "7be7f6e7546b2a680fd4a604ea27985eef3b0ef9" 2042 | }, 2043 | "dist": { 2044 | "type": "zip", 2045 | "url": "https://api.github.com/repos/symfony/runtime/zipball/7be7f6e7546b2a680fd4a604ea27985eef3b0ef9", 2046 | "reference": "7be7f6e7546b2a680fd4a604ea27985eef3b0ef9", 2047 | "shasum": "" 2048 | }, 2049 | "require": { 2050 | "composer-plugin-api": "^1.0|^2.0", 2051 | "php": ">=8.1" 2052 | }, 2053 | "conflict": { 2054 | "symfony/dotenv": "<5.4" 2055 | }, 2056 | "require-dev": { 2057 | "composer/composer": "^1.0.2|^2.0", 2058 | "symfony/console": "^5.4|^6.0", 2059 | "symfony/dotenv": "^5.4|^6.0", 2060 | "symfony/http-foundation": "^5.4|^6.0", 2061 | "symfony/http-kernel": "^5.4|^6.0" 2062 | }, 2063 | "type": "composer-plugin", 2064 | "extra": { 2065 | "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" 2066 | }, 2067 | "autoload": { 2068 | "psr-4": { 2069 | "Symfony\\Component\\Runtime\\": "", 2070 | "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" 2071 | }, 2072 | "exclude-from-classmap": [ 2073 | "/Tests/" 2074 | ] 2075 | }, 2076 | "notification-url": "https://packagist.org/downloads/", 2077 | "license": [ 2078 | "MIT" 2079 | ], 2080 | "authors": [ 2081 | { 2082 | "name": "Nicolas Grekas", 2083 | "email": "p@tchwork.com" 2084 | }, 2085 | { 2086 | "name": "Symfony Community", 2087 | "homepage": "https://symfony.com/contributors" 2088 | } 2089 | ], 2090 | "description": "Enables decoupling PHP applications from global state", 2091 | "homepage": "https://symfony.com", 2092 | "support": { 2093 | "source": "https://github.com/symfony/runtime/tree/v6.1.1" 2094 | }, 2095 | "funding": [ 2096 | { 2097 | "url": "https://symfony.com/sponsor", 2098 | "type": "custom" 2099 | }, 2100 | { 2101 | "url": "https://github.com/fabpot", 2102 | "type": "github" 2103 | }, 2104 | { 2105 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2106 | "type": "tidelift" 2107 | } 2108 | ], 2109 | "time": "2022-06-02T11:43:19+00:00" 2110 | }, 2111 | { 2112 | "name": "symfony/service-contracts", 2113 | "version": "v3.1.0", 2114 | "source": { 2115 | "type": "git", 2116 | "url": "https://github.com/symfony/service-contracts.git", 2117 | "reference": "d66cd8ab656780f62c4215b903a420eb86358957" 2118 | }, 2119 | "dist": { 2120 | "type": "zip", 2121 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d66cd8ab656780f62c4215b903a420eb86358957", 2122 | "reference": "d66cd8ab656780f62c4215b903a420eb86358957", 2123 | "shasum": "" 2124 | }, 2125 | "require": { 2126 | "php": ">=8.1", 2127 | "psr/container": "^2.0" 2128 | }, 2129 | "conflict": { 2130 | "ext-psr": "<1.1|>=2" 2131 | }, 2132 | "suggest": { 2133 | "symfony/service-implementation": "" 2134 | }, 2135 | "type": "library", 2136 | "extra": { 2137 | "branch-alias": { 2138 | "dev-main": "3.1-dev" 2139 | }, 2140 | "thanks": { 2141 | "name": "symfony/contracts", 2142 | "url": "https://github.com/symfony/contracts" 2143 | } 2144 | }, 2145 | "autoload": { 2146 | "psr-4": { 2147 | "Symfony\\Contracts\\Service\\": "" 2148 | }, 2149 | "exclude-from-classmap": [ 2150 | "/Test/" 2151 | ] 2152 | }, 2153 | "notification-url": "https://packagist.org/downloads/", 2154 | "license": [ 2155 | "MIT" 2156 | ], 2157 | "authors": [ 2158 | { 2159 | "name": "Nicolas Grekas", 2160 | "email": "p@tchwork.com" 2161 | }, 2162 | { 2163 | "name": "Symfony Community", 2164 | "homepage": "https://symfony.com/contributors" 2165 | } 2166 | ], 2167 | "description": "Generic abstractions related to writing services", 2168 | "homepage": "https://symfony.com", 2169 | "keywords": [ 2170 | "abstractions", 2171 | "contracts", 2172 | "decoupling", 2173 | "interfaces", 2174 | "interoperability", 2175 | "standards" 2176 | ], 2177 | "support": { 2178 | "source": "https://github.com/symfony/service-contracts/tree/v3.1.0" 2179 | }, 2180 | "funding": [ 2181 | { 2182 | "url": "https://symfony.com/sponsor", 2183 | "type": "custom" 2184 | }, 2185 | { 2186 | "url": "https://github.com/fabpot", 2187 | "type": "github" 2188 | }, 2189 | { 2190 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2191 | "type": "tidelift" 2192 | } 2193 | ], 2194 | "time": "2022-05-07T08:07:09+00:00" 2195 | }, 2196 | { 2197 | "name": "symfony/string", 2198 | "version": "v6.1.0", 2199 | "source": { 2200 | "type": "git", 2201 | "url": "https://github.com/symfony/string.git", 2202 | "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529" 2203 | }, 2204 | "dist": { 2205 | "type": "zip", 2206 | "url": "https://api.github.com/repos/symfony/string/zipball/d3edc75baf9f1d4f94879764dda2e1ac33499529", 2207 | "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529", 2208 | "shasum": "" 2209 | }, 2210 | "require": { 2211 | "php": ">=8.1", 2212 | "symfony/polyfill-ctype": "~1.8", 2213 | "symfony/polyfill-intl-grapheme": "~1.0", 2214 | "symfony/polyfill-intl-normalizer": "~1.0", 2215 | "symfony/polyfill-mbstring": "~1.0" 2216 | }, 2217 | "conflict": { 2218 | "symfony/translation-contracts": "<2.0" 2219 | }, 2220 | "require-dev": { 2221 | "symfony/error-handler": "^5.4|^6.0", 2222 | "symfony/http-client": "^5.4|^6.0", 2223 | "symfony/translation-contracts": "^2.0|^3.0", 2224 | "symfony/var-exporter": "^5.4|^6.0" 2225 | }, 2226 | "type": "library", 2227 | "autoload": { 2228 | "files": [ 2229 | "Resources/functions.php" 2230 | ], 2231 | "psr-4": { 2232 | "Symfony\\Component\\String\\": "" 2233 | }, 2234 | "exclude-from-classmap": [ 2235 | "/Tests/" 2236 | ] 2237 | }, 2238 | "notification-url": "https://packagist.org/downloads/", 2239 | "license": [ 2240 | "MIT" 2241 | ], 2242 | "authors": [ 2243 | { 2244 | "name": "Nicolas Grekas", 2245 | "email": "p@tchwork.com" 2246 | }, 2247 | { 2248 | "name": "Symfony Community", 2249 | "homepage": "https://symfony.com/contributors" 2250 | } 2251 | ], 2252 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 2253 | "homepage": "https://symfony.com", 2254 | "keywords": [ 2255 | "grapheme", 2256 | "i18n", 2257 | "string", 2258 | "unicode", 2259 | "utf-8", 2260 | "utf8" 2261 | ], 2262 | "support": { 2263 | "source": "https://github.com/symfony/string/tree/v6.1.0" 2264 | }, 2265 | "funding": [ 2266 | { 2267 | "url": "https://symfony.com/sponsor", 2268 | "type": "custom" 2269 | }, 2270 | { 2271 | "url": "https://github.com/fabpot", 2272 | "type": "github" 2273 | }, 2274 | { 2275 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2276 | "type": "tidelift" 2277 | } 2278 | ], 2279 | "time": "2022-04-22T08:18:23+00:00" 2280 | }, 2281 | { 2282 | "name": "symfony/var-dumper", 2283 | "version": "v6.1.0", 2284 | "source": { 2285 | "type": "git", 2286 | "url": "https://github.com/symfony/var-dumper.git", 2287 | "reference": "98587d939cb783aa04e828e8fa857edaca24c212" 2288 | }, 2289 | "dist": { 2290 | "type": "zip", 2291 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/98587d939cb783aa04e828e8fa857edaca24c212", 2292 | "reference": "98587d939cb783aa04e828e8fa857edaca24c212", 2293 | "shasum": "" 2294 | }, 2295 | "require": { 2296 | "php": ">=8.1", 2297 | "symfony/polyfill-mbstring": "~1.0" 2298 | }, 2299 | "conflict": { 2300 | "phpunit/phpunit": "<5.4.3", 2301 | "symfony/console": "<5.4" 2302 | }, 2303 | "require-dev": { 2304 | "ext-iconv": "*", 2305 | "symfony/console": "^5.4|^6.0", 2306 | "symfony/process": "^5.4|^6.0", 2307 | "symfony/uid": "^5.4|^6.0", 2308 | "twig/twig": "^2.13|^3.0.4" 2309 | }, 2310 | "suggest": { 2311 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 2312 | "ext-intl": "To show region name in time zone dump", 2313 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 2314 | }, 2315 | "bin": [ 2316 | "Resources/bin/var-dump-server" 2317 | ], 2318 | "type": "library", 2319 | "autoload": { 2320 | "files": [ 2321 | "Resources/functions/dump.php" 2322 | ], 2323 | "psr-4": { 2324 | "Symfony\\Component\\VarDumper\\": "" 2325 | }, 2326 | "exclude-from-classmap": [ 2327 | "/Tests/" 2328 | ] 2329 | }, 2330 | "notification-url": "https://packagist.org/downloads/", 2331 | "license": [ 2332 | "MIT" 2333 | ], 2334 | "authors": [ 2335 | { 2336 | "name": "Nicolas Grekas", 2337 | "email": "p@tchwork.com" 2338 | }, 2339 | { 2340 | "name": "Symfony Community", 2341 | "homepage": "https://symfony.com/contributors" 2342 | } 2343 | ], 2344 | "description": "Provides mechanisms for walking through any arbitrary PHP variable", 2345 | "homepage": "https://symfony.com", 2346 | "keywords": [ 2347 | "debug", 2348 | "dump" 2349 | ], 2350 | "support": { 2351 | "source": "https://github.com/symfony/var-dumper/tree/v6.1.0" 2352 | }, 2353 | "funding": [ 2354 | { 2355 | "url": "https://symfony.com/sponsor", 2356 | "type": "custom" 2357 | }, 2358 | { 2359 | "url": "https://github.com/fabpot", 2360 | "type": "github" 2361 | }, 2362 | { 2363 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2364 | "type": "tidelift" 2365 | } 2366 | ], 2367 | "time": "2022-05-21T13:34:40+00:00" 2368 | }, 2369 | { 2370 | "name": "symfony/var-exporter", 2371 | "version": "v6.1.1", 2372 | "source": { 2373 | "type": "git", 2374 | "url": "https://github.com/symfony/var-exporter.git", 2375 | "reference": "ce1452317b1210ddfe18d143fa8a09c18f034b89" 2376 | }, 2377 | "dist": { 2378 | "type": "zip", 2379 | "url": "https://api.github.com/repos/symfony/var-exporter/zipball/ce1452317b1210ddfe18d143fa8a09c18f034b89", 2380 | "reference": "ce1452317b1210ddfe18d143fa8a09c18f034b89", 2381 | "shasum": "" 2382 | }, 2383 | "require": { 2384 | "php": ">=8.1" 2385 | }, 2386 | "require-dev": { 2387 | "symfony/var-dumper": "^5.4|^6.0" 2388 | }, 2389 | "type": "library", 2390 | "autoload": { 2391 | "psr-4": { 2392 | "Symfony\\Component\\VarExporter\\": "" 2393 | }, 2394 | "exclude-from-classmap": [ 2395 | "/Tests/" 2396 | ] 2397 | }, 2398 | "notification-url": "https://packagist.org/downloads/", 2399 | "license": [ 2400 | "MIT" 2401 | ], 2402 | "authors": [ 2403 | { 2404 | "name": "Nicolas Grekas", 2405 | "email": "p@tchwork.com" 2406 | }, 2407 | { 2408 | "name": "Symfony Community", 2409 | "homepage": "https://symfony.com/contributors" 2410 | } 2411 | ], 2412 | "description": "Allows exporting any serializable PHP data structure to plain PHP code", 2413 | "homepage": "https://symfony.com", 2414 | "keywords": [ 2415 | "clone", 2416 | "construct", 2417 | "export", 2418 | "hydrate", 2419 | "instantiate", 2420 | "serialize" 2421 | ], 2422 | "support": { 2423 | "source": "https://github.com/symfony/var-exporter/tree/v6.1.1" 2424 | }, 2425 | "funding": [ 2426 | { 2427 | "url": "https://symfony.com/sponsor", 2428 | "type": "custom" 2429 | }, 2430 | { 2431 | "url": "https://github.com/fabpot", 2432 | "type": "github" 2433 | }, 2434 | { 2435 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2436 | "type": "tidelift" 2437 | } 2438 | ], 2439 | "time": "2022-05-27T12:58:07+00:00" 2440 | }, 2441 | { 2442 | "name": "symfony/yaml", 2443 | "version": "v6.1.0", 2444 | "source": { 2445 | "type": "git", 2446 | "url": "https://github.com/symfony/yaml.git", 2447 | "reference": "84ce4f9d2d68f306f971a39d949d8f4b5550dba2" 2448 | }, 2449 | "dist": { 2450 | "type": "zip", 2451 | "url": "https://api.github.com/repos/symfony/yaml/zipball/84ce4f9d2d68f306f971a39d949d8f4b5550dba2", 2452 | "reference": "84ce4f9d2d68f306f971a39d949d8f4b5550dba2", 2453 | "shasum": "" 2454 | }, 2455 | "require": { 2456 | "php": ">=8.1", 2457 | "symfony/polyfill-ctype": "^1.8" 2458 | }, 2459 | "conflict": { 2460 | "symfony/console": "<5.4" 2461 | }, 2462 | "require-dev": { 2463 | "symfony/console": "^5.4|^6.0" 2464 | }, 2465 | "suggest": { 2466 | "symfony/console": "For validating YAML files using the lint command" 2467 | }, 2468 | "bin": [ 2469 | "Resources/bin/yaml-lint" 2470 | ], 2471 | "type": "library", 2472 | "autoload": { 2473 | "psr-4": { 2474 | "Symfony\\Component\\Yaml\\": "" 2475 | }, 2476 | "exclude-from-classmap": [ 2477 | "/Tests/" 2478 | ] 2479 | }, 2480 | "notification-url": "https://packagist.org/downloads/", 2481 | "license": [ 2482 | "MIT" 2483 | ], 2484 | "authors": [ 2485 | { 2486 | "name": "Fabien Potencier", 2487 | "email": "fabien@symfony.com" 2488 | }, 2489 | { 2490 | "name": "Symfony Community", 2491 | "homepage": "https://symfony.com/contributors" 2492 | } 2493 | ], 2494 | "description": "Loads and dumps YAML files", 2495 | "homepage": "https://symfony.com", 2496 | "support": { 2497 | "source": "https://github.com/symfony/yaml/tree/v6.1.0" 2498 | }, 2499 | "funding": [ 2500 | { 2501 | "url": "https://symfony.com/sponsor", 2502 | "type": "custom" 2503 | }, 2504 | { 2505 | "url": "https://github.com/fabpot", 2506 | "type": "github" 2507 | }, 2508 | { 2509 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2510 | "type": "tidelift" 2511 | } 2512 | ], 2513 | "time": "2022-04-15T14:25:02+00:00" 2514 | } 2515 | ], 2516 | "packages-dev": [], 2517 | "aliases": [], 2518 | "minimum-stability": "stable", 2519 | "stability-flags": [], 2520 | "prefer-stable": true, 2521 | "prefer-lowest": false, 2522 | "platform": { 2523 | "php": ">=8.1", 2524 | "ext-ctype": "*", 2525 | "ext-iconv": "*" 2526 | }, 2527 | "platform-dev": [], 2528 | "plugin-api-version": "2.3.0" 2529 | } 2530 | --------------------------------------------------------------------------------